【JavaEE】IP协议

news2025/1/23 8:11:15

 作者主页:paper jie_博客

本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。

本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将基础知识一网打尽,希望可以帮到读者们哦。

其他专栏:《MySQL》《C语言》《javaSE》《数据结构》等

内容分享:本期将会分享网络编程中的IP协议

目录

IP协议的概念

协议头格式

网段划分

特殊IP

地址管理

动态分配IP地址

IPv6

NAT技术

路由选择


IP协议的概念

想我们前面说到的UDP和TCP协议都是作用在运输层的,而我们的IP协议则是作用来网络层的.而IP协议最主要的工作就是两方面: 1. 地址管理,使用一套地址管理,来描述互联网上每个设备所在的位置. 2. 路由选择, 也就是规划通信中的路线. 如果从互联网中某个地址到另一个地址.  

主机: 这里主机一般是配有一个IP地址,但是它不能进行路由控制. 

路由器: 配有IP地址,还可以进行路由控制.

节点: 主机和路由器的统称.

协议头格式

4位版本: 这里主流的版本就是IPv4(当前主流的版本)和IPv6.

4位首部长度: 这里单位是4字节.IP头部长度最长为 16 * 4 个字节.

8位服务类型: 这里实际上只有4位有效,且这4位彼此间是冲突的.(最小延时,最大吞吐量,最高可靠性,最小成本).

16位总长度(单位字节数): 描述了一个IP数据报的长度.(包含报头 + 载荷) 这里如果传输的TCP数据报超过64k它就会进行拆包传输,变成多个IP数据报.

16位标识: 唯一标识主机发送的报文. 如果IP报文在数据链路层被切片了.那这里的每一片里面的标识都是相同的.

3位标志: 这里只有后两位有效.第二位表示是否拆包了. 第三位表示结束标识,如果分片了,就会将最后一片为1,其他为0来表示结束.

13位片偏移: 这里是分片相当于原始IP报文开始处的偏移量. 描述了这些包之间的先后顺序.

 8位生存时间: 这里表示每经过一个路由器转发,它就会-1,但这个数值减到0了,就会进行丢包.这是为了防止这个数据包在网络上无限的转发下去.

8位协议: 表示在传输层使用的是哪一种协议.

16位首部校验和: 只针对IP的首部校验,载荷部分TCP/UDP都有自带的校验和.

32位源IP和32位目的IP地址: 表示发送端主机和接收端主机

网段划分

我们的IP地址一般都分为两部分: 网络号和主机号. 网络号就是用来保证相互连接的两个网段具有不同的标识. 主机号就是同一网段内,主机之间具有相同的网络号,但主机号是不同的. 不同的子网就是将网络号相同的主机放在一起.一般来说,我们家用宽带中默认就是前三个字节就是网络号,主机号的范围就表示了局域网中可以有多少个设备.

在一个局域网中,网络号和主机号都相同的话,这个时候就无法上网.

如果局域网中的设备,网络号和路由器的网络号不相同,也是不能上网的(因为这个主机不能通过路由器访问到外网,也不能访问局域网中的其他设备)

两个相邻的局域网,网络号不能相同(一个路由器连接的两个网络,就是相邻的)

我们通过合理设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的IP地址都不同了. 这里有一种技术jiaozuoDHCP,可以自动给子网内新增主机节点分配IP地址,可以避免手动管理IP的不变.

特殊IP

这里还会有一些特殊的IP.

127.0.0.1: 环回IP,表示本机,一般是在测试中使用,这里127*都是环回IP.

如果将IP地址中的主机地址全部设置成0,就成为了网络号,代表这个局域网.

将IP地址中的主机地址全部设置成1, 就成为了广播地址,用来给同一个链路中相互连接的主机发送数据包.(往广播地址上发消息,局域网中的所有设备都可以收到(连接的同一个WiFi)).

地址管理

IP地址本质上就是一个32位的整数.为了方便,使用点分十进制的方式来区分,每一部分的范围都是0 - 255.IP地址的存在就是为了可以区分网络上的不同的设备.希望每个设备都有唯一的IP地址. 但是随着互联网的发展,32位的这个整数开始捉襟见肘了.为了解决IP地址不够用的情况,就需要相出解决方法.主要就是有三种.

动态分配IP地址

这里主要的做法就是只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每一次接入互联网,得到的IP地址就可能不同.但是这种做法只是简单的缓解了当前的情况,治标不治本.

IPv6

IPv6和IPv4有这本质的区别,并不是它的简单升级版,这是两个互不相关的两个协议,并不兼容. IPv6用16个字节128位来表示一个IP地址.这就相当于就算是地球上的每一粒沙子都可以分配到一个IP地址.但是IPv6的普及度并不高,最高的还是我们中国,普及度有70%.

NAT技术

这里会先将IP地址分为两个大类:

1. 私网IP/局域网IP

IP地址是10.*, 172.16 - 172.31*, 192.168* 这三类都是私网IP.

2. 公网IP

除了上面这些,其他的IP都是公网IP了.

