传输层
定义
- 传输层提供进程间的通信,即端到端的逻辑通信
- 套接字 - 即ip地址:端口号
- 端口号 - 16位,0-65535
- UDP
- 概述 - 无连接,不可靠,面向数据报,可支持多对多,针对IP数据报增加了两个基本功能:复用和分用、以及差错检测
- UDP首部示意图
其中数据报的长度包括首部和数据,最小值为仅有首部时的8位
- UDP检验
- 全0放入检验字段并添加伪首部
- 将参与计算的所有数据(UDP 伪首部、UDP 首部和负载数据)以 16 位为单位进行划分。如果数据总长度不是 16 位的整数倍,则在末尾填充一个字节的 0,使其成为 16 位的整数倍。
- 将划分好的 16 位字依次相加,得到一个初始和。如果相加过程中出现溢出(即结果超过 16 位),则将溢出的部分(高 16 位)加到结果的低 16 位上,这个过程称为 “回卷”。
- 重复上述计算直到得到16位的新数
- 将最终得到的 16 位结果按位取反,得到的数值就是 UDP 校验和,该值会被填入 UDP 首部的校验和字段中。
- 接收端收到 UDP 数据包后,会对包括校验和字段在内的整个数据包进行相同的计算。同样将数据以 16 位为单位求和,并进行 “回卷” 操作,最终得到一个 16 位的结果。如果该结果为全 1(即 0xFFFF),则认为数据包在传输过程中没有发生错误,接收端会接受该数据包并继续处理数据;如果结果不是全 1,则表明数据包可能出现了错误,接收端通常会丢弃这个数据包
- TCP
- 概述 - 面向连接,可靠,全双工通信,面向字节流。只能有两个端点,即每条TCP连接只能是一对一的
- UDP首部示意图
其中序号字段表示本报文数据的第一个字节的序号,确认号表示期望收到下一个报文的第一个字节的序列号,数据偏移指的是TCP首部部分占多少个4B,故首部最大为60B - 三次握手与四次挥手
- 重传 - 超时和冗余ACK
- 流量控制 - 接收方滑动窗口协议
- 拥塞控制
混淆
- 常见端口号
- FTP21
- TELNET23
- SMTP25
- DNS53