计算机网络--运输层(1) 总概况

                                            运输层

1.运输层与网络层的区别。

运输层协议是在端系统中,而不是在网络路由器中实现的。因此路由器不处理也不识别。运输层。所添加的任何报文信息。

运输层为运行在不同主机上的进程之间提供了逻辑通信。网络层提供了主机之间的通信

 

2.工作过程

发送方运输层将接收到的来自发送应用进程的报文,转换成运输层报文段。一般的方法为,将应用报文转化为较小的块儿,并为每块儿加上一个运输层,首部来创建运输层报文段。然后在发送方端系统中,运输层将这些报文段传递给网络层。网络层将其封装为网络层分组并向目的地发送。

具体实例。

小明家有12个孩子。小红家有12个孩子。每周,小明家的12个孩子会给小红家的每个孩子都写一封信。小张。作为小明家最大的孩子,每周会收取所有的信件。交到邮政运输车上。小王作为小红家。最大的孩子。当接收到。这些信件时会依次分发给其他的孩子。

进程 = 所有的孩子。

信封上的字 = 应用层报文。

家庭 = 主机。

小张,小王 = 运输层协议。

邮政服务(邮政运输车。) = 网络层协议。

继续讨论上面的例子。因为小张小王年纪比较大,所以他们收发信件时几乎可以保证准确无误。但是如果小张小王生病了,该工作由第二大的孩子来进行。由于孩子年纪比较小,可能会造成信件丢失等情况。但是他们收发比较快。

无论哪个孩子充当信件的收集和交付工作。他们所做的工作都是相同的,也就相当于是提供相同的服务。只是该服务有好坏之分。就像运输层所提供的各种协议一样。有的可以保证数据的准确传达。有的可以保证数据的快速传达。

继续上面的例子。如果邮政服务不能保证信件的传输在三天以内。小张,小王也无法将这些信件。收发到其他孩子手中。这说明,两个孩子的工作取决于邮政服务的工作。

这也说明,运输层协议所能提供的服务。受到底层网络层协议服务类型的限制。如果网络层协议不能为两组级之间发送,报文提供时延和带宽保证。那么运输成协议。也无法提供这种保证。

 

3.TCP  UDP概要服务介绍

二者提供的最基本服务,将两个端系统间IP的交付服务,扩展到进程间交付服务。服务被称为运输层的多路复用和多路分解

同时他们还提供进程间数据交付和差错检验。这也是UDP所提供的仅有的两种服务。

TCP提供额外的服务。可靠数据传输。拥塞控制。

 

4.多路复用和多路分解

运输层实际上没有直接将数据交付给进程,而是通过一个套接字来传递每个套接字都有唯一的标识符。

运输层报文段。如何定向的传到合适的套接字?

通过在运输层报文段中设计几个字段。用来标识接收的套接字。

多路分解。将运输层报文段中的数据交付到正确的套接字。

多路复用。从不同套接字中收集到数据块儿。并为每个数据块封装上首部信息,从而形成运输层报文段。然后传递给网络层。

还是使用上面的例子。多路分解的工作过程为,当小张和小王分。邮件的时候,他们会根据收信人的名字进行邮件的分发。而这个名字就是套接字。收取全部邮件的过程就是多路复用的过程。

  --------------------------------------------------------------------------------------------------------------------

下面具体来解释两个工作过程。

每个报文段有特殊字段来,指示该报文段所要交付的套接字。

首先特殊字段是 ,源端口号字段和目的端口号字段,以及一些其他信息。一个端口号的大小为16比特的数字。

  --------------------------------------------------------------------------------------------------------------------

UDP中:

主机上的每个套接字被分配一个端口号。当报文段到达主机时,运输层检查报文段中的目的端口号。并将其定位到相应的套接字。然后报文段中的数据通过套接字进入其连接的进程。

一个UDP套接字是由一个包含目的的ip地址。和目的的端口号的二元组表示。

 

下面我们来详细的描述一下UDP

1. 首先如果应用开发人员选择UDP,而不是TCP,那么应用程序几乎直接与ip打交道。

2.主要的性质

无连接。发送报文段之前,发送方跟接收方的运输层实体之间没有进行握手。