这里要求公网上的设备对应的公网的IP,都是唯一的. 但是私网上的设备的IP只要保证局域网内部的IP不重复即可.不同的局域网的IP是允许重复的. 

由于上面这种规定,就有一些限制:

1. 公网设备访问公网设备,没有任何问题,可以直接访问.

2. 局域网设备访问局域网设备(同一个局域网),也没问题.

3. 但是局域设备访问局域设备(不同的局域网),就不允许访问了.

4. 公网设备不允许主动访问局域网设备.

5. 局域网设备访问公网设备,就需要对局域网设备的IP进行地址转换.

一般来说,带有公网IP的路由器都是运营商的路由器. 它一般就连着几个局域网的路由器. 这里注意: 一般一个路由器都会有两个IP地址. LANIP, 是一个局域网IP. WANIP,可能是局域网IP,也可能是公网IP, 而路由器的核心就是将这两个网连起来.

而这里NAT技术起到的作用就是: 局域网设备在进行数据传输到路由器后,路由器就会将源IP改成自己的IP,一直替换到这个数据报源IP变成了公网IP,就不会进行替换了. 经过这种替换,本质上就是让一个公网IP可以对应多个设备.

而这里就会有一个问题了: 那这个数据的响应怎么返回,源IP都替换掉了. 这里在路由器内部会将这次通信的相关信息记录下来,记录这次通信过程中的 替换前的源IP 替换后的源IP 目的IP. 返回时就将源IP和目的IP反过来. 这里如果是同一个局域网多个设备访问同一个服务器, 那它这里就会多出一个源端口和目的端口来区分. 如果恰好这里端口也相同,它就会对端口号也使用映射,再变成不同的端口号就行了.

路由选择

路由选择就是在网络结构中规划出一条路线. 这里因为网络结构太复杂了,每个路由器都无法掌握全局的信息,只能掌握一部分局部信息,就属于(走一步看一步).

路由器转发数据包就和我们生活中通过问路来找地方一样.数据报中包含了目的IP,就是问路的目标. 每个路由器对于网络环境(附近的设备情况)有一定的了解.此时就可以根据路由器的了解来进行下一步. 这里的了解,路由器内部有一个路由表来存储. 里面存储了目的IP的网段,对应的网络接口(从路由器哪个口出). 如果目的IP中路由表有就直接转发即可. 当目的地址路由表中没有相关信息,就会交个下一跳(一般就是它的上层路由器).

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

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

相关文章

腾讯云OSS文件上传功能

腾讯云COS介绍 腾讯云COS(Cloud Object Storage)是一种基于对象的存储服务,用于存储和管理海量的非结构化数据,如图片、音视频文件、备份数据等。它具有以下特点和优势: 高可靠性:采用分布式存储架构&…

MCU看门狗

目录 一、独立看门狗(IWDG) 1、IWDG 主要作用 2、IWDG 主要特性 3、编程控制 4、注意地方 二、窗口看门狗(WWDG) 1、窗口看门狗作用: 2、窗口看门狗产生复位信号有两个条件: 3、WWDG 框图 4、WWDG 将要复位的时间 5、编程控制 一、独立看门…

揭秘京东商品背后的秘密:一键获取详细数据,打造全新购物体验

京东商品详情原数据API接口技术详解 一、概述 京东商品详情原数据API接口是京东开放平台提供的一套用于获取商品详细信息的接口。通过调用该接口,第三方开发者可以获取包括商品描述、价格、图片、评价等详细信息,进而在自己的应用或网站中展示给用户&a…

【STM32 物联网】AT指令与TCP,发送与接收数据

文章目录 前言一、连接TCP服务器1.1 配置Wifi模式1.2 连接路由器1.3 查询ESP8266设备IP地址1.4 连接TCP服务器 二、向服务器接收数据和发送数据2.1 发送数据2.2 接收数据 总结 前言 随着物联网(IoT)技术的迅速发展,越来越多的设备和系统开始…

Python:异常处理

异常处理已经成为判断一门编程语言是否成熟的标准,除传统的像C语言没有提供异常机制之外,目前主流的编程语言如Python、Java、Kotlin等都提供了成熟的异常机制。异常机制可以使程序中的异常处理代码和正常业务代码分离,保证代码更加优雅&…

机器学习第二十八周周报 PINNs2

文章目录 week28 PINNs2摘要Abstract一、Lipschitz条件二、文献阅读1. 题目数据驱动的偏微分方程2. 连续时间模型3. 离散时间模型4.结论 三、CLSTM1. 任务要求2. 实验结果3. 实验代码3.1模型构建3.2训练过程代码 小结参考文献 week28 PINNs2 摘要 本文主要讨论PINN。本文简要…

vue-路由(六)

阅读文章你可以收获什么? 1 明白什么是单页应用 2 知道vue中的路由是什么 3 知道如何使用vueRouter这个路由插件 4 知道如何如何封装路由组件 5 知道vue中的声明式导航router-link的用法 6 知道vue中的编程式导航的使用 7 知道声明式导航和编程式导航式如何传…

代码随想录算法训练营DAY19 | 二叉树 (6)

