码迷,mamicode.com
首页 > Web开发 > 详细

HTTP协议解析过程

时间:2019-09-09 22:29:42      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:连接状态   get   http get   三次   根据   详细   http   nbsp   baidu   

一、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,此时客户端处在时间等待状态,客户端向服务器作出回应,服务器收到回应后会立即关闭,客户端需等待两个最长报文段寿命的时间再关闭
?客户端与服务器处于关闭状态,断开来连接。

HTTP协议解析过程

标签:连接状态   get   http get   三次   根据   详细   http   nbsp   baidu   

原文地址:https://www.cnblogs.com/CAPF/p/11494543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!