IP协议
IP(Internet Protocol)协议是互联网通信中最重要的协议之一,它是在TCP/IP协议族中的网络层协议。IP协议为数据在网络中的传输提供了统一的标准,使得不同的计算机和网络设备能够相互通信。IP协议负责将数据包从源主机发送到目的主机,并且确保数据包在传输过程中不会丢失或损坏
IP协议是一种无连接协议,它不对数据包进行任何形式的确认或控制。它仅仅负责将数据包从源地址传输到目的地址,因此它也被称为“不可靠协议”。不过,在实际的网络中,TCP(Transmission Control Protocol)协议通常会和IP协议一起使用,以提供可靠的数据传输服务
IP地址
注意
本篇IP内容主要以IPV4为主,IPV6会单独的说明
每个网段中的全0和全1不能使用,0地址不能作为IP,全1表示广播地址不能作为IP使用
IP协议中最重要的部分是IP地址,它是一个32位(IPV4)由4个8位二进制组成的数字,通常被表示成四个由点分隔的十进制数。IP地址的作用是唯一地标识一个计算机或网络设备。每个网络设备都需要具有一个唯一的IP地址,以便在网络中进行通信
IP地址示意图:
IP地址分类
- A类地址:A类地址最高位为0,其余31位用于网络地址和主机地址的划分。其中,前8位表示网络地址,后24位表示主机地址。A类地址的网络地址范围为1.0.0.0~127.0.0.0,其中1.0.0.0被保留作为本地环回地址,127.0.0.0/8用于环回测试。A类地址可用于较大规模的网络,可以连接2^24台主机
- B类地址:B类地址最高位为10,其余30位用于网络地址和主机地址的划分。其中,前16位表示网络地址,后16位表示主机地址。B类地址的网络地址范围为128.0.0.0~191.255.0.0,可以连接2^16台主机
- C类地址:C类地址最高位为110,其余29位用于网络地址和主机地址的划分。其中,前24位表示网络地址,后8位表示主机地址。C类地址的网络地址范围为192.0.0.0~223.255.255.0,可以连接2^8台主机
- D类地址:D类地址最高位为1110,用于多播(Multicast)通信,范围为224.0.0.0~239.255.255.255
- E类地址:E类地址最高位为1111,保留为将来使用,范围为240.0.0.0~255.255.255.255
私网地址
IPv4中私有IP地址的范围如下:
- A类私有地址:10.0.0.0 ~ 10.255.255.255
- B类私有地址:172.16.0.0 ~ 172.31.255.255
- C类私有地址:192.168.0.0 ~ 192.168.255.255
需要注意的是,私有IP地址只在内部网络中使用,如果需要连接互联网或与其他网络通信,需要使用公有IP地址。在使用私有IP地址时,还需要注意避免与公有IP地址冲突,以免造成网络故障
回环地址
回环地址(Loopback Address)是一个特殊的IP地址,用于将数据包发送到同一台计算机上的网络接口。回环地址常用于本地主机进行自测、测试和故障排查,可以用来检查计算机的网络接口是否正常工作、网络协议是否正确等
在IPv4中,回环地址为127.0.0.1,也可以用其他以127开头的地址,如127.0.0.2、127.0.0.3等
使用回环地址发送的数据包不会离开本地计算机,而是会被传递到本地计算机上的网络协议栈,然后被相应的协议处理。在本地计算机上,回环地址就像是本地网络上的另一个设备一样,可以与其进行通信。由于回环地址不会通过网络传输,因此不需要担心安全问题
💡localhost、本机地址、0.0.0.0的区别?
localhost
:localhost是一种特殊的主机名,表示本地计算机的回环地址,通常为127.0.0.1本机地址
:网络中真实存在的IP地址0.0.0.0
:一种特殊的IP地址,表示任意主机或任意网络,监听所有可用的网络接口。如果服务器绑定了0.0.0.0地址,那么它可以接受来自任意IP地址的网络请求
localhost指本机的回环地址,当访问时会走本机的内部网卡访问本机的服务;本机地址都是真实的IP地址,不管是内网还是公网,当访问本机地址时会转发到路由器再转发到本机地址;0.0.0.0一种特殊的IP,当web应用使用此IP监听时,表示可以通过任意网卡进行访问此服务
网络划分
网络划分指的是将一个较大的IP地址空间划分成多个较小的子网,以便更好地管理和利用IP地址资源。网络划分可以实现网络地址的细分,提高网络的安全性和性能,还可以帮助网络管理员更好地组织和管理网络设备和资源
子网掩码
子网掩码(Subnet Mask)是一个32位二进制数,用于标识一个IP地址所属的网络和主机部分。子网掩码中,网络部分用1表示,主机部分用0表示。网络掩码必须和IP地址一起使用,用于将一个IP地址分成网络和主机两部分
划分实现
划分子网时,需要确定每个子网的网络地址和主机地址范围,以及子网掩码。通常,网络管理员需要根据网络规模和需求,来确定子网的数量和大小
划分子网的好处:
- 提高网络性能:划分子网可以减少广播域的范围,从而减少广播消息的传输量,提高网络性能
- 提高网络安全性:划分子网可以将网络分段,每个子网都有独立的网络地址,可以设置不同的访问控制策略,提高网络安全性
- 灵活管理IP地址:划分子网可以更灵活地管理IP地址,可以根据需要分配IP地址,避免浪费
- 支持多个网络应用:划分子网可以为不同的网络应用提供独立的网络空间,避免应用之间的干扰和冲突
- 支持网络扩展:划分子网可以支持网络的扩展,当网络规模增大时,可以通过划分子网来扩展网络
网络划分一般遵循以下规则:根据最小子网数往后移动主机位,1位可以划分2个子网,2位可以划分3个子网,根据公式2^n(n<=8)判断最小子网数,一般一个网络内有255个范围主机可以进行划分
假如在局域网192.168.1.0/24
上需要划分2个64位主机,1个128为主机,最小子网数为64,根据公式可以知道主机位往后移动2位可以得到4段子网,最小主机位64,因此划分如下:
- 子网A:192.168.1.0/26,子网掩码255.255.255.0,IP地址可用范围192.168.1.1 ~ 192.168.1.62
- 子网B:192.168.1.0/26,子网掩码255.255.255.64,IP地址范围192.168.1.65 ~ 192.168.1.126
- 子网C:192.168.1.128/26,子网掩码255.255.255.128,IP地址可用范围192.168.1.129 ~ 192.168.1.253
注意每个子网中的最后一个地址不能使用,其都会作为广播地址使用
广播、多播
前面知道了IP作为主机的唯一标志,用来和其他的主机进行通信,通常都是一对一这种通信方式。此外还有多播、广播、定向广播等通信方式
广播是一种将数据包发送给网络中(局域网)所有设备的通信方式。发送广播包时,在目的地址字段中使用特殊的广播地址,例如IPv4网络中使用255.255.255.255地址,IPv6网络中使用ff02::1地址。广播是一种无差别的通信方式,适用于需要向所有设备发送相同信息的情况,例如DHCP服务器向所有客户端发送IP地址信息
多播是一种将数据包发送给网络中一组设备的通信方式。多播使用特殊的组播地址,可以将数据包发送给一个或多个组中的设备。多播是一种有选择性的通信方式,适用于需要向特定设备组发送相同信息的情况,例如视频流媒体服务向所有订阅者发送视频数据
定向广播是一种将数据包发送给网络中某个子网内所有设备的通信方式。定向广播使用子网广播地址,可以将数据包发送给同一子网内的所有设备。定向广播是一种有限的通信方式,适用于需要向同一子网内所有设备发送相同信息的情况,例如ARP协议中用于查找MAC地址的请求
IPV6
IPv4地址的地址空间较小,只有2^32(约42亿)个地址,已经不足以满足当今互联网设备的需要。IPv6使用8组二进制每组16位组成,可以组成的IP数为2^128
大约是3.4×10的38次方,可以为地球上的每一粒沙子分配一个IP,因此IPv6被广泛应用可以完美的解决IPv4的多种问题
IPv6使用8组4位的十六进制数表示,每组之间使用冒号分隔:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv6地址中也可以使用双冒号(::)表示一组或多组0,例如:
2001:0db8::8a2e:0370:7334
IPv6的主要特点如下:
- 更大的地址空间:IPv6使用128位地址,相对于IPv4的32位地址,IPv6可以提供更大的地址空间,可以支持更多的设备连接到互联网
- 简化的首部格式:IPv6的首部格式相对于IPv4更加简化,减少了首部长度,提高了路由器处理包的效率
- 支持QoS:IPv6支持服务质量(QoS)机制,可以根据不同的应用需求提供不同的网络服务质量
- 更好的路由支持:IPv6采用一种称为“无类别域间路由选择(CIDR)”的新的路由选择机制,可以减少路由表的规模,并提高路由效率
- 更强的安全性:IPv6支持IPSec(Internet协议安全性),可以提供更强的网络安全性,保护数据的机密性和完整性
- 兼容IPv4:IPv6可以与IPv4兼容,可以通过IPv4地址转换技术实现IPv4和IPv6之间的互通
IP首部
版本
:IP协议的版本号,IPv4为4, IPv6为6IHL(Internet Header Length)
:IP首部长度占4位单位为4字节。因此首部长度的最大值60,而头部的固定长度为20,因此最小值为5(0101),可选部分的最大长度为40,这里的长度和TCP的长度一致服务类型
:指定了IP数据包的优先级和QoS(Quality of Service)等信息总长度
:整个IP数据包的长度,包括IP首部和数据负载,占16位,可以算出IP数据包的最大值为2^16-1
65535字节标识符
:用于唯一标识一个IP数据包。为了避免将一个数据报分片和其他数据 报分片混淆,发送主机通常在每次(从它的一个IP地址)发送数据报时都将一个内部计数器 加1,并将该计数器值复制到IPv4标识字标志位
:用于指示IP分片和重组的信息分片偏移
:指示该片段相对于原始数据包的偏移量生存期(TTL)
:设置一个数据报可经过的路由器数量的上限,以防止数据包在网络中无限制地循环传输协议
:协议类型,指示了IP数据包中包含的上层协议类型,如TCP(6)、UDP(17)、ICMP(1)等头部校验和
:IP首部的校验和,用于检查IP首部是否出错,不会检查数据的正确性源IP
:数据包的发送者的IP目的IP
:数据包的接收者的IP选项
:可选字段,用于扩展IP首部的功能,如时间戳、记录路由等
抓包分析IP首部字段:
生存期TTL
TTL(Time To Live)是一种在IP协议中使用的字段,它用于限制数据包在网络中的生存时间。每当一个IP数据包经过一个网络设备(如路由器)时,它的TTL值会减少1。当TTL值减少到0时,数据包将被丢弃,不再继续传输,从而避免数据包在网络中无限循环,同时也会通知发送者目的地不可达
TTL生存期示意图: 以上假如TTL的值为5,当数据包经过交换机时TTL的值并不会减去1,只有经过路由器时才会减1,因为路由器需要确保数据包不会在网络中无限循环;当TTL=0时还没有到达目的地时,数据包将会被抛弃掉,然后发送Time-to-live exceeded
报文告诉发送端已经超时
➜ ping 192.168.12.1 -t 2
PING 192.168.12.1 (192.168.12.1) 56(84) bytes of data.
From 192.168.86.1 icmp_seq=1 Time to live exceeded
2
3
TTL的作用有以下几个方面:
- 避免网络数据包在网络中无限循环,减少网络拥堵和流量。
- 保证数据包能够在网络中迅速传输,避免数据包在网络中长时间滞留。
- 保证数据包能够到达目的地址,避免数据包在网络中迷路或被错误地传输到其他地方。
TTL的默认值为64,可以通过以下方式查看:
➜ cat /proc/sys/net/ipv4/ip_default_ttl
64
2
IP分片、重组
IP分片和重组是IP协议中用于处理大型数据包的机制。在IP协议中,每个数据包的大小被限制在最大传输单元(MTU)以下。如果要发送的数据包超过MTU大小,则必须将其分成多个较小的数据包进行传输,这个过程称为IP分片
从IP的头部信息可以知道IP协议的最大长度为2^16-1
65535字节,而链路层的最大MTU(最大传输单元)为1520,去掉链路层的收尾部长度20,那么实际传输的数据大小为1500,因此的当IP数据包超过MTU(1500)时就会分片
IP分片是指将原始数据包分成若干个更小的数据包,以便在网络中传输。这些数据包在传输过程中可能会经过不同的路径,因此可能会以不同的顺序到达目标设备。目标设备将重新组合这些分组数据包,以恢复原始数据包
TIP
IP分片会增加网络传输的复杂性和延迟,因此,尽量避免使用过大的IP数据包。在实际应用中,可以通过调整TCP等传输协议的窗口大小来优化网络传输性能,减少IP分片的发生;如TCP协议会通过数据分段将数据分割成每段MSS(1460)的大小,这样当数据传输到网络层时就不会有IP分片的发生了
重组是指在目标设备上重新组合IP分片,以恢复原始数据包。当目标设备接收到分片的IP数据包时,它将使用源IP地址、目标IP地址、协议号和标识符等信息来确定这些分片属于同一个原始数据包,并将它们重新组合成一个完整的数据包。如果在传输过程中有任何一个或多个数据包丢失或损坏,则重组过程将无法完成,目标设备将丢弃这些数据包并请求重新发送它们
NAT
网络地址转换(NAT,Network Address Translation)是一种在网络路由器上执行的技术,用于将私有IP地址转换为公共IP地址。NAT主要的作用是允许多个设备在一个公共IP地址下访问互联网。在NAT的实现中,路由器会为内部网络中的每个设备分配一个私有IP地址,并将所有对互联网的请求发送到一个公共IP地址上。NAT将发送到公共IP地址的请求转换为其相应的私有IP地址,以便目标设备可以接收到请求
NAT的作用有以下几点:
- 扩展IP地址:在互联网早期,IP地址的数量是有限的,NAT技术允许多个设备共享同一个公共IP地址,从而减少了公共IP地址的需求,节省了IP地址资源
- 增强网络安全性:由于私有IP地址在Internet上是不可路由的,因此使用NAT可以增强网络安全性,因为外部网络无法直接访问内部网络
- 隐藏内部网络拓扑结构:使用NAT可以隐藏内部网络拓扑结构,使外部网络无法直接访问内部网络。
- 解决IP地址冲突问题:在许多组织中,内部网络中的多个设备可能会使用相同的IP地址。使用NAT技术可以避免这种冲突,因为每个设备都被分配了唯一的私有IP地址,不会与其他设备冲突
注意
NAT增加网络延迟和复杂性,使网络更加不透明、可能导致应用程序错误等,使用IPv6可以完美的解决NAT问题
网关、路由器
网关(Gateway)是在不同网络之间进行数据交换的设备。在TCP/IP网络中,网关通常是一台计算机或路由器,用于将数据包从一个网络传输到另一个网络。网关的作用是实现不同网络之间的通信,因此每个网络至少需要一个网关。通常,网关也具有地址转换和防火墙等功能
路由器(Router)是一种用于在多个网络之间转发数据包的设备。路由器通常位于不同的网络之间,用于将数据包从源网络传输到目标网络。路由器的作用是实现不同网络之间的通信,同时也具有地址转换、过滤和管理等功能
在TCP/IP网络中,路由器根据数据包中的目标IP地址和路由表来选择最佳路径,将数据包从源网络传输到目标网络。路由器可以通过动态路由协议和静态路由配置来学习和维护路由表,以便更快、更准确地转发数据包
总结
IP是一个无状态的网络层协议,用来标识网络中每个主机的位置。IPv4地址已经不够用了使用IPv6可以解决IP枯竭的问题,通过划分子网可以提高网络IP的利用率。IP的最大传输长度位65535,由于链路层的最大MTU为1500,因此当大于MTU时会进行IP分片和重组