zoukankan      html  css  js  c++  java
  • HTTP协议请求流程分析

    一、DNS域名解析

    用户输入一个URL(统一资源定位符)或点击一个链接,这里以访问www.baidu.com为例。

    1、用户在浏览器中输入www.baidu.com,浏览器先查找自己的缓存,如果存在百度的缓存可直接查找。如果不存在

    2、查找主机的hosts文件,若hosts文件中存在直接通过主机访问。如果不存在

    3、查找本机首选本地DNS缓存服务器,如果存在百度的地址,返回给主机,再通过主机访问百度服务器。若不存在

    4、本地DNS缓存服务器会去寻找 .(根域),根域不存在具体地址,会返回 .com 一级域

    5、本地DNS去找 .com 一级域,返回 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,此时客户端处在时间等待状态,客户端向服务器作出回应,服务器收到回应后会立即关闭,客户端需等待两个最长报文段寿命的时间再关闭
    • 客户端与服务器处于关闭状态,断开来连接。
  • 相关阅读:
    拓端tecdat|R语言具有Student-t分布改进的GARCH(1,1)模型的贝叶斯估计
    拓端tecdat|R语言有极值(EVT)依赖结构的马尔可夫链(MC)对洪水极值分析
    拓端tecdat|R语言Lee-Carter模型对年死亡率建模预测预期寿命
    拓端tecdat|R语言中的模拟过程和离散化:泊松过程和维纳过程
    接口自动化文章收藏
    【转】python中获得当前目录和上级目录
    面试题
    【转】python字符串/元组/列表/字典互转
    session关联接口
    r.json()
  • 原文地址:https://www.cnblogs.com/tanxiaojuncom/p/11492616.html
Copyright © 2011-2022 走看看