一、LeetCode 654 最大二叉树 题目链接:654.最大二叉树https://leetcode.cn/problems/maximum-binary-tree/ 思路:坚持左开右闭原则,递归划分数组元素生成左右子树。 class Solution {public TreeNode constructMaximumBinaryTree(int[] num…

数字人如何激发广电内容创新可能性?

在数字化传播时代,数字人的兴起对激发传统文化的内在活力具有重要意义。如河南广电以《唐宫夜宴》中唐代仕女为原型设计,推出身穿三彩襦裙的数字人“唐小妹”,目前数字人“唐小妹”已在河南卫视中国节日系列的多个节目中出现,带给…

【算法】C语言使用qsort对字符串字符进行排序(解决字符串长度不统一的问题)

核心思想是 当a的长度>b时&#xff0c;a一定比b大当a,b长度相等时&#xff0c;通过strcmp比较哪个字典序大&#xff0c;也就是实际的数哪个大当a的长度&#xff1c;b是&#xff0c;b一定比a大 这时候就不得不感慨C的string是多么好用的&#xff0c;哎 #include<stdio.h…

由于找不到MSVCP140.dll无法运行软件游戏,多种解决方法分享

电脑系统在运行过程中&#xff0c;当出现“由于找不到MSVCP140.dll”这一提示时&#xff0c;可能会引发一系列潜在的问题与影响。当电脑无法找到这个特定的dll文件时&#xff0c;意味着相关应用可能无法顺利加载并执行必要的组件&#xff0c;进而导致程序无法启动或运行过程中频…

基于SpringBoot+WebSocket+Spring Task的前后端分离外卖项目-订单管理(十七)

订单管理 1. Spring Task1.1 介绍1.2 cron表达式1.3 入门案例1.3.1 Spring Task使用步骤1.3.2 代码开发1.3.3 功能测试 2.订单状态定时处理2.1 需求分析2.2 代码开发2.3 功能测试 3. WebSocket3.1 介绍3.2 入门案例3.2.1 案例分析3.2.2 代码开发3.2.3 功能测试 4. 来单提醒4.1 …

基于微信小程序的校园跑腿系统的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

无锁、偏向锁、轻量级锁、重量级锁

无锁、偏向锁、轻量级锁、重量级锁 1、偏向锁、轻量级锁、重量级锁适用于不同的并发场景 偏向锁&#xff1a;无实际的锁竞争&#xff0c;且将来只有第一个申请锁的线程会使用锁。偏向锁只有初始化时需要一次CAS 轻量级锁&#xff1a;无实际的锁竞争&#xff0c;多个线程交替使…

论文阅读-EMS: History-Driven Mutation for Coverage-based Fuzzing(2022)模糊测试

一、背景 本文研究了基于覆盖率的模糊测试中的历史驱动变异技术。之前的研究主要采用自适应变异策略或集成约束求解技术来探索触发独特路径和崩溃的测试用例&#xff0c;但它们缺乏对模糊测试历史的细粒度重用&#xff0c;即它们在不同的模糊测试试验之间很大程度上未能正确利用…

SG7050EAN规格书

SG7050EAN 晶振是EPSON/爱普生的一款额定频率73.5 MHz ~ 700mhz的石英晶体振荡器&#xff0c;7050封装常规有源晶振&#xff0c;4脚贴片&#xff0c;具有小尺寸&#xff0c;高稳定性。SG5032EAN 晶体振荡器结合了相位锁定环&#xff08;PLL&#xff09;技术和AT切割晶体单元&am…

Unity中,C#的事件与委托区别和经典实例

文章目录 实例1&#xff1a;委托&#xff08;Delegate&#xff09;的基本用法实例2&#xff1a;事件&#xff08;Event&#xff09;的声明与订阅实例3&#xff1a;Unity引擎中的委托实例 - UI Button.onClick实例4&#xff1a;事件&#xff08;Event&#xff09;的安全性实例5&…

ViT: transformer在图像领域的应用

文章目录 1. 概要2. 方法3. 实验3.1 Compare with SOTA3.2 PRE-TRAINING DATA REQUIREMENTS3.3 SCALING STUDY3.4 自监督学习 4. 总结参考 论文&#xff1a; An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 代码&#xff1a;https://github.com…

2024几个测试接口的好工具,效率加倍~

作为一名后端程序员&#xff0c;一定要对自己写的接口负责&#xff0c;保证接口的正确和稳定性。因此&#xff0c;接口测试也是后端开发中的关键环节。 但我相信&#xff0c;很多朋友是懒得测试接口的&#xff0c;觉得这很麻烦。一般自己写的接口自己都不调用&#xff0c;而是…

Acwing---877. 扩展欧几里得算法

扩展欧几里得算法 1.题目2.基本思想3.代码实现 1.题目 给定 n n n 对正整数 a i ai ai, b i bi bi&#xff0c;对于每对数&#xff0c;求出一组 x i xi xi, y i yi yi&#xff0c;使其满足 a i x i b i y i g c d ( a i , b i ) aixibiyigcd(ai,bi) aixibiyigcd(ai,bi)…