传输层:(解决如何传输,协议都不可变)
五元组织:源IP、源端口号、目的IP、目的端口号、协议号
- 端口号:(标识一台主机)
一个进程可以绑定多个端口号;
一个端口号只能绑定一个进程; - UDP协议:(面向数据报,即无连接,易实现,但传输可靠性差)
UDP报文:报头(源端口,目的端口)+ 16位UDP长度+16位UDP校验和;(解决有效载荷与报头分离)
基于UDP的应⽤用层协议:
NFS: 网络文件系统
TFTP: 简单文件传输协议
DHCP: 动态主机配置协议 (向路由申请IP)
BOOTP: 启动协议(⽤用于⽆无盘设备启动)
DNS: 域名解析协议
- TCP协议:(标准长度为20,面向连接,具有可靠性)
TCP面向连接:
三次握手,四次挥手;
连接过程中,主动断开连接的一方必须进入TIME_WAIT 状态(无法立即重启):
确保双方连接安全释放;
减少网络延迟报文双向消散;
等待时间:小于等于2*MSL;(MSL 最大单向报文发送时间)
TCP保证可靠性:
1、确认应答机制:
最新报文永远没有应答;
能够收到最后一条应答,就能保证最后一次应答之前的所有报文的可靠性都可以保证
2、数据按序到达:(32位序列)保证报文按序到达;
3、超时重传+去重机制:引入32位序列及32位确认序列,保证所有报文全部到达,若缺少就重传,序号多出就去重;
4、流量控制:16位窗口大小(自己接收缓冲区剩余的大小)
过慢,影响性能;过快,导致丢包。
TCP提高性能效率:
1、滑动窗口:自己发送程序的发送缓冲区;
窗口之前:已发送数据并得到应答;窗口之内:可以同时发送的数据;窗口之后:待发送区域;
2、快重传:在收到3个以上的ACK信息时,重发后ACK确认最后一个;
3、延迟应答;
4、捎带应答;
5、拥塞控制:(引入慢启动:按指数增长)
网络拥塞:大量数据拥塞在网络中,导致主机发送的数据源大量丢包;(解决的问题)
慢启动阈值:超过阈值之前指数增长,超过阈值之后线性增长;经过一次拥塞之后,慢启动阈值变为前一次拥塞值的一 半。
TCP异常:
进程异常关闭,操作系统底层可以正常四次挥手断开连接;
断电情况:关闭之前会先关闭进程,因而正常四次挥手断开连接;
断网情况:TCP内置有保活定时器,会定时询问对方是否还在,若不在四次挥手断开连接;
解决粘包问题:(明确报文与有效值载荷之间的边界)
使用UDP协议,本身有明确的边界,不存在粘包问题;
合理使用特殊符号作为间隔符,如HTTP协议中的空格;