web页面的请求过程

web页面的请求过程

关键路径:打开浏览器,输入URL,连接服务器,渲染服务器返回的结果。

那在这个过程中首先我们需要建立连接,也就是TCP三次握手,先开始第一次握手,也就是主机向服务器发送请求报文段,这就需要知道源IP,目的IP。

  • 申请源IP

    • 为主机申请IP:DHCP动态主机配置协议

    1、DHCP Discover:客户端以广播形式发送DHCP Discover报文,该局域网内的所有DHCP服务器都可以收到此报文。
    2、DHCP Offer:DHCP服务器收到客户端发送的DHCP Discover报文后,会从配置的地址池中选择一个IP地址预分配给客户端,该IP地址封装在DHCP offer报文内以广播形式发送给客户端。
    3、DHCP Request:客户端会在收到的DHCP offer报文中选择一个IP,一般为第一个收到的DHCP offer报文,但此时客户端并不能使用该IP,需要以广播形式发送DHCP Request报文给DHCP服务器。
    4、DHCP Ack:DHCP服务器收到后会查看客户端选择的是否为自己分配的IP地址,如果不是,则将IP地址放回地址池,等待下一次的客户端的申请。如果选择的是自己分配的IP地址,则广播发送DHCP ACK报文给客户端,并在服务端将客户端的MAC地址和IP地址进行绑定。
    5、客户端收到该报文后不会立即使用,而是利用ARP进行探测该地址是否被其他客户端所使用,如果在超时时间内没有得到回应,则客户端使用该IP地址,如果得到ARP回应,则发送DHCP DECLINE包给DHCP服务器,然后重复上述流程,向DHCP服务器申请IP地址。
    6、DHCP客户端重新启动后不需要再发送DHCP Discover报文进行地址申请,它进行和续约类似的操作。

    • 主机生成一个DHCP请求报文(应用层)
    • 放入UDP报文段(传输层),UDP报文段主要包含
      • 源端口68(DHCP客户端的固定端口)
      • 目的端口67(DHCP服务器的固定端口)
    • 网络层添加头部封装成IP数据报,主要包含
      • 源IP:0.0.0.0
      • 目的IP:255.255.255.255(广播IP)
    • 数据链路层添加头部封装成以太网帧,主要包含
      • 源MAC:自己的MAC
      • 目的MAC:FF:FF:FF:FF:FF:FF(广播帧)
    • 以太网帧被发送到交换机,交换机修改转发表记录我的MAC
      • (自学习:每接收到一个帧都记录该帧的MAC和到达的接口),然后在他的所有出口广播这个帧
    • 与交换机相连的默认网关路由器接收到了这个广播帧,进行解析,提取出IP数据报,发现目的IP是广播IP,就交给传输层,传输层又提取出 DHCP 请求交给应用层, DHCP 服务器就收到了该 DHCP 请求。
    • DHCP 服务器为此生成一个 DHCP ACK 报文,主要包含:
      • 分配给DHCP请求的IP
      • DNS服务器的IP
      • 默认网关路由器的IP
      • 子网掩码
    • 这个报文再被传输层、网络层、数据链路层一路封装成帧,该帧的目的 MAC 是我的MAC,源MAC是接收 DHCP 请求帧的路由器端口的 MAC
    • DHCP ACK以太网帧由默认网关路由器发送给交换机,交换机根据转发表转发回给我的主机
    • 主机收到该帧之后再从链路层到应用层,层层提取,最后得到自己的IP、DNS服务器IP、默认网关路由器IP,进行配置
    • 获得到IP
  • 查找默认网关路由器的MAC地址:ARP地址转换协议

    • 现在我有了源 IP,要开始找目的 IP。已知目的域名,根据域名找 IP,找 DNS 域名系统服务器去查就好。在前面 DHCP 过程中我们已经得到了 DNS 服务器的 IP 地址,现在只要去访问该IP就好,但是在这之前我们需要先走出我们所处的局域网,这就需要局域网默认网关路由器的MAC地址。
    • 先解释一下默认网关路由器,每一个主机都在一个局域网里,要访问局域网以外的主机就需要先离开这个局域网,那我们要怎么离开呢?我们把这个局域网比作一个院子,网关路由器就是这个院子的门,我们要离开这个院子的话就要从门出去,那一个院子可以有很多个门,我们从哪个门出去呢?我们自己也不知道啊,但一般都有一个默认的,不知道该从哪出去的时候,就走默认的。
    • 为什么需要局域网的MAC地址呢? 因为局域网内是通过 MAC 进行识别的,为什么要用 MAC 地址识别呢?是这样的,以前没这么多主机的时候,IP 是固定的,我们就不需要 MAC,但现在主机越来越多,这就导致局域网里 IP 不是十分充足,管理起来也不是很好管理,所以 IP 每隔一段时间就会被回收,需要的时候才会被分配,这也就是为什么前面提到的 DHCP 动态主机配置协议会存在,所以这个 IP 是会变的,对于主机来说,唯一不变的是 MAC,所以,在局域网内部我们是用 MAC 定位的。
    • 那又要怎么找MAC地址呢?通过IP找MAC,这就用到了ARP地址转换协议。
    • 主机生成一个 ARP 查询报文,目的 IP 是默认网关路由器,这个报文最终被封装成以太网帧,帧的目的MAC是 FF:FF:FF:FF:FF:FF(广播地址),然后把帧发给交换机,交换机看到是广播地址就给广播出去
    • 默认网关路由器接收到了这个帧,经过层层提取得到 ARP 报文,发现其中的目的 IP 跟他自己某个接口的 IP 匹配,就发送回去一个 ARP 应答报文给主机,这里包含他自己的 MAC
  • 查找目的域名的IP:DNS域名系统

    • 主机生成DNS查询报文,包含
      • 目的域名
      • DNS服务器目的端口:53
    • 层层封装成以太网帧,帧的目的 MAC 是默认网关路由器的 MAC
    • 默认网关路由器接收到该帧之后,提取出IP数据报,并根据路由表进行转发,因为路由器具有内部网关协议*(RIP路由信息协议、OSPF开放最短路径优先协议)和外部网关协议(BGP边界网关协议)*,因此路由表中已经配置了可以从路由器到达 DNS 服务器的路由表项

RIP:同一自治系统(A.S.)中的路由器每 30秒会与相邻的路由器 交换子讯息,以动态的建立路由表。RIP 允许最大的hop数(跳数)为15 多于15跳不可达。
OSPF:dijkstra最短路算法

  • DNS 服务器接收到帧后,层层提取出 DNS 查询报文,并在 DNS 数据库中查找待解析域名对应的 IP,找到之后发送 DNS 应答报文,封装成 UDP 报文段,再放入 IP 数据报,最后通过路由器转回给源主机的默认网关路由器,再经由交换机转发给源主机。
  • TCP三次握手
    • (第一次握手)主机向目的服务器发送连接请求报文段,SYN=1,ACK=0,选择一个初始的序号 x。
    • (第二次握手)目的服务器收到连接请求报文段后,如果同意建立连接,则向主机发送连接确认报文段,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
    • (第三次握手)主机收到目的服务器的连接确认报文段后,还要向目的服务器发出确认,确认号为 y+1,序号为 x+1。
  • 目的服务器收到主机的确认后,连接就建立了。

为什么要进行第三次握手呢?
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

  • 连接建立完成了,现在我们就可以继续前言中连接建立之后的过程进行访问了
    • 浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。
    • HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。
  • 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值