当前位置: www.89677.com > 互联网 > 正文

IP协议栈简介,有没有觉得前两天的网慢了

时间:2019-11-17 04:34来源:互联网
北京时间2014年8月12日下午4点钟开始,全世界的网络突然都变慢了一点点。 互联网由一整套协议构成,自上而下而下可以分为如下4层: IP协议它不能保证ip数据报能成功地到达目的地

北京时间2014年8月12日下午4点钟开始,全世界的网络突然都变慢了一点点。

互联网由一整套协议构成,自上而下而下可以分为如下4层:

IP协议它不能保证ip数据报能成功地到达目的地,IP协议仅提供最好的传输服务。

EIGRP即为增强内部网关路由协议,也可以称之为加强型内部网关路由协议。EIGRP结合了链路状态和距离矢量型路由选择协议的Cisco专用协议,采用弥散修正算法(DUAL)来实现快速收敛,可以不发送定期的路由更新信息以减少带宽的占用,同时在EIGRP中有三张表:邻居关系表(以建立的邻居关系)、拓扑表(网络中每个路由器从每个邻居接收到的路由通靠)、路由表。

不幸的是,接下来还可能又会慢下去。并且,这一回错的真的不是你,是世界。

  • Application
    应用层协议封装了网络通信的数据包。
  • TCP
    TCP协议用于保证数据通信的完整性和可靠性,防止丢包。
  • IP
    Internet Protocol,规定了多个局域网如何通信。
  • Ethernet
    以太网协议,规定了电子信号如何组成数据包(packet),解决了子网内部(即局域网)的点对点通行。

 

EIGRP选择一条主路由(最佳路由)和一条备份路由放在topology table,它支持几种路由类型:内部,外部(非EIGRP)和汇总路由,EIGRP使用混合度量值。

错在哪呢?路由规则太多,溢出了。

IP协议定义了一套自己的地址规则,称为IP地址。它实现了路由功能,允许某个局域网的A主机向另一个局域网的B主机发送信息。

错误处理

EIGRP主要功能

不够用的地址

你很可能见过譬如192.168.1.1这样的数字串,这样的数字就是所谓的“IP地址”。这是你平常访问的那些网站的“真实地址”,当你输入www.guokr.com(这叫“域名”)的时候,网络会把它转换成真正的地址111.13.57.142,然后才能找到这个网站在哪里。如果这个转换系统(也就是所谓的“DNS”)出了问题,那网络就要出问题——不过不是这次这种问题,打住。

常见的IP地址里的数字是有规定的:四个数字,每个可以从0到255,这被称为“IPv4”(互联网协议第四版)。那么一共就会有2^32次方个不同的地址,也就是将近43亿。

……好像不是很多的样子。都不够一人分一个呢。

而且这43亿地址还有不少是保留的,比如所有以9开头的原则上都是IBM的,12开头的都是AT&T的,17开头的则是苹果的,18开头的归麻省理工……没办法,谁叫人家抢得早。有些厚道的组织,比如斯坦福,本来占据了所有36开头的,现在正把多余的地址拿出来回馈社会,但人并不都这么好心啊。

图片 12012年4月一次IPv4地址普查显示的使用情况,黑色代表没有数据,其他颜色代表使用率。由于调查方法问题,实际占用率肯定会比图中看起来更高。图片来源:Internet Census 2012 

所以那帮技术人员实在太目光短浅了?这还真不是,IPv4协议诞生于1981年,早在80年代末他们就预料到了这个不够用的问题,可是新一代协议IPv6——可以提供3.4×10^38个地址——直到1998年才出台。

技术人员终于克服了拖延症,接下来?当然是剩下所有人开始犯拖延症。IPv6到现在整整十六年过去了,互联网上使用IPv6的人数嘛——大概4%吧。(该数值基于访问google的人统计,考虑到中国这个神奇国度的存在,真实数字绝对更低。)

图片 2The ISP Column发布的IPv6使用用户占各国用户的比例图(2013年6月)。别被颜色骗了,像法国那么绿,其实不过5.46%。好玩的是,用户比例最高的竟然是罗马尼亚,10.84%。

