互联网缩短了人与人、人与物、物与物之间的距离,构建了其间的交流方式。不同个体之间交流需要通信通道,而网络协议就是构建此通道的基础。
目前网络通用的协议是 TCP/IP 协议。TCP/IP 标准协议分为 7 层:物理层、数据链路层、IP层、传输层、会话层、表示层、应用层。但是在实际使用中通常将会话层、表示层合并到应用层。从而成为 5 层协议体系。下面将一一次购物请求来说明 TCP/IP 协议的工作过程。
1 从目标机到网关的转发
- 用户在应用层发起购物请求,此处涉及的应用层协议是 http/https协议,应用层将会完成应用层http头与请求内容的组装,成为一个请求包:
![](https://i-blog.csdnimg.cn/blog_migrate/c2886ab372e221d3d6563c40107f83b6.png)
- 应用层将用户请求包封装完成后,通过socket 调用,将请求包传递给传输层。传输层分为 TCP 和 UDP 两种协议。此处为了保证请求的可靠性,选择 TCP 协议。TCP 协议将会指定浏览器的监听端口和电商服务器的监听端口(
因为一台电脑上不可能只运行一个服务,故需要通过端口来区分同一 ip 机器上不同的应用进程。
)。
![](https://i-blog.csdnimg.cn/blog_migrate/a5d69fd124b2d6268b0ed1579a9c8dcb.png)
- 传输层封装完成后的请求包将会继续被传输到 IP 层。IP 层将会根据 IP 协议为请求包增加源 IP 地址 和目标 IP 地址。
![](https://i-blog.csdnimg.cn/blog_migrate/6f807afa172b47c420fbcb953bfc1f96.png)
- IP 层封装完成包继续传输到数据链路层(MAC 层)。
- 操作系统既然知道了目标 IP 地址,就开始考虑如何根据此 IP 找到目标机器。操作系统往往先会判断此 IP 是本地 IP 还是外地 IP。此处电商服务器 IP 很显然是外地 IP。
- 由于目标 IP 为外地 IP。故需要从对应网关转发出去。此处的源 IP 192.168.1.101 为局域网地址,显然其 IP 由网关 192.168.1.1 的 DHCP 自动分配。
上述决定从哪个网口转发出去 IP 包的过程称为路由,常用路由协议有 OSPF 和 BGP。
- 此时如何才能将 IP 包转发给网关呢?在本地通信基本靠吼,根据ARP 协议,操作系统就会发出广播,请问谁是 192.168.1.1 啊,网关收到后会回复其 mac 地址。按照此 mac 地址对请求包继续封装。封装完成后,按照目标 mac 地址转发到对应的网关。
![](https://i-blog.csdnimg.cn/blog_migrate/dc277186b0130d69ecfb3620db977930.png)
2 网关到网关的转发
3 网关到目标机的转发
注意:
- 只要再网络上跑的包,都是完整的,可以有下层没上层,绝不可能有上层没下层。
- 始终把自己想象成一个处理网络包的程序,如何拿到网络包,如何根据规则处理,如何转发出去。
- 二层设备指仅处理网络包的 mac 头的设备,三层设备是指处理网络包的 mac 头和 ip 头的设备。