IP协议,即Internet Protocol,是TCP/IP协议簇的网络层协议,提供无连接、不可靠、尽力而为的服务。
数据传输的大小受到MTU(最大传输单元,Maximum Transmission Unit)的限制。因此,对于过大的数据包,需要进行分片处理,每个片都是一个IP数据报。
但是分片发送数据会导致数据丢包的几率更大。
IP地址的基本格式为xxx.xxx.xxx.xxx
,由四段组成,每个字段是一个字节,总共4字节,每个字节有8位,最大值是255。
IP地址由两大部分组成:网络号(前三个字节)和主机号(最后一个字节),二者是主从关系。
网络号:它标志主机(或路由器)所连接到的网络,网络地址表示其属于互联网的哪一个网络
主机号:它标志该主机(或路由器)属于网络中的哪一台主机。
过去曾经提出一种划分网络号和主机号的方案,把所有IP地址分为五类:
一个IP的组成为:
<网络号>.<主机号>
然而实际上,大多数组织会申请B类IP,因为A类IP的主机数过多,大多数情况下不会存在一个子网下有这么多主机,C类IP主机数又太少,所以导致大量的IP被浪费了。
针对此情况,又提出了一个新的子网划分的方式:CIDR
CIDR,即无分类域间路由选择(Classless Inter-Domain Routing)。它完全摒弃了传统的IP分类方式,而使用子网掩码区分一个IP的网络号和主机号,使得网段划分更加灵活。
子网掩码是32位整数,由高位的n个连续1和低位的32-n个连续0组成。将子网掩码同IP地址按位与,得到的就是网络号,其余的就是主机号,比如说:
IP : 141.14.72.11 子网掩码 : 255.255.255.0
两者按位与得到141.14.72.0,这就是网络号,而11是主机号。
因此,新的IP表达方式为:<网络号>.<主机号>/<网络号的位数>
,所谓网络号的位数就是子网掩码前缀1的数目。
利用这种方法,上述例子中的IP就是141.14.72.24/24
。
将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网;
将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;
127.*的IP地址用于本机环回(loop back)测试,通常使用127.0.0.1
。
公网IP:由Inter NIC(因特网信息中心)负责,用来分配给向Inter NIC提出申请的组织机构。
公有IP**全球唯一,通过它可以直接访问因特网(能直接上网**)。
公网IP主要有A、B、C、D、E五类地址:
A类:地址范围 1.0.0.0 ~ 127.255.255.255
,主要分配给大量主机而局域网网络数量较少的大型网络;
B类:地址范围128.0.0.0 ~ 191.255.255.255
,一般用于国际性大公司和机构;
C类:地址范围192.0.0.0 ~ 223.255.255.255
,一般用于小公司、校园网、研究机构等;
D类:地址范围224.0.0.0 ~ 239.255.255.255
,第一个字节以1110
开头,用做广播地址;
E类:地址范围240.0.0.0 ~ 255.255.255.255`,暂时保留。
私网IP:属于非注册地址,专门为组织机构内部组建局域网使用,不能直接上网。
私网IP主要有A、B、C三类:
A类:地址范围10.0.0.0 ~ 10.255.255.255
。1个A类网络地址,共约1677万个IP地址。
B类:地址范围172.16.0.0 ~ 172.31.255.255
。16个B类网络地址,共约104万个IP地址。
C类:地址范围192.168.0.0 ~ 191.168.255.255
。256个C类网络地址,共约65536个IP地址
注:私网IP分别是公网IP中A、B、C三类地址中的一部分,只是被划分出来单独用作私网组建。
管理员可以通过手动的方式分配IP地址,也可以通过DHCP(动态主机配置协议)来完成。
通过配置,DHCP可以为想要入网的主机分配固定的IP地址,也可以分配临时的IP地址,每次网络连接时该地址可能是不同的。
除了地址分配,DHCP协议还会允许主机获得子网掩码、默认网关、DNS服务器等网络配置信息,使其能够顺利联网。
上述过程通过报文交互的方式完成。
NAT,即网络地址转换(Network Address Translation),运行在路由设备上,是一种把私网IP转换为公网IP的技术,用于解决IPv4地址不足的问题。
NAPT,即网络地址端口转换(Network Address Port Translation),在NAT的基础上又加入了端口映射。
一台主机通常只有一条物理链路链接到网络,主机与物理链路之间的边界称为接口。而对于路由器,至少需要一条链路接收数据、另一条链路发送数据,因此路由器有多个接口(至少两个)。
每台主机与路由器都能发送和接收IP数据报,因而IP要求每台主机和路由器接口都拥有自己独立的IP地址。因此,从技术上讲,一个IP地址与一个接口相关联,而不是与包含该接口的主机或路由器相关联。
WAN,即Wide Area Network,代表广域网,是路由器与运营商网线相连的接口,对应WAN口IP。
LAN,即Local Area Network,代表局域网,是计算机与路由器相连的接口,对应LAN口IP。
当局域网内的某台主机想要访问公网上的某台服务器时,它会将数据报发送到路由器LAN口,数据报中包含源IP和TCP/UDP协议的源端口号、目的IP和TCP/UDP协议的目的端口号。
NAPT路由器内部维护一张NAPT转换表。NAPT路由器收到数据报后,会为其生成没有出现在NAPT转换表中的新端口号替换源端口号,并用WAN口IP替换源IP,从而形成(新的IP,端口号),将(新IP,端口号):(源IP,源端口号)的映射关系存储在表中。
数据报的传输可能会经过N跳路由器,每一跳都会经历上述IP和端口号替换的过程。
数据报到达服务器后,服务器会发送响应报文。报文每到达一个路由器,就通过查找NAPT转换表的方式找到源IP和源端口,直到到达目的主机。
注:NAT与NAPT的区别在于,NAT内部使用了不同的IP进行映射,而NAPT使用了一个WAN口IP和不同的端口号进行映射。
IPv4采用32位地址长度(4字节),约有43亿地址.
IPv6地址为128位(16字节),但通常写作8组,每组为四个十六进制数的形式。
例如:FE80:0000:0000:0000:AAAA:0000:00C2:0002
ICMP协议,即控制报文协议(Internet Control Message Protocol),是网络层协议之一,起到辅助IP协议的作用。
ping命令基于ICMP协议,用来测试网络的连通性,其工作的基本过程为:
基本使用格式:ping+主机名/IP地址,如:ping www.baidu.com
注:ping命令基于网络层协议,因此不存在端口一说。
traceroute命令同样基于ICMP协议,用来检测发出数据包的主机到目标主机之间所经过的网关数量。
基本使用格式:traceroute+主机名/IP地址,如:traceroute www.baidu.com