屏幕快照 2020-07-27 17.04.28
- 版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
- 首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节
- 区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下不使用
- 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
- 标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包分片,在同一个包的若干分片中,该值是相同的
- 标志(flag):占3位,目前只有后两位有意义
- DF:Don‘t Fragment 中间的一位,只有当 DF=0 时才允许分片
- MF:More Fragment 最后一位,MF=1表示后面还有分片,MF=0 表示最后一个分片
- 片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位
- 生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
- 协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
- 首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
- 源地址和目的地址:都各占4字节,分别记录源地址和目的地址
屏幕快照 2020-07-27 17.05.16
IP地址
MAC地址用于同网段通信,当跨网段通信时,需要使用另一种地址:IP地址。和MAC地址不同,IP地址是逻辑地址,正因为是逻辑地址,所以一个网卡上可能有1个或多个Ip地址(其中一个为主IP),甚至出故障的时候网卡上不会分配IP地址
IP地址用于在网络上地位寻址,它是网络层的概念,需要工作在三层的网络设备(比如路由器,三层交换机)来帮忙识别并作出相应操作,所以,数据包要达到非本网段内的对方主机,需要经过一次或多次路由,最终才能找到对方主机并将数据包交给对方。
IP地址分为IPv4和IPv6,这里只介绍IPv4
每个IP地址4个字节共32位,全部都是0和1,每个8位是IP地址的一部分,所以每一部分最小是0(二进制位全为0),最大是255(二进制位全为1)。IP地址通常采用点分十进制的方式记录,即使用点将各部分连接起来
例如:192.168.100.10.对应的二进制格式:11000000 10101000 01100100 00001010
每个IP地址都分为网络部分和主机部分,网络部分描述的是这个IP地址在哪个网络段,主机部分描述的是这个IP地址在这个网段的哪个标识
- A类:
- 0 000 0000 - 0 111 1111: 1-127
- 网络数:126, 127
- 每个网络中的主机数:2^24-2
- 默认子网掩码:255.0.0.0
- 私网地址:10.0.0.0
- B类:
- 10 00 0000 - 10 11 1111:128-191
- 网络数:2^14
- 每个网络中的主机数:2^16-2
- 默认子网掩码:255.255.0.0
- 私网地址: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
- 私网地址:192.168.0.0-192.168.255.0
- D类:组播
- 1110 0000 - 1110 1111: 224-239
- E类:保留未使用
公共IP地址
屏幕快照 2020-07-27 17.07.00
私有IP地址
屏幕快照 2020-07-27 17.07.41
特殊地址
- 0.0.0.0
- 0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络
- 255.255.255.255
- 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机
- 127.0.0.1~127.255.255.254
- 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包
- 224.0.0.0到239.255.255.255
- 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序
- 169.254.x.x
- 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址
子网掩码
子网掩码用来表示IP地址中的哪些位是网络位,哪些位是主机位。所以,子网掩码是决定IP地址属于哪个网段。子网掩码必须结合IP地址一起使用,否则它将是没有意义的。子网掩码中全位1的部分是网络位,全位0的部分是主机位。0和1必须连续出现,子网掩码的二进制表示中不能出现类似101,10001这种1和0隔开的情况
根据A,B,C这些IP地址分类,其实能判断出各类的子网掩码
例如,
A类地址的网络位是1个字节,所以它的子网掩码的第一个字节全为1,即255,剩下三个字节全为0。所以,A类地址的子网掩码就是255.0.0.0
B类地址的网络位是2个字节,所以子网掩码是255.255.0.0
C类地址的网络位是3个字节,所以子网掩码是255.255.255.0
反之,根据IP地址和子网掩码,也能推断出它的网段,这才是它的真正作用
例如:IP地址为192.168.100.33,子网掩码是255.255.255.0,显然子网掩码的前3个字节全是1,那么IP地址的前3个字节192.168.100是它的网络位,那么它所在的网段就是192.168.100.0这个网段(是否记得,主机位全为0时,表示网段)
每次通信时,首先根据自己的IP地址和子网掩码来判断出自己的网段,再用自己的子网掩码和对方的IP地址计算目标所在的网段,如果在同一网段,那么在封装成帧的时候,封装的是目标主机的MAC地址,而如果不是在同一个网段,则封装的是本地路由器的MAC地址作为目标MAC地址
子网掩码必须结合IP地址一起使用,通常会将它们写在一起,例如:192.168.100.23 255.255.255.0;但也支持另外一种写法,直接将子网掩码为1的位数写在IP地址的后面,例如,255.255.255.0这个子网掩码中有24位是1,所以,IP地址和子网掩码结合的方式可以写成192.168.100.23/24,172.168.100.23/16.这种写法叫做CIDR
IP分类
原文:https://blog.51cto.com/14812296/2513780