JAVAEE初阶相关内容第十八弹--网络原理之TCP_IP【续集】

news2024/11/27 12:48:14

写在前

上一篇博客的重点内容主要讲了关于传输层的TCP协议、UDP协议。

点击跳转上一篇博客

重点介绍了协议的特点、协议端格式、需要重点理解并掌握TCP的工作机制(十条)。

TCP与UDP对比?

TCP用于可靠传输的情况,应用于文件传输,重要状态更新等场景。

UDP用于对高速传输和实时性要求较高的通信领域,例如,早期的QQ,视频传输等,另外,UDP还可以用于广播【同一机房内部,天然支持广播-- IP地址中有一种特殊的地址”广播IP“通过UDP往广播上发送数据报,此时该局域网内所有的设备都能收到数据。】

传输层的协议并非只有这两个,例如有的是专门为了游戏打造的,典型协议:KCP。

本篇博客将重点介绍网络层协议-IP

目录

网络层协议代表-IP协议

1. 协议头格式

2. 点分十进制

3. 关于IP地址不够用问题的解决办法

(1)动态分配IP

(2)NAT网络地址转换

(3)IPV6

4. IP协议-地址管理

4.1 网络号

4.2 主机号

4.3 子网掩码

5. IP协议-路由选择


网络层协议代表-IP协议

在复杂的网络环境中确定一个合适的路径。

1. 协议头格式

地址管理、路由选择。

对“16位总长度”的理解

16位总长度是不是意味着一个IP数据报,最大只能支持64KB?

确实是有这个限制的,相当于一个快递公司一次最大只能给运输64kg的快递,但是,IP自身就支持对包的拆分和组装。一个IP数据报携带的数据载荷太大了,超过了64KB,就会在网络层针对数据进行拆分,把一个数据拆分成多个IP数据报,再分别发送,接收方再重新拼装。

IP协议中最重要的部分:32位源IP,32位目的IP

2. 点分十进制

此处看到的IP地址是32位整数,但是日常见到的IP则是一串数字,使用三个点把32位4个字节的数字分隔开,每个部分分别使用0-255的十进制数字进行表示。

3. 关于IP地址不够用问题的解决办法

32位数字,只能表示42亿9千万个数字,我们期望使用这个表示全世界所有的上网设备。为了解决IP地址不够用的问题,想了很多办法。

(1)动态分配IP

提高利用率,指标不治本

(2)NAT网络地址转换

使用1个IP地址代表一批网络设备【端口号区分】

关于内网和外网:

NAT背景下把IP地址分成了两大类:内网IP和外网IP

内网IP【私有IP】:10.开头的、172.16.*-172.31.*、192.168.*

外网IP【公网IP】: 除了内网IP外的都是外网IP。

NAT要求:公网IP必须是唯一的,内网IP可以在不同的局域网中重复出现。如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备【路由器】,把IP地址进行映射,从而完成网络访问。反之,公网的设备,无法直接访问私网的设备,不同局域网的私网设备没法直接进行相互访问。

NAT机制能够有效的解决IP不够用的问题,但是带来的副作用就是网络的环境更加复杂了。

(3)IPV6

根本上解决了IP不够用的问题,使用16位字节表示IP地址。

虽然IPV6看起来是美好的,但是当前世界上仍然是以NAT+IPV4+动态分配来进行网络组建的。真正使用IPV6的地方非常少。

主要原因是IPV6贵,IPV6与IPV4还不兼容。

4. IP协议-地址管理

把一个IP地址分成了两部分,一个叫网络号,一个叫主机号。

4.1 网络号

表示网段,保证相互连接的两个网段具有不同的标识。

4.2 主机号

标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。

193.168.0.10    --   网络号:192.168.0  主机号:10

划分网络号和主机号就是为了组网。

4.3 子网掩码

子网掩码格式和IP地址格式一样,也是32位的二进制数,其中左边是网络位,用二进制”1“表示,1的数目等于网络位长度。右边是主机位,用二进制”0“表示,0的数目等于主机位长度。对于家用设备来说,子网掩码最常见的就是255.255.255.0。

