- 发送数据包之前,需要知道目的域名代表的 ip 地址
- 向 DNS 服务器(53端口)发送一个 DNS 数据包,DNS 服务器会响应目的域名的 ip 地址给本机
- 浏览器会按照应用层的 http 协议,封装一个应用层数据包,内容为 http 请求报文
- 接着封装一个 tcp 数据包 (标头 + 数据;前者包含接收者的端口号、发送者的端口号,20kb,后者为 http 请求报文)
- 接着封装一个 ip 数据包(标头 + 数据;前者包含接收者的ip地址,发送者的ip地址,20kb,后者为 tcp 数据包)
- 接着封装一个以太网数据包(标头 + 数据;前者包含发送者和接收者的 MAC 地址,数据为 ip 数据包)
- 由于以太网数据包总长度最长为 1500 kb,所以会切分数据包为多个以太网数据包
- 在封装以太网数据包之前会判断目标 ip 是否和本机为同一子网,决定了以太网标头写入的目标MAC地址的内容 和 转发的目的地
- 是,则目标 MAC 地址即为目标机的 MAC 地址(此处省去ARP介绍),通过交换机进行转发
- 否,则目标 MAC 地址即为网关(一般是路由器)的 MAC 地址,通过网关判断转发
- 网关会根据自己的 ARF cache(?) 等操作会修改以太网数据包中的接收者 MAC 地址
- 接收者 MAC 地址可能是另一个网关的 MAC 地址,也可能是目标机的 MAC 地址
- 最终会通过目标机的交换机将该以太网请求报进行广播,目标机进行响应
- 网关会根据自己的 ARF cache(?) 等操作会修改以太网数据包中的接收者 MAC 地址
- 服务器将一组以太网数据包进行组合,层层解包,获得 http 请求报文,然后进行后续处理