6、封装
当TCP传送数据时,数据被送入协议栈中,然后通过每一层直到被当作一串比特流送入网络。这些数据在通过每一层时都会被加入一些信息(首部或尾部),过程如下图所示。其中TCP传送给IP的数据单元称为TCP报文段,IP传送给网络接口层的数据单元称作IP数据报,通过以太网传输的比特流称作帧。
UDP数据与TCP数据基本一致。不同的是:UDP传送给IP的信息单元称作UDP数据报;UDP的首部字长为8个字节。
许多应用程序使用TCP或UDP来传送数据,运输层协议在生成报文首部时需要存入一个应用程序的标识符。TCP和UDP都用一个16bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部。
7、分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中上升,去掉各层协议加入的报文首部。每层的协议盒需要检查报文首部中的协议标识,确定接收到数据的上层协议。这个过程称为分用。下图解释了分用的过程。
8、客户—-服务器模型
大部分的网络应用程序在编写时都假设一端是客户,另一端是服务器,目的是为了让服务器为客户提供一些特定的服务。我们大致可以将服务分为重复型和并发型两种类型。
重复型服务器通过以下步骤进行交互:
- 等待客户请求。
- 处理客户请求。
- 发送响应给发送请求的客户。
- 返回第一步。
重复型服务器在第二步时,不能为其他客户机进行服务。并发型服务器进行了一些改进:
- 等待客户请求。
- 启动一个新的服务器来处理这个客户的请求。期间生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤的进行主要依赖于计算机操作系统。生成的服务器对客户的全部请求进行处理。处理结束后,终止这个新的服务器。
- 返回第一步。
可以看出并发服务器利用生成其他服务器的方式来处理客户的请求。这种情况下,每个客户有自己对应的服务器。在操作系统允许多任务的前提下,可以同时为多个客户提供服务。
(通常来说,TCP服务器是并发的,UDP服务器是重复的)