Computer Networking——transport layer QA

xiaoxiao2021-02-28  94

5—01试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?

答:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。 运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。还有一个不同点在于差错控制上。 各种应用进程之间通信需要“可靠(TCP)或尽力而为(UDP)”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。


5—02网络层提供数据报或虚电路服务对上面的运输层有何影响?

答:不影响上面的运输层的运行机制。 但提供不同的服务质量。


5—03 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是面向无连接的?

答:都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。


5—04 试用画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上,而这条运输连接有复用到IP数据报上。

答:复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据(当然要加上适当的首部),分用是指接收方的运输层在剥去豹纹的首部后能够把这些数据正确交付目的应用进程。 图见我的network layer(part one)


5—05 试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。

背景:TCP协议适用于对效率要求相对低,但对准确性要求相对高的场景下,或者是有一种连接概念的场景下;而UDP协议适用于对效率要求相对高,对准确性要求相对低的场景.

TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等;UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等.

VOIP: 一种由IP网络传送话音的技术服务。

https://www.zhihu.com/question/20292749(qq中的大部分功能也是UDP实现的)


5—06 接收方收到有差错(比特差错)的UDP用户数据报时应如何处理?

答:丢弃


5—07 如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?请说明理由

答:可能,但应用程序中必须额外提供与TCP相同的功能。即应用层协议本身已经具备了一定的面向连接的特性。


5—08 为什么说UDP是面向报文的,而TCP是面向字节流的?

答:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。 接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。(所以若运输层使用UDP,应用层要使用合适的报文长度)

发送方TCP对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,可分拆/合并),但维持各字节


5—09 端口的作用是什么?为什么端口要划分为三种?

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

熟知端口号:标记常规的服务进程 登记端口号:标记没有熟知端口号的应用进程(主要是服务进程),需要统一登记,避免重复 客户端口号或短暂端口号:给客户进程短暂使用,可以多次分配


5—10 试说明运输层中伪首部的作用。

答:用于计算运输层数据报校验和。 目的端根据伪首部和数据单元计算校验和以验证通信数据在传输过程中没有改变而且到达了正确的目的地址。(有可能是路由选择错误带来的目的地址改变)


5—11 某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP层后,又封装成IP数据报。既然都是数据报,可否跳过UDP而直接交给IP层?哪些功能UDP提供了但IP没提提供?

答:不可以。 IP数据报IP报承担主机寻址,提供报头检错;只能找到目的主机而无法找到目的进程。 UDP提供对应用进程的复用和分用功能,以及提供对数据部分的差错检验。


5—12 一个应用程序用UDP,到IP层把数据报在划分为4个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。

答:不行 。 重传时,IP数据报的标识字段会有另一个标识符。仅当标识符相同的IP数据报片才能组装成一个IP数据报。这里涉及到两次传输,前两个IP数据报片的标识符与后两个IP数据报片的标识符不同,因此不能组装成一个IP数据报。


5—13 一个UDP用户数据的数据字段为8192字节。在数据链路层要使用以太网来传送。试问应当划分为几个IP数据报片?说明每一个IP数据报字段长度和片偏移字段的值。

答:以太网的最大传输单元是1500字节,其中还包括20字节的首部。 所以数据字段的长度:前5个是1480字节,最后一个是800字节。片偏移字段的值分别是:0,1480,2960,4440,5920和7400


5—14 一UDP用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器发送给客户?使用UDP的这个服务器程序是什么?

UDP的首部很简单,应该记下来。共8字节,每2字节进行划分。分别是源端口,目的端口,长度和检验和。

解:源端口1586,目的端口69,UDP用户数据报总长度28字节,数据部分长度20字节。 此UDP用户数据报是从客户发给服务器(因为目的端口号69,是熟知端口)、服务器程序是TFFTP。


5—15 使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?

