Java中的IP协议(如果想知道Java中有关IP协议的知识,那么只看这一篇就足够了!)

前言:在当今高度信息化的社会中,互联网已经深刻影响了人类的生活方式和交流方式,从电子邮件的收发到视频会议的举行,从社交媒体的互动到云计算的广泛应用,这一切的背后都离不开网络通信协议的支持。


Java中的IP协议(如果想知道Java中有关IP协议的知识,那么只看这一篇就足够了!)

✨✨ ✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

在正式开始讲解之前,先让我们看一下本文大致的讲解内容:

Java中的IP协议(如果想知道Java中有关IP协议的知识,那么只看这一篇就足够了!)

目录

1.IP协议的基本概念

2.IP协议的结构与分类

(1)IP地址的结构

(2)IP地址的分类

3.子网划分与子网掩码

4.IP数据报格式与结构

5.IP数据的分片和重组机制

(1)分片

【1】分片触发时机

【2】分片流程

(2)重组

6.IPv6的简单介绍

(1)IPv6的地址表示方式

(2)IPv6的优势


1. IP协议的基本概念

首先先让我们学习一下什么是IP协议:

IP协议是TCP/IP协议簇中的核心协议之一,属于网络层协议,它的主要功能是实现网络中不同主机之间的寻址与数据传输,在TCP/IP模型中,IP协议作为中间层,承上启下,向上传递数据给传输层(如TCP、UDP),向下则将数据交由链路层处理。

当然我们要注意的是IP协议是一种不可靠协议,它不保证数据的可靠传输和顺序的一致性,至此,我们就粗略的了解了什么是IP协议了,那么接下来让我们看看IP协议是如何构成的和其都有哪些类型吧!

2.IP协议的结构与分类

(1)IP地址的结构

这里以IPv4为例,一个标准的IP地址由32位二进制数构成,通常用点分十进制表示,例如“192.168.1.1”这样,而IP地址可以划分为两部分: 网络号主机号, 网络号是用于标识一个特定的网络,而主机号则用于标识该网络中的某个设备。

(2)IP地址的分类

——通常IPv4地址被划分为五类:

  • A类地址 :适用于大型网络,范围从1.0.0.0到126.255.255.255,网络号占8位,主机号占24位。

  • B类地址 :适用于中等规模的网络,范围从128.0.0.0到191.255.255.255,网络号占16位,主机号占16位。

  • C类地址 :用于小型网络,范围从192.0.0.0到223.255.255.255,网络号占24位,主机号占8位。

  • D类地址 :用于多播通信,范围从224.0.0.0到239.255.255.255。

  • E类地址 :保留地址,范围从240.0.0.0到255.255.255.255。

——虽说是五类,但是其中A/B/C类地址才是最常用的。

以上就是IP协议的结构与分类的内容了!

3.子网划分与子网掩码

在日常应用中,我们为了实现更加灵活的网络管理与资源配置,会将单一网络进一步细分成更多个小型子网络,为此,IP协议引入了 子网划分 的机制。

那为什么要引入子网划分呢?

——子网划分的核心目的就是为了提高IP地址的利用率、提升网络安全性与可维护性,我们通过子网划分,将一个较大的网络拆分为若干逻辑上的子网络,从而避免资源浪费。

了解了为什么要引入子网划分,那它有什么作用呢?

——子网掩码是与IP地址配套使用的重要参数,它同样由32位二进制数构成,用于区分IP地址中的网络号与主机号,常见子网掩码如下:

  • 255.0.0.0(对应A类地址)

  • 255.255.0.0(对应B类地址)

  • 255.255.255.0(对应C类地址)

例如,IP地址“192.168.1.100”和子网掩码“255.255.255.0”结合使用时,其网络地址为“192.168.1.0”,主机号为“100”,这样一来,管理员可以更容易地管理网络资源,并提高通信效率。

——以上就是子网划分与子网掩码的知识了!

4.IP数据报格式与结构

