发出Web请求到服务器都经历了什么(一)得有网吧

54 阅读3分钟

我们通过在浏览器中输入网址/URL就能访问网页了,但整个访问流程涉及到哪些协议以及什么内容? 首先,我们要想访问某个网址,电脑先要联网,因此我们有些前期准备工作需要进行。

1. 接入互联网

要联网才能访问啊!

DHCP

Dynamic Host Configuration Protocol 我们要想上网,首先要有IP地址。IP地址可以手动分配,但我们不管是有线连接还是无线连接网络都会采用自动获取IP地址的方式。 DHCP会给我们分配IP地址、子网掩码、默认网关、DNS IP地址。获得这些信息后就可以上网了。 image.png DHCP是有租期的,一般我们连接家用WIFI,IP地址不常变就是因为DHCP在续租。

DHCP流程

1. DHCP Discover 发现与寻找

DHCP协议是应用层协议,根据四层网络模型需要依次经过传输层、网络层、数据链路层发送。报文里会有客户端提供的TransactionID,如果有其他设备在和DHCP进行交互,就可以通过这个ID判断属于哪个设备的请求。DHCP基于Bootstrap Protocol发展出来的,因此报文里会有Bootp和Boot。Bootp设置为Unicast,服务器可以单播发送给新设备

  • 传输层

    UDP协议,源端口号默认68,目标端口号67。

  • 网络层 IP设置为多少呢

    我们为了获取IP地址才进行的请求,那这里的IP是多少呢。这里使用特殊IP,不知道目标地址可以 通过广播方式,将目标IP设置为广播地址255.255.255.255。源地址设置为0.0.0.0。广播只在局域网范围内进行传播,路由器收到广播消息后不会进行转发,由路由器独享。

  • 数据链路层 MAC地址设置为多少呢

    这里需要知道源和目标的MAC地址。设备知道自己的MAC地址但是不知道目标的MAC地址,因此填写MAC的广播地址。

如果有IP地址存在,那么DHCP服务器会金星DHCP Offer。

2. DHCP Offer 提供

DHCP要提供IP地址、子网掩码、默认网关、DNS IP地址了。一般家里的网关、DHCP、DNS地址都是路由器。同样经过四层协议。

  • 传输层

    UDP协议,源端口号默认67,目标端口号68。

  • 网络层

    源地址就是路由器自己的IP地址,目标地址就是分配的IP地址。注意响应不是广播是单播。

  • 数据链路层

    源地址是路由器的MAC地址,目标MAC地址就是刚才设备提供的。

因为局域网内可能有多个DHCP服务器,客户端可能会收到多个IP地址。所以我们还需要确认使用哪个IP地址。

3. DHCP Request 选择与请求

客户端需要确定IP地址。

  • 传输层

    UDP协议,源端口号默认68,目标端口号67。

  • 网络层

    因为还没确定IP,因此源地址还是填写0.0.0.0,目标IP地址依然是广播地址255.255.255.255。因为局域网内可能有多个DHCP服务器。

  • 数据链路层

    源MAC地址设置为自己的MAC地址,目标MAC地址设置为广播地址。

接下来服务器收到客户端的请求后就需要进行确认。

4. DHCP ACK

和步骤2基本相同。

客户端可以联网了

获得了IP,可以联网了!