当今IP网络数据通信的基本就是TCP/IP参考模型|pc访问web服务器的数据通信( 三 )


8.接着由R1的数据链路层继续处理上层下来的IP包 , 它为这个IP包封装上一个新的以太网帧头 , 帧头中源MAC地址为R1的GE0/0/1口的MAC:0000-0000-0002 , 目的MAC是这个数据包即将交给的下一跳路由器192.168.12.2对应的MAC 。
当然初始情况下R1是不知道这个MAC的 , 因此又是一轮ARP请求广播及回应过程并最终拿到这个MAC:0000-0000-0003 , 于是它将这个值填写在目的MAC字段中 。 完成了新的数据帧封装后(如下图所示) , R1把这个数据帧变成1010101…通过电气信号传递给R2 。
当今IP网络数据通信的基本就是TCP/IP参考模型|pc访问web服务器的数据通信
文章图片
9.R2收到这些比特流10101…后 , 先将其还原成帧 , 然后查看帧头 , 发现目的MAC填写的就是自己接口的MAC , 并且帧头中类型字段写的是0x0800(指示上层协议是IP , 也就是数据帧头内封装的是一个IP包) , 于是将数据帧头剥去 , 将里头的IP数据包交给IP协议去处理 。
10.IP协议在处理过程中发现 , 目的IP地址并非本路由器的IP(如下图所示) , 于是它知道这个数据包不是发送给自己的 , 它拿着目的IP地址192.168.2.1在自己路由表中查询 , 结果发现 , R2的GE0/0/1口就连接着192.168.2.0/24网络 , 于是它将这个IP包交还给下层协议去处理 。
当今IP网络数据通信的基本就是TCP/IP参考模型|pc访问web服务器的数据通信
文章图片
11.R2继续处理为这个IP包封装一个新的数据帧头部 , 帧头中 , 源MAC为R2的GE0/0/1口的MAC , 目的MAC为192.168.2.1这个IP地址对应的MAC , 如果ARP表里有192.168.2.1对应的MAC , 则直接将MAC地址写入目的MAC中 , 如果没有 , 则发ARP请求报文去请求该地址 。 另外类型字段依然填写0x0800 。 最终 , R2将这个数据帧传给了Server , 如下图所示:
当今IP网络数据通信的基本就是TCP/IP参考模型|pc访问web服务器的数据通信
文章图片
12.终于数据帧到达了Server(如下图所示) 。 Server首先将这些比特流还原成帧 , 然后做校验看看帧是否损坏 , 如果没有 , 则查看数据帧的目的MAC , 结果发现就是自己的网卡MAC , 于是查看类型字段 , 发现是0x0800 , 知道这里头装的是一个IP包 , 于是将帧头剥去 , 将内层的IP数据包交给IP协议去处理 。
IP协议层收到这个数据包之后 , 首先查看IP包是否损坏 , 如果没有 , 则查看目的IP地址 , 发现目的IP地址是192.168.2.1——正是自己的网卡IP , 于是它知道 , 这个IP包是发给自己的 , 因此继续查看IP包头中的协议字段 , 发现协议字段填写的是6这个值 , 原来这个IP包头后面封装的是一个TCP的数据 , 于是将IP包头剥去 , 将里头的TCP数据交给上层的TCP协议处理 。
当今IP网络数据通信的基本就是TCP/IP参考模型|pc访问web服务器的数据通信】而TCP在处理这个数据的时候 , 查看TCP头部的目的端口号 , 发现目的端口号是80 , 而Server本地的TCP80端口是开放的 , 开放给HTTP应用了 , 因此它将TCP头部剥去 , 将里头的载荷交给HTTP应用 。 终于 , 从PC发送出来的HTTP应用数据到达了目的地——Server的HTTP应用的手中 。
当今IP网络数据通信的基本就是TCP/IP参考模型|pc访问web服务器的数据通信
文章图片
---END---