文章目录
一、IP协议感性认知
简介
P是整个TCP/IP协议族的核心,也是构成互联网的基础。
IP位于TCP/IP模型的网络层(相当于OSI模型的网络层),它可以向传输层提供各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。
IP所提供的服务大致可归纳为两类:
-
IP信息包的传送。
-
IP信息包的分割与重组。
协议版本:ipv4、ipv6【其中v为version】
特点
适应性强、简洁、可操作性强、可靠性较弱,可能会出现丢包、重复、乱序的情况。
二、IP协议报头结构
4位版本
声明ip协议版本,取值范围为{4,6}。这里边主要介绍ipv4。
4位首部长度
由于ip报头有一个选项的部分,是变长的,所以需要一个专门的变量标志ip报头有多长。
单位为4字节。2^4=16,即表示的范围为0*4~15*4
即0~60
8位服务类型
服务类型,即Type Of Service,简称TOS。
实际上只有4位有效,这四位只有一位是1,其他都是0。
4位就表示ip协议的四种形态/四种工作模式。分别是最小延迟、最大吞吐量、最高可靠性、最小成本。
- 最小延时:表示当前模式选择是包裹最快送达
- 最大吞吐量:单次送的“快递”最多
- 最高可靠性:丢的概率最小(但还是比不上TCP)
- 最小成本:运送时消费最低。
注意:他们四个是互斥的,不可以同时选择!!具体选择哪个需要看业务要求
不过实际开发中因为它有一个默认的值,并且影响不太大,所以很少单独去设定。
16位总长度
它描述了一个ip数据包的长度。
总长度=ip数据头+载荷(一个完整的TCP/UDP数据包长度)
这里16位并不代表着一个ip数据包最大只能表示的范围是64kb?
答:是也不是,因为ip本身支持对包的拆分和组合,一个IP数据包携带载荷太长了,超过了64kb,就会在网络层进行数据进行拆分。把一个数据拆分成多个ip数据报,再分别发送,接收方再重新拼装。
这里拆分的单位也不一定就恰好是64kb.可能会更小。这里取决于数据链路层的情况(相当于取决于路况,拥挤了就少量多次嘛)
16位标识
它标识同一个数据拆成多个包的标识。
3位标志:结束标志(null)
13位片偏移:标识了多个包的先后顺序。
这两个物理量都是辅助拆包的字段。
8位生存时间(TTL)
TTL是Time To Live的缩写,是一个数据在网络上能够传输的最大时间。
它的单位并不是想当然的s/ms,而是次。
对于这个次,我们怎么理解呢?一个数包构造出来,会有一个初始的TTL值。这个数据报每经过网络转发设备一次,TTL的值都会减1。当这个值变成0时,还没到终点,那么计算机就认为它永远也到不了,可以丢了。
8位协议
描述了当前载荷部分内容属于哪个协议的TCP/UDP。
16位首部长度
只校验首部,因为载荷自身协议已经有校验和了~~
32位源ip&32位目的地址
这是ip协议报头中最重要的部分。在这部分,我们需要理清楚下边这几个问题:
-
点分十进制是什么?它有什么意义?
在计算机中,源ip地址和32位目的ip是实打实的32位2进制数字。而我们通常看到的却不是这样的,我们看到的通常是类似这样
61.185.187.142
的一串数字。这其实就是我们所说的点分十进制,这是给我们看的,上边的32位2进制数字是给电脑看的。这是转成了分割开来的4个字节,每部分用0255即0FFH标识。
-
IP地址相同了怎么办?
我们总是期待每个设备的ip都不同。但是随着信息技术的发展,ip貌似是不够用的。这怎么说?智能手机、电脑的普及、物联网技术的发展,必然会导致大量的ip被分走。那么ip地址不够用貌似也不是太遥远的事情。
那么我们应该怎么办呢?解决方案很多,例如:
-
动态分配ip地址
不用了回收ip地址。虽然这也是一种可行的办法,但是这样治标不治本,极端情况下,倘若某个时刻,全部的网络设备都想要连接网络,那恐怕也是不行的。
-
NAT网络转换
什么是NAT网络转换
NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:例如,很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP。全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的 。
NAT技术是是路由器的一个重要功能 ,本质上是使用一个ip代表一批ip。
NAT机制,可以有效的解决ip不够用的问题。但同时也带来了副作用:网络环境更加复杂 了……
-
ipv6
它从根本上解决了ip不够用的问题。为什么这么说呢?我们来看数据:ipv6使用16个字节表示Ip地址,那也就是128个比特位,对应的ip地址范围就是0~2^128-1即
42亿*42亿*42亿*42亿
,显然这是一个极大的数据。虽然ipv6很好,但是现在我们全面还没有启动。同时ipv4和ipv6网络互不相同,也就是说他们不兼容。
有一些网络设备,可以把ipv6和ipv4之间相互转换,近几年的路由器都是同时支持ipv4和ipv6的。
-
三、网络地址管理
网段划分
ip地址分为两部分:网络号和主机号。其中网络号标识局域网,主机号标识主机。
例如:192.168.0.10中,前三个字节表示的就是网路号,最后一个字节表示的就是主机号。
下边我们结合一个典型的局域网环境进行进一步说明:
网络号和主机号的划分都是可以动态调整的,并不一定前三个字节一定是网络号,最后一个是主机号。
那么究竟怎么划分呢?有没有什么可以参考的规则呢?
这里涉及到一个概念:子网掩码
子网掩码 (subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。. 子网掩码不能单独存在,它必须结合IP地址一起使用。. 子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。. 子网掩码是一个32位地址,左边全为1,右边全为0,1的部分描述了用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。子网掩码的设定必须遵循一定的规则。
对于家用设备而言,最常见的子网掩码就是255.255.255.0。
特殊的IP:
局域网:IP地址中的主机地址全部设成0即全都是网络号
广播地址:主机地址全部设成1,就是广播地址
环回地址:主要用于测试。
127.*.*.*
,通常是127.0.0.1主机号位1,比如192.168.0.1,通常是网关IP,但是不绝对,都是可以配置的。
路由选择
IP协议这里还涉及到一个路由选择,这里很复杂,但面试不考,我们这里有个了解即可。
路由选择就是规划路径。因为网络环境非常复杂,所以路由器很难感知到网络的全貌,它最多认识附近。换而言之,数据报在转发的过程中,需要边走边问。
每个路由器都会保存一定范围设备的信息,保存这些内容的叫做路由表。每有一个ip包经过路由器就需要匹配路由表,看怎么走,如果有匹配项就接着走,若没有,会提供一个默认路径,但是若同时TTL变成0了,它就迷路了,这个包就丢了。