IP地址包含网络号和主机号,IPv4协议规定的IP地址由32位二进制数组成,每8位一段,用十进制表示每段地址,可以表示的范围为0.0.0.0~255.255.255.255。IPv6协议规定的IP地址由128位二进制数组成,可以表示更多的网络与主机,目前IPv4能够表示的IP地址即将使用殆尽,不久的将来会被IPv6取代。

  • 丢弃该数据报
  • 发送ICMP消息给数据源,通知丢弃了该数据报
  • 任何可靠性必须由上层来提供(如TCP)

1、  通过协议相关模块支持IP,IPX,AppleTalk。

耍花招的后果

为了推迟IPv4挤爆的同时又不去辛辛苦苦换新协议,我们在抓紧时间利用每一点残存的IP空间碎片。以前大手大脚一整块几万地址分给一个组织的好日子一去不复返了,就连一小撮256个地址都要寸土必争。

但是这对路由器来说就辛苦了。路由器依靠一个名为“路由表”的东西来快速找到方向,每一个机构拿到一段IP之后都会希望在路由表里加一句规则来加快自己的访问速度。但是每一条规则都要占据同样大小的空间,所以网上的地址越碎,需要的路由表就越大。

路由表是个很重要的东西,所以路由器会专门留出一块高速存储器来存它。譬如某款路由器足够存一百万个条目,想来应该是足够了吧!而且眼看IPv6必将征服市场,我留一半(512k)给v4,另一半给v6,怎么说都没问题吧!事实上大部分路由器生产商都想当然认为512k足够用了,都给v4留了这么多,算是行业标准。

不幸的是,对于互联网碎片化的程度,他们显然(又)低估了。

多年的增长已经让路由表突破了50万大关,而在8月12日,美国通信公司Verizon又一口气往v4路由表里加了15000个条目,使总数抵达了约515000个,超过了上限(相比之下,v6还只有可怜的2万个条目)。这些多出来的信息必须存在更慢的普通存储器里,导致了速度变慢甚至局部网络不稳定。Verizon很快发现了这个问题并把多出来的条目削了回去,但是余波至少持续了数小时。这个事件就是所谓的“512k”事件,也许就是你那天觉得网络慢了的元凶。

但这不是问题的结束,只是开始。怎么说路由表都是肯定要自然增长的,没有这些公司乱搞也早晚会自己超过这个数字。而这些问题都出在路由器这个实打实的东西上,换路由器可是要花钱的。

诚然,我们可以继续拆东墙补西墙,来一次广泛的固件升级,把更多的快速存储器留给v4;而代价可想而知,就是进一步削减了留给v6的空间。要是早用v6取代v4,IP地址够用的话,现在就不会出现地址碎片化、路由表过大的问题了嘛!不过考虑到ie6顽强生存了13年到现在没有消失,连百利无一害的纯软件更新都做不到,好像也不应该对人类抱太大希望才对。

事实上,想想之前人们还以为内存640k就足够,两位数字存储年份就足够,32位储存秒数就足够,现在又一个想当然的上限被突破带来了麻烦,简直就是理所应当的事情嘛。(编辑:Ent)

图片 3当然,早晚有一天IPv6也会用光,那时候嘛……

本文写作过程中得到了Philip_Tzou的大力帮助,特此致谢。

IPv4地址分类

  • A类:
第一段为网络号:0000 0000 - 01111111(0-127),后三段为主机号
网络数:126(0.0.0.0表示所有网络,127.x.x.x表示本地回环地址)
各网络主机数:2^24-2
默认子网掩码:255.0.0.0,也可表示为:/8
#子网掩码用于与IP地址按位进行“与”运算,计算其网络地址
私网地址:10.0.0.0/255.0.0.0
  • B类:
前两段为网络号:10 00 0000 - 10 11 1111(128-191),后两段为主机号
网络数:2^14
各网络主机数:2^16-2
默认子网掩码:255.255.0.0,也可以表示为:/16
私网地址:172.16.0.0-172.31.0.0  
  • C类:
