网络IP协议

IP(Internet Protocol,网际协议)是TCP/IP协议族中重要的协议,主要负责将数据包发送给目标主机。IP相当于OSI(图1)的第三层网络层。网络层的主要作用是失陷终端节点之间的通信。这种终端节点之间的通信也叫点对点(point-to-point)通信。

 图1:OSI参考模型

1. IP的功能作用

1)IP寻址

作为网络层的IP,一般称为IP地址,主要用于在连接到网络中的所有主机中识别出进行通信的目标地址,因此在TCP/IP通信中所有主机(在互联网中,将那些配有IP地址的设备叫主机,严格意义上说,配有IP地址且不进行路由控制的设备叫主机,既配有IP地址又具有路由控制能力的设备叫路由器,而节点则是主机和路由器的统称。)或路由器必须设定自己的IP地址。如图2所示,连接互联网的主机需要配置IP地址,不论哪一台主机与哪种数据链路连接,其IP地址的形式都一样,以太网、无线局域网、PPP等都不会改变IP地址的形式。另外,在网桥或交换机集线器等物理层或者数据链路层数据包转发设备中,不需要设置IP地址。因为这些设备只负责将IP包转化为0、1比特流转发或对数据链路帧的数据部分进行转发,而不需要应对IP协议。

图2:主机在互联网互联需要IP地址

2)路由

路由控制(Routing)是指将分组数据发送到最终目标地址的功能。即使网络很复杂,也可以通过路由控制确定到达目标地址的通路。一旦这个路由控制的运行出现异常,分组数据极有可能“迷失”,无法到达目标地址。因此,一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。

IP包在网路中一个个跳间(一跳(1Hop)是指利用数据链路层以下分层的功能传输数据帧的一个区间。以太网等数据链路中使用MAC地址传输数据帧。此时的一跳是指从源MAC地址到目标MAC地址之间传输帧的区间。也就是说它是主机或路由器网卡不经其他路由器而能直接到达的相邻主机或路由器网卡之间的一个区间。在一跳的这个区间内,电缆可以通过网桥或交换集线器相连,不会通过路由器或网关相连)被转发,因此IP路由也叫多条路由。在每一个区间内决定着包在下一跳被转发的路径。

多跳路由是指路由器或主机在转发IP数据包时只指定下一个路由器或主机,而不是将到最终目标地址为止的所有通路全都指定出来。因为每一个区间(跳)在转发IP数据包时会分别指定下一跳的操作,直至包达到最终的目标地址。

为了将数据包发给目标主机,所有主机都维护着一张路由控制表(Routing table)。该表记录IP数据在下一步应该发给哪个路由器。IP包将根据这个路由表在各个数据链路上传输。

  图3:路由控制表

3)IP分包和组包

 IP是失陷多个数据链路之间通信的协议。数据链路根据种类的不同各有特点。对不同数据链路的特异性进行抽象化也是IP的重要作用。不同数据链路有个最大的区别,就是各自的最大传输单位(Maximum Transmission Unit,MTU)不同。以太网的MTU是1500字节,FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)的MTU是4352字节,ATM(Automated Teller Machine,自动取款机)的MTU是9180字节。IP的上一层会要求传送比MTU更多字节的数据,因此必须在线路上传送比包长还要小的MTU。为解决这个问题,IP进行分片处理(IP Fragmentation)。所谓分片处理就是将较大的IP包分成多个较小的IP包。分片的包到了对端目标地址后再被组合起来传给上一层。从IP的上层看,它完全可以忽略数据包在途中的各个数据链路上的MTU,而只需要按照源地址发送的长度接收数据包。IP就实现了数据链路层的抽象,使得从上层更不容易看到底层网络构造的细节。

4)IP属于无连接型

IP面向无连接,也就是在发包之前,不需要建立与目标地址之前的连接。当数据链路层有需要发送的数据,该数据会立即被压缩成IP包发送出去。而面向有连接的情况则不同,目标主机关机或者不存在则不可能建立连接,那么也不可能发送数据过去。为什么IP要采用面向无连接呢?原因在于简化和提速。有连接型要比无连接型复杂的多,如前期需要握手,而且在处理连接过程中,需要耗费时间。   

