【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.rhkb.cn/news/259436.html

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

相关文章

【GPT-2】论文解读:Language Models are Unsupervised Multitask Learners

文章目录 介绍zero-shot learning 零样本学习 方法数据Input Representation 结果 论文:Language Models are Unsupervised Multitask Learners 作者:Alec Radford, Jeff Wu, Rewon Child, D. Luan, Dario Amodei, I. Sutskever 时间:2019 介…

Linux系统中 uboot、内核与文件系统之间的关系

前言: 最近正在学习Linux,总结了一下Linux系统中 uboot、内核与文件系统之间的关系 Linux初学者首先要搞清楚的三个文件: 引导程序(bootoader):uboot.bin/uboot.imx Linux内核镜像: zlmage 文件系统镜像:system.img/rootfs.tar.ba2 初期很多工作都是围…

文件上传漏洞--Upload-labs--Pass02--Content-Type绕过

一、什么是 Content-Type 我们在上传文件时利用 Burpsuite 进行抓包,如下图所示: 上传文件后台的源代码可能会对 Content-Type 进行规定,设置白名单 或 黑名单,这时就要利用Content-Type绕过上传含有恶意代码的 php文件。 二、代…

[ linux网络 ] 网关服务器搭建,综合应用SNAT、DNAT转换,dhcp分配、dns分离解析,nfs网络共享以及ssh免密登录

实验准备工作: 网关服务器安装:dhcp bind (yum install -y dhcp bind bind-utlis) server1安装:httpd (yum install -y httpd) 没有网络就搭建本地yum仓库或者配置网卡使其能够上网。 ( 1)网关服务器…

unity C#中的封装、继承和多态简单易懂的经典实例

文章目录 封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism) C#中的封装、继承和多态是面向对象编程(OOP)的三大核心特性。下面分别对这三个概念进行深入解释,并通过实例来说明它们在实际开发中的应用。 封装 (Encapsulation) 实例…

解决updatexml和extractvalue查询显示不全

报错注入是一种常见的SQL 注入方式,通过注入代码,触发数据库的错误响应,并从错误信息中获取有用的信息。 updatexml和extractvalue updatexml和extractvalue 是常用的两个报错注入函数 http://localhost/sqli/Less-5/?id1%27and%20updat…

【Pygame手册03/20】用于绘制形状的 pygame 模块

目录 一、说明二、画图函数2.1 接口draw下的函数2.2 pygame.draw.rect()2.3 pygame.draw.polygon()2.4 pygame.draw.circle()2.5 pygame.draw.ellipse()2.6 pygame.draw.arc()2.7 pygame.draw.line ()2.8 pygame.draw.lines()2.9 pygame.draw.aaline()2.10 pygame.draw.aaline…

【Redis】理论进阶篇------Redis的主从复制

一、原理解释 1、什么是Redis的主从复制 主从复制,是指将一台Redis服务器的数据复制到其他Redis服务器。前者称为主节点(master),后者称为从节点(slave);对于数据的复制是单项的,只能从主节点到从节点。Ma…

C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试

1、A-3E报文回顾 1、存储区分类及访问规则 2、命令类型 命令由主命令子命令组成 3、报文结构 2、启动mc服务器 3、创建VS项目 这节继续使用上节的VS2022的项目,增加一个方法 MCTestA3E(),具体怎么创建项目,见上节的过程。C#上位机与三菱…

在 CentOS 平台下安装与配置 MySQL 5.7.36

CentOS平台常用有三种MySQL安装方式,即RPM安装包、二进制压缩包和源码包。一般来讲,建议使用二进制压缩包,因为该版本比其他的分发版使用起来要简单灵活。本次实验在 CentOS 7.6 平台上选用二进制压缩包安装方式。 1、清理MySQL安装环境 Cent…

MySQL 基础知识(九)之视图

目录 1 视图的介绍 2 视图算法 3 创建视图 4 查看视图结构 5 修改视图 6 删除视图 7 参考文档 1 视图的介绍 视图是一张并不存储数据的虚拟表,其本质是根据 SQL 语句动态查询数据库中的数据。数据库中只存放了视图的定义,通过 SQL 语句使用视图时…

【6-1】使用hanlp进行实体抽取以及句法分析(问题待解决)

1.使用hanlp抽取法人名称、企业名称等信息 # -*- coding: utf-8 -*- from pyhanlp import *text1"1998年11月11日,马化腾和同学张志东在广东省深圳市正式注册成立“深圳市腾讯计算机系统有限公司”,之后许晨晔、陈一丹、曾李青相继加入。当时公司…

论文解读:Masked Generative Distillation

文章汇总 话题 知识蒸馏 创新点 带掩盖的生成式蒸馏 方法旨在通过学生的遮罩特征来生成老师的特征(通过遮盖学生部分的特征来生成老师的特征),来帮助学生获得更好的表现 输入:老师:,学生:,输入:,标签:,超参数: 1:使…

水质监测站工作原理!

TH-LSZ06】水质监测站的工作原理基于现代化学和生物学技术,主要通过化学分析和生物检测两种方法来检测水中有害物质。化学分析技术包括酸碱度、氧化还原电位、重金属离子、有机物、氮和磷等,而生物检测技术则主要关注病毒、细菌、真菌等微生物。 在水质…

Mac M1芯片编译openjdk报错问题解决

使用命令: sudo sh configure --with-target-bits64 用mac m1芯片编译openjdk一直报错: configure: The tested number of bits in the target (64) differs from the number of bits expected to be found in the target (32) configure: error: Cann…

【前端工程化面试题目】webpack 的热更新原理

可以在顺便学习一下 vite 的热更新原理,请参考这篇文章。 首先有几个知识点需要明确 热更新是针对开发过程中的开发服务器的,也就是 webpack-dev-serverwebpack 的热更新不需要额外的插件,但是需要在配置文件中 devServer 属性中配置 hot&a…

云原生之容器编排实践-基于CentOS7搭建三个节点的Kubernetes集群

背景 前面采用 minikube 作为 Kubernetes 环境来体验学习 Kubernetes 基本概念与操作,这样避免了初学者在裸金属主机上搭建 Kubernetes 集群的复杂度,但是随着产品功能的逐渐完善,我们需要过渡到生产环境中的 K8S 集群模式;而在实…

【代码移植】UNIX/Linux/POSIX代码程序移植到Windows系统平台技术汇总与经验分享

​ 图片来源 UNIX (Linux) to Windows代码移植技术路线 MinGW MinGW/MinGW-W64是用Windows原生系统API实现的,在Windows上运行的GCC编译工具链,可以编译出Windows原生应用程序。 MinGW编译工具链的生态位和微软官方的MSVC类似。 优点 MinGW编译出…

计算机网络-数据通信基础

目录 前言 一、数据通信基本概念 二、数据通信相关知识1 总结 前言 正在学习计算机网络体系,把每日所学的知识梳理出来,既能够当作读书笔记,又能分享出来和大家一同学习讨论。 一、数据通信基本概念 基本概念:信源、信道、信宿&…

第二篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:深度解读pyttsx3支持多种语音引擎

传奇开心果短博文系列 系列短博文目录Python的文本和语音相互转换库技术点案例示例系列 短博文目录前言一、三种语音引擎支持介绍和示例代码二、SAPI5引擎适用场景介绍和示例代码三、nsss引擎适用场景介绍和示例代码四、eSpeak适用场景介绍和示例代码五、归纳总结 系列短博文目…