目录
一、基本概念
IP协议全称为“网际互连协议(Internet Protocol)”,IP协议是TCP/IP体系中的网络层协议。
1、网络层解决的问题是将数据从一台主机送到另一台主机,因此网络层解决的是主机到主机的问题。
2、一方传输层从上方进程拿到数据后,该数据贯穿网络协议栈进行封装和解包,最终到达对方传输层,此时对方传输层也会将数据向上交给对应的进程,因此传输层解决的是进程到进程的问题。
数据进行的网络传输一般都是跨网络的,而路由器就是连接多个网络的硬件设备,因此数据在进行跨网络传输时一定需要经过多个路由器。
确定数据路由的目的地后,数据就可以在网络中进行路由了,但数据在路由时无法自行进行路径选择,因为这个数据本身是“不认识路”的,因此数据在路由的过程中需要不断“找路人问路”,而这里所谓的“路人”就是网络当中的一台台路由器。
网络当中的路由器是“认识路的”,它们将自己的“认路经验”都记录到路由表当中,因此路由器可以通过查路由表找到去特定点的最短路径。因此数据在路由时,会不断通过路由器来进行路径选择,以此来一步步靠近目标网络或目标主机。
二、IP协议格式
以下是IP协议的头格式:
- 4位版本号(version):指定IP协议的版本(IPV4或IPV6),对于IPv4来说,就是4。
- 4位首部长度:用于指明首部的长度
- 8位服务类型:3位优先权字段已经弃用,4位TOS字段,和1位保留字段。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
- 16位总长度(total length):IP数据报整体占多少个字节。
-
16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
-
3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记
-
13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
-
8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
-
8位协议:表示上层协议的类型是使用TCP或者UDP。
-
32位源地址和32位目标地址:表示发送端和接收端。
三、IP地址
概念
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
组成
- 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
- 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
通过合理设置网络号和主机号,可以保证在相互连接的网络中,每台主机的 IP 地址都是唯一
分类
所有的IP地址可以分为两大类:内网IP和外网IP
- 内网IP:10.* 、172.16.*-172.31.* 和192.168.*
- 外网IP:其他的IP地址
说明:
- 外网IP必须是唯一的
- 同一局域网里面的内网IP一定是不一样的
- 不同局域网的内网IP可以是一样的
四、子网掩码
格式
此外,打开Windows当中的cmd窗口,通过ipconfig
命令可以看到大量以192.168开头的内网IP和子网掩码。
计算方式
网络号:子网掩码与IP地址进行“&(与)运算”
主机号:子网掩码先进行按位取反,再与IP地址进行“&(与)运算”
五、IP地址不够用问题解决方案
IPV4地址由于是32位即2^32=42亿9千万,计算机网络发展到现在,现有的IPV4地址已经开始不够用了,因此为了缓解这种问题,采用以下方案:
(1)动态分配IP地址
当有些IP地址没有在使用时并进行回收,动态的把这些空闲IP地址分配给其他主机
(2)采用NAT方式
NAT方式区分内网IP和外网IP,让一个局域网的许多个内网IP使用一个外网IP,外网区分内网的数据,就是通过端口号来区分的。网络的连接,是一个 五元组,即使是 IP 相同也没事。
- 外网IP可以在互联网随便访问外网IP
- 内网IP访问其他局域网的内网IP是不被允许的
- 外网IP访问内网IP也是不被允许的
- 当内网IP访问外网IP时,需要对应的局域网的路由器设备触发NAT机制进行IP替换,将网络数据报的源IP替换成自己的IP
(3)采用IPV6协议
IPV6协议采用的是16个字节,128位来表示IP地址,即IPV4的4次方,这样可以彻底解决IP地址不够用的问题。