传输层知识要点

传输层知识要点

运输层为应用进程之间提供端到端的逻辑通信(从应用层来看),从通信和信息处理角度看,运输层向上面的应用层提供通信服务。是面向通信部分的最高层和面向用户功能中的最底层。

网络层是为主机之间提供逻辑通信

软件端口:应用层各种协议与运输实体进行层间交互的地址

TCP端口:使用16位端口号进行标识,为了标识本计算机应用层中各进程。熟知端口数值0-1023(服务端);登记端口数值1024-49151(服务端);49152–65535动态端口(客户端)。

端口号只具有本地意义,标志本计算机应用进程与运输实体的交互层间接口。不同计算机应用进程可能采用不同端口号。

用户数据报协议(UDP)

UDP是无连接的(减少开销和发送之前的时延),尽最大努力交付(主机不必维持复杂的连接状态)的传输协议。UDP面向报文(一次发送一个报文),没有拥塞控制(实时电话),至此一对一、一对多和多对一和多对多的交互通信。开销小,首部只有8字节。

发送方UDP对应用程序交下来的报文添加首部后就向下交付给IP网络层。只在IP数据服务上增加了很少功能,复用和分用以及差错检测功能。

UDP报文格式:

首部字段8个字节。

计算检验和过程:

把12字节伪首部(检验临时添加的)和UDP用户数据报加上一起进行检验。

如果接收方UDP发现收到的报文中目的端口号不正确,就丢弃该端口并使用ICMP发送“端口不可达”差错报文给发送方。traceroute就使用UDP用户数据报故意使用非法UDP端口,让目的主机返回“端口不可达”差错报文。

传输控制协议(TCP)

面向连接的传输协议,每条连接有两个端口,都是点对点提供面向字节流(一次一个数据块)的可交付可靠的全双工通信。

TCP连接

TCP连接端点为套接字(端口号拼接IP地址)

Socket = (IP地址:端口号)

TCP连接::={Socket1,Socket2}

​ ={(IP1:Port1),(IP2:Port2)}

可靠传输

理想传输条件:

  • 传输信道不产生差错。(差错重传)
  • 不管发送方一多快的速度发送数据,接收方能都及时处理收到的数据。(拥塞控制)

停止等待协议

在不可靠的传输网络中实现可靠传输。

  • 无差错情况。发送方发送分组目的主机,目的主机向发送方发送确认。
  • 出现差错。接收方发现分组出错或者传输出错不通知发送方,当发送方超时计时器到期后就重新发送分组。
  • 确认丢失和确认迟到。当发送方在超时计时器到期范围内未收到确认分组,重新发送分组。接收方对该分组丢弃并返回确认分组。

在发送完一个分组后,必须暂时保留其副本分组,超时时器重传时间应当比数据在分组传输的平均往返时间更长。

ARQ(自动重传请求):当发送方未在重传时间内收到接收方确认返回包,则自动发送重传分组,实现自动进行。

流水线传输:发送方连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。

连续ARQ协议

使用流水线传输所用窗口。发送方每收到一个确认,就使发送窗口向前滑动一个分组位置。

累计确认:不必对收到分组逐个发送请求,对按序到达的最后一个分组发送确认。

优点:容易实现

缺点:不能向发送方反映出接收方已经正确收到的所有分组信息。

Go-back-N(回退N):发送方对接收方未发的确认分组退回重传n个分组。

TCP报文段

首部固定长度为20个字节,其他可选字节。

字段

可靠传输的实现

滑动窗口:发送窗口的发送缓存用来存放发送方准备发出和已发出但尚未收到确认的数据;接收方用来暂时存放按序到达但尚未被接受方读取和未按序到达的数据的程序。发送窗口是发送缓存的一部分。

发送窗口状态用三个指针描述:P1(窗口后沿)、P2(已发送但未收到确认)、P3(窗口前沿)

p3-p1:发送窗口

p2-p1:已发送未收到确认

p3-p2:允许发送但未发送(可用窗口)

注意:1、虽然A的发送窗口根据B的接收窗口设置,但网络传送窗口值需要经历时间,并不总是和接收窗口一样大。

​ 2、对不按序到达的报文,将其临时缓存在接收窗口中,当缺少字节流到达后按序交付上层应用进程。

​ 3、接收方累计确认功能不应过分推迟和捎带确认并不经常发生。

超时重传时间选择

采用自适应算法记录发送时间和确认时间。加权平均往返时间

RTTs=(1-a) * 旧的RTTs样本 +a * 新的RRT样本 a推荐值为1/8

RFC2998建议:

RTO = RTTs + 4 x RTTd

RTTd = (1-B) * 旧的RTTd值 + B * |RTTs-新的RTT样本|,第一次测量为RRT样本值一半,B推荐值为1/4.

Karn算法

