计算机网络-谢希仁-运输层01

    xiaoxiao2022-07-14  145

    运输层是整个网络体系结构中的关键层次之一。一定要弄清楚以下一些重要概念:

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

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

    (3)无连接的UDP的特点

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

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

    5.1 运输层协议概述

    5.1.1 进程之间的通信

    从通信和信息处理的角度看,**运输层向它上面的应用层提供通信服务,**它属于面向通信部分的最高层,同时也是用户功能中的最底层。只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时只用到下三层的功能。

    IP协议能够把源主机A发送出的分组,按照首部中的目的地址,送交到目的主机B。

    真正进行通信的实体是在主机中的进程,是这台主机中的一个进程和另一台主机中的进程在交换数据(即通信)。

    严格来讲,两台主机进行通信就是两台主机中的应用程序互相通信。

    从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。

    运输层有一个很重要的功能:复用(multiplexing)和分用(demultiplexing)

    复用:在发送方不同的应用程序都可以使用同一个运输层协议传送数据(当然需要加上适当的首部)

    分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用程序。

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

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

    运输层有两种不同的运输协议:面向连接的TCP和无连接的UDP。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。

    5.1.2 运输层的两个主要协议

    TCP/IP运输层的两个主要协议:

    (1)用户数据报协议UDP

    (2)传输控制协议TCP

    在TCP/IP体系中,则根据所使用的的协议时TCP或UDP,分别称之为TCP报文段或UDP用户数据报。

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

    TCP则提供面向连接的服务。

    在传送数据之前必须先建立连接数据传送结束后要释放连接

    由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。

    5.1.3 运输层的端口

    端口的作用:为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法(而这种方法必须与特定操作系统无关)对TCP/IP体系的应用程序进行标志。

    解决这个问题的方法就是在运输层使用协议端口号(protocol port number)。

    在协议层间的抽象的协议端口是软件端口。

    硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。

    UDP和TCP的首部格式中,都有源端口和目的端口。当运输层收到IP层交上来的运输层报文时,就能够根据其首部中的目的端口把数据交付应用层的目的应用进程。

    TCP/IP的运输层用一个16位端口号来标志一个端口。端口只具有本地意义。

    16位端口号可允许有65535个不同的端口号,这个数目对一个计算机来说是足够用的。

    由此可见,两个计算机之间的进程要互相通信,不仅需要知道对方的IP地址(为了找到对方的计算机),而且要知道对方的端口号(为了找到对方计算机中的应用程序)。

    运输层的端口号分为下面的两大类:

    (1)服务器端使用的端口号

    熟知端口号或系统端口号(0~1023)

    IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。

    应用程序FTPTELNETSMTPDNSTFTPHTTPSNMPSNMP(trap)HTTPS熟知端口号212325536980161162443

    ​ 2.登记端口号(1024~49151) :为没有熟知端口号的应用程序使用的,这类端 口号必须在IANA按照规定的手续等级,以防止重复。

    (2)客户端使用的端口号 (49152~65535)。这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。

    5.2 用户数据报协议UDP

    5.2.1 UDP概述

    用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。

    UDP的主要特点是:

    (1)UDP是无连接的

    (2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表

    (3)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。**UDP对应用层交下来的报文,即不合并,也不差费,而是保留这些报文的边界。**UDP一次交付一个完整的报文。因此,应用程序必须选择合适大小的报文。

    (4)UDP没有拥塞控制,网络出现的拥塞不会使源主机的发送速率降低。很多的实时应用要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP正好适合这种要求。

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

    (6)UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

    因此,不使用拥塞控制功能的UDP有时候会引起网络产生严重的拥塞问题。

    5.2.2 UDP的首部格式

    用户数据报UDP有两个字段:数据字段和首部字段。

    首部字段(8个字节),由四个字段组成,每个字段的长度都是两个字节。

    (1)源端口 :不需要时可用全0

    (2)目的端口:终点交付时必须使用

    (3)长度:UDP用户数据报的长度,其最小值是8(仅有首部)

    (4)检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。

    如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方。

    注意:虽然在UDP之间的通信要用到端口号,但由于UDP的通信时无连接的,因此**不需要使用套接字来建立连接(**TCP之间的通信必须要在两个套接字之间建立连接)。

    UDP用户数据报首部中检验和的计算方法有些特殊。计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。

    这个伪首部只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传送也不向上递交,仅仅为了计算检验和。

    IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是**把首部和数据部分一起都检验。**因此,这样的检验和即检查了UDP用户数据报的源端口号和目的端口号以及UDP用户数据报的数据部分,又检查了IP数据报的源IP地址和目的地址。

    5.3 传输控制协议TCP概述

    先对TCP协议进行一般的介绍,然后再逐步深入讨论TCP的可靠传输、流量控制和拥塞控制等问题。

    5.3.1 TCP最主要的特点

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

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

    (3)TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。

    (4)TCP提供全双工通信。TCP允许通信双方的应用程序在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给TCP的缓存后,就可以做自己的事,而TCP在合适的时候把数据发送出去。在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。

    (5)面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

    TCP并不关心应用进程一次把多长的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。

    5.3.2 TCP的连接

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

    TCP连接的端点叫做套接字(socket)或插口。

    套接字socket = (IP地址:端口号)

    每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。

    5.4 可靠传输的工作原理

    IP层只能提供尽最大努力服务,TCP下面的网络所提供的是不可靠的传输。

    理想的传输条件有以下两个特点:

    (1)传输信道不产生差错。

    (2)不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。

    在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。

    然而实际的网络都不具备以上两个理想条件,但我们可以使用一些可靠传输协议,当出现差错时让发送方重传出现差错的数据,同时再接收方来不及处理收到的数据时,及时告诉发送方适当发送数据的速度。

    5.4.1 停止等待协议

    全双工通信的双方既是发送方也是接收方。

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

    以下自行解释产生了情况并且该如何进行处理:

    1.无差错情况

    2.出现差错 -> 超时重传

    3.确认丢失和确认迟到

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

    像上述的这种可靠传输协议常称为**自动重传请求ARQ。**意思是重传的请求是自动进行的。接收方不需要请求方重传某个出错的分组。

    4.信道利用率(略。。。)

    5.4.2 连续ARQ协议 P216

    滑动窗口协议是TCP协议的精髓所在。

    发送窗口内的5个分组都可以连续发送出去,而不需要等待对方的确认。

    “向前”是指 “向着时间增大的方向”

    “向后”是指 “向着时间减少的方向”

    连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

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

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

    最新回复(0)