前三段为网络号:110 0 0000 - 110 1 1111(192-223),最后一段为主机号
网络数:2^21
各网络主机数:2^8-2
默认子网掩码:255.255.255.0,  /24
  • D类:组播
1110 0000 - 1110 1111:224-239
  • E类:科研
1111 0000 - 1111 1111:240-255

 

2、  无类。

路由

路由是把数据从源地址经过网络传输到目标地址的过程,它包括2个主要动作:选择路径、数据传输。

路由器(Router)是一种负责寻径的网络设备,它通过路由表为数据传输选择最佳路径。路由表包含网络地址以及各地址之间距离的清单,路由器使用最少时间算法或最优路径算法来调整信息传递的路径。

路由表可以静态指定,也可以动态学习(基于rip2, ospf等协议)。路由表中的路由条目描述了目标地址、下一跳(nexthop)。目标地址可以分为主机路由、网络路由、默认路由(0.0.0.0/0.0.0.0),主机路由表示局域网中的主机,网络路由表示不同的局域网。

IP首部

3、  支持VLSM和CIDR。

网关

网关(Gateway)就是一个网络连接到另一个网络的“关口”,它负责不同网络之间的通信。TCP/IP协议里的网关是其中的一种,实质上是一个网络通向其他网络的IP地址,此IP地址上的设备必须具有路由功能,这些设备有:路由器、启用路由协议的服务器、代理服务器。

比如如果网络A(192.168.1.0)中的主机向网络B(192.168.2.0)中的主机发送数据,因为两个主机不在同一网络,所以数据包会被转发给A的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B中的主机。


4、  支持概要和不练许网络。

 

5、  有效邻居发现。

IP首部,普通的IP首部长为20字节,除非含有选项字段。

6、  基于可靠传输协议(RTP)的通信。

图片 4

7、  基于弥散更新算法(UAL)的最佳路径的选择。

 

 

  • 版本(4bit)
    • 目前协议版本号4,因此也叫IPv4
  • 首部长度(4bit)
    • 如果有选项字段,则包含选项字段
    • 有多少个32bits
    • 普通IP数据包(没有任何选项)该字段值是5 也就是20字节
  • TOS(服务类型,8bit)
    • 3bit优先权子字段(现在已经被忽略)
    • 4bitTOS,分别代表
      • 最小延时
      • 最大吞吐量
      • 最高可靠性
      • 最小费用
      • 4bit中只能置其中1bit
      • 如果所有4bit均为0,那么就是一般服务
    • 1bit未用但必须置0
  • 总长度(16bit)
    • 整个数据包的长度,以字节为单位
    • 利用首部长度,和总长度,就能知道数据内容的起始位置和长度。
  • 标识位(16bit)
    • 唯一的标识主机发送的每一份数据报
    • 通常每发送一份报文它的值就会加1
  • 标志字段(3bit)
  • 偏移字段(13bit)
  • TTL(time-to-live,8bit)
    • 数据报可以经过的最多路由器数
    • 默认32/64,没经过一个路由器减1,
    • 0时,丢弃数据报,并发送ICMP报文通知源主机。
  • 协议字段(8bit)
    • 识别哪个协议使用IP在传数据
  • 首部校验和(16bit)
    • 根据IP首部计算的校验和码。
    • 不对首部后的数据进行计算
      • 数据自有数据的校验位保证
    • 校验方法
      • 首先将首部校验和字段置0
      • 对首部每个16bit进行二进制反码,
      • 然后求和
  • 源IP地址(32bit)
  • 目的IP地址(32bit)
  • 选项字段
    • 安全和处理限制
    • 记录路径
    • 时间戳
    • 宽松的源站选路
    • 严格的源站选路

EIGRP的优点

 

1、  快速收敛

不同应用间,建议使用不同TOS值;tcpdump输出即是这个值。

EIGRP采用DUAL来实现快速收敛。运行EIGRP的路由器它的系统中存储了邻居的路由表,因此能够快速适应网络中的变化。如果本地路由表中没用合适的路由,EIGRP将查询邻居以发现替代路由。查询将不断的在网络中传播,直到找到替代路由或确定不存在替代路由。

