简单了解IP协议的相关特性

1.IP协议的报头解析

Version:版本号,目前大规模使用的版本只有4和6,即IPv4和IPv6;

IHL:4位首部长度,IP协议的报头长度是可变的,单位为4字节,IP协议的报头长度范围是20~60字节;

Type of Service:8位服务类型,分为3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置0),4位TOS字段彼此之间是冲突的,只能有1位置1,表示的意思分别是:最小延时,最大吞吐量,最高可靠性,最小成本;

Total Length:表示IP数据包的长度,占用两个字节,因此IP协议单个数据包能够支持传输的最大长度为64kb;

Identification:表示IP数据包的标识,用于IP协议拆包和组包的功能中;

Flags:占用3个位,其中一位用于标识是否允许拆包,另外一位用于标识是否是最后一个包;

Fragment:片偏移,描述拆包后,数据包的相对位置;

Time to Live:8位生存时间,指的是数据包还能在网络上存活多久,TTL的单位是次数,每经过一个路由器,TTL就减1,如果TTL已经耗尽,还没有抵达接收方,数据包就会被丢弃掉。

Protocol:8位协议,描述IP数据包载荷部分传输协议使用的哪个协议,类如TCP或者UDP;

Header Checksum:IP部首的校验和,只校验IP报头,不校验IP数据包载荷;

Source Address:源IP地址,描述发送端主机在网络上的位置,是一个32位的整数,通常采用点分十进制标识;

Destination Address:目标IP地址,描述接收端主机在网络上的位置,也是一个32位的整数,通常采用点分十进制来表示;

Options:可选项,通常每个可选项是4个字节,可选项是可以配置的,因此IP报头长度可变;

2.IP地址不够用的问题

       IP地址是一个32位的整数,理论上可以有2^32个地址,约为42亿9千万个地址。随着互联网的迅速发展,实际上能够接入网络中的设备数量早已超过了这个数值,这就有了IP地址不够用的问题,那么该如何解决这个问题呢?

方案一:动态分配IP地址

       动态分配IP地址,即设备需要接入网络,就分配一个IP地址,不需要接入网络就不分配IP地址。这个方案提高了IP地址的复用率,但是并不能从根本上解决问题。虽然如此,这个方案仍然被广泛应用了,就是DHCP协议。

方案二:NAT机制

       NAT机制即网络地址转换机制,本质上是让一个IP地址,代表很多设备。

       IP地址分为两类,一类是内网IP,也叫局域网IP,另外一类是外网IP,也叫广域网IP。形如"10.*.*.*","172.16.*.* ~ 172.31.*.*","192.168.*.*"这几种格式的IP地址,就属于内网IP。同一个局域网内部,内网的IP地址是不可以重复的,不同的局域网IP地址重复了没有影响;除了内网IP,剩余的IP地址都是外网IP,外网IP是不能重复的。

       NAT机制是让一个IP地址,代表很多的设备,实际上就是代表一个局域网里面的设备,也可以说局域网里面的设备共用一个外网IP。当局域网内部的设备想要访问外网,就需要把数据包发送给运营商的路由器,再由运营商的路由器完成外网IP的替换,进行访问。服务器收到请求后,同样也是向外网IP地址返回响应,也就是回到运营商的路由器,再由路由器将响应返回到局域网内部的设备。经历以上过程,局域网内部的设备就完成了一次外网访问。如下图:

       例如,192.168.0.101想要访问123.139.60.126,IP数据包先传输到运营商路由器,完成IP地址的替换。原来的数据包的源IP地址就替换为36.112.177.216,在广域网上经过一系列转发,到达123.139.60.126;服务器收到请求后,返回响应,将数据发送给36.112.177.216,运营商路由器收到响应后,查表找到123.139.60.126和192.168.1.101的对应关系,再把数据返回给192.168.1.101;

       如果192.168.1.102也访问了123.139.60.126,运营商路由器该如何识别将返回的响应传给哪台局域网的主机呢?运营商路由器不仅仅会记录源IP和目标IP的对应关系,而且还会记录源端口,通过端口号来区分局域网内部的主机,这样根据返回响应报文的目标端口号,路由器就知道将这个报文返回哪台主机。路由器会形成类似下面的映射表:

如果恰好端口也相同,这种情况路由器会将端口号替换成不同的,这样就保证了响应传回来能够传给对应的主机。

       我们当前使用的方案就是这个方案,局域网同时采用了方案一,即动态分配IP的做法,共同解决IP地址不够用的问题。

NAT最大的优势在于它是一种纯软件的方案,用户不需要额外的投入即可使用。采用这个方案内网的设备可以主动访问外网,但是外网的设备不能主动访问内网设备,这种方式同时也保护了局域网设备的安全。

方案三:IPv6

       无论是方案一,还是方案二,都没有增加IP地址的数量,都不是从根本上解决问题。IPv6则是增加IP地址数量,从根本上解决问题。IPv6地址是一个128位的地址,地址数量为2^128个,这是一个天文数字,足够为每一个接入网络的设备都分配一个单独的IP地址。虽然现在很多设备都支持了IPv6,但是IPv6还没有广泛使用,目前用到最多的还是IPv4。

3.网段划分

       网段划分是指把一个IP地址分为两部分,一部分为网络号,另一部分为主机号。比如IP地址:192.168.1.100,可以分成192.168.1 + .100;前面的部分就是网络号,后面的.100就是主机号。

       区分网络号和主机号,还需要用到一个子网掩码,子网掩码和IP地址一样,也是个32位的数字,同样也是用点分十进制进行表示。例如:255.255.255.0,就实际上写成二进制就是:11111111 11111111 11111111 00000000;前面的“1”表示IP地址中网络号占的位,后面的"0"表示主机号占的位。例如:子网掩码为255.255.254.0,那么IP地址192.168.1.100的网络号就是192.168,主机号就是.1.100。

       特殊的IP地址:如果一个IP地址主机号全部是0,那么这个IP地址就是一个网络号,例如IP地址192.168.1.0(子网掩码255.255.255.0),局域网中是不能给主机分配这个IP的;如果一个IP地址主机号全部是1,就表示一个广播地址,例如:192.168.0.255(子网掩码255.255.255.0),这个IP地址也不能分配给具体的主机;如果一个IP地址是127开头的,那么这个IP就是一个环回IP,是用于和设备自身进行通讯的,经常用来做一些测试工作,主要目的是排除网络干扰。

4.路由选择

       IP协议有两个核心功能,一个是地址管理,上面提到的就是和地址管理相关的内容,另外一个就是路由选择。当路由器接收到一帧IP报文时,路由器也不知道具体服务器在网络上的哪个位置,路由器所知道的就是和自己相连的IP地址。每个路由器都有一个数据结构,也可以理解为路由表,用于存储路由信息。当接收到一个IP数据包,就根据表中的信息进行查询,如果查到了,直接转发到目标主机即可,如果没查到,就转发到默认地址,即下一跳的地址,再由下一个路由器进行查询。因此,IP数据包在转发的过程中,是一个“探索式”的过程,得到的路径不一定是最优解,通常是一个较优解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值