网络层最重要的协议—IP协议

IP协议是网络层的核心,主要负责数据包的路由与传输。为解决IP地址不足,采用动态分配、NAT转换和IPv6升级。动态分配和NAT提高地址利用率,但未根本解决问题,IPv6通过扩展地址长度至128位从根本上解决了IP地址耗尽问题。此外,IP协议包含版本、首部长度、总长度、标识、标志、片偏移、TTL、协议、校验和、源/目标IP地址等字段,用于数据报的拆分与重组、传输控制和错误检测。
摘要由CSDN通过智能技术生成

IP协议格式

在这里插入图片描述

  • 4位版本:此处取4或6
  • 4位首部长度:描述IP报头的长度。(单位也是4字节)
  • 16位总长度:描述一个IP数据报的总长度(报头+载荷)
  • 16位标识:同一个数据拆成的多个包,标识相同
  • 3位标志:是结束标志
  • 13位片偏移:标识了拆分后多个包的先后顺序

16位标识,3位标志,13位片偏移,这几个字段都是为辅助拆包、组包提供的。

  • 8位生存时间(TTL): 一个数据报在网络上能够传输的最大时间,这个时间的单位不是秒,而是次数

一个数据报构造出来,会有一个初始的TTL数值,比如32或者64,或者128,这个数据报每次经过一个路由器转发,TTL减一。如果一直减到零了,还没有到达目标,此时就认为这个包可以丢弃。

  • 8位协议:描述当前载荷部分内容是属于哪个协议的。(TCP/UDP)
  • 16位首部校验和:此处只需要针对首部进行校验,载荷部分(TCP/UDP数据报),自身已经有校验和了。

注意:此处如果校验和不一致,直接丢弃IP协议,不负责重传。如果上层使用TCP协议,TCP会在没收到ACK之后就重传。

  • 32位源IP地址/32位目的IP地址:是IP协议中最重要的部分。

使用三个点 . 把32位四个字节的数字给分割开。分成四个部分,每个部分分别使用0-255十进制整数表示。例如172.18.33.76

问题一16位总长度是否意味着一个IP数据报最大只能支持64KB?
答案否定的,一个IP数据报携带的数据载荷太长如果超过了64KB,就会在网络层针对数据进行拆分,把一个数据拆成多个IP数据报再分别发送给接收方,再重新拼装。

具体实现过程(以下是针对数据报超过64KB的操作):
发送方:把数据交给传输层(封装),传输层交给网络层(封装),网络层就把这个数据拆包,比如拆成两份,这两份再交给数据链路层,由以太网封装成两个数据帧。
接收方:数据链路层,针对两个数据帧进行分用,得到两个IP数据报,交给网络层,网络层针对这俩IP数据报进行解析,把里面的载荷拼成一个再交给传输层

解决IP地址不够用问题的三种方法

方法一: 动态分配IP地址

  • 这个方法没有从根本上增加IP地址,只是提高了利用率,治标不治本

方法二: NAT网络地址转换

  • 本质上是使用一个IP,代表一批设备也能够大大提高IP地址的利用率。使用端口号区分。

在NAT背景下,就把IP地址分成两个大类:

  • 内网IP/私网IP : 10.* , 172.16.* -172.31.* ,192.168.*
  • 外网IP/公网IP : 剩下的是公网IP
    NAT要求公网IP必须是唯一的,私网IP可以在不同的局域网中重复出现。

注意
如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备(路由器),把IP地址进行映射,从而完成网络访问。
反之,公网的设备无法直接访问私网的设备,不同局域网里的私网设备没法直接相互访问。

方法三: IPv6(根本上解决IP不够用的问题)

  • 使用16字节表示IP地址

小结:

实际上,世界上仍然是以NAT+IPv4+动态分配来进行网络组建的,真正使用IPv6的地方非常少。

IP协议之地址管理

IP协议地址管理,把一个IP地址分成两个部分,一个叫做网络号,一个叫做主机号。

主机号/网络号

  • 主机号: 标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。
  • 网络号:标识网段,保证相互连接的两个网段具有不同的标识,也就是局域网

子网掩码

作用:用来给一个IP地址划分网络号和主机号

  • 子网掩码中1的部分就描述了IP有多少位是网络号。

特殊IP

  • 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网。
  • 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据。
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1(测试程序是否能正常工作)
  • 91
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 83
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值