简单的跨路由通信分析和理解

linux route 通信

简单的拓扑模型:
A —–1 R1 2—–3 R2 4——5 R3 6——-B

问题:

如果A 通过浏览器访问B机器上网站的页面
 firefox http://B

1、
判断A和B是否在同一网段
判断方法:
a、A先和自己的子网掩码进行与运算,算出自己的网络ID,
b、然后把B机器上的IP与自己的子网掩码进行与运算,算出B机器所在的网络ID
c、两个网络ID比较,如果一样就在同一网段,如果不一样,就不在同一网段。
如果A,B不在同网段,A就没有办法通过ARP协议把B机器的mac地址解析出来,

2、
因此A机器尝试把数据包发往R1路由器的网关

在A的机器上事先肯定配置了网关(默认网关)(gateway : R1 IP1)
A机器虽然知道R1的gateway的地址,但是不知道IP1的mac1地址
ARP IP1—> mac
A机器和R1路由器IP1在同一网段,可以使用ARP广播获取到IP1的mac1地址

A ARP cache:(IP1 MAC1)
得到 R1 IP1的mac1地址,A机器会把IP1和mac1的对应关系保存到ARP表中,下一通信直接查询ARP就可以了,不需要再次发送ARP请求了

3、
我们现在已经得到目标地址和源地址,可以填写数据包信息

数据链路层
frame:DEST MAC1, SOUCRE MACA,

internet层
IP:dest IP:IPB , source IP:IPA

传输层
TCP: dest port:80 , source port: xxx(random随机)

4、
数据包的信息填写完整后,就可以根据数据的DEST MAC1把数据包发送到R1上了

5、
R1收数据包,会根据包中的目标地址,查询自己的路由表
数据包要到达 netB网段
netB R1IP2 R2IP3
要到达netB 网络,数据包要从R1的IP2接口出去,要到达R2的IP3接口
因此R1要尝试把数据包发送到R2

ARP R2IP3 — MAC3

数据包头信息重新封装
frame:DEST MAC3, SOUCRE MAC2,
ip/TCP包头不变

6、
R2收到数据包会根据包中的目标地址,查询自己的路由表
数据包要到达 netB网段
netB R2IP4 R3IP5

ARP R2IP5 — MAC5

数据包头信息重新封装
frame:DEST MAC5, SOUCRE MAC4,
ip/TCP包头不变

7、
数据包到达R3
R3收到数据包会根据包中的目标地址,查询自己的路由表
发现R3和目标地址是直连
netB R3IP6 xxx
ARP IPB —> MACB

frame :dest macB ,source mac6
ip: dest IPB, source IPA
tcp: dest port22, source port xxxx

8、
数据包到达(一次通信完成)

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97604

(0)
linux_testlinux_test
上一篇 2018-05-06
下一篇 2018-05-06

相关推荐

  • 创建空文件和刷新时间

    复制文件和目录cp:    

    Linux笔记 2018-04-01
  • 关于grep 与 正则表达式的那些事

    首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同! 正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显 得它们强大grep (缩写来自Globally search a Regular Expression and…

    Linux笔记 2018-04-08
  • grep命令以及正则表达式

    grep,正则表达式

    Linux笔记 2018-04-08
  • Linux的发行版,不同发行版之间的联系与区别

    Linux 主要作为Linux发行版(通常被称为”distro”)的一部分而使用。这些发行版的编写者包括个人、松散的小团体、商业机构、志愿者组织。通常而言,他们至少包括了其他的系统软件和应用软件,以及一个用来简化系统初始安装的安装工具,和让软件安装升级的集成管理器。   而一个典型的Linux发行版往往会包括:Linux内核…

    Linux笔记 2018-05-13
  • 如何删除大文件并立马释放磁盘空间

    我们先用df  -h发现磁盘空间快满了,图1 我们马上有rm -f /boot/bigfile删除大文件,发现磁盘并没有释放空间 图2 那我们用这个命令ls /boot来看看到底有没有删除  图3 发现确实已经删掉了,那怎么办了,我这里有个简单明了的方法,我们用大于号> /boot/bigfile把文件清空然后再用rm -f /boot/bigfile…

    2018-03-31
  • 编译安装软件

    编译安装httpd软件 1先配置yum源 准备工作:把所有yum源改成本地光盘 [root@centos7 etc]#find *yum*(查找yum配置目录) 1.[root@centos6 ~]#df .[root@centos6 ~]#cd /misc/cd/ (神奇文件自动挂载)光盘 [root@centos7 yum.repos.d]#ls(说明还…

    Linux笔记 2018-04-22