[转]车神之于网络地址2

原始文章已经找不到了,这是在百度快照上找的。


2.2 不同网段通信

小明想知道小丽的电脑有没有联网,于是Ping她电脑的IP地址,即Ping 10.1.2.2,接下来看看小明电脑都做了些什么有趣的事。

2.2.1 通信过程

第一步:判断不同网段

小明电脑使用自己3个字节(255.255.255)的掩码,去遮掩10.1.2.2,被遮挡住的三个字节为10.1.2,学习完2.1节,同学们应该知道10.1.2为小丽的网段号,而自己的网段号为10.1.1,所以两者的网段号不同。

第二步:查找路由表

网络号相同的主机,可以使用ARP广播先发现对方的网卡硬件地址,正如2.1演示的那样;但网络号不同的主机则不能这样来通信了,需要查找路由表,在路由表里来比对(匹配)10.1.2,一旦匹配到路由条目,则把IP包发给这条路由条目的下一跳,有同学肯定还是很迷惑,咱们先来看看路由表条目是啥样?

网络号 掩码 下一跳 接口 Metric 
127.0.0.1 255.0.0.0 127.0.0.1 lo1 1
10.1.1.2 255.255.255.255 10.1.1.2 Eth0 1
10.1.1.0 255.255.255.0 广播 Eth0 1
0.0.0.0 0.0.0.0 10.1.1.1 Eth0 255

以上一共4条路由,同学莫急,车教练深深地知道你们学习的难处在哪,我会慢慢给你一一解释这些路由条目、字段的含义。

按照我教授给同学们的方法,以上4条路由它们分别代表的网络号分别是:

127
10.1.1.2
10.1.1
0

用小丽的网络号10.1.2与以上4条按照从上到下匹配,很显然前三条都没有匹配到,那最后一条呢?最后一条属于万能路由,其含义不言自明,通俗地说,如果同学们在外漂泊四处碰壁,家是最后的、温暖的归宿,这个网段号0就是所有IP包最后可以成功匹配的归宿。

再看看第四条路由下一跳是谁?是10.1.1.1,这个地址似曾相识,2.1节里提到过,它是小明电脑的缺省网关(Default Gateway),有时也被称为默认网关,有时也被称为最后的归宿(Last Resort),那只要把Ping包发给网关10.1.1.1即可,但是如何知道网关硬件接口的MAC呢?

第三步:发现网关硬件接口MAC

小明IP:10.1.1.2
网关IP:10.1.1.1

按照2.1节的方法,它们的网段都是10.1.1,所以属于同一个网段,可以使用ARP广播发现彼此的MAC,假设网关的MAC为MACg,ARP进程缓存10.1.1.1 / MACg的映射关系,以备下次使用。

第四步:Ping包发给网关10.1.1.1
小明电脑将Ping包发给网关10.1.1.1,具体怎么体现呢?这个Ping包有以太网头部,其中有一个目的MAC地址,只要目的MAC填写成MACg就好,这个Ping包就会发给网关10.1.1.1。

第五步:网关硬件接口接收以太网帧
网关硬件接口接收到此以太网帧,帧的目的MAC = MACg,原来是自己的,接收并放在缓冲区,并通知IP层(进程)来取走。

那放在缓冲区是以太网帧(Frame)还是IP包(Packet)?是IP包,即没有以太网帧头的纯三层报文。

第六步:网关路由转发
网关IP层从网卡取来(复制)了IP包,接着要进行路由匹配查找,和第二步一样,采用路由最长匹配原则,就是以IP包的目的IP地址,即这里的小丽的IP = 10.1.2.2,很显然匹配到第二条路由,到达下一跳的方式是广播,于是发ARP广播,发现小丽的MAC地址,并将IP包添加以太网帧头,其中目的MAC为小丽电脑的MAC。

网络号 掩码 下一跳 接口 Metric 
10.1.1.0 255.255.255.0 广播 Eth0 1
10.1.2.0 255.255.255.0 广播 Eth1 1

第七步:Ping包被弹回

小丽电脑接收到Ping 包,包的内容原封不动,依照第一步到第六步的步骤将Ping回包发送回小明的电脑。

第八步:Ping 程序打印输出

小明依据Ping包、回应包的序列号(Sequence Number)一一对应起来,然后分别计算出RTT时间统计,一般都是五个Ping包,这样就会有RTT最大、最小、平均值,如果哪个序列号的Ping 包在2秒超时(Timeout)没有接收到回应包,则认为Ping 包丢失。


此外,还有几个问题需要澄清:

2.2.2 什么是路由查找最长匹配原则?

大家还记得网络掩码哇?
(你还记得大明湖畔的夏雨荷吗?琼瑶体,车老师深受台湾言情剧毒害!),网络掩码最长可以和IP地址一样长,32bit位或4个字节长,比如小明的DNS服务器10.10.10.10/32掩码就是32位,其网段号为10.10.10.10,主机号没有,那么这个网段就这一台主机,所以有没有主机号就无足轻重了。

网络掩码最短是多少?0位,比如上文的缺省路由0.0.0.0/0,这条路由代表所有IP网段。

所以对应的网段号长度介于0-32位,按照最长匹配原则,主机会优先使用32位长的路由,来匹配IP包中的目的IP地址,比如小丽的IP = 10.1.2.2,小明电脑一共4条路由,网段号按照从长到短排列,分别为 32、24、8、0