作用:划分A、B、C三类IP地址子网;网络通信时,子网掩码会结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。

5. IP协议-路由选择

路径规划

核心思路--问路。每个路由器都会保存一定的周围设备的信息(路由表)。每次有一个IP数据报经过路由器。就需要匹配路由表,看看接下来咋走。如果路由表上有匹配的选项【该路由器认识路】,直接按照要求走就可以。如果没有匹配的选项【不认识路】,会提供一个默认路径,大体方向是不会错的。每次经过一个路由器问一次,TTL-1。如果减到0还没到,就说明永远都到不了,这个地址没人知道,就被丢弃了。

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

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

相关文章

超完整的mysql安装配置方法(包含idea和navicat连接mysql,并实现建表)

mysql安装配置方法 1、下载mysql2、解压到指定的安装目录3、配置初始化文件my.ini4、配置用户变量和系统变量5、初始化mysql6、安装mysql服务并启动修改密码7、使用idea连接mysql8、使用Navicat可视化工具连接mysql,并实现新建数据库,新建表 1、下载mysq…

【数据结构与算法篇】八种排序 (C++实现)

多种排序算法的Cpp实现 一. 排序的概念及其运用排序的概念 二. 一图速览常见排序三. 排序的C实现1> 直接插入排序2> 希尔排序希尔排序代码实现(希尔所实现)希尔排序代码实现(优化版) 3> 选择排序选择排序的代码实现(同时选出最大和最小的元素) 4> 堆排序堆排序的代…

CSS面经(未完待续)

1. CSS选择器及其优先级 !important > 行内样式 > id选择器 > 类/伪类/属性选择器 > 标签/伪元素选择器 > 子/后台选择器 > *通配符 2. 重排和重绘是什么?浏览器的渲染机制是什么? 重排(回流):当增加或删除dom节点&…

面试就是这么简单,offer拿到手软(三)—— 常见中间件框架面试题,es,redis,dubbo,zookeeper kafka 等