学习完上述的内容之后,让我们进行本篇文章的重点,IP数据报格式与结构,IP协议传输数据的最小单位称为IP数据报,而每一个数据报都包含两个部分: 首部(Header) 数据部分(Payload)

【1】首部

Java中的IP协议(如果想知道Java中有关IP协议的知识,那么只看这一篇就足够了!)

从上边的图片中我们可以看到,IP数据报的首部长度通常为20字节(在无选项字段的情况下),而其中包含如下字段:

  • 版本号(Version) :指明使用的是IPv4还是IPv6。

  • 首部长度(Header Length) :单位为4字节,用于标明首部占用字节长度。

  • 服务类型(TOS) :用于标记服务优先级。

  • 总长度(Total Length) :用于记录整个IP数据报的长度。

  • 标识(Identification)、标志位(Flags)与片偏移(Fragment Offset) :其时用于分片和重组机制。

  • 生存时间(TTL) :用于限制数据报在网络中存活的时间。

  • 协议(Protocol) :用于指定传输层使用的协议,比如TCP或UDP等。

  • 头部校验和(Header Checksum) :用于验证头部是否在传输中被破坏。

  • 源地址(Source IP Address)与目的地址(Destination IP Address) :指明通信双方的IP。

——当然,我相信如果读者只是看上述枯燥的定义可能不能很好的理解每个字段的意思,那么接下来,我们使用生活中的例子来解释一下每个字段:

  1. 版本号 :这就像你使用的操作系统版本,类似Windows 10或iOS。

  2. 首部长度 :它就像是一个信封的内容长度,告诉你信封里装了多少内容,通常是20字节,在有更多内容时会变长。

  3. 服务类型 :它就像快递的优先级标注,告诉网络如何处理这个包裹,是否要优先送达,还是可以延迟发送。

  4. 总长度 :这个就像快递单上的总重量,包括了包裹和信封的重量。

  5. 标识 :这就像每个快递包裹都有一个唯一的编号,用来在运输过程中追踪。

  6. 标志 :就像是快递包裹上的特殊标记,指示包裹是否可以拆分运输,或者它是不是最后一个包裹。

  7. 片偏移 :如果一个包裹被拆成多个部分,偏移就像是指示拆分后每部分在原始包裹中的位置。

  8. 生存时间 :类似快递的有效期,包裹只能在路上待一定时间,过期就会被退回。

  9. 协议 :它就想告诉你这个包裹到底要交给哪个部门处理,比如TCP或UDP就像是不同的快递公司。

  10. 首部校验和 :就像检查包裹是否损坏,确保送达的包裹没有在路上被搞坏。

  11. 源地址 :就是发件人的地址,告诉你包裹从哪里发出。

  12. 目的地址 :收件人的地址,告诉快递员包裹要送往哪里。

  13. 选项 :其就是一些附加的要求。

通过上边的解释之后,相信读者应该对每个字段都有了自己的理解了!

【2】数据部分

——数据部分承载来自传输层的有效负载,比如TCP段或UDP报文等。

5.IP数据的分片和重组机制

——在学习完了IP数据报格式与结构之后,接下来然我们学习一下IP数据的分片和重组机制:

(1)分片

首先先让我们学习一下分片的内容:

【1】分片触发时机

当IP层从上层接收到一个数据包,其大小超过下层链路的MTU时,就需要进行分片处理。

【2】分片流程

每个分片都会保留原始IP首部中的关键信息(例如标识字段、源/目标IP地址等),并更新相关字段:

  • 标识字段在每一个原始IP数据报中唯一,所有分片保持一致;

  • 标志中的MF位表示是否还有后续分片;

  • 片偏移指出该分片在原始数据中的偏移位置,单位为8字节。

通过上述晦涩难懂的解释,读者可能第一次无法进行理解,这里我们举个例子,我们假设原始数据报长4000字节,链路MTU为1500字节,扣除IP首部长度(假设为20字节),则每个分片可携带1480字节数据,那么数据会被分成3个分片:前两个携带1480字节,最后一个携带剩余的1040字节,希望通过上述的例子,读者可以更好的进行理解。

