您的位置 首页 > 数码极客

完成端口如何发送数据

很多时候我们会发现,有时候学习过程中,大家对于整体的数据包流程没有一个明确的思路,今天我们来好好聊一聊数据在网络中,是如何传递的。


PC1 地址192.168.1.100/24,网关地址192.168.1.1----也就是路由器f0/0口的地址;

PC2地址172.16.1.100/24,网关地址172.16.1.1----也就是路由器f1/0口的地址。


下面从OSI七层模型对数据包进行封装,封装完毕通过物理线路发送出去,结合路由器交换机工作原理进行描述:


1、PC1在应用层发起个目标IP为172.16.1.100的Https请求。


2、传输层(TCP层)接到上层请求的数据,将数据分段并加上传输层报头(也就是TCP包头,目的端口号为443)。下传到网络层。


3、网络层接收来处上层的数据后,根据IP协议(三层)进行封装,添加PC1的IP为源IP为和PC2的IP为目标IP后封装成数据包,同时协议号位6(TCP的协议号,标识包头里面是TCP的内容)。下传到数据链路层(二层),因PC1 IP与PC2 IP不在同一网段,所以数据包将发往网关路由条目的下一跳,也就是路由器G0/0/0/口。


4、数据链路层接收网络层封装好的数据包后,继续进行封装帧头,添加源MAC地址为PC1的MAC地址,目标MAC地址则查询自己的ARP缓存表以获取网关MAC地址(路由器G0/0/0口的MAC)。如果PC1 ARP缓存表中没有网关对应的MAC地址,则PC1发出一个ARP广播报文。ARP报文中源MAC地址为PC1 MAC地址,所要请求的是网关IP对应的MAC地址.


5、交换机SW1从G0/0/1接收到ARP广播帧后,检查自己ARP缓存表中是否有与G0/0/1口相对应PC1的MAC地址。没有,则将PC1MAC地址与G0/0/1接口对应起来,存储到交换机SW1的ARP缓存表中。然后将该ARP请求报文进行除G0/0/0口以外的其他所有端口进行泛洪。


6、Router收到ARP广播后,进行解封装,发现所要请求的MAC地址是自己的。则Router将PC1的MAC地址写入ARP缓存表中。然后向 PC1发送一个ARP单播回应。该单播消息包括目标IP为PC1 IP,目标MAC为PC1 MAC地址,源IP为Router的G0/0/0口IP,源MAC为 Router的G0/0/0的MAC。


7、交换机通过G0/0/2口收到ARP单播帧,交换机同样检查MAC表,然后将G0/0/2口与Router的G0/0/0(ARP单播包里面的源MAC)的MAC地址对应起来,存入MAC缓存表中,然后转发该帧。


8、PC1接收到Router的ARP应答帧后,将Router的G0/0/0的MAC地址存入ARP缓存中(缓存默认4个小时超时),并将Router的G0/0/0的MAC地址作为目标地址封装到数据帧中。发给下层(物理层)进行网络传输。


9、Router的G0/0/0接收这个帧后,看目标mac地址是否指向自己。是,则将帧头去掉,然后检查目标IP地址,发现这个目标IP不是自己,刚不再进行解封装。


10、Router在自己的路由表中检查自己的是否有去往目标地址的路由,没有则丢弃该帧。有,路由器经检查发现是去往与G0/0/1口直连的网段。则路由器对数据包进行二层封装成帧,源IP为PC1的IP,源mac地址为Router G0/0/1口的MAC地址,目标IP为PC2的IP,目标MAC地址则检查自己的ARP缓存表获取。如果没有,则发送ARP请求报文(这里就不再描述ARP请求过程了)。


11.Router把二层帧封装完毕,完后把数据帧发给SW2,SW2查看MAC地址表,根据之前ARP的映射缓存表项通过G0/0/1口转发数据帧。


12.PC2收到数据帧拆开最外面的帧头,一看目的MAC是自己,他继续拆IP包头


15、PC2拆开IP包头,发现目标IP和自己匹配,则继续拆封装,发现IP里面协议号是6,代表是TCP的数据,将数据向上层传输。


16、传输层(TCP)接收来自下层的Https请求TCP报文,则去掉TCP报头,向应用层传送。


17、应用层收到Https请求后,发送一个Https回应报文给PC1


回来的时候同理,这里就不再赘述了。


这就是数据在整体的数据中的传递,欢迎关注我,最新的技术文章更新。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“完成端口如何发送数据”边界阅读