一般在使用该协议时没有收到响应信息后,那么如何处理呢,以DNS为例?

一般的做法是,会试图向另一个名字服务器发送查询信息。或者直接通知调用的应用程序,它不能获得响应。

 

3.为什么有许多应用程序更适合UDP?

1.应用层能更好地控制要发送的数据。和发送的时间。

当我们使用TCP的时候,如果网络曾出现壅塞现象,会议室发送方发送的速率。因此对于一些实时应用程序来讲,他们要求的是更快的发送速率,不想过分的延迟,并且能够容忍一些数据的丢失,因此UDP更合适。

2.无需连接

如果使用TCP,需要三次握手。这样会产生一些时延

3.分组首部开销比较小。

TCP报文段的首部需要20字节。但是,UDP只需要8 bit树可靠传输不?

 

4. 不可靠传输

当我们使用UDP时候,在信道中可能存在分组丢失的现象。这是这条协议不可避免的。但是,使用该协议的应用程序仍可以实现可靠性传输。主要原因是因为,该应用程序自身可以建立可靠性机制。来填补UDP不可靠传输的缺陷。

 

5.UDP报文段

5.1 报文段的结构

首部信息一共有四个字段,每个字段由两个字节组成。检验核的作用是来判断传输过程当中报文段是否存在差错。

                                                       

5.2 UDP检验和

5.2.1 作用。

该服务提供了差错检验功能。用于确定当报文段从。目标主机到目的主机时,其比特是否发生了改变。TCP也使用相似的办法进行差错检验,这是运输层必须提供的基本服务。

5.2.2 具体方法。

发送方的UDP对报文段中的所有16bit 的和进行反码运算。求和时遇到的任何溢出都被回卷。得到的结果放在报文段中的检验和字段处。

假设有如下的3个16 bit的字节

                                                          

他们求和后的结果为:

                                                                 

解释:首先把前两个16 bit 进行相加。再与第三个,16 bit 数据进行相加。值得注意的是,在下方红色框以里,也就是第二次相加的时候。出现回卷的情况。

什么是回卷呢?

就是计算后的结果有17位的时候,会把最前面的一位,去掉。把这个数字再与剩余的16位计算后的结果进行相加。也就会得到我们最终的结果。

 那我们怎么判断是否在传输过程当中比特有改变的现象吗?

在接收方中把全部的四个比特,也就是包括之前的三个比特以及传过来的检验和,进行相加。  如果计算的结果中,全部16个比特结果都为1。则无差错。只要有0出现,则表示在传输过程当中有错误。                                           

  --------------------------------------------------------------------------------------------------------------------

TCP中:

一个TCP套接字。是一个四元组:源ip地址。源端口号。目的ip地址。目的端口号。

 

  --------------------------------------------------------------------------------------------------------------------

5.可靠数据传输协议

具体细节参考,如下的文章,因为过于冗长,因此单独写了一篇文章。

计算机网络--运输层(2)可靠数据传输协议:https://mp.csdn.net/postedit/101120301

  --------------------------------------------------------------------------------------------------------------------

6. TCP的详细介绍

具体细节参考,如下的文章,因为过于冗长,因此单独写了一篇文章。

计算机网络--运输层(3) TCP:https://blog.csdn.net/qq_36098284/article/details/101217287

  --------------------------------------------------------------------------------------------------------------------

7.拥塞控制原理。

 

7.1 控制方法。

7.1.1 端到端拥塞控制。

网络层不会提供任何关于网络拥塞的提示信息给运输层。因此需要TCP自己进行观察和控制。两种控制办法。增加时延的时间设置。或者减少窗口长度。

7.1.2 网络辅助。

路由器向发送方显示的提供网络中拥塞状态的反馈信息。该比特可以指示链路层的拥塞情况。

如果使用网络辅助,也有两种方式。第一种就是路由器直接告诉发送方,我现在网络是拥塞的状态。第二种方式就是路由器修改。发送方传给接收方的分组信息。当发送方接收到接收方的数据时,会收到这组拥塞的标识信息。就会知道现在网络状态是拥塞的。

 

7.2 ATM ABR拥塞控制。