(2)重组

——了解完了分片,那么重置又是怎么实现的呢?

重组工作由接收端主机的IP层负责,IP层根据分片的标识字段和偏移值,将所有分片按顺序拼接成完整数据报,如果某个分片丢失或出错,那么整个数据报将被丢弃。

至此我们就了解了一个数据报是如何进行分片和重组的了!

6.IPv6的简单介绍

通过上文我们知道了,虽然IPv4为互联网奠定了基础,但其32位地址长度企业已难以满足当前海量设备接入的需求,因此,IETF推出了下一代互联网协议——IPv6

(1)IPv6的地址表示方式

——IPv6地址长度为128位,采用冒号十六进制格式表示。

例如:

2001:0db8:85a3:0000:0000:8a2e:0370:7334,这样的设计提供了约3.4 * 10^38个可用地址,这样就可以保证有足够的IP地址使用了!

(2)IPv6的优势

那么IPv6相较于IPv4有哪些优势呢?

  • 地址空间巨大 :彻底解决IPv4地址枯竭问题。

  • 无需NAT :每个设备都能拥有公网地址,实现端到端通信。

  • 更高效的路由机制 :引入了简化的首部结构。

  • 增强的安全性 :IPSec在IPv6中为强制要求,提升传输安全。

  • 支持自动配置 :通过无状态地址自动配置减少管理负担。

注意:在现代的生活中IPv4的使用还是远超于IPv6的!!!但随着物联网和5G的发展,它将在未来发挥越来越重要的作用。


以上就是本篇文章的全部内容了~~~

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/9232.html

(0)
LomuLomu
上一篇 2天前
下一篇 2天前

相关推荐

  • “探索Java List的无限可能:从基础到高级应用“

    Java List 探索之旅 1. List 简介 2. List 接口概览 3. List 实际应用 一:List 的定义在Java的集合框架中,List是一个接口,继承自Collection。它代表了一个有序的元素集合,允许对元素进行增加、删除、修改和查询等操作。 Collection接口定义了一系列集合操作的方法,而Iterable接口则允许我们对集合…

    2024 年 12 月 28 日
    12000
  • build报错:Your build is currently configured to use incompatible Java 21.0.3 and Gradle 5.4.1Cannot…

    报错显示 报错如图。 报错原因 JDK和gradle版本不一致。 成功解决方案 将jdk版本改为1.8,问题解决。 尝试过未成功的方案 升级gradle版本,升级后报错如下。

    2025 年 1 月 21 日
    22300
  • 一文带你了解什么是servlet

    介绍 Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应,是基于 Java 技术的 web 组件,该组件由容器托管,用于生成动态内容。他是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。 servlet说实在点就是个接口,浏览器发送请求给Tomcat(服务器),若是这个请求正好对应了servle…

    2025 年 1 月 16 日
    23700
  • 【Java 学习】Java抽象类详解:从理论到实践,带你迈向面向对象的深度思考!

    💬 欢迎讨论:如对文章内容有疑问或见解,欢迎在评论区留言,我需要您的帮助! 👍 点赞、收藏与分享:如果这篇文章对您有所帮助,请不吝点赞、收藏或分享,谢谢您的支持! 🚀 传播技术之美:期待您将这篇文章推荐给更多对需要学习Java语言、低代码开发感兴趣的朋友,让我们共同学习、成长! 1. 什么是抽象类? 举一个Animal类、Cat类和Dog类的例子: “`j…

    2025 年 1 月 15 日
    17300
  • Microi 吾码与 JavaScript:前端低代码平台的强大组合

    ![](https://pic.it1024doc.com/csdn/202412/5916173c18b26b7984e2009ddcc49015.png) **目录** [一、引言](#一、引言) [二、Microi 吾码概述](#二、Microi-吾码概述) [三、JavaScript 在 Microi 吾码前端开发中的应用](#三、JavaScrip…

    未分类 2024 年 12 月 28 日
    23000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信