考点介绍:
三次握手四次挥手问题是校招面试中的必考题。
三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放。
『java专业课之三次握手四次挥手』相关题目及解析内容可点击文章末尾链接查看!
一、考点题目
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 进行通信时所必须用到的协议群的统称。所谓协议可以把网络协议想象成人与人之间的礼仪行为......
三、考点视频
1.TCP建立和结束连接的过程
本题是开发类一线校招专业课必考题之一。需要在理解TCP协议的基础上,记忆过程中的状态码、字段和标志位。最好是能够在理解的前提下,背下状态图......
『java专业课之三次握手四次挥手』相关题目及解析内容可点击下方链接查看:
java专业课之三次握手四次挥手-移动端链接
java专业课之三次握手四次挥手-PC端