HTTP是一种通信协议,构建在TCP/IP协议之上的,是TCP/IP协议的一个子集。下图展示了HTTP事务处理过程。当客户端访问WEB站点时,首先会通过DNS服务查询到域名的IP地址。然后浏览器生成HTTP请求,并通过TCP/IP协议发送给Web服务器。Web服务器接受到请求后会根据请求生成响应内容,并通过TCP/IP协议返回给客户端。
而对应的结构如下:
应用层一般是我们编写的应用程序,决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信,如:FTP,DNS,HTTP
传输层通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传输功能。在传输层中有两个性质不同的协议:TCP和UDP
网络层用来处理在网络中流动的数据包。该层规定了通过怎样的路径到达对方计算机,并把数据包传输给对方
链路层用来处理连接网络的硬件部分。包括控制操作系统。硬件设备驱动等。
数据包的封装过程
传输层-TCP三次握手
使用TCP协议进行通信的双方必须先建立连接,然后才能开始传输数据。为了确保连接双方的可靠性,在双方建立连接时,TCP协议采用三次握手的策略,UDP不用。
第一次握手:客户端发送带有SYN标志的连接请求报文段,然后进入SYN_SEND状态,等待服务端确认 (证明甲有发送的能力)
第二次握手:服务端接受到客户端的SYN报文段后,需要发送ACK信息对这个SYN报文段进行确认,同时还要发送自己的SYN请求信息。服务端会将上述的信息放到一个报文段(SYN+ACK)中,一并发送给客户端,此时服务端将会进入SYN_RECV状态。(证明乙有接受和发送的能力,证明甲发送成功的标志)
第三次握手:客户端接受到服务端的SYN+ACK报文段后,会向服务端发送ACK确认报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED状态,自此完成TCP三次握手(证明乙发送成功,开始连接)