面试常被问的三次握手四次断开
在正式讲解前先解释几个名词
报文:是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息
TCP:传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP/IP:互联网协议(Internet Protocol Suite)是一个网络通信模型。TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化.
SYN:同步序列编号(Synchronize Sequence Numbers)是TCP/IP建立连接时使用的握手信号。
ACK:确认字符(Acknowledgement)在TCP/IP协议中,服务器收到客户机发来的SYN后回复的一个数据,用来确定发来的数据已经接受。
(关于包含SYN和ACK的TCP报文头部:https://blog.youkuaiyun.com/qq_24601199/article/details/88556125)
===============================================================================
三次握手过程
第一次握手:建立连接时,客户端发送SYN包(SYN=1)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到SYN包,进入LISTEN状态,服务器必须确认客户的SYN(ACK=1),同时自己也发送一个SYN包(SYN=1),即SYN+ACK包,此时服务器 进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED状态,完成三次握手。
通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。
三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。
上文中提到的SYN包☞仅SYN标记为1的TCP包
===============================================================================
生活中最类似的情况:
买手机的时候试通话功能的时候:
老手机打给新手机 : 喂 , 听到了吗 ?
新手机回复老手机 : 听到了 , 你听到了吗 ?
老手机 : 听到了听到了 …
===============================================================================
PS:未完,待续......