《计算机网络--谢希仁》第五章 运输层

《计算机网络--谢希仁》第五章 运输层

重要内容:

    1)运输层为相互通信的应用进程提供逻辑通信。

    2)端口和套接字的意义。

    3)无连接的UDP的特点。

    4)面向连接的TCP的特点。

    5)在不可靠的网络上实现可靠传输的工作原理,停止等待协议和 ARQ协议。

    6)TCP的滑动窗口、流量控制、拥塞控制和连接管理。

一、运输层协议概述

1.进程之间的通信

    从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

    当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。    

    两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。

    运输层的一个很重要的功能就是复用和分用。复用(multiplexing)是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据(当然需要加上适当的首部),而分用(demultilexing)是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。

   “运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。

    运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。

    运输层还要对收到的报文进行差错检测。

    运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。


2.运输层的两个主要协议

    TCP/IP 的运输层有两个不同的协议:
        (1) 用户数据报协议 UDP (User Datagram Protocol)
        (2) 传输控制协议 TCP (Transmission Control Protocol)

    两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。
    TCP 传送的数据单位协议是 TCP 报文段(segment)
    UDP 传送的数据单位协议是 UDP 报文或用户数据报。

    UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。

    TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

    运输层的 UDP 用户数据报与网际层的IP数据报有很大区别。IP 数据报要经过互连网中许多路由器的存储转发,但 UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送的。

    TCP 报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。

3.运输层的端口

    运输层有"分用"和"复用"功能, 所以对于每一个进程有一个标识号是非常重要的. 在运输层使用"协议端口号"可以解决这问题, 简称"端口"。   

    熟知端口,数值一般为 0~1023。

    登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。

    客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

二、用户数据报协议UDP

1.UDP概述

    UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。

    UDP 是无连接的,即发送数据之前不需要建立连接。

    UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。

    UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。

    UDP 支持一对一、一对多、多对一和多对多的交互通信。(支持多播)

    UDP 的首部开销小,只有 8 个字节。

2.UDP的首部格式


三、传输控制协议TCP概述

1.TCP的特点   

    TCP 是面向连接的运输层协议。

    每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。

    TCP 提供可靠交付的服务。

    TCP 提供全双工通信。

    面向字节流。

    TCP 连接是一条虚连接而不是一条真正的物理连接。

    TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。

    TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。

    TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

2.TCP的连接

    TCP 把连接作为最基本的抽象。

    每一条 TCP 连接有两个端点。

    TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。

    端口号拼接到(contatenated with) IP 地址即构成了套接字。

    TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}

四、可靠传输的工作原理

1.停止等待协议

 “停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

    停止等待协议的优点是简单,但缺点是信道利用率太低。

    在发送完一个分组后,必须暂时保留已发送的分组的副本。

    分组和确认分组都必须进行编号。

    超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。

    

    使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。

    这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。

    ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。

2.连续ARQ协议

 (1)累积确认

    接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。

    累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。

(2)Go-back-N(回退 N)

    如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。

    这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。

    可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。

五、TCP报文段的首部格式





六、TCP可靠传输的实现

参考博客






猜你喜欢

转载自blog.csdn.net/qq_27022241/article/details/80199261