目录
一、传输层功能
提供端对端的接口,确保网络数据传输的可靠性(安全性)向应用层提供通信服务;
(五元组:源ip,源port,目的ip,目的port,协议号;作用:标识一个通信)
二、传输层协议
1.UDP协议
(1)协议格式
- 16位的源端口/16位的目的端口:描述数据从哪个进程发送到哪个进程 – 负责实现应用程序间的数据传输
- 16位的数据报长度:包含UDP报文头部在内的整体报文长度,16位存储的最大数字为65535
- 16位的校验和:二进制反码求和算法,用于校验接收到的数据和发送的数据是否一致
- 发送方在发送数据之前,校验和为0,从完整报文的第0个字节开始,每个字节进行取反相加,超过16位的部分取出来,再次与低16位进行相加,最后得到一个校验和填充到协议字段中
- 接收方接收到数据之后,从完整报文的第0个字节开始,每个字节进行取反相加,最终的结果如果为0,则表示数据一致,否则则表示数据不一致
(2)特点
UDP传输过程类似于寄信;
①无连接:知道对端的IP和端口号就直接进传输,不需要建立连接;
②不可靠:没有确认,重传机制;如果因为网络故障该段无法发送到对方,UDP协议层不会给应用层返回任何错误信息;
③面向数据报:不能灵活的控制读写数据的次数和数量;
(3)缓冲区
①没有真正意义上的发送缓冲区,调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作;
②具有接收缓冲区,不能保证数据顺序一致;
UDP的socket既能读也能写,叫做全双工;
(4)UDP注意事项
UDP协议首部中有一个16位的最大长度,也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部),如需传输大于64K的数据,就需要在应用层手动分包,多次发送,并在接收端手动拼接;
(5)基于UDP的应用层协议
NFS:网络文件共享;
TFTP:简单文件传输协议;
DHCP:动态主机配置协议;
BOOTP:启动协议(用于无盘设备启动);
DNS:域名解析协议;
2.TCP协议
(1)协议格式
- 16位的源端口和目的端口:负责应用程序之间的数据传输
- 32位序号/32位确认序号:实现确认应答机制以及接收端的包序管理
- 4位头部长度:表示TCP头部有多少,TCP头部是不定长的,主要取决于选项数据的大小,TCP头部最小为20字节,最大60字节(选项数据中占0~40字节)
- 6位保留位:目前没有想好用来干什么,先预留出来用于以后扩展
- 6位标志位:URG/ACK/PSH/RST/SYN/FIN
- 16位窗口大小:表示本端可以接收的数据大小,用于实现滑动窗口机制,进行流量控制
- 16位校验和:二进制反码求和算法,校验数据接收与发送的一致性
- 16位紧急指针:标识哪些数据是紧急数据(带外数据)
- 0-40字节的选项数据:通常用于协商一些信息如MSS的长度
(2)六位标志位
URG:紧急指针是否有效;
ACK:确认号是否有效;
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走;
RST:对方要求重新建立连接,把携带RST标识的称为复位报文段;
SYN:请求建立连接,把携带SYN标识的称为同步报文段;
FIN:通知对方,本端要关闭了,把携带FIN标识的称为结束报文段;