HTTP三次握手四次挥手(《安卓进阶解密--刘望舒》笔记)

网络分层自上而下分为四层:是应用层、传输层、网络层、数据链路层和物理层。越靠下的层越接近硬件各个层的具体内容如下

1.物理层
该层负责比特流在节点间的传输,即负责物理传输。该层的协议既与链路有关,也与传输介质有关。
其通俗来讲就是把计算机连接起来的物理手段。
2.数据链路层
该层控制网络层与物理层之间的通信,其主要功能是如何在不可靠的物理线路上进行数据的可靠传
递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结
构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及纠错和控制信息。其中的地址确定了
帧将发送到何处,而纠错和控制信息则确保帧无差错到达。如果在传送数据时,接收点检测到所传数据中
有差错,就要通知发送方重发这一帧。
3.网络层
该层决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权、网络拥塞程度、服务
质量以及可选路由的花费来决定从一个网络中的节点 A 到另一个网络中节点 B 的最佳路径。
4.传输层
该层为两台主机上的应用程序提供端到端的通信。相比之下,网络层的功能是建立主机到主机的通
信。传输层有两个传输协议: TCP (传输控制协议)和 UDP (用户数据报协议)。其中, TCP 是一个可靠的
面向连接的协议, UDP 是不可靠的或者说无连接的协议。
5.应用层
应用程序收到传输层的数据后,接下来就要进行解读。解读必须事先规定好格式,而应用层就是规定
应用程序的数据格式的。它的主要协议有 HTTP FTP Telnet SMTP POP3 等。
 
SYN百科解析:同步序列编号( Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递
 
TCP三次握手的过程如下。
第一次握手:建立连接。客户端发送连接请求报文段,将 SYN 设置为 1 Sequence Number seq )为
x ;接下来客户端进入 SYN_SENT 状态,等待服务端的确认。
第二次握手:服务器收到客户端的 SYN 报文段,对 SYN 报文段进行确认,设置 Acknowledgment
Number ACK )为 x+1 seq+1 );同时自己还要发送 SYN 请求信息,将 SYN 设置为 1 seq y 。服务端将
上述所有信息放到 SYN+ACK 报文段中,一并发送给客户端,此时服务端进入 SYN_RCVD 状态。
第三次握手:客户端收到服务端的 SYN+ACK 报文段;然后将 ACK 设置为 y+1 ,向服务端发送 ACK
文段,这个报文段发送完毕后,客户端和服务端都进入 ESTABLISHED TCP 连接成功)状态,完成 TCP
三次握手。
 
当客户端和服务端通过三次握手建立了 TCP 连接以后,当数据传送完毕,断开连接时就需要进行 TCP
四次挥手。
其四次挥手如下所示
第一次挥手:客户端设置 seq ACK ,向服务端发送一个 FIN 报文段。此时,客户端进入 FIN_WAIT_1
状态,表示客户端没有数据要发送给服务端了。
第二次挥手:服务端收到了客户端发送的 FIN 报文段,向客户端回了一个 ACK 报文段。
第三次挥手:服务端向客户端发送 FIN 报文段,请求关闭连接,同时服务端进入 LAST_ACK 状态。
第四次挥手:客户端收到服务端发送的 FIN 报文段,向服务端发送 ACK 报文段,然后客户端进入
TIME_WAIT 状态。服务端收到客户端的 ACK 报文段以后,就关闭连接。此时,客户端等待 2MSL (最大报
文段生存时间)后依然没有收到回复,则说明服务端已正常关闭,这样客户端也可以关闭连接了。
HTTP三次握手四次挥手(《安卓进阶解密--刘望舒》笔记)_第1张图片
 
如果有大量的连接,每次在连接、关闭时都要经历三次握手、四次挥手,这很显然会造成性能低下。
因此, HTTP 有一种叫作 keepalive connections 的机制,它可以在传输数据后仍然保持连接,当客户端需要再
次获取数据时,直接使用刚刚空闲下来的连接而无须再次握手如图所示
 
HTTP三次握手四次挥手(《安卓进阶解密--刘望舒》笔记)_第2张图片
 
 
 
 

你可能感兴趣的:(网络链接)