完整网络通信过程
以访问https://github.com为例简要解析网络通信过程
IP地址解析
- 用户PC-A (192.168.1.1) 在浏览器中输入URL (https://github.com), 客户端准备一个查询“https://github.com”的IP地址的数据包,发往DNS服务器(数据包中包含了源地址IP, 目的地址即DNS服务器的IP地址: 192.168.2.1, 以及本机UDP端口).
- 数据包通过网络接口层发给本网段网关, 由网关转发
- 在网络接口层会将数据包封闭为数据帧, 帧头要添加源MAC地址和目的MAC地址, 但此时还不知道目的MAC地址(即网关的MAC地址)
- PC-A在本网段发送ARP协议广播数据包, 请求网关192.168.1.254的MAC地址
- 广播数据包封装后由交换机转发到本网段除PC-A外所有计算机(网络接口)上 (基本靠吼)
- IP地址为192.168.1.254的计算机(网关)会应答这个数据包, 其余计算机不应答
- 应答数据包通过交换机返回给PC-A, 这样PC-A就知道了网关的MAC地址
- 此时DNS查询数据包可以发送到交换机, 并转发给本网段的网关(一般由路由器实现网关功能,这里叫作Router-A)
- 接下来Router-A查看自己的路由表, 找到目的IP所在的网段, 经由多个路由器将数据转发到目的IP所在网段的路由(这里叫做Router-B)