【Java EE初阶十八】网络原理(三)

news2024/11/27 22:33:05

3. 网络层

        网络层要做的事情主要是两方面:
        1)、地址管理:制定一系列的规则,通过地址,描述出网络上一个设备的位置;
        2)、路由选择:网络环境是比较复杂的,从一个节点到另一个节点之间,存在很多条不同的路径,就需要通过这种方式,筛选/规划出更合适的路径进行数据传输;

3.1 IP 协议

3.1.1 学习ip协议报头

        ip协议报头如下图所示:

四位版本

        4-> ip v4;
        6 -> ip v6;一般来说大规模使用的版本就是这两种

4位首部长度

        IP 协议的报头,也是变长的;即0-0xf  => *4 => 0-60 字节;

8位服务类型

        能够让IP 协议切换形态;即3位优先权字段(已经弃用),4位TOS字段(这四个位,彼此之间是冲突的,只有一位设为 1,不同的位设为 1,表示 IP 协议不同的形态.4种形态分别是最小延时,最大吞吐量,最高可靠性,最小成本),和1位保留字段(必须置为0);

16位总长度(字节数)

        描述了 IP 数据包最长是多长;IP 协议确实也存在 64KB 这样的限制, 但是 IP 协议自身支持"拆包组包"功能;

16位标识:如果一个大的 IP 数据包需要拆成多个小的,此时拆出来的这多个小包,16 位标识就是相同的数值

3位标志:有一位表示是否允许拆包个包,还有一位表示是否是最后一个包(类似于单链表的结束标记

13位偏移量:描述当前每个小的数据包(分片)相对位置

        通过这三个属性,来支持 IP 协议的拆包和组包;

8位生存时间(TTL)

        描述了这个 IP 数据包,在网络上还能继续存活多久;TTL 的单位,是次数,数据包构造出来的时候,TTL 会被设置成一个初始值(32,64,128....),数据包在转发过程中,每次经过一个路由器转发,TTL 就会 -1;如果这个数据包, 已经把 TTL 耗尽了,还没有顺利到达对方,就会被丢弃掉;

8位协议

        描述的是,IP 数据包的载荷部分,是一个 UDP 数据包还是 TCP 数据包(传输层是哪个协议)

16位首部检验和

        这个校验和,只是校验 IP 首部,不管 IP 数据的载荷(UDP/TCP 这样的数据, 自身都是有校验和的)

32位源IP地址:

32位目的IP地址:

        IP 地址,本质上就是一个 32位二进制的整数,为了方便人来理解,写作点分十进制方式,

3.2 地址管理 

3.2.1 ip地址的了解

        IP 地址,是一个 32 位的整数. 即2^32 => 42亿9千万个网络地址,理论上来说,是不应该重复的!但是物联网发展到今天,能上网的设备非常非常多的,且早就超过了 42亿9千万这个数字,为了解决ip地址不够用,就有了下面的措施:

方案一:动态分配 IP

        这个方案,治标不治本。提高了 IP 地址的利用率,但是并没有增加 IP 地址的数目.(虽然这是一个过度方案,但是这个方案目前仍然是广泛存在的)

方案二:NAT 机制 (网络地址转换)

        本质上是让一个 IP 地址来代表一批设备;

        把 IP 地址分成两个大类:

1) 、内网 IP (局域网 IP)

        如果一个 IP 地址,是以 10.*或者 172.16.*~~172.31*或者 192.168.*(符合上述条件之一,该IP 就是内网 IP),在同一个局域网内部,内网IP 之间不能重复,但是在不同的局域网中,内网 IP 之间是可以重复的。

2) 、外网 IP (广域网 IP)

        剩下的 IP 就都是外网 IP,外网 IP 则始终都不允许重复, 务必唯一;

3.2.2 NAT的工作机制

        此时,运营商路由器,也是一个 NAT 设备,就能够对当前这里的源 IP 进行替换.(内网IP无法在广域网上使用) ,运营商路由器,NAT 设备,就相当于一个中转站;

        如果当前局域网内,有多个主机, 都访问同一个网站服务器,此时服务器返回的响应经过当前的路由器之后,要交还给哪个主机呢?

        若是两个主机在发送ip数据报时,ip和端口一样时,如下图所示:

        当前的网络环境,就是以 NAT + 动态分配的方式来解决 IP 地址不够用的问题的.

        NAT 机制,最大的优势,"纯软件的方案”,也正是因为这个机制,局域网内部的设备,能够主动访问外网的设备,外网的设备无法主动访问局域网内部的设备;

