本文主要是介绍当面试官问:TCP三次握手会吗?不会回去等通知吧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
“我回来了..”舍友小曼推开门,一脸垂头丧气,让人一眼就看出了不对劲!
“你今天参加面试了,结果如何?”舔狗舍友小妍一向不会察言观色,笑嘻嘻的就凑过去。
“别提了!我看你俩都开始往这个通信行业走,我也去试了试,没想到面试官问我三次握手是什么,我支支吾吾的没答出来,就直接让我回来等通知了!”
“这可是面试经典题目!你没答出来这不就凉凉了!我前几天刚学过,要不我给你补补!”小妍十分热情地跑上去(其实是想装逼一次,所以薄荷遂了她的心愿,这次的文章给她一点镜头)
TCP是什么?
TCP是传输控制协议,是一种面向连接的、可靠的、具有流量控制的运输层通信协议,UDP是同一层内另一个重要的传输协议。
TCP有哪些报文,分别用在什么地方?
1、URG紧急指针
2、ACK确认序号
3、SYN同步序号,用来发起连接
4、RST重建链接
5、FIN结束链接
6、PSH接收方应将这个报文尽快交给应用层
TCP三次握手是什么?
三次握手其实是建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常,需要注意的是,传输时指定自己的初始化序列号是为了实现后面的可靠性传输。
TCP三次握手详解:
第一次握手:客户端给服务端发一个 SYN(syn=1) (同步序列编号)报文,并指明客户端的初始化序列号seq= x。
第二次握手:服务器收到客户端的 SYN 报文之后,必须确认客户的SYN,此时ACK确认号为1,ACK的值为x+1,并且指定了自家的初始化序号y,发送ACK+SYN包,在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。
第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 y+ 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时随机序列号seq=x+1(初始为seq=x,第二个报文段所以要+1)双方已成功建立起了连接。
在面试中,我们在问到TCP三次握手之后,常常还会被问到TCP四次挥手,那么TCP四次挥手又是什么呢?
第一次挥手:客户端发送一个FIN,用来请求关闭客户端到服务器数据传送,此时FIN位置1,初始序号seq=x
第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号ACK为收到序号X+1(与SYN相同,一个FIN占用一个序号),此时ACK位置1,ack=x+1
第三次挥手:服务器发送一个FIN包,用来请求关闭服务器到客户端的数据传送,此时FIN位为1,seq为y.
第四次挥手:客户端收到FIN后,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入关闭状态,完成四次挥手,此时ACK位为1,ack=y+1
为什么TCP握手需要三次,挥手需要四次?
因为当服务器端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文,SYN用来同步连接,ACK课直接进行确认,但是关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭连接,所以只能先回复一个ACK报文,当所有报文都发送完毕了再进行关闭连接。
喜欢的请支持我哟~你的三连是我创作的动力呀
这篇关于当面试官问:TCP三次握手会吗?不会回去等通知吧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!