答:如果语音数据不是实时播放就可以使用TCP,因为TCP传输可靠。接收端用TCP讲话音数据接受完毕后,可以在以后的任何时间进行播放。但假定是实时传输,则必须使用UDP。 UDP不保证可靠交付,但UCP比TCP的开销要小很多。因此只要应用程序接受这样的服务质量就可以使用UDP。


5—16 在停止等待协议中如果不使用编号是否可行?为什么?

答:分组和确认分组都必须进行编号,才能明确哪个分组得到了确认。


5—17 在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。

答:不可行,需要重传确认报文给发送方。 发送方认为接收方没有收到报文所以重复发送,如果接收方收到报文段后不发送确认,发送放就会继续发送该报文,形成死循环。


5—18 假定在运输层使用停止等待协议。发送发在发送报文段M0后在设定的时间内未收到确认,于是重传M0,但M0又迟迟不能到达接收方。不久,发送方收到了迟到的对M0的确认,于是发送下一个报文段M1,不久就收到了对M1的确认。接着发送方发送新的报文段M0,但这个新的M0在传送过程中丢失了。正巧,一开始就滞留在网络中的M0现在到达接收方。接收方无法分辨M0是旧的。于是收下M0,并发送确认。显然,接收方后来收到的M0是重复的,协议失败了。 试画出类似于图5-9所示的双方交换报文段的过程。


5—19 试证明:当用n比特进行分组的编号时,若接收窗口等于1(即只能按序接收分组),当仅在发送窗口不超过2n-1时,连接ARQ协议才能正确运行。窗口单位是分组。


5—20 在连续ARQ协议中,若发送窗口等于7,则发送端在开始时可连续发送7个分组。因此,在每一分组发送后,都要置一个超时计时器。现在计算机里只有一个硬时钟。设这7个分组发出的时间分别为t0,t1…..t6,且tout都一样大。试问如何实现这7个超时计时器(这叫软件时钟法)?

9


5—21 假定使用连续ARQ协议中,发送窗口大小是3,而序列范围[0,15],而传输媒体保证在接收方能够按序收到分组。在某时刻,接收方,下一个期望收到序号是5. 试问: (1) 在发送方的发送窗口中可能有出现的序号组合有哪几种? (2) 接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。

答:解:下一个期望收到的序号为5,说明序号到4为止的报文都已经收到,若这些确认全部到达接收方,则WT=[5,7];若所有的确认都丢失,则WT=[2,4] ;若3号确认丢失,则WT=[3,5];若4号确认丢失,则WT=[4,6] 所以,WT可能是[2,4],[3,5],[4,6],[5,7]中的任何一个。 (2)因为WT=3,ACK=5,所以1号报文的确认肯定已经到达发送方,否则不会发送4 号报文。所以,可能滞留在网络中的确认是 2,3,4,是对2,3,4号报文的确认。


5—22 主机A向主机B发送一个很长的文件,其长度为L字节。假定TCP使用的MSS有1460字节。

(1) 在TCP的序号不重复使用的条件下,L的最大值是多少? (2) 假定使用上面计算出文件长度,而运输层、网络层和数据链路层所使用的首部开销共66字节,链路的数据率为10Mb/s,试求这个文件所需的最短发送时间。

答:(1)序号有4字节,最大可表示整数位2^32,所以L_max的最大值是是4GB

2) 满载分片数Q={L_max/MSS}取整=2941758 发送的总报文数 N=Q*(MSS+66)+{(L_max-Q*MSS)+66}=4489122708+682=4489123390 总字节数是N=4489123390字节,发送4489123390字节需时间为:N*8/(10*10^6)=3591.3秒,即59.85分,约1小时。

5—23 主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问: (1) 第一个报文段携带了多少个字节的数据? (2) 主机B收到第一个报文段后发回的确认中的确认号应当是多少? (3) 如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节? (4) 如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?

答:(1)70到99,一共30字节(2)100(3)80(4)70


5—24 一个TCP连接下面使用256kb/s的链路,其端到端时延为128ms。经测试,发现吞吐量只有120kb/s。试问发送窗口W是多少?(提示:可以有两种答案,取决于接收等发出确认的时机)。

