首页 > 试题广场 >

关于TCP协议以下说法正确的是:()

[不定项选择题]
关于TCP协议以下说法正确的是:()
  • 通讯双方被动关闭的一方进入TIME_WAIT状态
  • TIME_WAIT状态会持续2个MSL
  • TIME_WAIT状态会持续1个MSL
  • 通讯双方主动关闭的一方进入TIME_WAIT状态
推荐
TCP建立连接和断开连接过程
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

编辑于 2016-08-14 20:31:29 回复(11)
持续2MSL的目的是为了可以重传ACK,让被动关闭方收到。被动方进入的是LAST_ACK状态,主动方进入的是TIME_WAIT状态。
发表于 2015-09-10 23:35:44 回复(0)
中断连接端可以是Client端,也可以是Server端。
   

    假设客户端发起中断请求,则整个过程Client端所经历的状态如下:

而Server端所经历的过程如下: 转载请注明:blog.csdn.net/whuslei


发表于 2015-09-11 21:10:37 回复(0)
TCP建立连接三次握手时的状态:
 1.客户端发送建立连接同步请求(syn).(SYN_SENT).
 2.服务端确认(ack)并发送建立连接同步请求(syn).(LISTEN ->SYN_RCVD).
 3.客户端发送确认(ack)并成功建立连接.(SYN_SENT->ESTABLISHED).
 4.服务端接收确认并成功建立连接.(SYN_RCVD->ESTABLISHED).
TCP断开连接时四次挥手的状态:
 1.客户端发送断开连接请求(fin).(ESTABLISHED->FIN_WAIT_1).
 2.服务器发送确认报文(ack).(ESTABLISHED->close_wait).
 3.客户端接收确认.(FIN_WAIT_1->FIN_WAIT_2).
 4.服务器发送断开连接请求(fin->last_ack).
 5.客户端发送确认报文(FIN_WAIT_2->TIME_WAIT).
 6.服务器接收确认报文(last_ack->closed).

发表于 2020-02-14 14:46:25 回复(3)
持续2MSL的目的是为了可以重传ACK,让被动关闭方收到。
被动方进入的是LAST_ACK状态,主动方进入的是TIME_WAIT状态。
发表于 2017-04-08 20:19:07 回复(0)
       MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长的最长时间,超过这个时间报文将被丢弃。我们都知道IP头部中有个TTL字段,TTL是time to live的缩写,可译为“生存时间”,这个生存时间是由源主机设置设置初始值但不是但不是存在的具体时间,而是一个IP数据报可以经过的最大路由数,每经过一个路由器,它的值就减1,当此值为0则数据报被丢弃,同时发送ICMP报文通知源主机。RFC793中规定MSL为2分钟,但这完全是从工程上来考虑,对于现在的网络,MSL=2分钟可能太长了一些。因此TCP允许不同的实现可根据具体情况使用更小的MSL值。TTL与MSL是有关系的但不是简单的相等关系,MSL要大于TTL。
发表于 2020-11-18 21:05:15 回复(0)
持续2MSL的目的是为了可以重传ACK,让被动关闭方收到。 被动方进入的是LAST_ACK状态,主动方进入的是TIME_WAIT状态。
发表于 2022-11-01 13:51:47 回复(0)
B,D
发表于 2016-08-15 12:32:47 回复(0)