网络编程
软件开发架构
c/s架构(client/server):客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。
c:客户端:一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。
s:服务端:只要访问服务端就会不间断的给我们返回数据。
b/s架构(browser/server):浏览器端与服务器端架构,这种架构是从用户层面来划分的。
b:浏览器:其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查;
s:服务器:用户通过浏览器上的HTTP请求服务器的相关资源,服务器经过某些处理,匹配给用户指定的数据。
手机端c/s看上去很流行,但实际上b/s正在崛起,现在很多主流软件,比如微信、支付宝、QQ等手机端应用程序中添加了很多其他的服务功能,这里只给了一个连接上服务器的链接,用户不需要再重新下载对应的软件使用相应功能,而这些服务链接都是基于b/s架构的。
网络编程的发展史
任何现进的技术最早都来源于军事。军用以后淘汰到民用;
早期打电话需要电话线,电脑需要网线,笔记本电脑、无线电话需要网卡,所以想要实现远程通信第一个需要具备的条件是:物理连接介质。
人要想实现无障碍交流必须说统一的语言 >>> 英文
计算机与计算机之间要想实现远程通信除了有物理连接介质之外还需要
有一套公共的标准/协议。
这种协议称为OSI(open system interconection),七层协议,或者OSI五层协议
OSI七层协议:应用层、表示层、会话层、传输层、网络层、数据链路层、物理连接层
OSI五层协议:应用层、传输层、网络层、数据链路层、物理连接层。
1.物理连接层
基于电信号传输010101001010二进制数据
2.数据链路层
1)规定的电信号的分组方式
2)规定了任何一台接入互联网的计算机都必须有一块网卡,每一块网卡上面都刻有世界上独一无二的编号‘
’12位16进制数前6位是厂商编号,后6位是流水线编号,我们管这12数叫mac地址。
以上两点合称为“以太网协议”
交换机:基于以太网协议通信,不能跨局域网通信
互联网是有n多个局域网彼此之间连接而成的
3.网络层
IP协议
规定了只要是接入互联网的计算机都必须有一个IP地址
ip地址特点:点分十进制
ip地址最小:0.0.0.0
ip地址最大:255.255.255.255
ip地址目前有两个版本:IPV4 IPV6(由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6版本)
IP地址是动态分配的
4.传输层
TCP\UDP都是基于端口工作的协议
端口(port)
计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
端口:用来唯一标识一台计算机上的某个应用程序
端口号的范围:0~65535
注意:0~1024这些都是操作系统默认使用的端口号
建议:使用8000之后的端口
MySQL默认端口:3306
Redis默认端口:6379
django默认端口:8000
flask默认端口:5000
端口号是动态分配的
第一次起qq分配到的是8989
将qq关闭再次启动端口号可能就变了
.总结
ip地址:用来唯一标识接入互联网的一台计算机
port端口:用来唯一标识一台计算机上的某个应用程序
ip+port:唯一标识接入互联网一台计算机上的某个应用程序
5.应用层
HTTP协议(其后家S表示经过美国某机构认证)
FTP协议:流式协议,可靠协议,基于TCP协议通信 必选先建立双向通道
三次握手四次挥手的含义
三次握手链接:
基于TCP协议的客户端向服务端发送请求,建立一个通道,用于标识请求,服务端确认并接收到请求,向客户端回复也是唯一标识,这时客户端和服务端的单向通道就建立好了,然后服务端向客户端也发送了请求,客户端接受之后,并再次回复服务端,之后服务端到客户端的通道就建立好了由于服务端第一次接受请求与再次向客户端发送请求是同时建立的,两次乐意合并成一次,所以称为三次握手。
TCP协议传输数据之所以可靠是因为两者基于双向通道发消息,只有当收方确认收到消息并反馈发方,才删除内存中数据,如果没有反馈发方,在一定时间内,发方会每隔一段时间向收方发送一次,直到确认收方收到消息。否则,超过一定时间,发方认为收方宕机或其他故障,删除内存中存储的数据,不会再发。
数据传输:
四次挥手断开连接:在客户端和服务端不在进行数据交互时,双方均可断开请求,以客户端为例,如果客户端向服务端发送断开请求,服务端回复客户端确认,此时,客户端到服务端的通道断开了,而服务端还需要一定的延迟,判断是否当时还有数据正在传输,如果有,服务端会发送数据直到完毕,然后向客户端发送断开请求,客户端回应,自此服务端与客户端之间的通道断开,两者通信结束。