方案三:IPv6

        IPv6 使用 16 个字节来表示IP 地址.该方案从根本上解决了问题,大幅度的提升了IP 地址的个数;

3.3 网段划分

        把一个 IP 地址,会分成两个部分:网络号(标识了一个局域网)+ 主机号(标识了局域网中的一个设备),详情如下所示:

        综上所述,同一个局域网中的设备,网络号必须相同.主机号必须不同;这两个相邻的局域网(通过一个路由器,连接的两个局域网),网络号不能相同;

        192.168.1.10对于上述的一个 IP 地址,哪个部分是网络号,哪个部分是主机号,不一定的.子网掩码,就是用来确定网络号的,详细情况如下图所示:

        上面是带有子网掩码的网段划分,是当下的网络环境现状,下图是一个"上古时期"的网段划分方式;

        1、如果一个 IP 地址,主机号全0,当前这个 IP 就表示“网络号”,如192.168.100.0和255.255.255.0,这是该ip代表一个局域网的,是不能给一个具体的主机分配这个 IP 的;

        2、如果一个 IP 地址,主机号全 1, 表示当前这个 IP 就是一个"广播址",如192.168.100.255,该ip也不能给具体的主机分配的;(前面说 UDP 天然能支持 广播,就是和这个 IP 有关系,使用 UDP socket 给这个地址发送 UDP 数据报,此时局域网中所有的设备,都能收到这个数据报,TCP 则无法和这个地址,建立连接)

        3、如果一个IP 是 127 开头的,此时这个 IP 就是"环回 ip"(loopback),127.0.0.1(最常用的),都表示“"设备自身” 自己发给自己;(操作系统提供了一个特殊的"虚拟网卡",关联到了这个 IP 上)

3.4 路由选择

        路由选择, 就是描述了 IP 协议(IP 数据报) 转发过程,从 A->B,中间可能有很多条可行的路径,但是具体怎么走的实际路径;

        进行IP 数据报转发的时候,每个路由器,都是无法知道网络的“全貌”,只知道一些局部信息.(一个路由器能知道哪些设备和它自己是相连的),这就意味着 IP 数据在转发过程中,是一个"探索式”"启发式"过程--->所以这个过程,很难给出"最优解" 只能是"较优解”;

        一个网络层的数据报,每次到达一个路由器,也会进行上述"问路"过程,每一个路由器内部都有一个数据结构“路由表”,根据数据报中的目的IP,查路由表,如果查到了(问的人,恰好知道咋走),就直接按照路由表给定的方向(从哪个网络接口进行转发),继续转发就行了;如果没查到(问的人,不知道咋走),路由表里面有一个"默认的表项”(下一跳地址),按照默认的表项转发即可;

ps:本篇的内容就到这里,如果大家感兴趣的话就请一键三连哦!!!

        

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

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

相关文章

【7】知识融合

知识融合(也称本体对齐、本体匹配、实体对齐),即合并两个知识图谱(本体),基本的问题都是研究怎样将来自多个来源的关于同一个实体或概念的描述信息融合起来。 需要确认的是: 等价实例:实体的匹配&#xf…

C++ 调用js 脚本

需求: 使用Qt/C 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(C 调用lua 脚本-CSDN博客) 步骤: 1&…

redis 值中文显示乱码

问题: 解决办法: exit退出 进入时添加 --raw参数

ChatGPT魔法1: 背后的原理

1. AI的三个阶段 1) 上世纪50~60年代,计算机刚刚产生 2) Machine learning 3) Deep learning, 有神经网络, 最有代表性的是ChatGPT, GPT(Generative Pre-Trained Transformer) 2. 深度神经网络 llya Suts…

小学校园气象站:气象科普与校园安全的新伙伴

【TH-XQ2】近年来,随着气候变化和极端天气的频发,气象科普逐渐受到了社会各界的关注。而在小学校园中,校园气象站设备的引入,不仅为气象科普提供了一个生动的实践平台,同时也为校园安全提供了新的保障。 小学校园气象…

【JavaEE】_线程的状态与转移

目录 1. 线程的状态 1.1 NEW 1.2 RUNNABLE 1.3 BLOCKED 1.4 WAITING 1.5 TIMED_WAITING 1.6 TERMINATED 2. 线程状态的转移 在多线程Thread类相关一文中已经介绍过进程的状态:就绪状态与阻塞状态; 若需详情请查看原文,链接如下&#…

防御第五次------防火墙综合实验

