【校招VIP】java专业课之三次握手四次挥手

发布时间 2023-08-31 09:56:19作者: 校招VIP

考点介绍:

三次握手四次挥手问题是校招面试中的必考题。

三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放

一、考点题目

1、为什么TCP链接需要三次握手,两次不可以么?

解答:为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这是,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接......

2、三次握手是通过标识位和确认号进行的网络操作,下列哪个选项是不正确的?

A.第一次握手([SYN], Seq = x)

B.第二次握手([SYN,ACK], Seq = y, ACK = x + 1)

C.第二次握手([SYN,ACK], Seq = y, ACK = y + 1)

D.第三次握手([ACK], ACK = y + 1)

解答:正确答案是 C

三次握手面试时不能笼统的说第一次、第二次、第三次,而是要从编程的角度也就是TCP协议说明实现的方法,要理解标识位和状态位的变化。第一次握手([SYN], Seq = x)客户端发送一个SYN标记的包,Seq初始序列号x,发送完成后客户端进入SYN_SEND状态......

3、TCP断开连接的四次挥手中,第四次挥手发送的包会包含的标记,最正确的描述是?()

A.FIN

B.FIN,PSH

C.ACK

D.FIN,ACK

解答:正确答案是 C

我们假设由client提出关闭,则:

第一次:FIN(client发给server)

第二次:ACK(server发给client)

第三次:FIN(server发给client )

第四次:ACK(client发给server)

4、为什么TCP连接的时候是3次,关闭的时候却是4次?

解答:因为只有在客户端和服务端都没有数据要发送的时候才能断开TCP。而客户端发出FIN报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的。而服务端收到客户端的FIN报文后只能先回复客户端......

5、为什么客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP连接?

解答:这里同样是要考虑丢包的问题,如果第四次挥手的报文丢失,服务端没收到确认ack报文就会重发第三次挥手的报文,这样报文一去一回最长时间就是2MSL,所以需要等这么长时间来确认服务端确实已经收到了。

二、考点文章

1、我终于搞懂了TCP的三次握手和四次挥手

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接......

2、简明理解三次握手和四次挥手

注:三次握手和四次挥手本身并不复杂,但却可以从很多角度理解这两个过程,本文仅取一个视点解读,如有其它看法欢迎留言交流......

3、TCP协议中的三次握手和四次挥手(图解)

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示......

4、【校招VIP】概述TCP/IP协议及其三握四挥

从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。所谓协议可以把网络协议想象成人与人之间的礼仪行为......

三、考点视频

TCP建立和结束连接的过程

本题是开发类一线校招专业课必考题之一

需要在理解TCP协议的基础上,记忆过程中的状态码、字段和标志位

最好是能够在理解的前提下,背下状态图

移动端:https://m.xiaozhao.vip/dTopic/detail/1140

PC端:https://xiaozhao.vip/dTopic/detail/1140