Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)

news2025/4/2 17:08:41

一.IP数据报结构

在这里插入图片描述
(1)版本:指明协议的版本,IPv4就是4,IPv6就是6
(2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节
(3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最大吞吐量,最高可靠性,最小成本
(4)总长度:报头+数据部分。IP数据报最大长度为2^16字节,也就是64KB
(5)生存时间:单位是次数,防止数据在网络上无限转发,8个比特位表示IP数据报最多能在网络上转发128次
在这里插入图片描述
由上图可知,从我这里到美国政府官网IP数据报也仅仅转发了18次,所以8位生存时间完全够用
(6)协议:表示在传输层使用什么协议,UDP还是TCP还是其他?
(7)校验和:只针对IP报头进行校验,因为IP载荷部分有UDP/TCP进行校验
(8)源地址:发送方的IP地址
(9)目的地址:接收方的IP地址
(10)可选字段:主要是拓展功能,最大长度是40字节
(11)填充:保证IP报头的长度是4的整数倍

问题一:16位标识,3位标志,13位片偏移分别有什么用?

IP数据报最终是会传递给数据链路层再封装,但是由于物理条件的影响,数据链路层的载荷最大能携带1500(MTU)字节。虽然IP数据报载荷最大能携带64KB的数据,但由于下层的限制,必须在网络层进行拆分,数据到达接收方的时候再组装。而拆分和组装的过程就需要用到标识,标志,片偏移这三个字段
(1)16位标识:唯一标识一个IP数据报。同一个数据报的标识是一样的,便于区分哪些分区属于同一个数据报
(2)3位标志

  1.  第一位:保留位,必须为0(暂时用不到这个保留位,所以先设为0,方便以后使用)
    
  2.  第二位:如果为1,表示该数据报禁止分片。当IP载荷超过MTU时就会丢弃该数据报,并且返回ICMP错误信息给源主机(发送方)
    
  3.  第三位:如果为1,表示该数据报不是最后一个分片,最后一个分片为0
    

(3)13位片偏移: 指示当前分片在原数据报中的位置(以8字节为单位)

二.IP协议解析

2.1地址管理

IP地址是32位比特位,通常用点分十进制表示,比如(192.168.1.1)。IP地址一共有2^32个,大概是43亿个,看似是一个比较庞大的数字。但随着科技的发展,现在的智能家电也需要分配IP地址,这就导致IP地址逐渐不够用了,那么如何解决这一问题,有以下几个策略

2.1.1 动态分配IP地址

只给接入网络的设备分配IP地址,该设备每次接入互联网分配到的IP地址不一定是一样的,这样就避免IP地址一直绑定在某个设备上

2.1.2 NAT机制

将IP地址分为公网IP和私网IP,公网上的IP必须是唯一存在的,但是不同私网中可以存在相同的IP
在这里插入图片描述
基于以上的设定,必须要做出以下限制:
1.公网设备访问公网设备,无限制
2.局域网设备访问局域网设备(同一局域网),也没啥问题
3.局域网设备访问局域网设备(不同局域网),不允许
4.局域网设备访问公网设备,需要将局域网设备的私网IP替换为公网IP
5.公网设备访问局域网设备,不允许主动访问
在这里插入图片描述

2.2网段划分

IP地址由网络号+主机号组成
网络号:用于标识一个特定的网络,确定数据包应该被发送到哪个网络
主机号:用于区分同一网络中的不同设备
网络号的长度取决于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
但是按照上述规则来划分网络号和主机号有很大弊端
以B类地址为例,一个IP地址可以容纳2^16(六万多)主机,在现实情况中一个子网很难有拥有这么多主机,导致大量IP地址被浪费掉。面对IP地址本来就不够用的趋势,就有了新的划分方案

子网掩码

格式:也是32位比特位,通常使用点分十进制的形式表示

作用:子网掩码用于划分IP地址的网络部分和主机部分。例如,一个常见的子网掩码11111111.11111111.11111111.00000000(255.255.255.0)表示前24位是网络号,后8位是主机号
通俗来讲,从左到右(从高位到低位),1的个数就是网络号的个数,0的个数就是主机号的个数。将IP地址和子网掩码进行&运算,计算结果就是网络号

特殊的IP地址

(1)将IP地址中的主机号全设置为0,就变成了网络号,表示当前主机,该IP地址**不能分配**给某个主机
(2)将IP地址中的主机号全设置为1,就变成了广播地址。用于在网络中所有设备发送信息
(3)127.*地址用于本机环回测试,通常使用127.0.0.1

2.2路由选择

作用:路由器根据数据包的目的IP地址,选择一条合适的路径将数据包转发到下一个路由器,最终到达目的地
路由表:路由器内部维护的一张表,记录了到达不同网络或主机的路径信息。路由表包含目的地址网络掩码下一跳IP地址输出接口等信息

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

26考研|高等代数:线性空间

线性空间这一章在整个高等代数学习过程中是非常精华的部分,在学习这一章的过程中会有部分的概念较为抽象,一定要抓紧抓牢对于概念的理解,反复阅读与感受,同时也可以根据已知的解析几何中介绍的二维空间或者三维空间进行类推比较&a…

【Linux】进程间通信(IPC)-- 无名管道、命名管道

IPC机制 实现进程间通信 在多个进程间传输数据或共享信息的机制。 数据交换,共享资源,进程同步,消息传递。 IPC实现原理:通信进程能够访问相同的内存区域。 方法: 管道:无名管道pipe、命名管道FIFO S…

每日一题-力扣-2278. 字母在字符串中的百分比 0331

字母在字符串中的百分比求解方案 | 力扣 2278 题解 问题描述 给定一个字符串 s 和一个字母 letter,我们需要计算 letter 在 s 中出现的百分比,并将结果向下取整。例如,如果字符串是 "foobar",字母是 "o"&…

关于CodeJava的学习笔记——11

一、GUI 1、最简单的GUI 只有一个按钮的GUI import java.awt.*; import javax.swing.*; public class SimpleGUI{JFrame frame;Button bt;public SimpleGUI(){frame new JFrame("标题栏内容");bt new Button("点我啊");frame.add(bt);frame.setSize(8…

首个物业plus系列展 2025上海国际智慧物业博览会开幕

AI赋能服务升级!首个“物业plus”系列展 2025上海国际智慧物业博览会盛大开幕 3月31日,2025上海国际智慧物业博览会(简称“上海物博会”)在上海新国际博览中心N4馆隆重开幕。本届展会由广州旭杨国际展览有限公司主办&#xff0c…

rk3586开发版新增系统调用(Android13)

一、前言 最近想学一下kernel和hal,所以买了一块板子,带了个摄像头和屏幕,1100,学习投资了。这个Android内核定一个系统调用感觉是真的麻烦,主要是有一层bionic C,一开始不熟悉的时候还是花了点时间去配置。 二、kernel修改 include/uapi/asm-generic…

OCR第三个方案:PP-OCRv4的初步探索

一、PP-OCR历史简要回顾 先请出PP-OCR官网,理解上有出入的,以官网为准。 1.1 PP-OCR系列历史 PP-OCRv1(2020):首创3.5M超轻量模型,奠定两阶段架构基础(检测方向分类识别)PP-OCRv2…

ICLR 2025 Spotlight:让机器人实现「自主进化」,蚂蚁数科、清华提出具身协同框架 BodyGen

最近,全球 AI 和机器学习顶会 ICLR 2025 公布了论文录取结果:由蚂蚁数科与清华大学联合团队提出的全新具身协同框架 BodyGen 成功入选 Spotlight(聚光灯/特别关注)论文。 论文出自蚂蚁数科与清华大学兴军亮老师团队合作的科研项目…

第十九章:Python-pyttsx3 库实现文本转语音功能

前言 在开发语音交互应用或需要文本转语音功能的项目时,pyttsx3 是一个非常实用的 Python 库。它支持离线语音合成,无需联网即可将文本转换为语音。本文将详细介绍 pyttsx3 的功能、用法以及常见问题的解决方法,并通过示例代码帮助你快速上手…

SvelteKit 最新中文文档教程(16)—— Service workers

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte …

Flutter项目之构建打包分析

目录: 1、准备部分2、构建Android包2.1、配置修改部分2.2、编译打包 3、构建ios包3.1、配置修改部分3.2、编译打包 1、准备部分 2、构建Android包 2.1、配置修改部分 2.2、编译打包 执行flutter build apk命令进行打包。 3、构建ios包 3.1、配置修改部分 3.2、编译…

24、网络编程基础概念

网络编程基础概念 网络结构模式MAC地址IP地址子网掩码端口网络模型协议网络通信的过程(封装与解封装) 网络结构模式 C/S结构,由客户机和服务器两部分组成,如QQ、英雄联盟 B/S结构,通过浏览器与服务器进程交互&#xf…

Mentalab Explore Pro携手 Wearanize + 数据集,推动睡眠科学研究

在神经科学和睡眠研究的领域,精确监测大脑活动是获取深入见解的关键。传统多导睡眠监测(PSG)设备虽然提供了详尽的数据,但其操作的复杂性和成本限制了其在更广泛场景中的应用。可穿戴技术的兴起提供了一种新的数据收集方式&#x…

基于 RK3588 的 YOLO 多线程推理多级硬件加速引擎框架设计(代码框架和实现细节)

一、前言 接续上一篇文章,这个部分主要分析代码框架的实现细节和设计理念。 基于RK3588的YOLO多线程推理多级硬件加速引擎框架设计(项目总览和加速效果)-CSDN博客https://blog.csdn.net/plmm__/article/details/146542002?spm1001.2014.300…

【Yolov8部署】 VS2019+opencv+onnxruntime 环境下部署目标检测模型

文章目录 前言一、导出yolov8模型为onnx文件二、VS2019中环境配置三、源码与实际运行 前言 本文主要研究场景为工业场景下,在工控机与工业相机环境中运行的视觉缺陷检测系统,因此本文主要目的为实现c环境下,将yolov8已训练好的检测模型使用o…

论文阅读:Dual Anchor Graph Fuzzy Clustering for Multiview Data

论文地址:Dual Anchor Graph Fuzzy Clustering for Multiview Data | IEEE Journals & Magazine | IEEE Xplore 代码地址:https://github.com/BBKing49/DAG_FC 摘要 多视角锚图聚类近年来成为一个重要的研究领域,催生了多个高效的方法。然而&#…

乐橙R10 AI智能锁:以「技术减法」终结智能家居「参数内卷」

1 行业迷思:当「技术内卷」背离用户真实需求 “三摄猫眼”、“0.3秒人脸解锁”、“DeepSeek大模型”……智能锁行业的营销话术日益浮夸,但用户体验却陷入“功能冗余”与“操作复杂”的泥潭。 一位用户在社交平台直言:“我的智能锁有六个摄像…

如何使用 FastAPI 构建 MCP 服务器

哎呀,各位算法界的小伙伴们!今天咱们要聊聊一个超酷的话题——MCP 协议!你可能已经听说了,Anthropic 推出了这个新玩意儿,目的是让 AI 代理和你的应用程序之间的对话变得更顺畅、更清晰。不过别担心,为你的…

当 EcuBus-Pro + UTA0401 遇上 NSUC1500

文章目录 1.前言2.EcuBus-Pro简介2.1 官方地址2.2 概览 3.纳芯微NSUC1500简介3.1 NSUC1500概述3.2 产品特性 4.测试环境5.基础功能5.1 数据发送5.2 数据监控 6.自动化功能6.1 脚本创建6.2 脚本编辑6.3 脚本编辑与测试 7.音乐律动7.1 导入例程7.2 效果展示 ECB工程 1.前言 最近…

【FreeRTOS】裸机开发与操作系统区别

🔎【博主简介】🔎 🏅CSDN博客专家 🏅2021年博客之星物联网与嵌入式开发TOP5 🏅2022年博客之星物联网与嵌入式开发TOP4 🏅2021年2022年C站百大博主 🏅华为云开发…