IP提供尽力服务(Best Effort),就是尽最大努力将数据包发送到最终目标地址,然而其并不做“最终是否收到的验证”。因此IP数据包在途中可能会发生丢失、错位以及数据翻倍等问题。为了提高通信的可靠性,TCP发挥重要作用,如果说IP只负责将数据发给目标主机,那么TCP则负责保证对目标确实收到数据。为什么不让IP具有可靠传输的功能呢?原因在于如果要一种协议规定所有的功能和作用,那么该协议的具体实现和编程会变得非常复杂,无法轻易实现,而且难以维护。相比而言,按照网络分层,明确定义每层协议的作用和责任后,针对每层具体的协议进行编程会更加有利于该协议的实现。   

2.   IP地址基础知识

1)IP地址定义

在使用TCP/IP通信时,用IP地址识别主机和路由器。为了保证正常通信,有必要为每个设备正确配置IP地址。IP地址分为IPv4和IPv6。IP地址(以IPv4为例)由32位正整数来表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制(二进制是指用0、1表示数字的方法)方式被处理。而我们并不习惯用二进制方式计数,因而将32位的IP地址以每8位为一组,分为4组,每组以“.”隔开,再将每组数转为十进制数。以图4为例。注意在这里2进制转10进制=2^7 + 2^5 +2^3 + 2^2 = 172如图5,而10进制转2进制=10101100如图6。

 图4:IP地址数字表示

 

  图5:二进制转10进制计算方法

  图6:10进制转2进制计算方法

 将表示成IP地址的数字整体计算,最多大概允许2^32 = 4294967296台计算机连接到网络。

2)IP地址组成

IP地址由网络标识和主机标识两部分组成。例如IP地址192.168.128.10/24,“/24”表示从第一位到24位属于网络标识,在这里“192.168.128”属于网络标识也就是网络地址,而最后的“10”为主机标识也就是主机地址。网络标识在数据链路的每个段配置不同的值。网络标识必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。IP地址的主机标识不允许在相同的网段内重复出现。由此,可以通过设置网络地址和主机地址在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠。即IP地址具有唯一性。如图7所示,IP包被转发到途中某个路由器时,正是利用目标IP地址的网络标识进行路由。路由器只要一看IP地址的网络标识就可以进行转发。

 

  图7:IP地址的网络标识

3)IP地址的分类

IP地址分为A类、B类、C类、D类四类。根据IP地址中从第1位到第4位的比特列对其网络标识和主机标识进行区分。如图8所示,A类IP地址是首位以“0”开头的地址从第1位到第8位是网络标识(去掉分类位剩下7位)。用十进制表示的话,0.0.0.0~127.0.0.0是A类的网络地址。A类地址的后24位相当于主机标识。因此一个网络内可容纳的主机地址上限为16,777,214个。B类地址是前两位为“10”的地址。从第1位到第16位是网络标识。用十进制表示的话,128.0.0.0~191.255.0.0是B类的网络地址。B类地址的后16位相当于主机标识。因此一个网络内可容纳的主机地址上限是65,534个。C类地址是前三位“110”的地址。从第1位到第24位是它的网络标识。用十进制表示的话,192.0.0.0~223.255.255.0是C类的网络地址。C类地址的后8位相当于主机标识,因此一个网络内可容纳的主机地址上限为254个。D类地址是前四位为“1110”的地址。从第1位到第32位是它的网路地址。用十进制表示的话,224.0.0.0~239.255.255.255是D类的网络地址。D类地址没有主机识别地址,常被用于多播。注意分配IP地址时,不可以全部为0或全部为1.因为全部为0在表示对应的网络地址或IP地址不可获知的情况下才使用。而全部为1的主机地址通常作为广播地址。因此C类地址的个数是2^8-2=254个。

 

  图8:IP地址的分类

 广播地址用于在同一个链路相互连接的主机之间发送数据包。将IP地址中的主机地址部分全部设置为1,就成了广播地址。在以太网中如果将MAC地址的所有位都改为1,则形成FF:FF:FF:FF:FF:FF的广播地址。因此广播的IP包以数据链路的帧的形式发送时,得通过MAC地址全为1比特的FF:FF:FF:FF:FF:FF转发。例如把172.20.0.0/16用二进制表示:10101100.00010100.00000000.00000000,将这个地址的主机部分全部改为1,则形成广播地址:10101100.00010100.11111111.11111111再将这个地址用十进制表示,则为172.20.255.255。

 广播分为本地广播和直接广播两种。在本网络内的广播叫做本地广播。例如网络地址为192.168.0.0/24的情况下,广播地址是192.168.0.255。因为这个广播地址的IP包会被路由器屏蔽,所以不会到达192.168.0.0/24以外的其他链路上。在不同网络之间的广播叫做直接广播。例如网络地址为192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器,将数据转发给192.168.1.0/24,从而使得所有192.168.1.1~192.168.1.254的主机都能收到这个包,由于直接广播有一定的安全问题,所以多数情况下载路由器上设置为不转发。