对于a:W / [(端到端延时 X 2+(W /传输速度)]=120 对于b:吞吐量=W / (端到端延时 X 2)=120

注意这里的kb/s,b代表bit,k代表10的3次方!


5—25 为什么在TCP首部中要把TCP端口号放入最开始的4个字节?

答:在ICMP的差错报文中要包含IP首部后面的8个字节的内容,而这里面有TCP首部中的源端口和目的端口。当TCP收到ICMP差错报文时需要用这两个端口来确定是哪条连接出了差错。 (完全没注意到的知识点)


5—26 为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个这个字段?

答:TCP首部除固定长度部分外,还有选项,因此TCP首部长度是可变的。UDP首部长度是固定的。


5—27 一个TCP报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP报文字段中的序号字段可能编出的最大序号,问还能否用TCP来传送?

答:65495字节,此数据部分加上TCP首部的20字节,再加上IP首部的20字节,正好是IP数据报的最大长度65535.(当然,若IP首部包含了选择,则IP首部长度超过 20字节,这时TCP报文段的数据部分的长度将小于65495字节。)

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


5—29 在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由。

答:还未重传就收到了对更高序号的确认。


5—30 设TCP使用的最大窗口为65535字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时延为20ms,问所能得到的最大吞吐量是多少?

答:在发送时延可忽略的情况下,最大数据率=最大窗口*8/平均往返时间=26.2Mb/s。 (注意乘8是因为单位是bit)


5—31 通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?

答:同上一题比较,这道题有带宽限制,因此有发送时延(65535*8/10^9),往返时间20ms 最大吞吐量为一个窗口的大小除以一个传输轮次的时间,即65535*8/(65535*8/10^9+0.02)=25.54Mbit/s 信道利用率为25.54Mbit/s/1000Mbit/s=2.55% 注意在通信传输中G=10^9 M=10^6

有些答案还在65535上加了40字节,说是tcp加ip部分的首部,如果真的要加首部再算的话,那运输层还有首部呢…


5—32 什么是Karn算法?在TCP的重传机制中,若不采用Karn算法,而是在收到确认时都认为是对重传报文段的确认,那么由此得出的往返时延样本和重传时间都会偏小。试问:重传时间最后会减小到什么程度?

答:Karn算法:在计算平均往返时延RTT时,只要报文段重传了,就不采用其往返时间样本。

1/2 (不会算)


5—33 假定TCP在开始建立连接时,发送方设定超时重传时间是RTO=6s。 (1)当发送方接到对方的连接确认报文段时,测量出RTT样本值为1.5s。试计算现在的RTO值。 (2)当发送方发送数据报文段并接收到确认时,测量出RTT样本值为2.5s。试计算现在的RTO值。

1)据RFC2988建议,RTO=RTTs+4*RTTd。其中RTTd是RTTs的偏差加权均值。 初次测量时,RTTd(1)= RTT(1)/2; 后续测量中,RTTd(i)=(1-Beta)* RTTd(i-1)+Beta*{ RTTs- RTT(i)};

Beta=1/4

依题意,RTT(1)样本值为1.5秒,则 RTTs(1)=RTT(1)=1.5s RTTd(1)=RTT(1)/2=0.75s RTO(1)=RTTs(1)+4RTTd(1)=1.5+4*0.75=4.5(s) (2)RTT(2)=2.5 RTTs(1)=1.5s RTTd(1)=0.75s RTTd(2)=(1-Beta)* RTTd(1)+Beta*{ RTTs(1)- RT (2)}=0.75*3/4+{1.5-2.5}/4=13/16 RTO(2)=RTTs(1)+4RTTd(2)=1.5+4*13/16=4.75s

5—34 已知第一次测得TCP的往返时延的当前值是30 ms。现在收到了三个接连的确认报文段,它们比相应的数据报文段的发送时间分别滞后的时间是:26ms,32ms和24ms。设α=0.1。试计算每一次的新的加权平均往返时间值RTTs。讨论所得出的结果。

