前端面试必须要了解的HTTP的3次握手和4次挥手
日期:2019-10-29
来源:程序思维浏览:2341次
HTTP与TCP/IP
我们知道网络由下往上分为7层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
TPC/IP协议是传输层协议,主要解决数据如何在网络中传输。
HTTP是应用层协议,主要解决如何包装数据。
所以说HTTP是基于TPC/IP的,与HTTP类似也是基于TPC/IP的还有FTP啊这类的应用层协议。
TCP/IP三次握手建立连接
如上图,客户端首先发起第一次握手,向服务端示好(我要传一些数据给你);
服务端听到后如果表示可以接受数据,则向客户端发起第二次握手(这次握手表示,我能接受你的数据哦,同时由于TCP/IP是全双工的,服务端的这次握手也是在询问,你能接受我返回给你的数据吗?);
接着客户端发起第三次握手(告诉服务端,是的,我也能接受你返回给我的数据,OK,这下两个人都放心了,连接建立成功)。
TCP/IP是全双工的,每个方向都必须单独进行关闭。有一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。
比如客户端给服务端发送一个FIN,告诉服务端,我再也没有数据要传给你啦,这是第一次挥手;
服务端收到后返回一个ACK告诉客户端,好的,知道啦,这是第二次挥手。客户端收到确认后就可以关闭往服务端那边的数据传输通道了,这个时候服务端仍然可以往客户端继续发送数据。
待服务端也再没有数据要往客户端发送时,就也发一个FIN到客户端,告诉它,我也没啥要传给你了,这是第三次挥手。
客户端得知后在返回一个ACK告诉服务端,好的,收完了,服务端也就可以安心关闭往客户端的数据传输通道了,这是第四次挥手。自此双向的传输通道都已关闭,连接成功释放。
精品好课