IP协议详解

IP协议是网络层一个重要的协议。

我们知道网络层的主要任务是地址管理和路由选择,

地址管理就是通过制定一系列规则通过地址来描述一台设备在网络上的位置。

路由选择就是在网络中规划合适的路径进行传输。

IP报文格式:

4位版本:描述了当前协议的版本号,目前使用的是大多是ipv4或者ipv6。

4位首部长度:描述IP协议报头的长度,是可变的,在“选项(如果有)”这里可以设置增加首部长度。

8位服务类型(TOS):这八位字段包括3位优先权字段(已经弃用),4位TOS字段,以及1位保留字段(必须置为0)。其中这4位OST字段,分别表示IP协议的不同状态,包括最小延时,最大吞吐量,最高可靠性,最低成本。当然一个IP协议只能有这四个状态中的一个,所以当对应位设为1时,就表示是那种状态。

16位总长度(字节数):描述了IP数据包的最大长度。IP协议包长度是存在限制的,但是IP协议指出拆包组包功能。

下面三个:16位标识,3位标志,13位片偏移:共同支持了IP数据包的组包拆包功能。

IP 数据包分包组包的过程:

1为什么要分包?
2分包组包过程中和哪些 IP 报头字段有关联?
3组包时如何保证数据的顺序和完整性?

1分包的主要原因是数据在传输过程中可能会受到网络带宽限制,或者路由器最大传输单元MTU限制,通过分割数据包,分割成小的片段,更易于在网络中传输,他们可以走不同的传输路径,提高了效率以及可靠性。

2(1)标识符片段:用于标识数据包,属于同一个数据包的片段的标识符是相同的。

(2)标志片段:DF(Don't Fragment):如果是1,代表不同意拆包,

MF(More Fragments):如其名,标识是否还有分片(可以理解为这个包是不是最好一个分片)

(3)片偏移字段:标识分片在数据包的位置,便于后续组包。

3通过上述三个标志位。此外还有TTL机制(8位生存时间TTL),单位是次数,描述了数据包生存时间,每经过一个路由器就会-1,至到为0时会被丢弃,这就防止了数据包一直在网络里乱转,防止被滞留在网络中。

8位协议:描述IP数据包的载荷部分,用到是UDP协议(就是UDP数据包)还是TCP协议(就是TCP数据包)。

16位首部校验和:用于校验IP协议首部(因为载荷部分的话,TCP/UDP本身是有校验和的)。

下面介绍IP地址

IP地址用来描述一台设备在网络上的地址,是一个32位的整数,为了方便,通常写成四个十进制的整数,中间用.(点)隔开。也就是说能表示2^32次方个地址,大概42亿,理论上IP地址是不可以重复的,但是随着互联网不断发展,甚至是物联网的时代,一台冰箱,一台洗衣机都能上网,所以这个数字是远远不够的。

解决IP地址不够用的方法:

1.动态分配IP

谁要上网的时候才给谁分配IP地址,虽然提高了IP地址的利用率,但是没有从根本上解决问题。

2.NAT机制(网络地址转换)

把IP地址分为两大类:局域网(内网)和广域网(外网)。

(1)在同一个局域网的内网IP之间不能重复,不同局域网的内网IP可以重复。

(2)外网IP不能重复。

(3)如果一个IP地址以10.*,172.16.*~172.31.*,192.168.*这种一般都是局域网IP。一般想一个学校,一个小区,等等都是一个大的局域网。

NAT工作机制:

当主机1想访问服务器时,就会构造数据包,IP数据报文格式中的源IP和目的IP就是此时主机1的IP地址和要访问的外网IP地址。

IP数据报:

当数据包经过路由器时,路由器会对IP进行替换,替换成能在广域网是使用的IP,同时它相当于一个映射表,会记录这次替换,待到服务器返回响应时,路由器会根据这个映射关系,把IP再替换回去。

如果一个局域网内同时有多个设备访问同一个外网服务器呢,那么路由器在收到响应后就会根据端口号进行区分,判断应转发回哪台主机。

端口号不仅可以区分一台主机的不同进程,还能区分不同主机的不同进程。

如果两台主机端口号也一样呢,那么路由器就会对端口号进行替换,并记录这次映射关系。同样的收到响应后会根据这个映射关系再换回来并传回响应。

如果端口本来就不相同,就不需要再进行多余的替换,只换IP地址。

当前网络是以动态分配加NAT机制对IP地址进行管理。

3IPv6

相比于IPv4用4个字节标识IP地址,IPv6采用16个字节。也就是可以表示2^32*2^32*2*32*2^32个地址。非常非常大。从根本上增加了可用ip数量。

大部分设备虽然用的还是IPv4,但是已经可以支持IPv6,可以启用。(注:IPv4和IPv6不兼容)。

IP地址网段划分

把一个IP地址分为两部分,网络号(标识了一个局域网)加主机号(表示了一个局域网中的主机)

一个IP地址哪部分是网络号,那部分是主机号是根据具体的方法来确定的。

1地址分类:把IP地址分为五大类

各类地址的表示范围是:

A类:0.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

E类:240.0.0.0~247.255.255.255

网络号为127的地址是环回地址,即是用于自身主机的,一般用来测试本主机的进程通信,还有排查一些网络问题等等。

主机号全为0的表示网络号(本网络);

主机号全1的表示一个广播地址(该网络中的所有主机)。

注意给主机分配的时候应避开特殊的IP。

在上述的分类中,存在以下问题:来自于IP协议——网段划分-腾讯云开发者社区-腾讯云

(1)IP地址空间的利用率降低:一个B类网络中最多可以表示的IP地址为65534个,而某些种类网络由于链路的特点能够连接的结点个数有限,所以就会造成大量的IP地址浪费;由于C类网络能连接的结点个数有限。所以,单位会申请B类网络,但一般又用不了这么多的IP地址,所以会造成IP地址的浪费。同理,A类网络的IP地址也会造成大量的浪费;

(2)如果给每一个物理网络都分配一个网络号,就会导致路由表过大。此时就会造成路由表的管理成本增加,同时查询的效率也会增加。

(3)当一个单位申请了一个网络号。他想将该网络能表示的IP地址再分给它下属的几个小单位时。如果在申请新的网络就会造成浪费。

        为了解决上述的问题,引入子网划分的概念。

2子网划分,子网掩码

子网掩码是一个32位的点分十进制整数,把这个转化为32位就是11111111111111111111111100000000,前面为1的都是网络号,为0的是主机号。(不会出现1和0交替出现)

路由选择

IP协议两大功能是地址管理和路由选择,路由选择描述了IP数据报的转发过程。

IP数据报在网络传输过程中要被路由器转发,一个路由器它并不知道全局的最佳路径,只知道一些局部信息,比如和它相邻的节点,它里面有一张路由表,这个表包含了目的网络地址、相关网络节点、对某条路径的满意程度、预期路径信息等,路由器之间通过传输多种信息来维护这个表,路由器通过分析来自所有其他路由器的最新消息来构造一个完整的网络拓扑图,这样数据报在经过路由器的时候就会按照规划好的路径来走。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值