分别是29.6 , 29.84, 29.256。 虽然往返时间变化剧烈,但是平均时间变化不大。


5—35 试计算一个包括5段链路的运输连接的单程端到端时延。5段链路程中有2段是卫星链路,有3段是广域网链路。每条卫星链路又由上行链路和下行链路两部分组成。可以取这两部分的传播时延之和为250ms。每一个广域网的范围为1500km,其传播时延可按150000km/s来计算。各数据链路速率为48kb/s,帧长为960位。

5段链路的传播时延=250*2+(1500/150000)*3*1000=530ms 5段链路的发送时延=960/(48*1000)*5*1000=100ms 所以5段链路单程端到端时延=530+100=630ms


5—37 在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用? “乘法减小”和“加法增大”各用在什么情况下? 答: 慢开始(一开始确实是慢的,但是成倍增长,后序增加很快): 在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以分组注入到网络的速率更加合理。 拥塞避免: 当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延RTT就增加一个MSS的大小。 快重传算法规定: 发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应该立即重传丢手的报文段而不必继续等待为该报文段设置的重传计时器的超时。 快恢复算法: 当发送端收到连续三个重复的ACK时,就重新设置慢开始门限 ssthresh 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是设置为ssthresh 若收到的重复的AVK为n个(n>3),则将cwnd设置为ssthresh 若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。 若收到了确认新的报文段的ACK,就将cwnd缩小到ssthresh 乘法减小: 是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。 当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。 加法增大: 是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。


5—38 设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1次到第15次传输的各拥塞窗口大小。你能说明拥塞控制窗口每一次变化的原因吗?

答:拥塞窗口大小分别为:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9.

注意第一次在12的时候发生了拥塞,于是ssthresh变成了6,所以第二次慢开始算法执行时,4之后应该为8,但超过了6,被直接置为6,然后开始了拥塞避免算法


5—39

(2) 慢开始时间间隔:【1,6】和【23,26】 (3) 拥塞避免时间间隔:【6,16】和【17,22】 (4) 在第16轮次之后发送方通过收到三个重复的确认检测到丢失的报文段。在第22轮次之后发送方是通过超时检测到丢失的报文段。 (5) 在第1轮次发送时,门限ssthresh被设置为32 在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21. 在第24轮次发送时,门限ssthresh是第18轮次发送时设置的21 (6) 第70报文段在第7轮次发送出。 (7) 拥塞窗口cwnd和门限ssthresh应设置为8的一半,即4.


5—40 TCP在进行流量控制时是以分组的丢失作为产生拥塞的标志。有没有不是因拥塞而引起的分组丢失的情况?如有,请举出三种情况。

答: 当IP数据报在传输过程中需要分片,但其中的一个数据报未能及时到达终点,而终点组装IP数据报已超时,因而只能丢失该数据报;IP数据报已经到达终点,但终点的缓存没有足够的空间存放此数据报;数据报在转发过程中经过一个局域网的网桥,但网桥在转发该数据报的帧时没有足够的差错空间而只好丢弃。


5—41 用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送端和接收端的起始序号分别选为100和200,试画出类似于图5-31的工作示意图。从连接建立阶段到连接释放都要画上。

https://zhidao.baidu.com/question/80109183.html(主要注意几个同步位的设置,以及发出连接请求和发出终止请求时,ack都是没有的)


5—42 在图5-32中所示的连接释放过程中,主机B能否先不发送ACK=x+1的确认? (因为后面要发送的连接释放报文段中仍有ACK=x+1这一信息)

答: 如果B不再发送数据了,是可以把两个报文段合并成为一个,即只发送FIN+ACK报文段。但如果B还有数据报要发送,而且要发送一段时间,那就不行,因为A迟迟收不到确认,就会以为刚才发送的FIN报文段丢失了,就超时重传这个FIN报文段,浪费网络资源。


