网页请求过程 Webpage Request (不包含TCP握手)

本文详细阐述了网页请求的整个流程,从DHCP协议获取IP地址,到ARP查找路由器MAC,接着是DNS解析域名,然后建立TCP连接,并最终发送HTTP请求获取网页内容。涉及网络七层协议的简化版理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

网络七层协议(通常简化为5类)

层数功能应用
第七层内容层如:网页,视频,博客…
第五到七层应用层如:http,邮件,文件传输,直播…
第四层传输层TCP堵塞控制,UDP
第三层网络层IP地址,路由
第一二层物理层,连接层以太网,Wi-Fi,DSL…

1. 输入网页地址前:

在浏览器输入网址前,电脑在连接进互联网时会通过DHCP协议,向服务器请求得到自己的IP地址。

在整个过程起始前,假设电脑首次连接到网络,还没有自己的IP和MAC地址等。此时:

  • 需要获取电脑自己的IP地址,第一跳路由器地址,DNS服务器地址。通过DHCP协议实现。
  • 从应用层的DHCP请求在UDP(第四层)被封装,在IP(第三层)被封装,再到802.3以太网(第一二层)被封装。
  • 由于不知道任何地址,以太网以广播形式(broadcast,终点地址为:FFFFFFFFFFFF)在LAN中传播,最终被运行DHCP服务器的路由器接收。
  • 请求会从底层(以太网,IP)解复用(demuxed)到DHCP层,从而DHCP拿到负载/实质信息(payload)。
  • DHCP 服务器制定包含客户端 IP 地址、第一跳路由器 IP 地址、DNS 服务器名称和 IP 地址的 DHCP 确认字符ACK。
  • 虽然DHCP服务器把刚制定的客户端IP地址设为终点地址,但是客户端还不知道自己的IP地址。使用同样的方法,broadcast,在客户端解复用。此时交换机(switch)也了解到了LAN中新电脑的信息。(switch learning)
  • DHCP客户端接收到DHCP的确认字符ACK,包含自己的IP地址等。

具体DHCP工作步骤参考:https://blog.51cto.com/u_15073468/2795167

现在,客户端有了自己的IP地址,知道了DNS服务器的名字和地址,也知道了第一跳路由器的IP地址。

2. ARP(在DNS和HTTP前)

  • 在发送http请求前,需要链接如www.google.com的IP地址:DNS
  • DNS在应用层被创建,在UDP层被封装,在IP层被封装。在header添加出发点的IP地址和终点的IP地址。在以太层被封装。添加了出发点的MAC地址,但是由于现在只是知道第一跳路由器的IP地址,还不知道他的MAC地址。为了能够传到第一跳路由器,需要路由器端口的MAC地址:ARP协议。
  • ARP请求是以广播形式发送的。已知IP地址的路由器接收到后,会回复一个包含有MAC地址的ARP协议(以太层)。

3. DNS

  • 此时客户端就知道了第一跳路由器的MAC地址。所以可以发送带有DNS请求的帧了(frame->packets)
  • 接下来,包含DNS请求的IP数据报(datagram)通过局域网交换机(LAN switch)从客户端传到了第一跳的路由器。
  • 然后,IP数据报从本地网络传输到了DNS服务器的网络,然后路由到了DNS服务器。
  • 解复用到DNS服务器
  • DNS服务器向客户端回复www.google.com的IP地址。

4. 携带HTTP的TCP连接

  • 在发送HTTP请求前,客户端需要向网页服务器打开TCP socket
  • TCP SYN 报文段(第一次握手)路由到网页服务器
  • 网页服务器回复TCP SYNACK(第二次握手)
  • TCP再次发送ACK(第三次握手),TCP 连接建立。

5. HTTP请求/回复

  • HTTP请求发送到TCP socket
  • 包含HTTP请求的IP数据报路由到www.google.com
  • 网页服务器回复HTTP请求。(包含网页页面)
  • 包含HTTP回复的IP数据报路由回客户端。

关于TCP三次握手四次挥手,参考:
https://blog.csdn.net/qzcsu/article/details/72861891

此博客仅用于自我学习的记录,如有不当请指正。12/04/2021
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值