zoukankan      html  css  js  c++  java
  • 2. http应用原理--浏览器输入一个网址后的工作流程简述

    当我们在浏览器中输入 http://www.baidu.com/ 按下回车的时候,浏览器做了哪些事情,大概的流程如下:
    1.域名到IP地址的转换,浏览器依次查找:
    (1)搜索浏览器自身的DNS缓存
    (2)搜索操作系统自身的缓存
    (3)查找硬盘中hosts文件中是否有DNS和IP地址的映射
    (4)向域名服务器发起DNS请求(复杂的过程)
    然后浏览器获得了IP地址。
    2.TCP连接(三次握手)

    发三次包,TCP报文格式如上,主要关注几个字段
    (1)序号:Seq序号,32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
    (2)确认序号:Ack序号,32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
    (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,含义如下:
             ACK:确认序号有效。
             SYN:发起一个新连接。
             FIN: 释放一个连接。
    3.发起HTTP请求
    请求消息包括:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
    4.HTTP响应
    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
    服务器接受到这个请求后,根据路径参数,经过后台一些处理之后,把处理后的结果返回给浏览器,比如是百度首页,就可以把完整的 HTML 页面代码返回给浏览器。
    5.浏览器解析呈现HTML内容
    浏览器拿到了百度首页的完整 HTML 页面代码,内核和 JS 引擎就会解析和渲染这个页面,里面的 JS,CSS,图片等静态资源也通过一个个 HTTP 请求进行加载。然后浏览器根据拿到的资源对页面进行渲染,最终把完整的页面呈现给用户。
    6.TCP 断开(即四次挥手)
    如果浏览器没有后续的请求,那么就会跟服务器端发起 tcp断开。

  • 相关阅读:
    python的第三方库
    安装setuptools
    UnicodeDecodeError异常
    Puppeteer之爬虫入门
    python实时得到鼠标的位置
    下载ez_setup
    下载pywinauto
    linux环境下创建domain
    git常用操作
    maven添加本地jar到本地仓库
  • 原文地址:https://www.cnblogs.com/josie-xu/p/10430441.html
Copyright © 2011-2022 走看看