设想问题:发送端发出一个报文段,当设定的超时时间到了还没收到确认,于是重传该报文段,经过一段时间后,发送端收到了报文确认。但无法判断该确认报文是对第一个报文的确认还是第二个报文的确认。

方法:报文段每重传一次,就把超时重传时间RTO增大一点。典型方法是将RTO时间翻倍。

选择确认

接收方在收到了和前面的字节流不连续的两个字节块,将这些字节缓存在接收窗口中并反馈给发送方不要重复发送。 但SACK文档未指名发送方如何响应SACK,大多数实现都是重传未确认的数据块。

TCP流量控制

让发送方发送速率不要太快要让接收方来得及接收。

滑动窗口机制

在建立连接后,接收方告诉发送方发送窗口不能超过接收窗口数值。单位为字节,不是报文段。

防止发送方一直等待接收方的非零窗口造成的死锁局面,为每一个TCP连接设置持续计时器。当连接一方收到对方的零窗口通知后就启动持续计时器,计时器到期后发送零窗口探测报文段。

TCP拥塞控制

对资源需求的总和大于可用资源时,造成拥塞。

拥塞控制是使网络能够承受现有的负荷,流量控制是在指定的发送端和接收端之间的点对点通信量的控制。

控制理论角度看拥塞控制,分为开环控制和闭环控制。

方法:

1、慢开始和拥塞避免

2、快传送和快恢复

慢开始:在主机刚刚开始发送报文段时将拥塞窗口cwnd设置为一个字节,设置一个慢开始阈值(ssthresh)。在每收到一个对新报文段的确认后,将拥塞窗口增加一个字节,这样来逐步增大发送端的拥塞窗口cwnd。

拥塞避免:当拥塞窗口大于慢开始阈值时,使拥塞窗口缓慢增长,每经过一个RTT后拥塞窗口增加一个字节(线性规律增加)

注:当网络出现拥塞时,将慢开始阈值设置为出现拥塞时的窗口大小一半,然后又将拥塞窗口设置为1执行慢开始算法。

快重传算法: 当接收方收到一个失序后的报文段后,立即向发送方发出重复确认。

快恢复算法:当发送方收到三个重复确认时,执行“乘法减小”算法,将慢开始门限设置为当前拥塞窗口一半,接着将拥塞窗口设置为慢开始门限,执行拥塞避免算法。

发送方窗口上限值为接收窗口rwnd和拥塞窗口cwnd的较小值。

乘法减小:无论在慢开始还是拥塞避免,只要出现超时(可能网络拥塞),就把慢开始门限减半设置为当前拥塞窗口一半。

加法增大:执行拥塞避免算法后,使拥塞窗口缓慢增大,防止网络过早出现拥塞。

TCP运输连接管理

连接管理(三次握手、四次挥手)

分为连接建立、数据传送、连接释放这三个部分。

三报文握手:

第一次握手:客户端给服务器发送SYN报文。首部的同步位SYN=1,初始序号seq=x.不携带数据,消耗一个序号。

第二次握手:服务端接收到客户端的SYN报文后,以自己的SYN报文应答。SYN报文中ack确定值为客户端的序列号x+1,SYN=1,ACK=1,序号seq=y。

第三次握手:客户端在收到服务端的确认报文后,发送SYN报文。ACK值为服务端序列号y+1,序号为x+1,ACK=1.(不消耗序号)

(第三次是防止已失效的连接请求报文突然又传送到服务器,没有第三次握手的话服务器就会认为连接建立等待客户机发送报文造成网络资源浪费。此时发送方发送复位报文段,拒绝连接)

四次挥手:

第一次挥手:客户端向服务端发送FIN报文,其中标识FIN=1,序号为u。

第二次挥手:服务端在接收到客户端发送断开请求后,发送确认报文,其中ACK=1,ack=u+1,squ=v。

第三次挥手:当服务端数据传输完毕后向客户端发送断开请求,其中报文中标识符FIN=1,ACK=1,seq=w,ack=u+1。

进入时间等待计时器(2min),保证最后确认报文到达服务器。防止已失效的连接请求报文段。

第四次挥手:客户端接收到服务端的断开请求后,做出应答。报文中标识符ACK=1,sqe=u+1,ack=w+1。

服务器结束TCP连接时间比客户端结束TCP连接要早一些。

重点题型

1、ISO传输层中数据传输的任务是在两个传输实体之间传输用户数据和控制数据。

2、在TCP/ip协议簇中,UDP协议工作在传输层,TCP工作在网络层。

3、TCP/IP协议帧类型

广播、多播、单播。

广播:Broadcast帧通过目标地址FFFFFFFFFFFFF发送到网上的所有主机,网络上所有主机能响应该数据帧。

多播:Multicast帧交付给网络上的一组主机。