2. IP数据报文格式

 图9:IPv4数据报格式

通过IP进行通信时,需要在数据的前面加入IP首部信息。IP首部中包含着用于IP协议进行发包控制时所有的必要信息。如图9所示为IPv4数据报格式。

1)IPv4首部

  • 版本(Version)

      由4比特构成,表示标识IP首部的版本号。IPv4的版本号为4,因此在这个字段上值也是4。

  • 首部长度(IHL:Internet Header Length)

      由4比特构成,表明IP首部的大小,单位为4字节(32比特)。对于没有可选项的IP包,首部长度则设为5.也就是说在没有可选项时,IP首部的长度为20字节。

  • 区分服务(TOS:Type Of Service)

      由8比特构成,用来表明服务质量。每一位的具体含义如表所示。

比特含义
0 1 2优先度
3最低延迟
4最大吞吐
5最大可靠性
6最小代价
(3~6)最大安全
7未定义

这个值通常由应用指定。而且现在也鼓励这种结合应用的特性设定TOS的方法。然而在目前,几乎所有的网络都无视这些字段。这不仅仅是因为在符合质量要求的情况下按其要求发送本身的功能实现起来十分困难,还因为若不符合质量要求就可能会产生不公平的现象。因此实现TOS控制变得极其复杂。这也导致TOS整个互联网几乎就没有被投入使用。不过已有人提出将TOS字段本身再划分为DSCP(Differentiated Services Codepoint)和ECN(Explicit Congestion Notification)两个字段的建议。在图10中DSCP和ECN分别为6比特和2比特。DSCP(Differential Services Codepoint,差分服务代码点)是TOS(Type Of Service)的一部分。现在统称为DiffServ,用来进行质量控制。ECN(Explicit Congestion  Notification,显示拥塞通告)用来报告网络拥堵情况。第6位的ECT用以通告上层TCP协议是否处理ECN。当路由器在转发ECN为1的包的过程中,如果出现网络拥堵的情况,就将CE位设置为1。

 图10:DSCP和ECN

比特简称含义
6ECTECN-Capable Transport
7CECongestion Experienced
  • 总长度(Total Length)

      表示IP首部与数据部分合起来的总字节数。该字段长16比特。因此IP包的最大长度65535(=2^16)字节。目前还不存在能够传输最大长度为65535字节的IP包的数据链路。不过由于有IP分片处理,从IP的上一层的角度看,不论底层采用哪种数据链路,都可以认为能够以IP的最大包长传输数据。

  • 标识(ID:Identification)

      由16比特构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常每发送一个IP包,它的值也逐渐递增。此外,即使ID相同,如果目的地址、源地址或协议不同的话,也会被认为是不同的分片。

  • 标志(Flags)

      由3比特构成,表示包被分片的相关信息。每一位的具体含义参考下表:

比特含义
0未使用。现在必须是0
1

