一个应用在主机之间进行通讯的总体过程如上图。这里以TCP/IP四层协议栈为例,说明数据是怎么被主机发送,又怎么被应用接收的。总体过程:在产生应用数据之后,按照从上层到下层的网络协议栈对数据进行封装,封装完成后发出主机,通过网络抵达目的主机,目的主机按照协议栈从下到上对数据进行解封装,直到得到最后源主机封装的应用数据。
封装
按照TCP/IP的四层协议,上层协议能够使用下层协议提供的服务。每一层协议都在上一层协议的基础上加上自己的头部信息,以实现自己的功能,这个过程就叫封装。
传输层封装
传输层主要包括TCP和UDP协议,应用层传过来的数据加上TCP/UDP的头部信息得到实现自己功能的报文,例如TCP要实现可靠传输就要添加ACK、SYN、序号、校验和等信息,UDP不需要实现可靠传输只附加报文长度、校验和等信息。具体的TCP、UDP头部如下:
- 源端口号:发送方端口号
- 目的端口号:接收方端口号
- 序列号:本报文段的数据的第一个字节的序号
- 确认序号:期望收到对方下一个报文段的第一个数据字节的序号
- 首部长度(数据偏移):TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,即首部长
度。单位ÿ