数据转发过程
2013-07-23 17:45
211 查看
拓扑图:
192.168.2.1/24 [A2] 192.168.2.2/24 [B2]
R1(FA0/0)--------------------------------------------------(FA0/0)R2
| (FA0/3) 192.168.1.254/24 [A1] | (FA0/3) 192.168.3.254/24 [B1]
| |
|(FA0/12) |(FA0/12)
SW1 SW2
(FA0/1)/ \ (FA0/2) (FA0/1) / \ (FA0/2)
/ \ / \
PC1 PC2 PC3 PC4
IP 192.168.1.1/24 192.168.1.2/24 192.168.3.1/24 192.168.3.2/24
网关 192.168.1.254/24 192.168.1.254/24 192.168.3.254/24 192.168.3.254/24
MAC地址 C1 C2 C3 C4
TCP/IP协议栈:PDU
应用层
传输层段
网络层包
数据链路层帧
物理层比特流
在同一网段的通信:
PC1与PC2通信:
1,信息产生于应用层,然后会逐层的向下封装.假设在传输层采用TCP协议封装,到了网络层则用IP协议封装.
2,在网络层进行IP封装时,指定原IP地址(192.168.1.1)和目的IP地址(192.168.1.2),然后继续向下进行数据链路层封装
3,在数据链路层封装时,要指定原MAC地址(C1)和目的MAC地址(???),但目的MAC地址未知,所以要获取对方的MAC地址(用ARP协议来实现)
4,在用ARP获取MAC地址时,PC1首先要判断PC2是否与自己在同一个网段,如果在同一个网段,则直接求PC2的MAC地址,如果不在同一个网段,则请求网关的MAC地址(将数据给网关去处理)
5,获取了192.168.1.2(PC2)的MAC地址后,接着向下封装数据,最终成为比特流(物理信号)发送出去.
6,SW1收到物理信号(比特流)后,将其进行解封装,组成数据帧,查看数据帧的MAC地址,将原MAC地址进行学习,然后依据目的MAC地址进行转发/过滤处理(即再次将其封装成比特流).
7,当SW1把数据转发出去,PC2收到物理信号.PC2将物理信号进行转换并组成数据帧,查看目的MAC地址,若目的MAC地址是给自己的,则继续将数据帧进行解封装,交给网络层来查看目的IP地址是否给自己的,若是给自己的,则依次进行解封装,最终交给上层处理,若不是给自己的,则将数据丢弃.
在不同网段间的通信(前提是路由表已经完善):
PC1与PC3通信:
1,信息产生于应用层,然后会逐层的向下封装.假设在传输层采用TCP协议封装,到了网络层则用IP协议封装.
2,在网络层进行IP封装时,指定原IP地址(192.168.1.1)和目的IP地址(192.168.3.1),然后继续向下进行数据链路层封装
3,在数据链路层封装时,要指定原MAC地址(C1)和目的MAC地址(???),但目的MAC地址未知,所以要获取对方的MAC地址(用ARP协议来实现)
4,在用ARP获取MAC地址时,PC1首先要判断PC2是否与自己在同一个网段,如果在同一个网段,则直接求PC2的MAC地址,如果不在同一个网段,则请求网关的MAC地址(将数据给网关去处理)
5,获取了192.168.1.254(网关)的MAC地址后,接着向下封装数据,最终成为比特流(物理信号)发送出去.
6,SW1收到物理信号(比特流)后,将其进行解封装,组成数据帧,查看数据帧的MAC地址,将原MAC地址进行学习,然后依据目的MAC地址进行转发/过滤处理(即再次将其封装成比特流).
7,当SW1把数据转发出去,R1收到物理信号.R1将物理信号进行转换并组成数据帧,查看目的MAC地址,若目的MAC地址是给自己的,则继续将数据帧进行解封装,交给网络层来查看目的IP地址是否给自己的,若是给自己的,则依次进行解封装,最终交给上层处理,若不是给自己的,则查看路由表,看路由表中是否有到达目的地址的条目,若有,则进行转发;若没有,则将数据包丢弃.
8,当R1查看到目的IP不是自己后,查看路由表,发现通过自己的FA0/0接口可以到达目标,因此,路由器会将此数据再次进行封装(进行二层封装).
9,因为R1知道自己的FA0/0接口可以到达目的地,因此在进行二层封装时,原MAC地址会采用FA0/0接口的MAC地址(A2),目的MAC地址(???)[同样的道理,发现目的地址与自己所有的接口的地址都不处于同一网段,所以会将数据交给能够到达目的地的那一个下一跳地址(网关)去进行处理,即192.168.2.2]
10,R1通过路由表知道要到达192.168.3.1必须要将数据交给192.168.2.2进行处理,因此,发送ARP请求192.168.2.2的MAC地址.得知其MAC地址(B2)后,继续进行封装,最终以物理信号从FA0/0接口将数据发送出去.
11,R2在FA0/0接口收到信号后,将其转换并组成数据帧,查看目的MAC地址是自己,则继续解封装,在网络层查看目的IP地址并进行相应的处理[同理],当其发现目的网络是与其FA0/3接口相连时,就直接发送ARP请求,求出192.168.3.1的MAC地址(C3).
12,得知192.168.3.1的MAC地址后,将数据进行封装,源MAC地址为(B1),目的MAC地址为(C3),最终以物理信号从FA0/3接口发送出去.
13,SW2收到物理信号后将其转换并组成数据帧,查看MAC地址,学习源MAC地址,并依据目的MAC地址进行转发/过滤(封装并发送).
14,PC3的接口收到物理信号后,将其转换并组成数据帧后,查看目的MAC地址,若是给自己的,则继续解封装并查看目的IP地址,最终将数据交给应用层.
192.168.2.1/24 [A2] 192.168.2.2/24 [B2]
R1(FA0/0)--------------------------------------------------(FA0/0)R2
| (FA0/3) 192.168.1.254/24 [A1] | (FA0/3) 192.168.3.254/24 [B1]
| |
|(FA0/12) |(FA0/12)
SW1 SW2
(FA0/1)/ \ (FA0/2) (FA0/1) / \ (FA0/2)
/ \ / \
PC1 PC2 PC3 PC4
IP 192.168.1.1/24 192.168.1.2/24 192.168.3.1/24 192.168.3.2/24
网关 192.168.1.254/24 192.168.1.254/24 192.168.3.254/24 192.168.3.254/24
MAC地址 C1 C2 C3 C4
TCP/IP协议栈:PDU
应用层
传输层段
网络层包
数据链路层帧
物理层比特流
在同一网段的通信:
PC1与PC2通信:
1,信息产生于应用层,然后会逐层的向下封装.假设在传输层采用TCP协议封装,到了网络层则用IP协议封装.
2,在网络层进行IP封装时,指定原IP地址(192.168.1.1)和目的IP地址(192.168.1.2),然后继续向下进行数据链路层封装
3,在数据链路层封装时,要指定原MAC地址(C1)和目的MAC地址(???),但目的MAC地址未知,所以要获取对方的MAC地址(用ARP协议来实现)
4,在用ARP获取MAC地址时,PC1首先要判断PC2是否与自己在同一个网段,如果在同一个网段,则直接求PC2的MAC地址,如果不在同一个网段,则请求网关的MAC地址(将数据给网关去处理)
5,获取了192.168.1.2(PC2)的MAC地址后,接着向下封装数据,最终成为比特流(物理信号)发送出去.
6,SW1收到物理信号(比特流)后,将其进行解封装,组成数据帧,查看数据帧的MAC地址,将原MAC地址进行学习,然后依据目的MAC地址进行转发/过滤处理(即再次将其封装成比特流).
7,当SW1把数据转发出去,PC2收到物理信号.PC2将物理信号进行转换并组成数据帧,查看目的MAC地址,若目的MAC地址是给自己的,则继续将数据帧进行解封装,交给网络层来查看目的IP地址是否给自己的,若是给自己的,则依次进行解封装,最终交给上层处理,若不是给自己的,则将数据丢弃.
在不同网段间的通信(前提是路由表已经完善):
PC1与PC3通信:
1,信息产生于应用层,然后会逐层的向下封装.假设在传输层采用TCP协议封装,到了网络层则用IP协议封装.
2,在网络层进行IP封装时,指定原IP地址(192.168.1.1)和目的IP地址(192.168.3.1),然后继续向下进行数据链路层封装
3,在数据链路层封装时,要指定原MAC地址(C1)和目的MAC地址(???),但目的MAC地址未知,所以要获取对方的MAC地址(用ARP协议来实现)
4,在用ARP获取MAC地址时,PC1首先要判断PC2是否与自己在同一个网段,如果在同一个网段,则直接求PC2的MAC地址,如果不在同一个网段,则请求网关的MAC地址(将数据给网关去处理)
5,获取了192.168.1.254(网关)的MAC地址后,接着向下封装数据,最终成为比特流(物理信号)发送出去.
6,SW1收到物理信号(比特流)后,将其进行解封装,组成数据帧,查看数据帧的MAC地址,将原MAC地址进行学习,然后依据目的MAC地址进行转发/过滤处理(即再次将其封装成比特流).
7,当SW1把数据转发出去,R1收到物理信号.R1将物理信号进行转换并组成数据帧,查看目的MAC地址,若目的MAC地址是给自己的,则继续将数据帧进行解封装,交给网络层来查看目的IP地址是否给自己的,若是给自己的,则依次进行解封装,最终交给上层处理,若不是给自己的,则查看路由表,看路由表中是否有到达目的地址的条目,若有,则进行转发;若没有,则将数据包丢弃.
8,当R1查看到目的IP不是自己后,查看路由表,发现通过自己的FA0/0接口可以到达目标,因此,路由器会将此数据再次进行封装(进行二层封装).
9,因为R1知道自己的FA0/0接口可以到达目的地,因此在进行二层封装时,原MAC地址会采用FA0/0接口的MAC地址(A2),目的MAC地址(???)[同样的道理,发现目的地址与自己所有的接口的地址都不处于同一网段,所以会将数据交给能够到达目的地的那一个下一跳地址(网关)去进行处理,即192.168.2.2]
10,R1通过路由表知道要到达192.168.3.1必须要将数据交给192.168.2.2进行处理,因此,发送ARP请求192.168.2.2的MAC地址.得知其MAC地址(B2)后,继续进行封装,最终以物理信号从FA0/0接口将数据发送出去.
11,R2在FA0/0接口收到信号后,将其转换并组成数据帧,查看目的MAC地址是自己,则继续解封装,在网络层查看目的IP地址并进行相应的处理[同理],当其发现目的网络是与其FA0/3接口相连时,就直接发送ARP请求,求出192.168.3.1的MAC地址(C3).
12,得知192.168.3.1的MAC地址后,将数据进行封装,源MAC地址为(B1),目的MAC地址为(C3),最终以物理信号从FA0/3接口发送出去.
13,SW2收到物理信号后将其转换并组成数据帧,查看MAC地址,学习源MAC地址,并依据目的MAC地址进行转发/过滤(封装并发送).
14,PC3的接口收到物理信号后,将其转换并组成数据帧后,查看目的MAC地址,若是给自己的,则继续解封装并查看目的IP地址,最终将数据交给应用层.
相关文章推荐
- 测试keepalived在DR模式下VIP转发数据到RIP的过程
- 数据转发过程
- nginx的upstream模块数据转发过程及流量控制分析
- 数据转发过程
- 路由器数据转发过程
- 8.HCNA-HNTD——数据转发过程
- 转发Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)
- Cesium之3D拉伸显示行政区含GeoJSON数据生成过程GDAL的ogr2ogr
- C++愤恨者札记1——类对象作为函数参数的数据传递过程
- 内核阅读之浅析Linux2.6.34内核桥接数据转发(三)
- 【清晰明了】A局域网主机向B局域网主机传输数据的过程
- 对路由器转发报文过程的认识
- infortrend ESDS RAID6 数据恢复过程
- 关于Ext3.0中按条件查询并重新加载Grid中的数据的实现过程及store.load的分析
- 把DBGRID数据直接导入EXCEL中的过程,不涉及ADOQUERY,DATAsource
- hibernate学习过程问题(1)--通过代码保存数据时,数据库始终只有一条数据
- Entity Framework 学习笔记(二)之数据模型 Model 使用过程
- linux reiserfs文件系统损坏后的数据恢复过程记录
- mysql数据通过fluent同步到阿里云datahub填坑过程
- 表单在提交过程中的post数据丢失的情况