返回

传输层协议

网课视频(上)

网课视频(下)

传输层是OSI参考模型的第4层,它用来控制数据的传输过程,这一层的协议只有TCP协议和UDP协议两个协议。

面向连接的服务和无连接服务

面向连接的服务:通信双方需在通信前建立连接。这种通信过程分为三个阶段:第一阶段是建立连接。第二阶段是连接成功建立之后,进行数据传输。第三阶段是在数据传输完毕后,释放连接。

无连接是指通信双方不需要事先建立连接,而是把带有目的地址的包(报文分组)直接发送到线路上,由网络进行传输,也不需要目标方进行回复。

面向连接的服务可实现两个终端系统间传输的报文无差错、无丢失、无重复、无乱序。

无连接服务传输效率更高,开销更小,但是无法保证数据传输可靠性。

端口号和套接字

传输层是面向通信进程的,同一主机上可同时有多个进程在通信。IP地址只能区分主机,无法区分主机中的通信进程。

端口可理解为传输层地址,它使用整数表示,取值范围0~65535,称为端口号。它用来区分主机中的通信进程。

0~1023是公认端口,它们被一些公认的服务所占用。如:FTP-21、HTTP-80、DNS-53等等。

其它的应用程序可自己指定使用的端口,也可使用系统随机生成的端口进行通信。

套接字(Socket):是IP地址+端口号组成的地址,用于寻址主机中的通信进程,常用于通信程序设计。如:192.168.1.1:80。

TCP协议

TCP协议:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层协议。对可靠性要求高的应用都使用TCP协议进行传输控制。

TCP数据报

TCP数据报需要封装在IP数据报中进行传输。

序号和确认号用来标识数据报的顺序和拼接位置。

标记字段中定义了多个标记位,包括ACK、PSH、SYN、FIN等,用来标记该数据报的用途及状态。

TCP协议的工作过程

  1. 建立连接
  2. 传输数据
  3. 释放连接

以用户访问服务器中的一个网页为例

Web服务使用HTTP协议,端口号为公认端口80。客户端进程的端口号为系统随机生成,此处假设为1025。

第一步:建立连接

此过程需要传递三个不带数据的TCP数据报,它们带有不同的标记位,称为“三次握手”。

  1. 客户机发送一个带有 SYN 标记的TCP请求包。
  2. 服务器回送一个带有 SYNACK 标记的请求确认包。
  3. 客户机再发送一个带有 ACK 标记的确认包。两者间的连接建立成功。

第二步:传输数据

客户机向服务器发送HTTP请求报文,服务器向用户发送请求的网页。

这次传输的TCP数据报内会封装相应的数据。

  1. 客户机发送一个带有 PSHACK 标记的TCP包,里面含有HTTP请求。
  2. 服务器回送一个带有 ACK 标记的TCP包,里面含有网页数据。如果是最后一个数据包,会添加 PSH 标记。

这个传输过程可能会进行多次。

第三步:释放连接

通信结束后,进入释放连接阶段。此过程传递的TCP数据报不带数据。

以上图示是模拟环境下TCP连接的释放过程。实际应用中的释放过程比这个要复杂。

查看演示

TCP协议的功能

保证数据的可靠传输:可保证传输的数据不丢失、不乱序。

具有流量控制能力:如果发送方速度过快,导致接收方来不及接收,接收方可要求发送方减慢速度或暂停发送。

具有拥塞调节能力:发送方可根据网络的拥塞情况调整发送速度,避免拥塞的发生。

UDP协议

UDP协议比TCP协议要简单得多,它是无连接的,不保证数据传输的可靠性。它的开销很小,实时性强。

UDP数据报的首部只有8个字节,只标识了必要信息。

UDP协议的工作过程

UDP协议的工作过程也非常简单,只是把打包的数据发送到网络中就行了,没有多余的动作。

以DNS查询为例:

DNS协议用于向DNS服务器查询域名对应的IP地址,使用的端口号是53。DNS协议既可以使用TCP协议也可使用UDP协议,大部分情况都是使用UDP协议。

查询过程

两者只需经过两次通信即可。有些UDP应用不需要用户响应,可以只经过一次传输。

首页
单元练习
返回顶部