跳至主要內容

计算机网络

星星大约 4 分钟

计网基础

浏览器从输入 url 开始发生了什么

  1. 输入地址 输入网址的时候,浏览器会根据历史记录,书签等地方匹配可能的 url 了,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全 url 地址
  2. 浏览器查找域名的 IP 地址
    1. 先查看本地硬盘的 hosts 文件
    2. 发出一个 DNS 请求到本地DNS服务器(本地 DNS 服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动)
    3. 本地 DNS 服务器会向根DNS服务器发起请求,得到顶级域名服务器地址
    4. 本地 DNS 服务器继续向顶级域名服务器发出请求,得到权威 DNS 服务器地址
    5. 本地 DNS 服务器向权威 DNS 服务器发出请求,得到 ip 地址
  3. 浏览器向 web 服务器发送一个 HTTP 请求 浏览器会以一个随机端口(1024<端口<65535)向服务器的 WEB 程序(常用的有 httpd,nginx 等)80 端口发起 TCP 的连接请求,之后通过三握手的方式建立 tcp 连接,并发起一个请求。
  4. 服务器的永久重定向响应 服务器给浏览器响应一个 301 永久重定向响应,这样浏览器就会访问http://www.google.com/而非http://google.com/。(搜索引擎排名)
  5. 服务器处理请求 后端从在固定的端口接收到 TCP 报文开始,它会对 TCP 连接进行处理,对 HTTP 协议进行解析,并按照报文格式进一步封装成 HTTP Request 对象,供上层使用。(一些网站会将请求转到NGINX反向代理服务器中,将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。)
  6. 服务器返回一个 HTTP 响应 服务器收到了我们的请求,也处理我们的请求,到这一步,它会把它的处理结果返回,也就是返回一个 HTPP 响应。
  7. 浏览器显示 HTML
  • 解析 html 以构建 dom 树 -> 构建 render 树 -> 布局 render 树 -> 绘制 render 树
  • 浏览器在解析 html 文件时,会”自上而下“加载,并在加载过程中进行解析渲染。在解析过程中,如果遇到请求外部资源时,如图片、外链的 CSS、iconfont 等,请求过程是异步的,并不会影响 html 文档进行加载。
  • 解析过程中,浏览器首先会解析 HTML 文件构建 DOM 树,然后解析 CSS 文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。(期间会涉及到回流重绘)
  1. 浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS 等等)

tcp/ip 的网络模型

  • 同一台设备上的进程间通信,管道、消息队列、共享内存、信号等方式
  • 不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。
  1. 应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP 等。

  2. 传输层有两个传输协议,分别是 TCP 和 UDP。大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议,TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。应用间数据传输的媒介,帮助实现应用到应用的通信

  3. 网络层最常使用的是 IP 协议(Internet Protocol),IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文,如果 IP 报文大小超过 MTU(以太网中一般为 1500 字节)就会再次进行分片,得到一个即将发送到网络的 IP 报文。网络层负责将数据从一个设备传输到另一个设备

    • 网络号,负责标识该 IP 地址是属于哪个「子网」的;ip 和子网掩码按位与运算得到网络号
    • 主机号,负责标识同一「子网」下的不同主机;ip 和取反后子网掩码按位与运算得到主机号
  4. 网络接口层在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上。为网络层提供「链路级别」传输的服务,负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备。

上次编辑于:
贡献者: wanghongjie