4、IP基本原理
一、IP及其相关协议
TCP/IP协议栈的网络层位于网络接口层和传输层之间。网络层的主要功能是标识大规模网络中的每一个节点,并将数据包投递到正确的目的节点,常见的网络协议如下。
- IP(Internet Protocol,互联网协议):负责网络层寻址、路由选择、分段及包重组。
- ARP(Address Resolution Protocol,地址解析协议):负责把网络层地址解析成物理地址。
- RARP(Reverse Address Resolution Protocol,反向地址解析协议):负责把物理地址解析成网络层地址。
- ICMP(Internet Control Message Protocol,互联网控制消息协议):定义了网络层控制和传递消息的功能,可以报告IP数据包传递过程中发生的错误、失败等信息,提供网络诊断功能。
- IGMP(Internet Group Management Protocol,互联网组管理协议):负责管理IP组播组。
二、IP协议
1、简介
IP是Internet Protocol的缩写,该协议的作用为网络层的设备提供逻辑地址和负责数据包的寻址和转发。IP协议有版本之分,分别是IPv4和IPv6。目前,Internet上的IP报文主要都是IPv4报文,但是逐步在向IPv6过渡。
2、IP头部
Version | 用来标识是IPv4还是IPv6数据包 |
Header Length | 用来标识IP头部有多长 |
Type of Service | 服务的类型,用于做QOS |
Total Length | 用来表示数据包总共有多长,包括IP层及以上全部承载的数据 |
Identification/Flags/Fragment Offset | 针对数据包进行分片 |
TTL | 范围0-255 每经过一个路由器TTL自动减一,限制数据包的传递范围,减到0就不再传递了,放环 |
Protocol | 协议号用来标识上层交给什么协议进行处理 |
Header Checksum | 确保数据包传递过程中的完整性 |
Source IP Address | 源IP地址 |
Destination IP Address | 目的IP地址 |
Options | 可选项 |
Padding | 填充物没有实际的意义 |
3、数据包分片
当发送一个数据包,该数据包的尺寸超出我出接口的MTU时需要进行分片,MTU就是最大传输单元,默认1500字节。假设发送方发出了一个1600字节的数据包,此时就需要分成两个小的数据包,一个1480字节,一个100字节,接收方收到后会根据Identification/Flags/Fragment Offset进行组合。
- Identification:将相同ID的小的数据包进行组合,表明来自己同一个数据包。
- Flags Reserved bit:保留bit,没用。
- Flags DF bit:是否允许分片,如果是0表示允许,1表示不允许。
- Flags MF bit:是否还有更多的分片,0表示没有,1表示有,接收方只有等该bit为0,才会进行组合。
- Fragment Offset:偏移量,决定了小数据包的组合顺序。
第一个小包 | 第二个小包 | |
---|---|---|
Identification | 0x0000 | 0x0000 |
Flags | 001 | 000 |
Fragment Offset | 0 | 1480 |
大小 | 1480 | 100 |
4、生存时间
TTL字段设置了数据包可以经过的路由器数目。一旦经过一个路由器,TTL值就会减1,当该字段值为0时,数据包将被丢弃。
报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。
注意:网络设备也可被配置为不向源端发送ICMP错误消息。
5、协议号
通过IP头部中的Protocol字段,来标识上层交给什么协议进行处理。
三、IPv4地址
1、简介
IP地址在网络中用于标识一个节点(或者网络设备的接口),用于IP报文在网络中的寻址。
IPv4地址共32bits,用点分十进制表示,分为四段,每段8bits。IPv4地址分为网络位和主机位。网络位用来标识一个网络,主机位用来标识此网络的其中一台主机。IPv4地址的范围0.0.0.0到255.255.255.255,0.0.0.0是未指定地址或默认路由,255.255.255.255是广播地址。
2、划分方式
IPv4地址的划分方式分为有类的划分方式和无类的划分方式。
1)有类划分
①A类地址:首位固定为0,前8bits是网络位,后24bits是主机位。
地址格式 | 地址范围 | 网络数量 | 主机数量 |
---|---|---|---|
0xxxxxxx.y.y.y | 00000001.y.y.y->01111111.y.y.y,1-127 | 2^7-2,全零不可用,全1本地环回地址 | 2^24-2 |
如果一个A类地址13.238.15.202,网络号为13.0.0.0,广播地址为13.255.255.255,网络号就是主机位全为0,广播地址就是主机位全为1。私有A类地址:10.0.0.0->10.255.255.255,10.0.0.0/8。IANA将公网地址分配给RIR,各国的运营商向RIR申请和购买地址,私网地址可以随便用。
②B类地址:前2bit是固定为10,前16bits是网络位,后16bits是主机位。
地址格式 | 地址范围 | 网络数量 | 主机数量 |
---|---|---|---|
10xxxxxx.xxxxxxxx.y.y | 10000000.00000000.y.y->10111111.11111111.y.y,128-191 | 2^14 | 2^16-2 |
如果一个B类地址131.136.25.234,网络号为131.136.0.0,广播地址为131.136.255.255。B类地址中169.254.0.0->169.254.255.255是微软的私有地址,私有B类地址:172.16.0.0->172.31.255.255,16个私有IP网段,172.16.0.0/12。
③C类地址:前3bits固定为110,前24bits是网络位,后8bits是主机位。
地址格式 | 地址范围 | 网络数量 | 主机数量 |
---|---|---|---|
110xxxxx.xxxxxxxx.xxxxxxxx.y | 11000000.00000000.00000000.y->11011111.11111111.11111111.y,192-223 | 2^21 | 2^8-2 |
如果一个C类地址192.168.9.88,网络号为192.168.9.0,广播地址为192.168.9.255。私有C类地址:192.168.0.0->192.168.255.255,192.168.0.0/16。
④D类地址:前4bits固定为1110。
地址格式 | 地址范围 | 用途 |
---|---|---|
1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx | 224.0.0.0->239.255.255.255 | 用于组播 |
⑤E类地址:前5bits固定为11110,保留地址。
2)无类划分
有类的方式不够灵活,A、B、C类地址都是通过首位的固定位数来确定的,所以采用掩码来划分,掩码用1表示地址对应位置是网络位,用0表示地址的对应位置是主机位,掩码的表示可以用/24或255.255.255.0。如果一个地址12.200.34.238 255.255.255.0,那么网络号为12.200.34.0/24,广播地址为12.200.34.255/24。
四、ICMP协议
1、简介
Internet控制消息协议ICMP(Internet Control Message Protocol)是IP协议的辅助协议。ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。ICMP消息的格式取决于Type和Code字段,其中Type字段为消息类型,Code字段包含该消息类型的具体参数。
2、Ping
ping是ICMP一个最常见的应用,主机可通过它来测试网络的可达性。用户运行ping命令时,主机向目的主机发送ICMP Echo Request消息。Echo Request消息封装在IP包内,其目的地址为目的主机的IP地址。目的主机收到Echo Request消息后,向源主机回送一个ICMP Echo Reply消息。源主机如果收到Echo Reply消息,即可获知该目的主机是可达的。假定某个中间路由器没有到达目的网络的路由,便会向源主机端返回一条ICMP Destination Unreachable消息,告知源主机目的不可达。
五、IPv4地址配置及基本应用
1、IP地址的基础配置命令
[H3C] interface GigabitEthernet0/0
[H3C-GigabitEthernet0/0] ip address ip-address { mask | mask-length }
2、配置接口IP地址
①物理接口:物理接口是指网络设备上实际存在的接口,分为负责承担业务传输的业务接口和负责管理设备的管理接口,例如GE业务接口和MEth管理接口。
②逻辑接口:逻辑接口是指能够实现数据交换功能但物理上不存在、需要通过配置建立的接口,需要承担业务传输,例如VLANIF接口、Loopback接口。用户需要一个接口状态永远是Up的接口的IP地址时,可以选择Loopback接口的IP地址,特点如下。
- Loopback接口一旦被创建,其物理状态和链路协议状态永远是Up,即使该接口上没有配置IP地址。
- Loopback接口配置IP地址后,就可以对外发布。Loopback接口上可以配置32位掩码的IP地址,达到节省地址空间的目的。
- Loopback接口不能封装任何链路层协议,数据链路层也就不存在协商问题,其协议状态永远都是Up。
- 对于目的地址不是本地IP地址,出接口是本地Loopback接口的报文,设备会将其直接丢弃。
3、网络IP地址规划
IP地址规划要和网络结构、路由协议、流量规划、业务规则等结合起来考虑。IP地址的规划应尽可能和网络层次相对应,应该是自顶向下的一种规划。总得来说: IP地址规划的目标是:易管理、易扩展、利用率高。
六、ARP
ARP(Address Resolution Protocol,地址解析协议)就是用于动态地将IP地址解析为MAC地址的协议,也是网络层协议的一种。主机通过ARP解析到目的MAC地址后,将在自己的ARP缓存表中增加相应的IP地址到MAC地址的映射表项,用于后续到同一目的地报文的转发。
①当A给B发数据,icmp request:| sip:1.1.1.1 dip:1.1.1.2 | smac:A dmac:?,A因为数据包无法封装完整,会发送arp request请求B的MAC地址。
smac:A | dmac:ffff |
send mac | A |
send ip | 1.1.1.1 |
target mac | 0000 |
target ip | 1.1.1.2 |
②B收到arp request,因为dmac为广播就会解封装,B就可以拿到A的mac地址形成arp表。并且发现A要请求我B的mac,就会给A回复arp reply。
IP地址 | MAC地址 |
---|---|
1.1.1.1 | A |
smac:B | dmac:A |
send mac | B |
send ip | 1.1.1.2 |
target mac | A |
target ip | 1.1.1.1 |
③主机A拿到1.1.1.2的MAC地址,形成ARP表,数据包封装完整就可以发出去了,主机B收到icmp request,回复icmp reply。
地址 | MAC地址 |
---|---|
1.1.1.2 | B |
七、RARP
主机只知道自己的硬件地址时,可以通过RARP解析自己的IP地址。RARP常用于无盘工作站启动前获取自身IP地址。在刚刚启动时,无盘工作站只知道自己网卡的MAC地址,需要获得自己的IP地址,于是向网络中广播RARP请求。RARP服务器接收广播请求后发送应答报文,无盘工作站随即获得IP地址。
RARP服务器要响应请求,首先必须知道物理地址与IP地址的对应关系。为此,在RARP服务器中维持着一个本网段的“物理地址和IP地址”映射表。当某无盘工作站发出RARP请求后,网上所有主机均收到该请求,但只有RARP服务器处理请求并根据请求者物理地址响应请求。无盘工作站发出的RARP请求中携带其物理地址,服务器根据此硬件地址査找其IP地址。由于服务器此时已经知道无盘工作站的物理地址,因此不再采用广播方式,而是直接向无盘工作站发送单播应答。
对应于ARP、RARP请求以广播方式发送,ARP、RARP应答一般以单播方式发送,以节省网络资源。