2、从输键入网址到显示网页,这期间发生了什么?

发布时间 2023-11-15 21:05:12作者: tiansiju

这期笔记主要还是参考了小林code的这边文章,讲解很详细很到位,有时间可以看看原文:
2.2 键入网址到网页显示,期间发生了什么? | 小林coding (xiaolincoding.com)

从你输入一个网址,到网页显示,这期间过程如下:

1、解析URL

浏览器做的第一步就是解析URL,将URL转变为HTTP或者HTTPS请求;

URL各部分的含义如下:
image

故URL的含义就是请求服务器端的文件资源。如果URL中只有协议和域名(把后面的目录和文件名省略掉了,http://www.server.com),则会进入到服务器端默认设置的资源中去。

2、产生Http请求

根据上一步解析URL后,产生对应的HTTP请求(如GET请求、POST请求等)

3、通过DNS协议,获得域名对应的ip地址

4、发送请求到服务端

4.1、应用程序通过socket库将数据发送给操作系统中的协议栈
4.2、协议栈中的上层部分(上层部分包含TCP和UDP)的TCP协议对数据进行处理

TCP在获取到应用程序的数据后,会和服务器进行三次握手建立连接,三次握手的目的是保证数据传输的可靠性。在建立连接之后才会进行数据的传输:

在传输数据前,TCP协议会将数据封装成一份份的TCP段,每一段中都包含一个TCP头部。TCP头部主要组成如下:

  • 源ip地址和目标ip地址
  • 确认号:确认是否对方是否收到
  • 状态位:如ACK、SYN等,用于三次握手和四次挥手
  • 窗口大小:进行流量控制
  • 拥塞控制位:进行拥塞控制

数据封装好之后,会传输给协议栈下层部分

4.3、协议栈的下层部分(下层部分包括IP,ARP和ICMP)的IP协议对数据进行处理

将TCP段封装成IP包,每个IP包中头包含一个IP头部。IP头部主要组成如下:

  • 源IP地址和目标IP地址:目标IP地址已经通过DNS获取到了
  • 协议号:传输协议,Http是经过TCP传输的,所以协议号一般表示TCP
4.4、封装MAC头部

将MAC头部封装到IP包中,MAC头部主要组成如下:

  • 源MAC地址和目标MAC地址
  • 协议类型:MAC头部的协议类型只有IP和ARP两种,其中ARP协议更常用

其中源MAC地址容易获取,目标MAC地址则通过ARP协议获取。由于已经知道了服务器的ip地址,可以通过ip地址和掩码计算出目标子网(目标子网可能是路由器所在子网,也有可能是服务器所在子网)。然后ARP协议会在服务器对应的子网中广播寻找目标的MAC地址(可能是路由器的MAC地址,也可能时服务器的MAC地址),目标收到广播后回复自身的MAC地址,从而就得到了目标的MAC地址

4.5、通过网卡将二进制数据转换成电信号

通过网卡驱动程序控制网卡,网卡将最后封装好的数据(在计算机中由二进制的方式存储)转换成电信号

4.6、交换机
4.7、路由器
4.8、到达服务器端