IP协议的相关特性

目录

IP协议的报头结构

如何解决IP地址不够用的问题

IP协议的特性


IP协议的报头结构

  IP协议是工作在网络层的重要协议,通过不同IP地址的选择,主要解决广域网中主机与主机之间的通信。IP协议的报头结构如下:

4位版本号:描述该数据报是ipv4的版本,还是ipv6的版本。其他的ip版本,可能存在于实验室中,但是没有真正大规模使用。

4位首部长度:规定了ip报头的长度,范围是4bit,0-15,单位为4字节。即ip报头最长可达4*15=60字节长度。最短是20字节。

8位服务类型(type of service):其实只有4位有效,4位是互斥的,只有其中一位为1。

16位总长度(字节数):规定整个ip数据包的长度(报头+载荷)。16位,表示范围0-65536,最长64kb。

注:ip自身实现了拆包组包的功能,如果携带的数据,超出长度上限,ip就会自动拆分成多个数据包,每个数据包携带一部分数据,发送到对方之后,再拼接好。

假设这个数据很长,超出了64kb上限,就会把上述数据拆成多个部分,使用多个ip数据包来进行发送。

接收端如何知道收到的数据包如何合并?

靠这三个属性:

16位标识:用来区分哪些数据包要合并。

3位标志:只有两个有效,其中一个用来表示,该数据包是否是触发了拆包的效果。(是否需要组包)另一个标志位,结束标记,当前包就是最后一个需要组包的部分。

13位片偏移:若干个要拼接的数据包的先后顺序。

8位生存时间(TTL):限制ip数据包要在网络上转发的最大次数。一个ip数据包,初始情况下,有一个TTL的值(32/64这样的整数)。这个次数每次经过一个路由器的转发,就要-1,减到0了这个数据包就要丢弃掉。这个初始值是可配置的(系统内核的参数)。

8位协议:这里描述了载荷部分是哪种协议的数据包,交给TCP还是UDP还是其他的协议。

注:一个数据包在分用的时候,要交给上层哪个协议,都是有明确声名的。

传输层 =>应用层 :端口号来区分

网络层 =>传输层 :报头中有这个8位协议字段,不同的取值对应不同的传输层协议。

数据链路层 => 网络层:报头里,类型字段,区分是ip数据报,还是其他数据报。

16位首部检验和:校验和,只是针对ip首部进行校验,载荷部分不关心。载荷部分,UDP/TCP都有各自的校验和。ip只需要管好自己即可。

32位源ip地址,32目的ip地址:规定发送方ip地址和接收方ip地址。

如何解决IP地址不够用的问题

  ip地址采用点分十进制的方式表示。如:192.168.2.103

是一个32位的整数,每个点之间是8个比特位(一个字节),共4*8=32位。每个字节表示范围0-255。

随着移动互联网的发展,ip地址逐渐不够用,怎么办?

方案一:动态分配ip地址

某个设备,上网就分配,不上网就不分配。但是这样的机制只能缓解,没法从根本上解决问题。ip地址并没有变多。

方案二:NAT机制,网络地址映射

首先,把ip地址,分成两个大类。

1)私网ip(供局域网内部使用)

10.*

172.16-172.31.*

192.168.*

以上三类ip,约定为私网ip,其余的称为公网IP。

2)公网ip(广域网使用的)

约定公网ip唯一,私网ip允许在不同的局域网中重复。局域网1中的设备ip可以和局域网2中的设备ip重复。

注:1)同一个局域网内部设备之间ip地址是不能重复的,可以正常交互通信。

2)广域网和广域网设备之间ip也是唯一的,可以正常通信

3)局域网1中的设备访问局域网2中的设备,是不允许的

4)局域网中的设备访问广域网设备,需要借助NAT机制

5)广域网设备访问局域网设备,也是不允许的

如果需要进行局域网设备和局域网设备之间的通信,往往需要搭配广域网中的服务器,进行数据转发。

NAT机制,也没有增加ip地址,但是极大的提高了ip地址的复用情况,使用一个公网ip,代表一组设备了。

假设由我的电脑向服务器发送消息,模拟过程如下:

运营商路由器,也可以把它当成一个NAT设备。它会对中间经过的数据包,进行网络地址转换。当内网设备经过运营商路由器访问外网的时候,就会把ip数据包中的源ip,替换成它自己的ip

数据到达服务器后,服务器就会看到一个5.6.7.8ip的设备,给它发了一个请求。服务器对于我们自己电脑真实的内网ip,是一无所知的。

同样,服务器要返回对应数据,也会先返回给运营商路由器。

运营商路由器内部,维护了一个”映射关系“,会记录当前这个请求相对应的是哪个内网中的设备,从而把目的ip替换回最初的内网ip。

方案三:IPv6

当前网络世界,通过动态分配+NAT机制确实能解决ip不够用问题,但是这样就给网络复杂程度增加了不少。如果随着设备的进一步增多,NAT可能也不够用了。

于是就引入更长的字节数来表示ip地址,ipv6使用16个字节(128位)表示ip地址。

足以给地球上的每一粒沙子分配一个不同的ip!!

IP协议的特性

ip协议的两大特性:1)地址管理 2)路由选择

地址管理

地址管理规定了ip地址的样式,以及相关规则。

同一个局域网的主机,要按照一定的规则分配ip地址。把一个ip地址分成两个部分。前半部分是网络号 => 标识局域网   后半部分是主机号 => 区分同一个局域网中的不同主机

同一个局域网内部,主机之间的ip,网络号相同,主机号要不同

但不能说,网络号相同,则在同一个局域网中

局域网之间,网络号可以相同。但是两个相邻的局域网(同一个路由器,wan口和lan口处于两个不同局域网)网络号不能相同。一旦相邻的局域网网络号相同了,就不能上网。

如何区分32位ip地址中,哪些是网络号,哪些是主机号呢?

引入概念:子网掩码(Mask)

子网掩码也是32位整数,左半部分都是1,右半部分都是0。01不会交替出现。

为1的位置标识网络号,

此处前3个字节(24位)是网络号,后一个字节,8位是主机号。

过去曾经提出一种划分网络号和主机号的方案,把所有的ip地址分为五类,如下图:

路由选择

路由选择则描述了ip协议传输过程中,路径是如何进行选择的

网络中,路由器的寻路,无法做到”最优解“,只能做到”较优解“。每一台路由器,无法知道整个网络的”全貌“。但是可以知道它附近的网络设备情况是咋样的。对于路由器来说,在转发数据的时候,很可能无法一下知道目的ip所对应的设备如何到达,只能通过“探索式”方式,逐渐找到最终的目标。

每个路由器,虽然无法感知到整个网络结构的全貌,但是可以认识到它周围的网络设备,路由器中,会维护一个数据结构,路由表,记录了周围的路径都是啥样的。

当路由器收到数据的时候,就会根据目的ip,查询路由表,看看在路由表中是否存在。如果存在,直接按照目标的位置继续转发即可。

如果不存在,就会从路由器中,挑选一个最优的路径(称为路由表中的“下一跳表项”)出来,把数据交给这个路由器。

以上,关于ip协议,希望对你有所帮助。

  • 28
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值