5—43 在图(5-33)中,在什么情况下会发生从状态状态SYN_ENT到状态SYN_RCVD的变迁?

当A和B都作为客户,即同时主动打开TCP连接。这时的每一方的状态变迁都是:CLOSED—-SYN-SENT—SYN-RCVD–ESTABLISHED


5—44 试以具体例子说明为什么一个运输连接可以有多种方式释放。可以设两个互相通信的用户分别连接在网络的两结点上。

答:设A,B建立了运输连接。协议应考虑一下实际可能性: A或B故障,应设计超时机制,使对方退出,不至于死锁;A主动退出,B被动退出 B主动退出,A被动退出


5—45 解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放方法就可保证不丢失数据。

答: 当主机1和主机2之间连接建立后,主机1发送了一个TCP数据段并正确抵达主机2,接着主机1发送另一个TCP数据段,这次很不幸,主机2在收到第二个TCP数据段之前发出了释放连接请求,如果就这样突然释放连接,显然主机1发送的第二个TCP报文段会丢失。 而使用TCP的连接释放方法,主机2发出了释放连接的请求,那么即使收到主机1的确认后,只会释放主机2到主机1方向的连接,即主机2不再向主机1发送数据,而仍然可接受主机1发来的数据,所以可保证不丢失数据。

(四次挥手的模型中,客户提出终止连接,但服务器端还是可以把自己要发送的数据都发送过去)


5—46 试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。

答: 3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

情形一:如果已失效的连接请求报文突然又传到了B,此时B向A发送了确认报文。假设没有第三次握手,B以为A要传送数据,但A并不传送,则B的资源会被浪费。所以需要三次握手。

情形二:考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。这样就形成了死锁


试证明,从客户开始发起连接建立到接收服务器发送的整个文件多需的时间T是: T=2RTT+L/R 当nM>R(RTT)+M 或 T=2RTT+L/R+(K-1)[M/R+RTT-nM/R] 当nM<R(RTT)+M

发送窗口较小的情况,发送一组nM个字节后必须停顿下来,等收到确认后继续发送。 共需K=[L/nM]个周期:其中 前K-1个周期每周期耗时M/R+RTT,共耗时(K-1)(M/R+RTT) 第K周期剩余字节数Q=L-(K-1)*nM,需耗时Q/R

总耗时 =2*RTT+(K-1)M/(R+RTT)+Q/R=2*RTT+L/R+(K-1)[( M/R+RTT)-nM/R]


补1:为什么TCP在建立连接时不能每次都选择相同的、固定的初始序号

如果TCP在建立连接时每次都选择相同的、固定的初始序号,那么设想以下的情况: (1)假定主机A和B频繁地建立连接,传送一些TCP报文段后,再释放连接,然后又不断地建立新的连接、传送报文段和释放连接。 (2)假定每一次建立连接时,主机A都选择相同的、固定的初始序号,例如,选择1。 (3)假定主机A发送出的某些TCP报文段在网络中会滞留较长的时间,以致造成主机A超时重传这些TCP报文段。 (4)假定有一些在网络中滞留时间较长的TCP报文段最后终于到达了主机B,但这时传送该报文段的那个连接早已释放了.而在到达主机B时的TCP连接是一条新的TCP连接。 这样,工作在新的TCP连接下的主机B就有可能会接受在旧的连接传送的、已经没有意义的、过时的TCP报文段(因为这个TCP报文段的序号有可能正好处在现在新的连接所使用的序号范围之中)。结果产生错误。 因此,必须使得迟到的TCP报文段的序号不处在新的连接中所使用的序号范围之中。 这样,TCP在建立新的连接时所选择的初始序号一定要和前面的一些连接所使用过的序号不一样。因此,不同的TCP连接不能使用相同的初始序号。


补2:TCP/IP 协议栈中,为什么选择 IP 层负责分片?

https://www.zhihu.com/question/22181709

转载请注明原文地址: https://www.6miu.com/read-20754.html

最新回复(0)