zoukankan      html  css  js  c++  java
  • 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,此时客户端处在时间等待状态,客户端向服务器作出回应,服务器收到回应后会立即关闭,客户端需等待两个最长报文段寿命的时间再关闭
    客户端与服务器处于关闭状态,断开来连接。
  • 相关阅读:
    (原创) mac 10.9.2 eclipse 的 CDT 的 异常的修复
    (转) Virtual function
    (转) ROS NAMING AND NAMESPACES
    (转) Data structures
    (转) Dynamic memory
    java string类
    eclipse 的快捷键
    java抽象类和接口
    面向对象的三大特征
    Java 中的多态
  • 原文地址:https://www.cnblogs.com/CAPF/p/11494543.html
Copyright © 2011-2022 走看看