TCP/IP的秘密(2)IPV4应知应会

591 阅读5分钟

这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战

从事互联网,对于网络协议应该了然于胸,在迈入IPV6时代之前,我们先来回顾一下IPV4的一些关键要点。

IPV4

image.png

1. TTL和Traceroute

  • 每经过1跳就会减1,如果减到0仍然没有到达指定IP,则会被丢弃;

  • TTL占8bit,一般设置是32或64,最大255,引入TTL是为了防止无终点的IP包导致网络拥塞

  • 这个功能可以被用来做路径跟踪traceroute, 当TTL=0时,路由会发送一条超时消息给源地址,这样就可以计算IP包在每一跳所用的时间

  • Windows系统使用tracert命令,可以跟踪30个跃点:

image.png

  • 第一列是hop数,后面3列是3次ping test的RTT,最后一列是IP地址或域名

  • *号表示超时或无响应,有些跃点因为配置或防火墙原因不会对ICMP类消息进行响应

2. checksum校验和

  • IP包的CHECKSUM只校验header

  • TCP的checksum把header和payload一起校验

3. IHL和Total Length

  • IHL: Internet Header Length,专指头部长度,取值范围从5-15,对应20byte-60byte;

  • Total Length: 指的是header+payload的长度,最大支持65535byte;

  • 因为IP报头和payload的长度不固定,所以需要两个长度,这样接收方就可以区分header和payload;

4. flag

  • DF, don't fragment, Bit1: 0 - Allow fragment, 1 - Don't fragment. Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments.

  • 如果设置了不许分段,而路由器必须将该IP包分段的话,则该IP包会被丢弃

  • 对于分段的IP包,除了最后一个fragment外,MF都是1

  • 如果对ip包进行了分段,那么同一个IP包的分段的ID号都是一样的

5. TOS

  • 现在分为了DSCP(Differentiated Services Codepoint)占6bit和ECN(Explicit Congestion Notification)占2bit

  • DSCP用来指示数据类型和处理方式

  • ECN用来预警网络即将拥塞,这样就不用通过丢包来显示拥塞了,当接收方收到这个指示后,会通知发送方减小发送窗口;

6. Address

image.png

  • ABC三类地址为单播地址(unicast),用于一对一通信;

  • 私有地址只能在局域网使用,一共有3段,分别对应ABC三类:10.0.0.0--10.255.255.255,172.16.0.0--172.31.255.255,192.168.0.0--192.168.255.255;我们一般主机使用的都是这类地址;

  • D类为多播地址(multicast),每个D类地址对应一个组,发往某一多播地址的数据将被该组中的所有成员接收,D类地址不能分配给主机。其中224.0.0.1是本子网中所有host,包括本网段中所有参加多播的主机;224.0.0.2表示本地网络中所有参加多播的路由器,如果想接收多播,主机必须加入到对应的组播组中,加入后,它既有一个本机的IP地址,同时也有一个组播组的D类IP地址,可以同时属于多个组播组;

  • 环回地址:127.xxx.xxx.xxx都是环回;

  • 0.0.0.0含义比较多:在IPV4中是一个不可被路由的地址,用于标记一些未知的,不可用的目标;比如当接入网络但还没被分配地址时,会使用这个地址;还可以表示本机上所有IPV4地址,比如一个计算机有2个IP地址,设置监听0.0.0.0后,程序将会同时接收2个IP的数据;

  • 169.254.x.x是临时地址,在这个网段表示计算机无法接入网络,无法从DHCP获取地址。

  • 每个网络都有2个IP地址是不能分配的,1个用于标识网络(任意网络号+主机号全是0),该地址仅作为网络的标识,主要用在网络路由中;1个用于网络广播(任意网络号+主机号全是1)。网络地址块的结束地址被用作该网络的广播地址;

7.子网与VLSM

  • 子网掩码的作用是区分网络号和主机号,让计算机能够识别对方主机是否在同一个子网;如果使用32位掩码,则表示该IP地址本身,比如127.0.0.1/32 = 127.0.0.1

  • VLSM(Variable Length Subnet Mask)变长子网掩码, 它并没有增加IP地址的数量,而是让IP地址的分配更加高效,打破了传统的固定模式,变为灵活的按需分配;对于一个网段来说,可以通过不同的子网掩码长度来划分不同容量的子网。

8. 超网(supernetting)与CIDR

  • 超网通过聚合多个子网的IP地址达到扩充地址池和减小路由表负荷,实际是将网络号取并集。保持合并后所有host的网络号一致。

image.png

  • 将超网的掩码和最小地址结合起来,就能定义该超网的范围
  • CIDR(Classless inter-domain routing)无类域间路由,通过超网有效地减少了要对外显示的网络数,防止了路由表爆炸;

以上,感谢阅读,如有不准确和错误之处请留言指正,我会立即修正,感谢!




总结不易,请勿私自转载,否则别怪老大爷不客气

欢迎喜欢技术的小伙伴和我交流,微信1296386616

参考资料:

《INTERNET PROTOCOL》 IETF datatracker.ietf.org/doc/html/rf…

《IP V4》 WIKIPEDIA en.wikipedia.org/wiki/IPv4

《Variable Length Subnet Mask (VLSM) Tutorial》 AMAKIRI WELEKWE www.comparitech.com/net-admin/v…

《超网合并详解》 qicai_7 www.huaweicloud.com/articles/dd…