封装
当应用程序用 T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如下图所示。 T C P传给I P的数据单元称作 T C P报文段或简称为 T C P段(T C P s e g m e n t)。 I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比特流称作帧(Fr a m e )。
- IP和网络接口层之间传送的数据单元应该是分组。分组可以是一个IP数据报也可以是IP数据报的一个片。
- UDP和TCP数据基本一致。唯一不同的是UDP传给IP的信息单元被称为UDP数据报,而且UDP的首部长为8字节。
- 由于T C P、 U D P、 I C M P和I G M P都要向I P传送数据,因此 I P必须在生成的 I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为8 b i t的数值,称作协议域。 1表示为I C M P协议, 2表示为I G M P协议, 6表示为T C P协议, 1 7表示为U D P协议。
- 许多应用程序都可以使用TCP或UDP来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP和UDP都用一个16bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
- 网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16bit的帧类型域。
分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用。
- 当进一步描述TCP的细节时,我们将看到协议确实是通过目的端口号、源IP地址和源端口号进行解包的。