单播:Unicast帧交付给网络上一个具体的硬件地址。其他所有主机丢弃这个帧。

4、SYN Flood攻击

发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)攻击方式。

主要原因是由于T CP第三次握手没完成,此时服务器端会在30s-2min时间段后进行重发第二次握手(SYN+ACK)报文,当有大量客户端发起该攻击时,服务器为了维持半连接而消耗非常多的资源,使得服务器无法处理正常请求。

5、端口的作用是对TCP/IP体系的应用进程进行统一的标识,使运行不同的操作系统的计算机的应用进程能够互相通信。

端口划分为3类原因:

避免端口号重复,无法区分应用进程。

6、

不行。重传时,IP数据报的标识字段会有另外一个标识符。仅当标识符相同的IP数据报片才能组装成一个IP数据报、由于前两个IP数据报片的标识符与后两个IP数据报片的标识符不同,不能组装成一个IP数据报。

7、

运输层处于面向通信部分的最高层,用户功能中的最底层,为上面的应用层服务提供服务。

运输层为应用进程之间提供端到端的逻辑通信,网络层是为主机之间提供逻辑通信,必须由运输层以复用和分用的形式加载到网络层。

8、运输层复用

9、采用UDP方式

VOIP:由于语音信息具有一定的冗余度,有差错的UDP在接收端被直接抛弃,TCP数据报出错则会引起重传带来具大的变动。

10、接收方收到有差错的UDP用户数据报会丢弃或附加差错警告报告传给上层。

11、

UDP面向报文:发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层 。UDP应用层交下来的报文,既不合并也不拆分,保留报文边界。接收方UDP对IP层交上来的UDP用户数据报在去除首部后交给上层的应用进程,一次交付一个完整的报文。

TCP对应用程序交下来的报文数据块保留在发送缓存中,将应用程序交下来的数据看成一连串的无结构的字节流,并不知道其字节流含义。

12、

证明:若使用n比特对分组进行编号,编号范围为2的n次方-1,一次可发送0-2的n次方个分组。若这些分组全部被正确接收,接收方进行ack确认,但此时发送方不知道此时的确认信息是以前的分组还是新的分组,因此发送窗口不超过2的n次方-1。

13、

在连续ARQ协议中,对那些发送端发送分组后的计时器采用链表记录法。信息域为分组的相对发送时间及分组的编号来实现。当编号为0的分组定时时钟到期后修改链表指针并重发次分组,收到确认后将指针指向编号为1的分组。

14、TCP首部除固定长度部分外,还有可选项,TCP首部长度是可变的,固定长度是20字节。UDP首部长度是固定8字节的。

15、IP数据报最大长度为2的16次方-1(65535字节),IP数据报首部为20字节,TCP报文段首部为20字节,TCP报文段数据部分为65495字节,TCP报文段最大载荷是65515字节。

数据的字节长度超过TCP报文段的序号可能编出的最大序号,通过循坏使用序号仍能用TCP来传送。

16、最大吞吐量/数据率=最大窗口(字节)*8/平均往返时间

17、慢开始、拥塞避免、快重传和快恢复算法。

慢开始:在主机刚刚开始发送报文段时将拥塞窗口cwnd设置为一个字节,设置一个慢开始阈值(ssthresh)。在每收到一个对新报文段的确认后,将拥塞窗口增加一个字节,这样来逐步增大发送端的拥塞窗口cwnd。

拥塞避免:当拥塞窗口大于慢开始阈值时,使拥塞窗口缓慢增长,每经过一个RTT后增加一个拥塞窗口(线性规律增加)

注:当网络出现拥塞时,将慢开始阈值设置为出现拥塞时的窗口大小一半,然后又将拥塞窗口设置为1执行慢开始算法。

快重传算法: 当发送方在收到接收方发送来的对上一个报文的3个确认报文,不必等待重传计时器的超时立即发送下一序号的报文。

快恢复算法:当发送方收到三个重复确认时,执行“乘法减小”算法,将当前拥塞窗口减半并将其设置为慢开始阈值,执行拥塞避免算法。

18、除了由于网络拥塞导致的丢包,举例说明。

(1)、IP数据报在传输过程中需要分片,若其中某个分片未能及时到达终点而终点组装数据报已超时;

(2)、IP数据报已经到达终点,但终点的缓存没有足够的空间存放该数据报。

(3)、数据报在转发过程中经过网桥等中间设备,由于转发以及设备原因导致丢弃。

19、Karn算法允许TCP区分有效和无效的往返时间样本,从而改进往返时间的估算。若不采用Karn算法,而是在收到确认报文时都认为是对重传报文段的确认,得到的往返时间样本的重传时间都会偏小。最后减小很接近0.

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2024 John Doe
  • 访问人数: | 浏览次数:

让我给大家分享喜悦吧!

微信