博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据包的转发流程
阅读量:7048 次
发布时间:2019-06-28

本文共 873 字,大约阅读时间需要 2 分钟。

 

环境是三层交换机有两个网段,10.0.0.1/24和192.168.0.1/24,pc1是10段的,pc2是192段的。pc1要与pc2通信。过程如下

1.pc1将要与pc2通信,首先根据网卡的ip地址与掩码算出pc2是否与pc1是同网段,如果是同网段直接二层转发,如果不是将跨网段转发
2.pc1算出pc2和自己不是同网段,所以要将数据包发送到网关由网关进行三层寻址转发。
3.pc1到网关为二层转发,也就是数据帧转发,数据帧转发需要知道对方mac地址,首先pc1会读电脑的arp缓存,看是否有网关ip与mac地址的对应关系,如果有将直接封装帧转发;如果没有将使用arp协议也就是广播,携带自己的ip地址与mac地址,目的地址为网关ip,mac地址为ffff-ffff-ffff。网关收到此arp广播后,将回复pc1自己的mac地址,数据包为源网关ip和mac地址目的为pc1ip和mac地址。
4.pc1收到数据包后会将此ip和mac地址写入到电脑的arp缓存表里,并直接封装数据包,三层ip头为源pc1-ip,目的为pc2-ip,二层帧格式为源pc1-mac,目的为网关mac地址(记住此包头)。
5.网关将收到pc1发来的数据包,进行拆包,根据其目的ip地址进行寻址(路由表),找到对应的路径(也就是192段vlan)。
6.三层交换机会根据其目的ip地址进行本机的arp缓存查找,如果查找到ip和mac地址的对应关系将直接封装转发,如果没有交换机将发送arp广播包获取目的ip地址的mac地址(广播包将只发送192段vlan,其他vlan不广播)。
7.三层交换机得知pc2-mac地址后将转发数据,三层包头为源pc1-ip,目的为pc2-i,二层帧包头为源192段网关mac,目的为pc2-mac。
8.pc2将收到三层交换发来的数据包,进行拆封即可获取数据,并回复pc1过程同上。
三层交换机等同于路由器。也就是说源ip和目的ip在数据包里一直不变(不经过nat的情况),mac地址将时刻改变。广播只存在二层。三层情况下是路由寻址。

转载地址:http://xcdol.baihongyu.com/

你可能感兴趣的文章
ORA-01172、ORA-01151错误处理
查看>>
pl/sql 找到数组中公有的字符
查看>>
Spring MVC +MyBatis +MySQL 登录查询Demo 解决了mybatis异常【转】
查看>>
Junk Dimension
查看>>
win7下安装mysql-connector遇到的问题
查看>>
OSPF复习1
查看>>
恢复oracle数据库误更新
查看>>
ucenter整合心的
查看>>
回归测试
查看>>
eclipse+maven远程(自动)部署web项目到tomcat
查看>>
logrotate 介绍及使用
查看>>
chromium buildbot tree
查看>>
js禁止用户打开浏览器控制台或右键菜单查看源码
查看>>
Aspose.Words组件介绍及使用—基本介绍与DOM概述
查看>>
Bash Shell 中的特殊字符
查看>>
nginx proxy_set_header设置、自定义header
查看>>
Linux进程管理
查看>>
分离编译
查看>>
AngularJS 1.X 重点知识详解一
查看>>
java用double和float进行小数计算精度不准确
查看>>