之前在面试的时候面试官问到了TCP三次握手的连接,虽然自己都懂,但是还有很多细节的地方被我忽略了,所以这里提醒下大家,要学好技术,每一个重要知识点都要扣的细一些,不要给自己的知识库留下任何盲区,否则只能是懂得表面不懂原理的半桶水的状态。
稍微有计算机网络基础的人都知道TCP的建立是通过三次握手,但是一个URL的访问,从按下回车键开始,到TCP的建立,中间经历了什么?
以下我把我的总结写下来和大家分享,也能够加深自己的印象。(参考《计算机网络》,第6版,谢希仁著)。
1、三次握手的步骤和图解
假设现有客户端A和服务器B
第一次握手:客户端A向服务器B发送连接请求报文段,同步位SYN=1,序列号seq=x,并进入SYNSEND状态;
第二次握手:服务器B接到客户端的请求之后,返回一个确认报文,同部位SYN=1,确认位ACK=1,序列号seq=y,确认号ack=x+1(表示x和x之前的字节流都已收到),并进入SYNRCVD状态;
第三次握手:客户端A在收到服务器B的确认后还要继续返回一个确认报文,确认位ACK=1,seq=x+1,ack=y+1(注意第三次握手的SYN=0)。
图解如下: