网络技术——IPv4篇

IP

互联网时代的开始,IP已经成为网络的代名词。这个起源于1969年阿帕网的“朴素青年”,在那暗流涌动的网络年代,也在那混沌迷蒙的年代,经过层层厮杀,击退了一个又一个的强大敌人(比如:ATM),最终完成了他的大业,统一了网络通信。如今,他已成为生活的一部分,成为人们口中津津乐道的话。从IPv4到IPv6,再到如今神秘莫测的SRv6,IP始终砥砺前行,继续解决网络通信一个又一个难题。

Why IP

网络通信为什么需要IP?或者说为什么出现跟IP类似的协议?简而言之,现在有两个人想进行交流,首先我们要知道各自的名字,通信双方具体对象;其次,就是定位,知道对象后够确定对方的位置。因此需要出现一个标识——IP地址,确定对象和定位,还需要路由——通过定位找人的具体方式。当然,这个标识不一定是IP地址,也可以是其他协议的标识,只不过,IP(Internet Protocal)完成了他的伟业,干掉了所有对手。(个人观点)


题外话
不讨论SR,因为我不会,哈哈哈哈哈。
IPv4到IPv6,其实IP目前“公认”也就这两版本,那有没有IPv5、IPv9这些稀奇古怪的东西,可能都在实验室吧。
对历史遗留感兴趣,看看RFC 1190、1475、1347等。

IPv4

1. IPv4报头格式

“只闻其声,未见其人”,作为互联网的功臣,声名远扬,就让我们撕开名声的外壳,看看IPv4的真面目。
在这里插入图片描述

报头格式自己画有点丑,个字段作用如下:

  • verson(版本号,4bit),标志IP第几个版本号,IPv4就是0100,v6就是0110,目前就是这两种。

  • header length(头部长度,4bit),单位是4Byte,IP报头大小 = 长度 * 单位大小,IPv4报头大小为20~60Bytes,且为4的倍数。

  • DSCP+ECN(一共8bit,原本属于8bit的TOS,经过修改分成“区分服务代码点”+“显示拥塞通知”),这个作用就是QoS,对普通用户基本没作用,因为运营商除了给你限速,基本能保障上网且不太卡就行,企业内网运用广泛,所以选择不讲(主要是不会QoS的具体规则),详情看RFC 2474。

  • total length(总长度,包括“有效载荷”+“报头长度”,16bit),单位是 1Byte,因此最长为65535 Bytes。

  • identifier(标识符,16bit),配合分片使用,即一个数据包为2000 Bytes,经过MTU为1500的链路,数据包就需要分片。帮助设备识别一个数据包的分段,起到标识作用。
    举例:A被分成1、2,通过标识标记1、2,表明都属于A。

  • flag(标记字段,3bit),配合分片使用。

位置作用
第一位没用
第二位(DF,dont fragment)置为1时,不允许分片,配合ICMP发现MTU;正常情况,允许分片
第三位 (MF,more fragment)置为1时,表示还有分片;置为0时,表示最后一个数据包
  • fragment offset(片段位移,13 bit),标志分段数据包跟起始数据包的相对位置,单位为8 Bytes。目的端设备,可以根据这个字段,重新组装接收时间失序的报文。
题外话
片段位移一共能组装起来:2^13*8 Bytes大小的数据包,而一个IP包最大能组装2^16 Bytes
的数据包,大小刚好一致,如果一个包被分成1 Byte大小,可能会不够,但是实际上一个数据
至少是20Bytes(IP头部),因此不用担心片段位移不够的情况。
  • Time To Live(TTL,生存时间,8bit),最大为255,初始值由软件或者操作系统自定,每经过一台路由器,TTL值减1。当TTL减少为0时,默认把IP报文丢弃。
TTL值两大作用:

 1. 防止路由环路时,数据包被无限转发,造成网络故障(比如:带宽打满)
 2. 配合其他协议,完成其他功能(如:trace功能、HSRP和BGP等协议的TTL 安全功能)

  • Protocal(协议,8 bit),索引字段,标志上层协议或者同层协议的协议号。
  • header checksum(头部校验和,16bit),校验和的作用就是检查数据包传输过程中是否出现差错,头部校验和仅针对IP头部进行校验。
  • Source & Destination Address(源目地址,各32 bit),主机与主机通信标识,发送方和目的端的地址,具体格式后文叙述。
  • Option(可选项,长度不定,里面的功能是可选可不选)
Option功能
松散源路由选择数据包按照IP序列传送(人为给定),但是相邻两个IP地址可以跨多台路由器
严格源路由选择数据包按照IP序列传送(人为给定),但是相邻两个IP地址必须严格按照路由转发,即路由下一跳要在列表中,换句话说路由器要相邻
记录路由类似路由追踪功能,但这里记录的是出站接口的IP,trace则是入站接口的IP
时间戳记录到达时间
  • Padding(填充项,长度未知),通过填0,仅帮助Option字段补齐32位,装逼的说法就是补充4个八位组。为什么规定是32,可能是CPU架构决定这个位数更加合理吧。

实际报文格式
在这里插入图片描述
拨开面纱,发现IPv4格式朴素至极,甚至说毫无亮点。

2. IP地址

IP地址类别
首先,我们的IP地址,一共32位,由两个部分组成:网络位+主机位,网络位标识所在链路,主机位标识链路上具体主机。

通过掩码区分网络位和主机位,如:
192.168.10.1 /24,网络地址为192.168.10.0/24;
同一网络的主机的网络地址相同

特别注意

  • 常用IPv4地址书写格式,点分十进制,即:192.168.10.1
  • 常用IPv6地址书写格式,冒号分十六进制,即,::1
  • 机器读取地址,通过二进制格式,如:11000000 10101000 00001010 00000001(192.168.10.1,所以人还是看看十进制比较舒服)
  • IP地址和掩码进行操作,计算网络地址(与:1和1相与为1,其他为0,机器的操作都是基于二进制)

说了许多题外话,IP地址一共分为5类


快速记忆法,按头八位来看
 - A类地址:0.0.0.1~127.255.255.255,  (0xxxxxxx),掩码: /8
 - B类地址:128.0.0.0~191.255.255.255,(10xxxxxx),掩码:/16
 - C类地址:192.0.0.0~223.255.255.255,(110xxxxx),掩码:/24
 - D类地址:224.0.0.0~239.255.255.255,(1110xxxx)
 - E类地址:240.0.0.0~247.255.255.255(11110xxx)

首先对于我们而言,基本情况都是单播为主,因此A、B、C三类地址用的最广泛。通过掩码可以看出A类地址主机位最多,B类主机位中等,C类主机位置最少。
私有地址
IP地址划分类别之外,还为A、B、C三类地址划分了公有地址和私有地址

  • 公有地址就是大家都可以访问到的IP地址,在Internet/公网上的地址,因此 IPv4地址枯竭,其实指的是公有地址,公网唯一标识,类似于身份证。
  • 私有地址就是在私人区域内(局域网)的地址,类比于名字,在家里通过名字找你,放到城市里用身份证找你。因此,私有地址随意性较大,在范围内地址自行决定使用。
类别私有地址范围
A10.0.0.0~10.255.255.255
B172.16.0.0~172.31.255.255
C192.168.0.0~192.168.255.255

私有地址汇总

  • A类地址:10.0.0.0 /8
  • B类地址:172.16.0.0 /12
  • C类地址:192.168.0.0 /16

3.VLSM/子网划分

为什么需要子网划分?为什么出现VLSM?一般课堂或者视频上是这么说的:
在这里插入图片描述
总结一下:通过牺牲主机位,换取更多网络位,保证网络的灵活性。网络的灵活性,大概是大部分人避而不谈的事情,可用IP地址一样,处于同一个网络地址和不同网络地址的区别在于,访问和控制权限的精细化,具体应用就是ACL

举一个例子,顺便简单走一下划分子网的流程:
在这里插入图片描述
方案应该有多种,分享一下我的想法:

  1. 确定最大主机数,确定主机位 2^n - 2 >= 29,因此n为5
  2. 确定子网数量,2^(8-5) = 8,子网数为8,大于3因此可用
  3. 确定子网范围

 - 192.168.100.1~192.168.100.30(网络地址和广播地址去掉,广播地址后面再说)
 - 192.168.100.33~192.168.100.62
 - 192.168.100.65~192.168.100.94
 - 192.168.100.97~192.168.100.126
 - 192.168.100.129~192.168.100.158
 - 192.168.100.161~192.168.100.190
 - 192.168.100.193~192.168.100.222
 - 192.168.100.225.~192.168.100.224

然后,从中任取三个地址范围即可。这是我的惯用思路,如果有更快的方法,请各位大佬教教我。如果,大家处于面试阶段,还会问子网内的广播地址是多少,或者划分子网,或者求出网络地址,想要临危不惧,只能多练,练出惯性思维,最起码要把128、192、224、240、248转后的二进制位数记住。

4. CIDR

CIDR,即无类别域间路由,或者叫超网。CIDR是基于VLSM(可变长子网掩码)为基础,实现对路由跨类聚合。按照规定,A、B、C三类地址拥有固定掩码,但是随着网络规模的爆炸,实际应用特别麻烦。
这里针对公有地址,私有地址随便划分。按类划分出现以下两个问题:

  1. 主机地址数量相差太大。C类地址只拥有8个主机位,即256;B类地址拥有16位,65535。如果一个地区需求500个主机地址,那么就要重新申请一个B类地址,公有地址申请难上加难。
  2. 路由表规模爆炸。网络位数越多,路由条目数量更加庞大,以C类为例32*65535,大概是100w条,肯定要跨掩码聚合。

子网划分和CIDR区别在于网络位置的移动,向左移就是跨类聚合(主机位借网络位),向右移(网络位借主机位)。

5. 三种IP地址类型

讲了那么久的IP,介绍一下三种类型方式

  • 单播,点对点
  • 广播,一对多
  • 组播,一对多

单播
单播就是一对一通信,IP提供一条逻辑上点对点的通信。利用A、B、C三类地址,完成单播(就是源目IP),实现方式——>路由——>路由条目(静态、动态、直连)。

广播
广播就是一对多,所有人都要收到。实际上,广播生效范围仅链路有效,说人话就是同一网段(网络或子网)下所有主机都需要接收并处理广播,因为路由器不转发广播,不会在其他链路生效,交换机则是通过VLAN隔离广播域。(说人话:市场部和销售部处于不同网络,市场部的广播,销售部收不到)

组播
组播就是一对多,组播成员都要收到。作用范围:处于组播组里,可跨链路生效,即在多个网络生效,可通过路由传播。
实现方式,以下两种缺一不可,除非组播源和组播成员处于同一网络可不用路由

  • 跨网段传播,即路由,通过PIM产生的组播树(具体内容这里不涉及)
  • 同一网段内,通过IGMP实现。

总结

发现IPv4的内容也是错综复杂,作为入门基础课,也作为重要一课,需要从头到尾理顺,重新复习有了许多新的体会。不过像组播,属于后面学习的内容,学了作用也不是很大,抱着交流的态度,后面会试着写写。这次的内容也花了两三天来写,如有不对,敬请指正,下一章开始IPv6!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值