局域网内数据包的通信过程
局域网内数据包的发送过程
1. PC1与PC2通信时,在PC1电脑中,应用层产生数据交给传输层;传输层进行数据的分段,使数据的大小适合在网络上传递,根据应用层不同软件产生的数据,选择不同协议栈进行封装TCP 或UDP , 再进行不同服务端口号的封装(例:WWW 80 ,FTP 21),再传递给网络层;网络层在数据包头部进行封装源IP 、目的IP ,根据上层协议栈标识不同协议号,当IP 包头封装TCP 时协议号为6、UDP 协议号为17,用来标识上层使用的协议,继续传递给数据链路层; 数据链路层在数据包头部进行帧的封装,封装源MAC 、目的MAC, 由于不知道目的MAC 地址,会进行ARP 的广播包,封装一个全F 的类型字段为0X0806广播包,交付给物理层,物理层转换成电信号(bit 流),发送到交换机;
2. 交换机接收后发现为ARP 的广播包,进行其解封学习到PC1的MAC 地址,继续封装并除接受端口以外的端口再次进行ARP 的广播;
3. 路由器收到交换机发来的ARP 广播,进行解封,查看到数据包中的类型字段为0X0806即ARP 的广播包,进行回复,源MAC 为路由(网关)的MAC, 目的MAC 为PC1的MAC ,类型字段为0X0806,经过物理层将数据转换为电信号(bit 流)发送给交换机;
4. 交换机收到后进行解封,学习到源MAC (路由器的MAC ),发现目的MAC 已经存在自己的MAC 表中,查看目的MAC 对应的端口,并从对应的端口发送到PC1;
5. PC1接收数据包后进行解封,学习到路由器(网关) 的MAC ,在数据链路层将目的MAC 封装为路由器(网关)的MAC, 类型字段为0X0800, 并在数据帧尾部封装FCS, 来校验数据的完整性,然后向下层传递给物理层,物理层把数据帧转换成电信号(bit 流),发送到交换机;
(注:不同网段的通信,PC 机先把数据传送到网关)
6. 交换机接收到数据包,查看到目的MAC 已存在自己的MAC 表中,根据自己MAC 表中对应的端口发送出去;
7. 路由器接收到数据包后进行解封装,在数据包头部发现目的ip ,便查找路由表条目中对
应的端口,便对数据进行重写,由于不知道目的主机的MAC 地址,路由器会发送ARP 广播,PC2收到数据包进行解封,发现是ARP 广播,类型字段为0X0806,
然后对其进行封装回复,源MAC 为PC2的MAC ,目的MAC 为路由器的MAC ,路由器收到后把PC2对应的MAC 地址和端口记录在MAC 表中,
8. -pc2接受到信息,便对数据进行解封装,发现目的ip 是给自己的,然后继续解封装,然
后把数据传送给应用程序qq 。然后对路由回复,在传输层设源端口号为8000,目的端口号为4000,封装udp 头部。在网络层将源ip 设为192, 。168.2.1,目的ip 设为192.168.1.2,协议号为17,在数据链路层将源mac 设为12个3,目的mac 设为12个1,类型字段为0x0800,封装FCS ,然后经物理层将数据转为bit 流传给路由器,路由器再查找路由表,并对数据进行重写,从f0/0传送出去,交换机解封装,查找mac 表,再对数据进行封装,从f0/0传送给pc1. 通信完成。