传输层的常见的协议有TCP和UDP
特点:
TCP:面向连接、面向字节流、可靠传输
UDP:面向数据报、无连接、不可靠
UDP协议格式:
16位源端口号、16位目的端口号、16位端口号长度、16位UDP检验和
UDP的应用
DHCP分配、DNS域名分析、TFTP简单文件传输协议
TCP面向连接
三次握手:
客户端发送SYN请求
服务器回复SYN请求+ACK确认
客户端发送ACK
确认序号=序号+数据长度 含意是:期望对方下一个发送的数据从确认序号的数目开始发送
纯ACK数据包不消耗序号
服务端和客户端各自维护一组序号
四次挥手:
主动断开连接方 被动断开连接方
FIN_WAIT_1 发送FIN
FIN_WAIT_2 发送ACK CLOSE_WAIT
发送FIN LAST_ACK
TIME_WAIT 发送ACK
2MSL CLOSE
CLOSE
MSL:报文最大生存时间
2MSL=丢失的ACK的MSL+重传的FIN的MSL
主动方在2MSL中如果重新受到了FIN数据包,代表之前发送的ACK丢失,重新发送
TCP协议格式
4位首部长度:指的是TCP首部的大小
16位窗口大小:告诉对方可接受的数据报大小
tcp首部字节长度计算公式:首部长度*4
MSS:最大报文长度
为什么要协商最大报文长度:防止报文过大,丢失数据报
MTU:最大传输单元,是网卡传输数据帧的限制
MTU<=MSS + TCP头部 + ip头部
可靠传输
保证可靠的机制:确认应答机制、超时重传
RTO = RTT(上次)*i + RTT(上上次)*(1-i)
提高传输效率:滑动窗口机制
为什么要滑动窗口机制:主机要发送下一个数据包要等下一个ACK传到,十分影响效率,一次性发送多个数据包,提高效率
考虑传输效率的三个方面:
发送方的发送能力
接受方的接受能力
网络转发的能力
滑动窗口:
接受窗口:接受窗口最早发送分组数据包一个数据报确认应答,滑动窗口移动
发送窗口:在当前收到最大的确认应答后移动就可以滑动,意味着前面的数据包都被接受方接受到了
拥塞控制:
慢启动:拥塞窗口呈现指数增长
拥塞避免:到达sstresh变为线性增长
快速恢复:出现网络拥塞后,新的ssthresh设置为拥塞发生时拥塞窗口的一半