指示是否进行分片(don't fragment)

0-可以分片

1-不能分片

2

包被分片的情况下,表示是否为最后一个包(more fragment)。

0-最后一个分片的包

1-分片中段的包

  • 片偏移(FO:Fragment Offset)

      由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。第一个分片对应的值为0.由于FO字段占13位,因此最多可以表示8192(=2^13)个相对位置。单位为8字节,因此最大可表示原始数据8*8192=65535字节的位置。

  • 生存时间(TTL:Time To Live)

      由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。然而在实际中它是指可以中转多少个路由器的意思。没经过一个路由器,TTL会减少1,直到变成0则丢弃该包。

  • 协议(Protocol)

      由8比特构成,表示的是IP包传输层的上层协议编号。目前常使用的协议如下表所示

分配编号简称协议
0HOPOPTIPv6 Hop-by-Hop Option
1ICMPInternet Control Message
2IGMPInternet Group Management
4IPIP in IP(encapsulation)
6TCPTransmission Control
8EGPExterior Gateway Protocol
9IGP any private interior gateway(Cisco IGRP)
17UDPUser Datagram
33DCCPDatagram Congestion Control Protocol
41IPv6IPv6
43IPv6-Route

Routing Header for IPv6

44IPv6-FragFragment Header for IPv6
46RSVPReservation Protocol
50ESPEncap Security Payload
51AHAuthentication Header
58IPv6-ICMPICMP for IPv6
59IPv6-NoNxtNo Next Header for IPv6
60IPv6-OptsDestination Options for IPv6
88EIGRPEIGRP
89OSPFIGPOSPF
97ETHERIPEthernet-within-IP Encapsulation
103PIMProtocol Independent Multicast
108IPComp IP Payload Compression Protocol
112VRRPVirul Router Redundancy Protocol
115L2TPLayer Two Tunneling Protocol
124ISIS over IPv4ISIS over IPv4
132SCTPStream Control Transmission Protocol
133FCFibre Channel
134RSVP-E2E-IGNORERSVP-E2E-IGNORE
135Mobility Header(IPv6)Mobility Header(IPv6)
136UDPLiteUDP-Lite
137MPLS-in-IPMPLS-in-IP

  • 首部校验和(Header Checksum)

      由16比特(2字节)构成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。它主要用来确保IP数据报不被破坏。校验和的计算过程,首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP首部,并用1补数计算所有16位字的和。最后将所 得到这个和的1补数赋给首部校验和字段。

  • 源地址(Source Address)

      由32比特(4字节)构成,表示发送端IP地址

  • 目的地址(Destination Address)

      由32比特(4字节)构成,表示接收端IP地址

  • 可选项(Options)

      长度可变,通常只在进行实现或诊断时使用。该字段包含如下几点信息:

    • 安全级别
    • 源路径
    • 路径记录
    • 时间戳
  • 填充(Padding)

      也称为填充物。在有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充0,调整为32比特的整数倍。

  • 数据(Data)

      存入数据。将IP上层协议的首部也作为数据进行处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/502020.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密钥管理系统在数据安全解决方案中的重要性

密钥管理系统在数据安全解决方案中占据着举足轻重的地位,其重要性体现在以下几个方面:一、保障数据机密性 密钥管理系统通过生成、存储和管理加密密钥,确保了数据的机密性。这些密钥用于加密和解密数据,只有授权用户才能访问和使…

关于PINN进一步的探讨

pinn 是有监督、无监督、半监督? PINN(Physics-Informed Neural Networks,物理信息神经网络)通常被归类为一种有监督学习的方法。在PINN中,神经网络的训练过程不仅依赖于数据点(例如实验观测数据&#xff0…

设计形成从业务特点到设计模式的关联

规范和指引在应用架构、数据架构等各架构方向上形成规范性约束指导。同一个决策要点、架构单元在统一的架构原则指导下,会因业务特点差异有不同的实现,经过总结形成了最佳实践。在开展新应用的设计时,根据决策要点以及相关的业务特点&#xf…

Framebuffer 驱动

实验环境: 正点原子alpha 开发板 调试自己编写的framebuffer 驱动,加载到内核之后,显示出小企鹅 1. Framebufer 总体框架 fbmem.c 作为Framebuffer的核心层,向上提供app使用的接口,向下屏蔽了底层各种硬件的差异; 准确来说fbmem.c 就是一个字符设备驱动框架的程序,对…

STM32第十一课:STM32-基于标准库的42步进电机的简单IO控制(附电机教程,看到即赚到)

一:步进电机简介 步进电机又称为脉冲电机,简而言之,就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩,步进电机的角位移量与输入的脉冲个数严格成正…

WPS-JS宏快速上手

WPS JS宏注意事项 代码后面可以不写分号“ ; ”; 缩进对程序的运行影响不大,但为了易读(防止自己以后看不懂),还是乖乖写好; 代码是逐行运行的,意味着下面一行代码错了,前面的代码…

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤: 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能(可选)6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具,尤其适合数据科学、机器…

【CVPR 2024】【遥感目标检测】Poly Kernel Inception Network for Remote Sensing Detection

0.论文摘要 摘要 遥感图像(RSIs)中的目标检测经常面临几个日益增加的挑战,包括目标尺度的巨大变化和不同范围的背景。现有方法试图通过大核卷积或扩张卷积来扩展主干的空间感受野来解决这些挑战。然而,前者通常会引入相当大的背…

C++语言编程————C++的输入与输出

1.面向过程的程序设计和算法 在面向过程的程序设计中,程序设计者必须指定计算机执行的具体步骤,程序设计者不仅要考虑程序要“做什么”,还要解决“怎么做”的问题,根据程序要“做什么”的要求,写出一个个语句&#xff…

Fabric链码部署测试

参考链接:运行 Fabric 应用程序 — Hyperledger Fabric Docs 主文档 (hyperledger-fabric.readthedocs.io) (2)fabric2.4.3部署运行自己的链码 - 知乎 (zhihu.com) Fabric2.0测试网络部署链码 - 辉哥哥~ - 博客园 (cnblogs.com) 1.启动测试…

《米塔》为什么能突破160万销量?

1、跟完蛋美女有一定的类似之处,都是针对用户需求打造的商品,所以取得良好的销量不意外。 偏宅的玩家有陪伴、被重视、被爱的需求, 而厂商很懂,无论真人还是二次元都只是手段。 完蛋也是突破百万销量,成为黑马。 2、…

ESP32自动下载电路分享

下面是一个ESP32系列或者ESP8266等电路的一个自动下载电路 在ESP32等模块需要烧写程序的时候,需要通过将EN引脚更改为低电平并将IO0引脚设置为低电平来切换到烧写模式。 有时候也会采用先将IO接到一个按键上,按住按键拉低IO0的同时重新上电的方式进入烧写…

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 (1)常见的日志级别优先级 (2&…

java项目之社区医院信息平台源码(springboot+mysql)

项目简介 社区医院信息平台实现了以下功能: 社区医院信息平台的主要使用者分为管理员可以查看对护士信息进行添加,修改,删除以及查询操作;管理员可以对医生信息进行添加,修改,删除以及查询操作&#xff1…

《普通逻辑》学习记录——命题的判定与自然推理

目录 一、真值 1.1、真值联结词 1.2、真值联结词与逻辑联结词的区别 1.3、真值形式 1.3.1、真值符号的优先级和结合性规则 1.4、真值规则 1.4.1、条件式(蕴含式) P → Q 的真值规则 1.4.2、双条件式(等值式) P ↔ Q 的真值规则 1.…

Pycharm连接远程解释器

这里写目录标题 0 前言1 给项目添加解释器2 通过SSH连接3 找到远程服务器的torch环境所对应的python路径,并设置同步映射(1)配置服务器的系统环境(2)配置服务器的conda环境 4 进入到程序入口(main.py&#…

无刷直流电机(BLDC)六步换向法

文章目录 1、三相BLDCM 基本结构2、三相BLDCM 数学模型3、有霍尔位置传感器直流无刷电机工作原理4、无位置传感器直流无刷电机工作原理5、速度检测6、六步换向双闭环模型仿真6.1 模型总览6.2 系统及参数设置6.3 六步换向模块6.4 仿真效果 7、六步换向速度闭环PWM控制参考 1、三…

Windows11安装Oracle11g以及plsqldev工具连接配置

文章目录 一、安装Oracle数据库软件二、配置数据库三、配置监听(listener.ora)四、本地网络服务名配置(tnsnames.ora)五、网络服务名配置以及监听文件路径六、plsqldev工具连接Oracle配置 一、安装Oracle数据库软件 点击“setup.…

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后,出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等,没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…

9.系统学习-卷积神经网络

9.系统学习-卷积神经网络 简介输入层卷积层感受野池化层全连接层代码实现 简介 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图…