三次握手四次挥手

1、顺丰面试题:TCP,四次挥手如果改为三次怎么样? 
2、大疆面试题:TCP与UDP区别? 
3、阿里面试题:TCP和UDP的区别是什么,如果想发送即时消息应该用哪种协议? 
4、阿里面试题:TCP的连接建立和断开的过程,如何保证TCP发送的信息是正确的,且保证其先后顺序不被篡改? 
5、顺丰面试题:TCP/UDP解释一下? 
6、阿里面试题:TCP连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl
1、TCP和UDP的区别 
(1)TCP面向连接;UDP面向无连接 
(2)TCP保证数据正确性;UDP可能丢包 
(3)TCP传输速度慢;UDP速度快 
(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 
(5)TCP对系统资源要求较多,UDP对系统资源要求较少。 
2、三次握手 
三次握手的目的是建立可靠的通信信道。确认自己与对方的发送与接收机能正常。 
TCP三次握手过程: 
1、主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B请求建立连接,通过这个数据段,主机A告诉主机B两件事:我想要和你通信、你可以用哪个序列号作为起始数据段来回应我。 
2、主机B收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了、你要用哪个序列号作为起始数据段来回应我。 
3、主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B的数据段:我已收到回复,我现在要开始传输实际数据了。 
这样3次握手就完成了,主机A和主机B 就可以传输数据了. 
70

 

为什么需要三次握手: 
三次握手能确认双发收发功能都正常,缺一不可。 
第一次握手:Client什么都不能确认;Server确认了对方发送正常。 
第二次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己接收正常,对方发送正常。 
第三次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己发送、接收正常,对方发送接收正常。 
三次握手的另一个目标是确认确认双方都支持TCP,告知对方用TCP传输。 
第一次握手:Server猜测Client可能要建立TCP请求,但不确定,因为也可能是Client乱发了一个数据包给自己。 
第二次握手:通过ack=J+1,Client知道Server是支持TCP的,且理解了自己要建立TCP连接的意图。 
第三次握手:通过ack=K+1,Server知道Client是支持TCP的,且确实是要建立TCP连接。 
3、四次挥手 
1、第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了。 
2、第二次挥手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求。 
3、第三次挥手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态。 
4、第四次挥手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。 
为什么要time wait,为什么是2msl 
70

 

为了保证A发送的最后一个ACK报文能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。如果A在TIME-WAIT状态不等待一段时间,而是在发送完ACK报文段后就立即释放连接,就无法收到B重传的FIN+ACK报文段,因而也不会再发送一次确认报文段。这样,B就无法按照正常的步骤进入CLOSED状态。 
MSL指的是任何IP数据报能够在因特网上存活的最长时间。假设现在一个MSL的时候,接收端需要发送一个应答,这时候,我们也必须等待这个应答的消失,这个应答的消失也是需要一个MSL,所以我们需要等待2MSL。
 

转载于:https://my.oschina.net/u/4085644/blog/3018755

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP的三次握手四次挥手是用于建立和终止TCP连接的过程。三次握手是指在建立TCP连接时,客户端和服务器之间需要发送3个包来确认双方的接收能力和同步连接双方的序列号和确认号。这个过程主要是为了确保连接的可靠性和正确性。\[2\] 四次挥手是指在终止TCP连接时,需要经过四个步骤来关闭连接。这是由于TCP的半关闭机制造成的,即连接的一端在结束发送后仍然可以接收来自另一端的数据。在四次挥手过程中,双方会交换最后的数据和确认信息,然后逐步关闭连接。\[1\] 需要注意的是,在三次握手四次挥手的过程中,并不包含实际的数据传输。只有在连接建立后,双方才开始正式传送数据。而在连接关闭之前,TCP连接将一直保持下去,除非有一方主动关闭连接。\[3\] 总结起来,三次握手是用于建立TCP连接,而四次挥手是用于终止TCP连接。这些过程都是为了确保连接的可靠性和正确性。 #### 引用[.reference_title] - *1* *2* [TCP三次握手四次挥手](https://blog.csdn.net/qq_28345657/article/details/126599058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [计算机网络之TCP](https://blog.csdn.net/RenLJ1895/article/details/122420159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值