图片 5

2、  部分更新

 

EIGRP发送部分更新而不是定期更新,且仅在路由信息发生变化时更新。更新中只包含了已经变化了的信息,而不是整个路由表,而且只发送给有需要的路由器,这样可以减少网络带宽的占用。

 

3、  支持多种网络层路由协议

0x10 --> 000 1000 0 

EIGRP使用协议相关模块来支持IPv4、IPv6、Apple Talk和IPX,以满足特定网络层需求。

三种颜色代表TOS 3bit优先权子字段,4bitTOS,1bit未用但必须置0

4、  使用多播与单播

 

EIGRP在路由器之间通信时使用的为多播与单播,因此终端不受路由更新和查询的影响。使用的多播地址为224.0.0.10。

IP路由选择

5、  支持变长子网掩码


EIGRP是一种无类路由协议,它将通告每个目标网络的子网掩码,支持不连续子网和VLSM。

 

6、  无缝连接数据链路层协议和拓扑结构。

概念上路由选择

在协议中不要求对OSI参考模型的2层协议做特别的配置。

  • 目标主机与源主机直接相通
    • 则IP数据报直接送到目标主机上
  • 否则
    • 主机把数据报发往默认的路由器上
    • 由路由器来转发该数据报

 

 

 

IP层设置为路由功能:

实验过程

  • 一般来讲
    • IP可以从TCP,UDP,ICMP,IGMP接收数据(本地生成的数据)并进行发送
  • 路由功能
    • IP还可以从一个网络接口接收数据报(待转发的数据报)并进行发送。
    • IP层在内存中维护一个路由表,路由表每一项包含
      • 目的IP地址
      • 下一站路由器的IP地址
      • 标志(两个)。
        • 1个指明目的IP地址是网络地址还是主机地址。
        • 2个指明下一站路由器是否为真正的下一站路由器。
      • 为数据报的传输指定一个网络接口
    • 主要完成的工作
      • 搜索路由表,完全匹配
        • 寻找能与目的IP地址完全匹配的条目。
        • 找到,则把报文发给该条目指定的下一跳路由
      • 搜索路由表,网络号匹配
        • 寻找能与目的网络号相匹配的条目
        • 找到,则把报文发给该条目指定的下一跳路由
      • 搜索路由表,寻找标为“默认”的条目
        • 则把报文发送给该表目指定的下一站路由器。
      • 上面三步都失败
        • 数据不能被传送,
      • 优先级 主机匹配-->网络匹配-->默认路由

 拓扑图

 

图片 6

子网寻址

1、  对路由器进行基本配置(更改名称,打开接口并配置IP地址)


图片 7

不是把IP地址看成由单纯的一个网络号和一个主机号组成,

图片 8

而是把主机号再分成一个子网号和一个主机号。

图片 9

 

1、  配置EIGRP,并宣告直连网络。

这样做的原因是因为 A类和B类地址为主机号分配了太多的空间,

图片 10

可分别容纳的主机数为2^24-2和2^16-2。

图片 11

 

图片 12

主机好全0,全1 是无效地址。

3、  查看路由器的路由表,从路由表中可看出从R1路由器到R3路由器的路由条目(同样R3路由器也有到达R1路由器的路由条目)。

 

图片 13

与30个C类地址相比,用一个包含30个子网的B类地址的好处是,它可以缩小路由表的规模。

图片 14

 

 

子网掩码

4、  测试连通性(用R1路由器在特权模式下ping R3路由器地址),当出现5个感叹号时,即表示正常连通。

 

图片 15

  • 32bit
  • 确定哪些是网络号(1),哪些是主机号(0);
  • 给定IP地址和子网掩码后
    • 主机就可以确定IP数据报的目的地
      • 本子网上的主机
      • 本网络中其他子网中的主机
      • 其他网络上的主机

此实验完成!

  陈龙川

  2018-01-03

编辑:互联网 本文来源:IP协议栈简介,有没有觉得前两天的网慢了

关键词: