IP 协议的相关特性

1. IP协议定义和特性

IP(Internet Protocol)协议是互联网中使用的网络协议之一,它的特性包括:

  1. 无连接性:IP协议是一种无连接协议,每个数据包都是独立发送和处理的。因此,每个数据包都需要包含完整的源和目的地址信息,以便被正确路由到目的地。

  2. 不可靠性:IP协议不提供任何可靠性保证,数据包在传输过程中可能会在网络拥塞、链路故障等情况下丢失或重复,需要应用层自行处理数据的可靠性。

  3. 分组交换:IP协议使用分组交换技术,将数据分成若干个固定大小的数据包进行传输,每个数据包都有其独立的路由路径和传输时间。

  4. 网络层协议:IP协议在OSI模型中属于网络层,主要负责数据包的寻址和路由选择。

  5. IPv4和IPv6:IP协议有两个版本,IPv4和IPv6,其中IPv4是现有网络中广泛使用的版本,而IPv6则是一种新的IP协议版本,主要为了解决IPv4枯竭的地址问题。

  6. 头部格式:IP协议的数据包头部包括源地址、目的地址、协议类型、TTL等信息,具体数据包头部格式不同于IPv4和IPv6版本的不同而有所区别。

格式:

4位版本号:指定IP协议的版本,对于IPv4来说,就是4。

4位头部长度:IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。

8位服务类型:3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。 这四者相互冲突,只能选择一个。(这个可以理解成选择一个作为IP协议的特点,类似一些角色的变换形态)

16位总长度:IP数据报整体占多少个字节。

16位标识:唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每 一个片里面的这个id都是相同的。(用于拆包合包时的身份标识,同一个包的标识是一致的)

3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。 第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位 表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。

13位分片偏移:是分片相对于原始IP报文开始处的偏移。其实就是 在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此, 除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了,这个偏移量越小代表这个包的顺序越前)。

8位生存时间:数据报到达目的地的最大报文跳数。一般是64或者128。每次经过一个路由,TTL就会减一,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。

8位协议:表示上层协议的类型。

16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏(报文部分的完整性校验已经由传输层协议校验过了,所以不需要再次校验)。

32位源地址和32位目标地址:表示发送端和接收端。

选项字段(不定长,最多40字节):略。

2. IP协议的作用

2.1 地址管理

IP地址本质上是一个32位整数,为了方便,就会把IP表示成点分十进制的方式,那32位整数,能表示多大的范围呢?大概为42亿9千万,这个数字看起来很大,大师其实并不算很大,发展太快了,人人都有手机,总的设备的数量达到百亿级别还是可能,如何解决IP地址不够用,就成了上个世纪90年代非常严峻的问题了。

2.1.1 动态分配IP地址

全世界的设备,也不是同一时刻都在上网,更充分的利用现有的IP地址(并没有从根本上解决问题)。

2.1.2 NAT机制(网络地址映射)

NAT 机制的工作流-CSDN博客

2.1.3 IPV6(从根本上解决问题的方案,增加IP地址个数)

IPv6使用了16个字节表示IP地址。(2^128)但是IPv6的报头结构和IPv4 是不兼容的。引入IPv6就意味着当前网络设备(路由器,就不能支持)就需要更换支持IPv6的设备,那就需要多花钱!!

2.2 路由选择

简单来说就是规划出一条路,网路结构太复杂了,每个路由器都无法掌握全局的信息,只能掌握一部分局部信息,此时路由器出来规划出来的线路,只能是一个"较优解"。数据包中包含了"目的IP"字段就是要问路的目标,每个路由器对于网络环境(和他相邻的设备情况)有一定的了解,此时就可以,根据他了解告诉我们下一步往哪个方向走。

相关推荐
前端李易安2 小时前
什么是UDP和TCP?有什么区别?应用场景分别都有哪些?
网络·tcp/ip·udp
GCKJ_08242 小时前
观成科技:Vagent注入的内存马加密通信特征分析
科技·网络协议·信息与通信
极客小张3 小时前
基于STM32的智能宠物自动喂食器设计思路:TCP\HTTP、Node.js技术
stm32·单片机·物联网·tcp/ip·node.js·毕业设计·宠物
胖头鱼不吃鱼-3 小时前
HTTP和HTTPS的区别
网络协议·http·https
涔溪3 小时前
HTTP Cookie深入解析:Web会话追踪
前端·网络协议·http
yaoxin5211234 小时前
第十八章 TCP 客户端 服务器通信 - 使用OPEN命令 - Supported参数
服务器·网络·tcp/ip
夏天匆匆2过5 小时前
linux性能提升之sendmmsg和recvmmsg
linux·c++·单片机·网络协议·udp·tcp
涔溪13 小时前
HTTP TCP三次握手深入解析
网络·tcp/ip·http
憨子周13 小时前
2M的带宽怎么怎么设置tcp滑动窗口以及连接池
java·网络·网络协议·tcp/ip
ZachOn1y19 小时前
计算机网络:运输层 —— 运输层端口号
网络协议·tcp/ip·计算机网络·udp·tcp·端口号