- TCP/IP协议族体系结构和主要协议
下层协议通过封装为上层协议提供相应的接口,通过头部信息中的类型字段实现分用。‘
- ARP协议工作原理
主机向自己所在的网络广播一个ARP请求,目标地址会回应一个ARP应答,包含自己的物理地址。对于经常访问或最近访问的IP会放入ARP高速缓存。
- ICMP:
一类是差错报文,用来回应网络错误。一类是查询报文,用来查询网络信息。
ICMP重定向报文:断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表。
- IPV4头部信息
f
头部长度:有几个32bit,4位最多表示15,所以头部最多是60.
标识:同一个数据报的所有分片的标识相同。
片偏移:分片相对于原始IP数据报的开始。
头部校验和:CRC检验IP头部是否损坏。
- IP模块工作流程
- 对头部做CRC校验。
- 查看是否设置了源站路选项(如果是则调用数据报转发子模块来处理)
- 查看是否发送给本机(是,选择上一层分用的协议。否,调用数据报转发子模块处理)
- TCP协议
- 特点:面向连接,字节流,可靠传输。(tcp连接是全双工的)
- TCP头部信息
32位序号:初始化为ISN,后续的序号为ISN+携带数据第一个字节的偏移
32位确认号:基于TCP的可靠链接,每次收到数据都需要确认。
4位头部长度:最大15个4字节,也就是60
6位标识:
URG:紧急指针是否有效。
ACK:携带ACK的保文为确认报文
PSH:接收端应立即从缓冲区读走数据
RST:复位报文
SYN:同步报文(请求连接)
FIN:结束报文段
窗口大小:缓冲区还能容纳多少字节的数据。
选项:
kind=2 最大报文段长度选项一般是1460(1500 - 40)
kind=3 窗口扩大因子(只能出现在同步报文中)
kind=4 选择性确认
kind=5 是kind=4的补充,标记了不连续的数据块
kind=8 精确计算通信双方的回路时间。
- TCP三次握手
- 连接超时
具有相同的序号值,发送的时间间隔:1s 2s 4s 8s 16s五次重传,全部失败后放弃连接并通知。
- TCP四次挥手
- TCP状态转移图
- connect失败原因:
- connect的目标端口不存在
- connect在超时时间内未收到服务器的确认报文
- TIME_WAIT状态
- 可靠终止TCP连接
- 保证让迟来的TCP报文有足够的时间被识别并丢弃(2*MSL)
- 复位报文段
-
访问不存在的端口
- 异常终止链接(SO_LINGER)
- 处理半打开连接
- 延迟确认(服务器端)
不马上确认上次收到的数据,在一段延迟后查看是否有数据要发送,与确认报文一起发送,减少TCP报文的数量。
- 超时重传
与连接超时一样,一共执行5次,五次均失败的情况下有ARP和IP接管(发送广播查询ip)。
- 拥塞控制
SWND(一次性写入的数据)太小,会导致网络延迟。太大,会导致网络拥塞,频繁丢包。
判断拥塞发生的方法:
-
传输超时(TCP重传定时器溢出)
- 接收到重复的确认报文段
慢启动和拥塞避免(通过RTT时间判断):CWND从1开始以次方的方式增加,知道达到ssthresh的值,每次收到确认加一。一旦发生拥塞,ssthresh的值减半,CWND重新从1开始次方增加。
快速重传和快速恢复(每收到一个无序报文就立即发出重新确认):快重传因为收到了三个重新确认报文,则不必等他超时。快速恢复时ssthresh减半,CWND减半并每次收到确认后加1。