当网络轻载时,ABR服务会充分利用空闲的可用代宽。当网络拥塞时,该服务将其传输速率抑制为某些预先设定的最小传输速率。

RM数据分组之间作为网络反馈。提供网络是否拥塞的关键信息。

该控制方法是一种基于速率的方法。也就是发送方明确的计算出它所能发送的最大速率。然后,自己进行相应的调整。

  --------------------------------------------------------------------------------------------------------------------

8. TCP拥塞控制。

8.1 背景

对于TCP拥塞控制,它只能使用端到端的方式,不能使用网络辅助的方式。

具体表现为让每一个发送方根据所感知到的网络拥塞的程度来限制发送速率。如果他感知路径上没有拥塞,就会增加发送速率。如果有拥塞现象,就会降低发送速率。

8.2 问题

1.如何限制发送方的发送速率?

2.如何感知网络的拥塞状态?

3.什么算法来改变发送速率?

8.3 Reno 算法

下面我们以这个算法为例研究上面提到的三个问题。

8.3.1 首先是第一个问题。如何限制发送方的发送速率?

该算法要求我们除了之前提到过的几个变量:LastByteRead、RcvWindow等,还需要一个新的变量。拥塞窗口(congestion window ),CongWin,用于,限制发送方向网络中发送流量的速率。

运输层要求发送方未被确认的分组数据量不能超过RcvWindow和CongWin最小值。

8.3.2 下面研究第二个问题,如何感知路径上的壅塞状态?

当出现过渡优色时,该路径上的多台路由器的缓存会溢出,导致数据报被丢弃。丢弃的数据接着会引发发送方的丢失事件。这时发送方就认为路径上出现了拥塞的提示。简单来说就是当发送方发现超时或者收到三个冗余ACK时候,就认为,数据包的丢失是因为拥塞。

同时,我们考虑在没有拥塞的网络环境下,发送方当收到接收方给的确认反馈信息后会认为网络的传输速率是正常的。这时就会增加壅塞窗口的长度来改变传输速率。如果确定的速度比较慢,该窗口就会以相当慢的速度增加。如果确定的速度非常快,那么就会与以快的速度增加窗口的长度。也就是说使用确认来触发TCP的拥塞窗口长度的增加。因此TCP被称之为自计时的。

8.3.3 算法细节

1.慢启动。

2对超时事件做出反应。

3.加性增,乘性减

###  对加性增,乘性减的解释

出现丢包事件时,发送方降低及发送速率不仅会影响一台主机。还会影响使用同一路由器路径的其他主机。也就意味着许多主机都会降低他们在网络中传输数据的速率。从而减轻了拥塞路由器的拥塞程度。

那么我们现在来思考减少窗口长度时,具体减少多少呢?

我们规定每发生一次丢包事件就将当前的窗口长度值减少一半。也就是乘性减的含义。

现在我们再来讨论一下当。带宽充足的时候如何增加窗口长度?

我们规定每收到一个确认后,就把窗口长度增加一点,也就是一MSS

 

###慢启动。

当一个连接建立起来后,初始的窗口长度值设定为一个MSS。同时在初始阶段,发送速率不是线性增加的,而是指数速度增加的。计每经过一个RTT将窗口长度值翻倍。发送方继续与指数速度增加其发送速率,直到发生一个丢包事件为止。此时窗口长度减少为原来的一半。然后就会根据上面描述的线性的进行增长。

 

###对超时事件做出反应。

刚收到三个冗余ACK时候,窗口长度会减小为原来的一半,然后呈线性增长。

在这个过程当中,TCP始终维持一个数值变量来管理这些复杂的过程。它是用来确定慢启动将结束并且拥塞,避免将开始的窗口长度。

当发生超时事件和接收到冗余反馈信息时,处理方式是不同的。因为当收到三个冗余回馈信息后,取消慢启动的阶段,我们称之为快速恢复。主要原因是因为,收到多个冗余反馈信息时表明,只是中间的某些分组在中间信道中丢失,但之后的分组信息被正确接收。因此并不需要。开启慢启动。但是超时事件发生时,意味着,多数的分组信息都未被接收。因此几乎需要全部冲传。因此处理方式也就不同。

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值