实验要求 1、办公区设备可以通过电信链路和移动链路上网(多对多的NAT、并且需要保留一个公网IP不能用来转换)。 2、分公司的设备可以通过总公司的移动链路和电信链路访问到DMZ区的http服务器 3、分公司内部的客户端可以通过公网地址访问到内部的服务器。

MySQL 学习记录 1

原文:https://blog.iyatt.com/?p12631 1 前言 去年年初报考 3 月的计算机二级(C 语言)【https://blog.iyatt.com/?p9266 】考过了,这次打算报考 3 月的计算机三级(数据库)。数据库这一块,很…

Qt 使用QScintilla 编辑lua 脚本

需求: 利用QScintilla 编辑lua 脚本 步骤: 1,下载 QScintilla Riverbank Computing | Download 2, 打开 src/qscintilla.pro 文件 编译出 dll库 3,工程中引入这个库 注意debug 模式 必须加载debug 版本编译的库&#xff0…

利用R语言绘制相关性热图

数据示例(归一化处理后): install.packages("corrplot") install.packages("ggplot2") install.packages("ggpubr") library(corrplot) install.packages("GGally") library(GGally) library(ggplot…

Linux——信号(2)

在上一张博客我们介绍了Linux中信号的概念和信号是如何产生的,虽然信号 有多种产生方式,但是最终只能由操作系统给对应进程发送特定信号。现在 我将更加规范的介绍Linux中的信号。上一章的遗留问题 我们上一章中在观察信号的默认处理的时候发现终止信号…

UE4 C++联网RPC教程笔记(一)(第1~4集)

UE4 C联网RPC教程笔记(一)(第1~4集) 前言1. 教程介绍与资源2. 自定义 Debug 功能3. Actor 的复制4. 联网状态判断 前言 本系列笔记将会对梁迪老师的《UE4C联网RPC框架开发吃鸡》教程进行个人的知识点梳理与总结,此课程…

软考29-上午题-排序

一、排序的基本概念 1-1、稳定性 稳定性指的是相同的数据所在的位置经过排序后是否发生变化。若是排序后,次序不变,则是稳定的。 1-2、归位 每一趟排序能确定一个元素的最终位置。 1-3、内部排序 排序记录全部存放在内存中进行排序的过程。 1-4、外部…

白话微机:6.解释RTOS以及一些考研面试问题

一. 前言(总结世界观) 很久很久以前,有这样一个世界,这个世界有着现实世界一样的元素:那里的人又有一个别的名字叫做“数据”,人有0有1;人们也有住房,这些住房在这个世界叫做“存储器…

C++-opencv的imread、imshow、waitkey、namedWindow

在C中使用OpenCV时,imread和imshow是两个非常基础且常用的函数,用于读取图像和显示图像。以下是这两个函数的简要说明和如何一起使用它们的示例。 imread函数 imread用于从指定的文件路径读取图像。它将图像读入为cv::Mat对象,这是OpenCV中…

单机环境搭建Redis伪集群

1、Redis版本 [rootwsdhla ~]# redis-server -v Redis server v6.2.6 sha00000000:0 mallocjemalloc-5.1.0 bits64 buildbf23dac15dfc00fa[rootwsdhla ~]# redis-cli -v redis-cli 6.2.62、创建节点目录 创建6个节点目录,分别复制一份redis.conf并编辑&#xff1a…

关于Sora的一些紧迫问题...

OpenAI Sora 概述 OpenAI最新的创新,Sora,在人工智能领域开辟了新的天地。Sora是一个文本到视频的扩散模型,可以将文本描述转化为逼真的视频内容。它解决了一个重大的技术挑战,即在视频中保持主体的一致性,即使它们暂…

anomalib1.0学习纪实-续2:三个文件夹

为了读懂程序,有三个最重要的文件夹,如下图: 正好对应四个类,如下图: 四个类的来源如下图所示: 注意,MVTec是个大类,里面用到了这里的第四个类MVTecDataset,代码如下。…

Windows制作Ubuntu的U盘启动盘

概要: 本篇演示在Windows10中制作Ubuntu22.04的U盘启动盘 一、下载Ubuntu22.04的iso文件 在浏览器中输入https://ubuntu.com去Ubuntu官网下载Ubuntu22.04的iso文件 二、下载Ultraiso 在浏览器中输入https://www.ultraiso.com进入ultraiso官网 点击FREE TRIAL&a…

设计模式复习

单例模式 确保一个类最多只有一个实例,并提供一个全局访问点。 (某个类的对象有且仅有一个,单例的对象充当的是全局变量的角色,为什么在C里面不直接使用全局变量,而是使用单例来代替全局变量,因为如果直接…