一.ISO七层模型
1.应用层
在应用程序端点传输分组。
协议:HTTP, SMTP, FTP
分组:报文
可以理解为两个大人物(陈玉楼,鹧鸪哨)通过驿站交换情报。应用层为整个驿站传输系统。
2.表示层
作用:使通信的应用程序能够解释交换数据的含义,数据压缩,数据加密,数据描述。
可以理解为两个大人物的副手,确定密码口令。
3.会话层
作用:数据交换的定界和同步功能,包括建立检查点和恢复方案的方法。
可以理解为双方的秘书团,在情报传递中的一系列工作。
4.运输层
协议:TCP, UDP
分组:报文段(应用层报文+运输层首部信息)
TCP:确保传递,流量控制
UDP:不提供可靠性,没有流量控制、拥塞控制。
可以理解为驿站服务类型,保证到达还是不保证。
5.网络层
分组从一台主机到另一台主机
协议:IP协议,选路协议
分组:数据报(报文段+网络层首部信息)
网络层首部信息:源和目的端地址等信息。
可以理解为驿站选择怎样的线路传递情报。
6.链路层
将分组从一个节点(主机或路由器)移动到路径的下一个节点。
协议:以太网,WiFi,点对点协议(PPP)
分组:帧(数据报+链路层首部信息)
可以理解为道路中途有很多中转站,中转站之间如何传输。
7.物理层
将帧的一个一个比特从一个节点移动到下一个节点
协议:双绞铜线,同轴电缆,光纤
物理层是实际传输媒体相关,可以理解为用马还是信鸽还是船运送情报。
二.TCP&UDP
TCP:面向连接的运输
UDP:无连接运输
1.TCP报文段结构
16比特源端口号,16比特目的端口号
32比特序号字段(seq)
32比特确认号字段(ack)
16比特接收窗口,用于流量控制
4比特首部长度,用于指示首部长度
6比特标志字段,ACK(用于指示确认字段的值是有效的),SYN,FIN(用于连接建立和拆除)
2.三次握手和四次握手
客户机发送第一个FIN后进入FIN_WAIT_1状态,当他收到服务器回复的ACK字段后进入FIN_WAIT_2状态。当客户机接到服务器发来的FIN后,进入TIME_WAIT状态。TIME_WAIT等待的时间是规定好的,时间结束后连接正式关闭。
2.TCP可靠传输
(1)ACK字段
(2)TCP使用超时重传机制
加倍超时间隔:每次重传时都将下一次重传的间隔设置为上次重传间隔的2倍,用于避免拥塞。
快速重传:如果收到了对相同数据的三个冗余的ACK,发送端就认为跟在这个被确认了三次的报文段之后的报文段丢失了,因此重传它,而不是等待它的超时定时器到期。这就是快速重传。
选择重传:只重发没有正确接收的分组而不是所有分组
(3)TCP流量控制
双方都有接收缓存,为避免缓存溢出TCP提供流量控制服务。实现方法:TCP让发送方维护一个接收窗口,接收B发来的关于他还有多少可用空间的信息。
(4)TCP拥塞控制
i. 加性增,乘性减。
ii. 慢启动
三.IP
1.IPv4
IPv4数据报格式:
版本号
首部长度(一般20字节)
数据报长度
标识,标志,片偏移
协议(6->TCP, 17->UDP)
首部检验和
源和目的地址
每个IP地址长度为32比特。
223.1.1.0/24
24是子网前缀,表示最左侧24比特定义了子网地址。
子网中两个地址预留于特殊用途。
223.1.1.0是网络地址,223.1.1.255是广播地址。
A类网络缺省子网掩码: 255.0.0.0,用CIDR表示为/8
B类网络缺省子网掩码: 255.255.0.0,用CIDR表示为/16
C类网络缺省子网掩码: 255.255.255.0,用CIDR表示为/24
如何根据IP地址和子网掩码,计算网络地址:
①、将IP地址与子网掩码转换成二进制数。
②、将二进制形式的 IP 地址与子网掩码做“与”运算。
③、将得出的结果转化为十进制,便得到网络地址。
2.IPv6编址
IPv6从32位扩大到128位。
首部字节(20->40字节)
流标签与优先级
版本号:6
下一个首部(同IPv4协议)
源和目的地址
数据
四.HTTP长链接,短链接
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭。长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户端适合使用长连接。在长连接的应用场景下,client端一般不会主动关闭连接
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。
长连接的优点是:可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。
使用场景:
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多。
五.在输入网址过程中,计算机都做了什么
可参考https://blog.csdn.net/itpika/article/details/90407903
1,查IP,如果是字符串域名,先去DNS域名服务器查询对应域名的IP地址,DNS服务器返回该域名的IP地址。
2.准备HTTP通信包,分为请求头,请求行,请求体。
3.准备TCP通信包,分为包头(head)和包体(data)。
4.准备网络层通信包,此时已知IP地址
5.准备以太网协议通信包,以太网协议包分为包头和包体,将TCP协议包嵌入以太网协议包的包体(data),以太网协议包需要设置双方的MAC地址(物理网卡地址)。
6.发送数据包
以太网数据包通过网卡发送到多重网关发送到目标服务器,目标服务器根据IP表头的序号,将三个包拼接起来,取出完成的TCP数据包,读出里面的HTTP请求包,做出响应后,再通过上面的顺便发送响应包到接收方的电脑上,呈现在浏览器中,至此,一次http通信就完成了。
六. DHTP和DNS区别。
DHTP,动态主机配置协议。
通常被应用在大型局域网络,集中管理,分配ip。
DNS用于查询对应域名的IP地址。