zoukankan      html  css  js  c++  java
  • 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/hellodake/article/details/81974421

    一次完整的HTTP请求过程:

    1.首先进行域名解析,域名解析具体过程讲一下:

    • 浏览器搜索自己的DNS缓存,缓存中维护一张域名与IP地址的对应表;
    • 若没有,则搜索操作系统的DNS缓存;
    • 若没有,则操作系统将域名发送至本地域名服务器(递归查询方式),本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则,通过以下方式迭代查找:

    本地域名服务器向根域名服务器发起请求,根域名服务器返回com域的顶级域名服务器的地址;

    本地域名服务器向com域的顶级域名服务器发起请求,返回权限域名服务器地址;

    本地域名服务器向权限域名服务器发起请求,得到IP地址;

    • 本地域名服务器将得到的IP地址返回给操作系统,同时自己将IP地址缓存起来;
    • 操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来;
    • 至此,浏览器已经得到了域名对应的IP地址。

    2.浏览器发起HTTP请求;

    3.接下来到了传输层,选择传输协议,TCP或者UDP,TCP是可靠的传输控制协议,对HTTP请求进行封装,加入了端口号等信息;

    4.然后到了网络层,通过IP协议将IP地址封装为IP数据报;然后此时会用到ARP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,找到目的MAC地址;

    5.接下来到了数据链路层,把网络层交下来的IP数据报添加首部和尾部,封装为MAC帧,现在根据目的mac开始建立TCP连接,三次握手,接收端在收到物理层上交的比特流后,根据首尾的标记,识别帧的开始和结束,将中间的数据部分上交给网络层,然后层层向上传递到应用层;

    6.服务器响应请求并请求客户端要的资源,传回给客户端;

    7.断开TCP连接,浏览器对页面进行渲染呈现给客户端。

    无欲则刚 关心则乱
  • 相关阅读:
    JS高程研读记录一【事件流】
    事件冒泡的应用——jq on的实现
    模式学习小结[工厂模式|构造函数|原型模式]
    几个CSS-content的小例子
    构造函数new执行与直接执行的区别
    gulp布局构建小结
    理解上下文与作用域
    定义变量的注意问题
    JUC的世界III
    JUC的世界II
  • 原文地址:https://www.cnblogs.com/xjyxp/p/11446731.html
Copyright © 2011-2022 走看看