面试就是这么简单,offer拿到手软(一)—— 常见非技术问题回答思路 面试就是这么简单,offer拿到手软(二)—— 常见65道非技术面试问题 面试就是这么简单,offer拿到手软(三&#xff…

DAPP开发【09】NFT交易市场开发(hardhat测试)

测试文件下新建market.js文件 扁平化,将所有依赖放在tmp.sol,可以去给他人使用 npx hardhat flatten > tmp.sol 测试文件 const {expect} require(chai); const {ethers} require(hardhat);describe(Market,async function(){//定义三个合约&a…

long转int类型转换问题

在业务代码中排序时需要根据日期排序,写了如下代码 sorted((o1, o2) -> {String str1 null;String str2 null;try {Field field getField(fieldMap, configBO.getCodeName());str1 String.valueOf(field.get(o1));str2 String.valueOf(field.get(o2));} ca…

kubectl获取命名空间下所有configmap集合的方法

前言: 获取单个configmap并忽略特定字段的操作可参照:kubectl获取ConfigMap导出YAML时如何忽略某些字段。 要获取命名空间下所有ConfigMap并忽略特定字段,你可以使用kubectl命令与例如yq这样的工具结合使用来忽略或删除不需要的字段。以下是…

分布式ID服务实践

背景 分布式场景下需要一个全局 ID 来标识唯一性,比如在单数据库时通过表唯一主键即可实现唯一 ID,分库分表时就需要全局唯一 ID。 业务对唯一 ID 的要求如下: 全局唯一性 不能出现重复的 ID 号,既然是唯一标识,这…

CGAL的周期三角剖分(相关信息较少)

CGAL的周期二维三角剖分类旨在表示二维平面上的一组点的三角剖分。该三角剖分形成其计算空间的分区。它是一个单纯复体&#xff0c;即它包含任何k-单纯形的所有关联j-单纯形&#xff08;j<k&#xff09;&#xff0c;并且两个k-单纯形要么不重叠&#xff0c;要么共享一个公共…

数据结构与算法-D2D3线性表之顺序表

线性表&#xff1a;包含若干数据元素的一个线性序列&#xff0c;特征如下&#xff1a; 1&#xff09;对非空表&#xff0c;a0是表头&#xff0c;无前驱&#xff1b; 2&#xff09;an-1是表尾&#xff0c;无后继&#xff1b; 3&#xff09;其他元素仅且仅有一个前驱&#xff0c;…

Day02 Liunx高级程序设计2-文件IO

系统调用 概念 是操作系统提供给用户使其可以操作内核提供服务的一组函数接口 用户态和内核态 其中 ring 0 权限最高&#xff0c;可以使用所有 CPU 指令&#xff0c; ring 3 权限最低&#xff0c;仅能使用 常规 CPU 指令&#xff0c;这个级别的权限不能使用访问硬件资…

解决 vite 中 import.meta.globEager is not function 的问题

本人正在重构两年前搭建到一半的博客网站&#xff0c;相关依赖都很陈旧&#xff0c;用到了 npm-check-updates 检测项目可升级依赖&#xff1a; 升级完成后解决完依赖发现控制台报错 import.meta.globEager is not function解决方案&#xff1a; vite版本降至4.3.0 亲测有效&…

Shell数组函数:数组(二)

关联数组 注意&#xff1a;先声明关联数组 一、定义关联数组 方法一 #一次赋一值 #数组名[索引]变量值 [rootlocalhost ~]# declare -A ass_array1 [rootlocalhost ~]# ass_array1[index1]pear [rootlocalhost ~]# ass_array1[index2]apple [rootlocalhost ~]# ass_array1[ind…

gpt阅读论文利器

1. txyz.ai 读论文 严伯钧 3. consensus 两亿科学论文的资源库. 用英文. 中国经济发展, 美国加州没有,减肥没有. 2. chrome插件 gpt sidebar 3. gpt academic 论文润色和学术翻译 ,一键输出公式. 英语口语8000句. 托福备考计划表. 百词斩托福. 薄荷外刊. 分区笔记精读法.…

Container容器技术简介

本文介绍了容器技术出现背景&#xff0c;docker技术与容器编排技术的简单说明 背景 在传统项目的生产环境中&#xff0c;迁移一个用户态进程往往非常麻烦&#xff0c;因为一个用户态进程背后会附带这非常多例如函数库、中间件等的依赖项&#xff0c;但又没有像apt和yum一样的…

广州华锐互动:钢铁厂烫伤事故3D模拟急救演练提高企业应对突发事故能力

随着工业化进程的加快&#xff0c;钢铁行业作为国家经济的重要支柱产业&#xff0c;其安全生产问题日益受到社会各界的关注。近年来&#xff0c;我国钢铁企业不断加大安全生产投入&#xff0c;但事故频发的现象仍然时有发生。为了提高钢铁企业应对突发事故的能力&#xff0c;确…

如何使用llm 制作多模态

首先将任何非字符的序列信息使用特殊n个token 编码。 具体编码方法以图像为例子说明&#xff1a; 将固定尺寸图像如256256 的图像分割为1616 的子图像块。 将已知的所有图像数据都分割后进行str将其看做是一个长的字符&#xff0c;而后去重后方式一个词表。 使用特殊1024 个tok…

推荐6款本周 火火火火 的开源项目

本周 GitHub项目圈选 节选自微博、知乎、掘金等社区。 &#x1f525;&#x1f525;&#x1f525;本周推荐的开源项目是&#xff1a; kopia 日常备份工具 screenshot-to-code 截屏生成代码 MiniSearch 全文搜索 clone-voice 声音克隆 NvChad 高颜值终端 DB-GPT-Hub 文本到…

关于 Kubernetes中Admission Controllers(准入控制器) 认知的一些笔记

写在前面 工作中遇到&#xff0c;简单整理记忆博文为官方文档整理涉及内置准入控制的分类理解理解不足小伙伴帮忙指正 人活着就是为了忍受摧残&#xff0c;一直到死&#xff0c;想明了这一点&#xff0c;一切事情都能泰然处之 —— 王小波《黄金时代》 为什么需要准入控制器 准…

怎样的软件测试工程师才算“大神“?“我“的测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 个优秀的软件测试…