扫码关注公众号
三次握手是通过标识位和确认号进行的网络操作,下列哪个选项是不正确的?
正确答案是C三次握手面试时不能笼统的说第一次、第二次、第三次,而是要从编程的角度也就是TCP协议说明实现的方法,要理解标识位和状态位的变化。第一次握手([SYN],Seq=x)客户端发送一个SYN标记的包,Seq初始序列号x,发送完成后客户端进入SYN_SEND状态。第二次握手([SYN,ACK],Seq=y,ACK=x+1)服务器返回确认包(ACK)应答,同时还要发送一个SYN包回去。ACK=x+1,表示确认收到(客户端发来的Seq值+1),Seq=y,表示让客户端确认是否能收到。发送完成后服务端进入SYN_RCVD状态。第三次握手([ACK],ACK=y+1)客户端再次发送确认包(ACK),ACK=y+1,表示确认收到服务器的包(服务端发来的Seq值+1)。客户端发送完毕后,进入ESTABLISHED状态,服务端接收到这个包,也进入ESTABLISHED状态,TCP握手结束
TCP断开连接的四次挥手中,第四次挥手发送的包会包含的标记,最正确的描述是?()
正确答案是C我们假设由client提出关闭,则:第一次:FIN(client发给server)第二次:ACK(server发给client)第三次:FIN(server发给client)第四次:ACK(client发给server)
TCP三次握手和四次挥手过程中,以下状态分别处于服务端和客户端描述正确的是
正确答案是C四次握手:客户端调用close()函数后,向服务器发送FIN数据包,进入FIN_WAIT_1状态。FIN是Finish的缩写,表示完成任务需要断开连接。服务器收到数据包后,检测到设置了FIN标志位,知道要断开连接,于是向客户端发送“确认包”,进入CLOSE_WAIT状态。注意:服务器收到请求后并不是立即断开连接,而是先向客户端发送“确认包”,告诉它我知道了,我需要准备一下才能断开连接。客户端收到“确认包”后进入FIN_WAIT_2状态,等待服务器准备完毕后再次发送数据包。等待片刻后,服务器准备完毕,可以断开连接,于是再主动向客户端发送FIN包,告诉它我准备好了,断开连接吧。然后进入LAST_ACK状态。客户端收到服务器的FIN包后,再向服务器发送ACK包,告诉它你断开连接吧。然后进入TIME_WAIT状态。服务器收到客户端的ACK包后,就断开连接,关闭套接字,进入CLOSED状态。