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

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.mzph.cn/news/689798.shtml

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

相关文章

达梦数据库——数据迁移sqlserver-dm报错问题_未完待续

记录SQL server到达梦数据迁移过程中遇到的问题,持续更新中... 报错情况一:Sql server迁移达梦连接报错’驱动程序无法通过使用安全套接字Q层(SSL)加密与SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted b…

每日一题 (不用加减乘除做加法,找到数组中消失的数字)

不用加减乘除做加法_牛客题霸_牛客网 (nowcoder.com) 可以使用位运算符实现两个整数的加法: 在二进制加法中,我们通常使用“逐位相加”的方法来模拟常规加法的过程。当两个数字进行加法运算时,从最低位(通常是右侧)开…

软考学习--计算机组成原理与体系结构

计算机组成原理与体系结构 数据的表示 进制转换 R 进制转换为 10 进制–按权展开法 10进制转换为2进制 原码 反码 补码 移码 原码 :数字的二进制表示反码 : 正数的反码等于原码,负数的反码等于原码取反补码: 正数的补码等…

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

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

⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)

LCR 034. 验证外星语词典 某种外星语也使用英文小写字母&#xff0c;但可能顺序 order 不同。字母表的顺序&#xff08;order&#xff09;是一些小写字母的排列。 给定一组用外星语书写的单词 words&#xff0c;以及其字母表的顺序 order&#xff0c;只有当给定的单词在这种外…

软考30-上午题-数据结构-小结

一、杂题汇总 真题1&#xff1a; 有向图——AOV 带权有向图——AOE 真题2&#xff1a; 二叉排序树&#xff1a;左子树< 根节点 < 右子树。 二叉排序树中序遍历&#xff0c;节点关键字有序&#xff08;递增&#xff09;&#xff1b; 关键字初始序列有序&#xff0c;二叉树…

ubuntu 之 zeitgeist-fts 占用内存

座右铭&#xff1a;怎么简单怎么来&#xff0c;以实现功能为主。 欢迎大家关注公众号与我交流 sudo chmod -x /usr/bin/zeitgeist-daemonsudo chmod -x /usr/bin/zeitgeist-datahublocate zeitgeist-ftssudo chmod -x /usr/lib/x86_64-linux-gnu/zeitgeist-fts # 使用 locate z…

数据可视化利器:五款必备工具推荐

在数据可视化的世界里&#xff0c;工具的选择往往决定了工作的效率和效果。作为一名资深的数据可视化用户&#xff0c;我尝试并使用了众多的数据可视化工具。今天&#xff0c;我想向大家推荐五款我认为最好用、最实用的数据可视化工具。 1. 山海鲸可视化 山海鲸可视化以其强大…

计数排序和归并排序

计数排序 计数排序是一种非比较排序。 原理&#xff1a; 代码&#xff1a; void CountSort(int* nums, int numsSize) {int max nums[0], min nums[0];for (int i 0; i < numsSize; i) {if (nums[i] > max) {max nums[i];}if (nums[i] < min) {min nums[i];}}…

黑马程序员-瑞吉外卖day9

菜品分类下拉列表 CategoryController里面写 /*** 根据条件查询分类数据** param category* return*/GetMapping("/list")ApiOperation("菜品分类目录")public R<List<Category>> list(Category category) {List<Category> list cate…

后端扫盲系列 - vue入门指南

vue特点 组件化&#xff1a;用户界面分解为可重用的组件&#xff0c;这些组件可以使开发的页面更加模块化和可维护双向数据绑定&#xff1a;vue提供了一种轻松绑定数据和DOM元素之间的机制&#xff0c;意味着数据发送变化时&#xff0c;视图会自动更新&#xff0c;反之亦然虚拟…

GptSoVits音频教程

这个号称5秒克隆&#xff0c;或者用1分钟音频训练10分钟就能达到原声效果。 5秒的号称&#xff0c;只要是&#xff0c;什么几秒的&#xff0c;大家可以完全不要想了&#xff0c;什么知更鸟&#xff0c;什么火山&#xff0c;包括本次的GptSoVits的效果肯定是不行的&#xff0c;…

数据结构通讲

目录 集合源码详解 一、常见数据结构讲解 1. 线性数据结构 1.1 数组 1.2 队列 1.3 链表 1.3.1 单向链表 1.3.2 双向链表 1.4 栈 2. 非线性数据结构 2.1 树 2.2 二叉树 2.2.1 概念介绍 2.2.2 遍历操作 2.2.3 删除节点 2.2.4 查找局限性 2.2.5 AVL&#xff08; …

【C深剖】typedef关键字

简介&#xff1a;本系列博客为C深度解剖系列内容&#xff0c;以某个点为中心进行相关详细拓展 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

智能高压森林应急消防泵特点及优势

随着科技的发展&#xff0c;消防设备也在不断地升级改进。智能高压森林应急消防泵作为一种新型的消防设备&#xff0c;其特点和优势日益凸显&#xff0c;为森林火灾的扑救提供了有力的支持。本文将从以下几个方面对智能高压森林应急消防泵的特点和优势进行阐述。 一、高强度耐腐…

Ubuntu本地安装code-server结合内网穿透实现安卓平板远程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

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

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

天然肠衣市场分析:预计到2025年将达到45亿美元

肠衣作为包装香肠馅料的原材料一般分为可食用和不可食用两种&#xff0c;其中天然肠是由猪、羊等家畜多层肠道制作而成的&#xff0c;近些年来天然肠衣在全球市场需求不断增加。一、全球市场分析 1. 市场规模&#xff1a;根据市场研究机构的数据&#xff0c;2019年全球天然肠衣…

访问学者感谢信|人文社科工作者赴北欧访学

编者按&#xff1a;这位访问学者从委托我们申请到获得邀请函只用了一个月时间。为了表达感激之情&#xff0c;其当时就写了这封感谢信&#xff0c;但依据我们的惯例&#xff0c;一般是待申请者出国&#xff0c;一切安排妥当后再发成功案例。所以时至今日&#xff0c;才将该申请…

比特浏览器bit_selenium3bit_selenium4使用

bit_selenium3 from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options from bit_api import *# /browser/open 接口会返回 selen…