Linux_IP协议
网络层
IP协议格式
- 版本:4位
- 首部长度:4位,最大长度60字节(4位最大15比特*4字节)
- 服务类型:8位
- 总长度:16位
- 标识:16位
- 标志位:3位
- 片偏移:13位
- 生存时间TTL:8位
- 协议:8位
- 校验和:16位
- 源IP:32位
- 目地IP:32位
- 选项:40字节
网段划分
IP地址分为两个部分,网络号和主机号。网络号保证相互连接的两个网段具有不同的标识,主机号表示同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。子网是把网络号相同的主机放在一起。
DHCP:能够自动的给子网内新增主机节点分配IP地址,避免了手动管理IP的不便。
IP地址划分
- A类(0):0.0.0.0-127.255.255.255
- B类(10):128.0.0.0-191.255.255.255
- C类(110):192.0.0.0-223.255.255.255
- D类(1110):224.0.0.0-239.255.255.255
- E类(11110):240.0.0.0-247.255.255.255
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址。
针对这种情况提出了新的划分方案,即CIDR:引入一个额外的子网掩码来区分网络号和主机号,子网掩码也是一个32位的正整数,通常用一串"0"来结尾,将IP地址和子网掩码进行按位与操作,得到的结果就是网络号,网络号和主机号的划分与这个IP地址是A类、B类还是C类无关。
IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。还有一种更简洁的表示方法,如140.252.20.68/24。
特殊IP地址
- 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网
- 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
- 127.*的IP地址用于本机环回测试,通常是127.0.0.1
IP地址不够用问题的解决方案
- 动态分配IP地址:只给接入网络的设备分配IP地址
- NAT技术
- IPv6:16字节128位表示一个IP地址
私有IP和公有IP
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC规定了用于组建局域网的私有IP地址。
192.168.*,前16位是网络号,共65,536个地址,包含在这个范围中的都成为私有IP,其余的则称为全局IP(或公网IP)。
- 一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)
- 路由器LAN口连接的主机,都从属于当前这个路由器的子网中
- 不同的路由器,子网IP其实都是一样的,子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了
- 子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包中的IP地址成为一个公网IP,这种技术称为NAT(网络地址转换)技术
路由
在复杂的网络结构中,要找出一条通往终点的路线,称路由。当IP数据包到达路由器时,路由器会先查看目的IP,决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器,依次反复,一直到达目标IP地址。
路由表可以使用route命令查看,如果目的IP命中了路由表,就直接转发即可,路由表中的最后一行主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。