HTTP协议解析过程

一、DNS域名解析
当我们要进入网站或者点入链接时,我们的客户端首先会对网站地址和域名进行DNS解析,接下来我们以www.baidu.com为例,将详细步骤做以文字简述
1、当我们在客户端输入www.baidu.com时,浏览器首先对自己的缓存进行查看有没有记录,有的话就可以直接浏览,没有的话
2.查看主机的hosts文件里面是否存在,存在就可以直接通过主机访问,不存在
3、查找本地DNS缓存(LDNS)域名服务器,里面是否有记录,存在的话就返回给主机,在通过主机进行访问,不存在
4、本地DNS就会去外面查找,首先去根域(.),根域服务器里面并没有完整的网址,但是会根据所提供的网址来查找到.com.这个一级域,而后返回给本地DNS
5、本地DNS接收到一级域后,会去一级域名服务器在进行查找,而后返回给baidu.com
6、本地DNS缓存服务器接收到后会去寻找baidu.com解析服务器,然后将www.baidu.com这个完整的IP地址返回给本地DNS缓存服务器
7、本地DNS缓存服务器会先记录下百度的IP地址,以便以后使用并将结果返回给客户端
8、主机接收到IP地址后就可以直接访问百度的服务器
二、连接
当我们访问服务器时,服务器是监听状态,连接过程如下:
1、主机会随机产生一个(1000-65635)之间的端口与服务器的80端口进行建立连接(三次握手)
刚开始客户端与服务器处于关闭状态

客户机向服务器发送请求连接的报文,同步位SYN=1,序列号seq=x,期待序列号为x+1。此时客户端处于同步已发送状态。
服务器接收到来自客户端的请求之后,确认收到请求ACK=1,确认序列号ACK=x+1。服务器向客户端发送请求连接的请求SYN=1,序列号seq=y,期待序列号y+1,此时服务器处在同步已收到状态。
客户端接收到来自服务器的请求,确认收到ACK=1,确认序列号ACK=y+1,序列号seq=x+1,此时客户端与服务器处于已连接状态
 
2、确认连接后,客户端向服务器发送包含头部、主体的HTTP GET请求
3、服务器向客户端发送包含头部、主体、正文的HTTP响应
4、客户机在接受到内容后经浏览器显示给用户
三、断开连接
1、当客户机关闭浏览器页面时(四次挥手)
开始时客户端与服务器处于连接状态
(1)客户端向服务器发送请求释放连接的报文段FIN=1,序列号seq=w,期待序列号w+1,此时客户端处于终止等待1状态。
(2)客户端接收到来自客户端的请求,确认收到ACK=1,确认序列号seq=w+1,此时服务器处于关闭等待状态,服务器向客户端做出回应,此时客户端处于终止等待2状态
(3)当服务器将客户端的请求全部回应完后才开始请求断开连接,服务器向客户端发送请求终止报文段FIN=1,序列号seq=v,期待序列号为v+1,此时服务器最后等待客户端的接收。
(4)客户端接收到来自服务器的请求,确认收到ACK=1,确认序列号ACK=v+1,此时客户端处在时间等待状态,客户端向服务器作出回应,服务器收到回应后会立即关闭,客户端需等待两个最长报文段寿命的时间再关闭
客户端与服务器处于关闭状态,断开来连接。
原文地址:https://www.cnblogs.com/CAPF/p/11494543.html