10.1.1.2
10.1.1
127
0

那我们按照由长到短来一一匹配

2.2.2.1 尝试匹配网段10.1.1.2

小丽IP= 10.1.2.2,使用32位掩码,得到网段号10.1.2.2,很显然10.1.2.2 != 10.1.1.2,匹配失败,进入下一步

2.2.2.2 尝试匹配网段10.1.1
小丽IP= 10.1.2.2,使用24位掩码,得到网段号10.1.2,很显然10.1.2 != 10.1.1,匹配失败,进入下一步

2.2.2.3 尝试匹配网段127
小丽IP= 10.1.2.2,使用8位掩码,得到网段号10,很显然10 != 127,匹配失败,进入下一步

2.2.2.4 无需尝试,自动匹配0.0.0.0/0
既然自动匹配成功,只需要将IP包发给这条缺省路由条目所指示的下一跳,即10.1.1.1即可,小明电脑10.1.1.2与10.1.1.1在同一个网段,

网络号 掩码 下一跳 接口 Metric 
0.0.0.0 0.0.0.0 10.1.1.1 Eth0 255

所以接下来就演变成同一网段的通信,这个2.1章节已经讲述过,有不清晰的同学再复习一遍。

2.2.3 通俗地解释缺省网关
这里多花一点笔墨来形象解释一下缺省网关(Default Gateway),一个为期一个月的中学夏令营活动结束了,夏令营位于市郊青浦区,耐不住性子的家长纷纷驾车前往夏令营接孩子回家,于是同学们各找各妈,各回各家,小明、小美、小丽同学很幸运,很快就找到了自己家的车子,坐车离去;而更多的同学家长没有来接,老师用高音喇叭说:凡是没有家长接的同学,请坐巴士回市区。那么这里的巴士就是剩下同学的最后的选择(Last Resort),也可以说是同学们的缺省(默认)网关。

那缺省网关在路由表里如何呈现呢?就如下文一样呈现就好:

网络号 掩码 下一跳 接口 Metric 
0.0.0.0 0.0.0.0 10.1.1.1 Eth0 255

这条缺省路由潜台词是:如果没有更好的路由选择,就选择我吧,我会使用物理接口Eth0发给下一跳10.1.1.1(缺省网关),我更接近目的地。

2.2.4 通俗解释路由转发
不知道有同学玩过多米诺骨牌的吗?



比如第一张牌,能够找到(砸倒)自己的下一跳,即第二张牌,第二张牌能够找到自己的下一跳,即第三张牌,以此简单原理,无论中间有多少个骨牌,只要可以找到自己的下一跳,因为 游戏规则是:下一跳更靠近终点! 起点骨牌就能与终点骨牌沟通起来。


其实路由转发的原理和多米诺骨牌游戏何其相似,严格遵循一个规则:下一跳更靠近目的地,只要把IP包发给下一跳,意味着IP包最终可以到达终点,至于如何与下一跳通信,那仅仅是数据链路层(二层)的事,对于以太网来说,就是ARP解析出下一跳的MAC地址,还有吗?还有!接着把IP包加上以太网帧头,就发给下一跳了,还有吗?没有了!

2.2.5 通俗解释以太网帧、IP包
比如一男子,在家穿上围裙进厨房,叫家庭妇男;穿上警察制服,叫警察;而穿上运动服驰聘于绿茵场,叫足球运动员。

同样是一男子,在不同场合穿不同的衣服,担任不同的角色,起不同的名字,是为了表达清晰干练与画面感,而如果不使用呢?来试试看什么效果:

一戴着大檐帽,黑色制服的男子,请问这个人是干嘛的?

城管?不对!保安,不对!法官,也不对!别猜了,是人民警察!

同理,在业界为了表达准确性,使用约定俗成的名字,会大大减少不必要的误会,比如数据链路层(二层),一般称为帧(Frame),比如以太帧。

ATM (Asynchronous Transport Mode)一般称为信元 (Cell )。ATM是欧洲人发明的,IP是美国人发明的,两者竞争网络层的老大,一山不能容二虎,除非一公与一母,最后IP胜出,成为当仁不让的网络层霸主。

ATM只好委身于IP的淫威之下,充当数据链路层协议,由于ATM设计之初并不是为了服务IP,而是直接服务于应用层,所以需要将IP包先切割,分片成48个字节的数据,再添加5个字节的ATM头,这样就是53字节ATM信元,传输到ATM网络,ATM信元像小鱼一样自由自在在ATM网络里穿梭,但一旦进入IP网络的边界,则需要将ATM信元,去掉ATM头,再将数据重组成一个完整的IP包。

扯远了以后再谈,先谈主题,那么网络层(三层)则使用包(Packet)的概念,比如IP包。

传输层有TCP、UDP,TCP称为分段(Segment),而UDP则称为数据报(Datagram)。

应用层(七层)则一律使用应用层数据(Data)。

但往往也没有那么严格,经常有人用TCP包、UDP包,也不会引起混淆,但还是希望各位同学能够专业化、规范化使用名称,养成一个良好习惯。

Application Data

TCP Segment / UDP Datagram

IP Packet

Ethernet Frame

以上是计算机网络书面语的规范格式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值