您的位置:首页 > 理论基础 > 计算机网络

计算机网络教程-传输层(十)传输层提供的服务:进程与进程通信,寻址,差错、流量、拥塞控制。

2018-03-27 21:35 561 查看
TCP/IP 协议簇中的传输层位于应用层和网络层之间。它为应用层提供服务,并接收来自网络层的服务。传输层是客户程序和服务器程序之间的联络人,是一个进程到进程的连接。传输层是TCP/IP 协议簇中的核心;它是因特网上从一点到另一个点传输数据的端到端逻辑传输媒介。

一、进程到进程的通信

        传输层协议的首要任务是提供进程到进程通信( process-to-process communication)。进程是使用传输层服务的应用层实体(运行着的程序)。网络层负责计算机层次的通信(主机到主机通信)。网络层协议只把报文传递到目的计算机。然而,这是不完整的传递。报文仍然需要递交给正确的进程。这正是传输层接管的部分。传输层协议负责将报文传输到正确的进程。



二、寻址

1.端口号

        一个远程计算机在同一时间可以运行多个服务器程序,就像许多本地计算机可在同一时间运行一个或多个客户应用程序一样。对通信来说,我们必须定义本地主机、本地进程、远程主机以及远程进程。我们使IP 地址来定义本地主机和远程主机。为了定义进程,我们需要第二个标识符,称为端口号( portnumber)。在 TCP/IP 协议簇中,端口号是在 0 到 65 535 之间的 16 位整数。
       客户程序用端口号定义它自己,这称为临时端口号( ephemeral port number)。临时这个词表示短期的( short-lived),它之所以被使用是因为客户的生命周期通常很短。为了客户-服务器程序能正常工作,临时端口号推荐值为大于 1 023。
服务器进程必须使用一个端口号定义它自己。但是,这个端口号不能随机选择。TCP/IP 决定使用全局端口号;它们称为熟知
端口号( well-known port number)。 两个进程(客户和服务器)一般有相同的名字。



2.ICANN范围

熟知端口。端口号的范围是 0~1023,由 ICANN 分配和控制。这些是熟知端口号。
注册端口。端口号的范围是 1024~49151, ICANN 不分配也不控制。它们可在 ICANN 注册以防重复。
动态端口。端口号的范围是 49152~65535。这一范围内的端口号既不受控制又不需要注册,可以由任何进程使用。它们是临时或私有端口号。



3.套接字地址

在 TCP 协议簇中的传输层协议需要 IP 地址和端口号,它们各在一端建立一条连接。一个 IP地址和一个端口号结合起来称为套接字地址( socket address)。



三、封装与解封装



        封装在发送端发生。当进程有报文要发送,它将报文与一组套接字地址和其他信息一起发送到传输层,这依赖于传输层协议。传输层接收数据并加入传输层头部。因特网中传输层的分组称为用户数据报( user datagram)、 段( segment)或分组( packet),这取决于我们使用什么传输层协议。 我们将传输层有效载荷称为分组。

        解封装发生在接收端。当报文到达目的传输层,头部被丢弃,传输层将报文传递到应用层运行的进程。如果需要响应接收到的报文,发送方的套接字地址被发送到进程。

四、多路复用与多路分解

        每当一个实体从一个以上的源接收到数据项时,称为多路复用( multiplexing,多对一);每当一个实体将数据项传递到一个以上的源时,称为多路分解( demultiplexing,一对多)。源端的传输层执行复用;目的端的传输层执行多路分解



五、流量控制

        每当一个实体创建数据项并且有另一个实体消耗它们时,就存在生产速率和消费速率的平衡问题。如果数据项生产比消费快,那么消费者可能被淹没并且可能要丢弃一些数据项。如果数据项生产比消费慢,那么消费者必须等待,系统就会变得低效。流量控制与第一种情况相关。我们需要在消费者端防止丢失数据项。



        当生产者推数据项时,消费者可能被淹没并需要相反方向的流量控制,以此来防止丢弃这些数据项。换言之,消费者需要警告生产者停止传递,并且当消费者再次准备好接收数据时通知生产者。



        应用层的发送方进程仅仅是一个生产者。它生产报文块,并把它们推到传输层。发送方传输层有两个作用:它既是消费者也是生产者。它消费生产者推来的报文。它将报文封装进分组并传递到接收方传输层。接收方传输层也有两个作用:它是消费者,消费从发送方那里接收来的分组;它也是生产者,解封装报文并传递到应用层。然而,最后的传递通常是拉传递;传输层等待直到应用层进程请求报文。

缓冲区

        处理流量控制通常的方式是使用两个缓冲区:一个位于发送方传输层,另一个位于接收方传输层。缓冲区是一组内存单元,它可以在发送端和接收端存储分组。消费者向生产者发送信号从而进行流量控制通信。当发送方传输层的缓冲区已满,它就通知应用层停止传输报文块;当有空闲位置时,它通知应用层可以再次传输报文块。当接收方传输层的缓冲区已满,它就通知发送方传输层停止传输分组;当有空闲位置时,它通知发送方传输层可以再次传输分组。

六、差错控制

        在因特网中,由于网络层( IP)是不可靠的,如果应用层需要可靠性,我们需要使传输层变得可靠。可靠性可以通过在传输层加入差错控制服务来实现。

发现并丢弃被破坏的分组。
记录丢失和丢弃的分组并重传它们。
识别重复分组并丢弃它们。
缓冲失序分组直到丢失的分组到达。
正如传输控制,大多数情况下,接收方传输层管理差错控制,它通过告知发送方传输层存在问题来进行管理。



1.序号

        差错控制需要发送方传输层知道哪个分组要被重传并且接收方传输层需要知道哪个分组是重复的、哪个分组是失序的。如果分组是编号的,这个就可以实现。

2.确认

        我们可以发送积极或消极的信号作为差错控制,但是我们只讨论积极信号,这在传输层中最常见。 接收方可以为每一组正确到达的分组发送一个确认( ACK)。接收方可以简单地丢弃被破坏的分组。 发送方如果使用计时器,它就可以发现丢失分组。当一个分组被发送,发送方就开启一个计时器。如果 ACK 在计时器超时之前没有到达,那么发送方重发这个分组。重复的分组可以被接收方默默丢弃。失序的分组既可以被丢弃(被发送方当做丢失报文对待),也可以存储直到丢失的那个分组到来。

3.流量与差错控制结合

        我们已经讨论过,流量控制要求使用两个缓冲区,一个在发送端另一个在接收端。我们也已经讨论过差错控制要求两端均使用序号和确认号。如果我们使用两个带序号的缓冲区:一个位于发送端,一个位于接收端,那么这两个需要可以结合起来。

滑动窗口



由于序号进行模 2m操作,因此一个环可以代表从 0 到 2m-1 的序号(见图 3-12)。缓冲区由一组片段代表,称为滑动窗口( sliding window),它随时占据环的一部分。在发送端,当一个报文被发送,相应的片段就被标记。当有所片段都被标记时,意味着缓冲区满且不能从应用层进一步接收报文。当确认到达时,相应片段被取消标记。如果从窗口开始处有一些连续的片段没有被标记,那么窗口滑过这些相应序号的范围,允许更多的片段进入窗口尾部。



七、拥塞控制

在因特网之类的分组交换网络中存在一个重要问题,这就是拥塞( congestion)。如果网络中的负载( load,即发送到网络的分组数)大于网络的容量(网络可以处理的分组数),那么网络就可能发生拥塞。 拥塞控制( congestion control)指的是一种机制和技术,它控制拥塞并将负载保持在容量以内。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