【Java】网络编程-地址管理-IP协议后序-NAT机制-以太网MAC机制

news2024/9/20 2:58:01

在这里插入图片描述

🌈个人主页:努力学编程’
个人推荐
c语言从初阶到进阶
JavaEE详解
数据结构
学好数据结构,刷题刻不容缓:点击一起刷题
🌙心灵鸡汤总有人要赢,为什么不能是我呢
在这里插入图片描述

🐴🐴🐴地址管理

🐎🐎🐎网段划分

我们将IP地址划分为两个部分,网络号和主机号.

  • 网络号:保证两个不同的网段有不同的标识.
  • 主机号:在同一个网段中,我们为了区分不同的主机,这里引入主机号.

在这里插入图片描述
这里给大家强调几个有关IP地址在通信的过程中需要注意的过程

  • 不同的子网的作用就是将网络相同的主机放到一起.
  • 如果在子网中新增一个主机,则这台主机的网络号必须和子网中的网络号一致,但是主机号必须和子网中的主机号不同,我们就可以通过合理的设置网络号和主机号来构成唯一的IP地址.

这里在给大家一种很久之前的关于网络划分的方案,把所有的IP地址分为五类,如图:
在这里插入图片描述
在这里插入图片描述
当然这种划分网络号的形式,可以说只存在于教科书中了,我们在日常开发的过程中,使用的是上面所说的网络号,主机号的方式管理IP地址.

🐎🐎🐎特殊的IP地址

  • 将IP地址中的所有的主机地址全部设置为零,就成了网络号,代表这个局域网.
  • 将IP地址中的主机号全部设置为1,就成了广播地址,用于给同一个链路中互相连接的所有主机发送数据报.

这里给大家插一段,关于广播地址的一些知识,首先由于广播地址是一个虚拟的地址,没有具体的地址值,所以它的实现是基于UDP实现的,在具体应用中,其实就是我们平常在家里使用的投影过程,首先是使用手机,连接和家里客厅里的电视同一个网络,然后手机借助家里的路由器,向连接家里这个网络的所有的设备发送一个数据包,这个数据包的传递过程就是利用广播的形式传递点的,然后可以支持传递的设备就会响应一个可以连接的数据包,这样就完成了投屏中搜索设备的整个过程.

  • 127.*的IP地址用于本机回环(loop back)测试,通常我们使用的是127.0.0.1

在这里插入图片描述

🐎🐎🐎IP地址的数量限制

我们知道,IP地址(IPv4)是一个4字节,32位的正整数.那么一共就有42亿9千万左右,而TCP/IP协议规定,每个主机都需要有一个IP地址.

按照这样的逻辑,我们就只有43亿台主机能接入网络吗?

实际上,由于我们上面所说的一些特殊IP地址的原因,数量远不止43亿
相对的我们这里提出了三种解决方法:

  • 动态分配IP地址: 当设备接入网络的时候,我们才给他分配IP地址,因此同一个MAC地址的设备,每次接入互联网中,都是有多个IP地址.
  • NAT地址:这个点比较重要,我们后面着重来讲.
  • IPv6:IPv6相对于IPv4来说极大的扩大了IP的数量,16个字节,128位来表示一个IP地址,使用IPv6就不用在考虑IP不够用的情况,因为它的数量足以给地球中的每一粒沙子分配一个IP,而计算机的主要硬件材料是硅,而硅就是用沙子做的,所以IP的数量是一定够的,由于它的IPv4是不兼容的,所以IPv6现在还没有大量普及.

在这里插入图片描述

🐎🐎🐎私有IP地址和公网IP地址

如果⼀个组织内部组建局域⽹,IP地址只⽤于局域⽹内的通信,⽽不直接连到Internet上,理论上 使⽤任意
的IP地址都可以,但是RFC 1918规定了⽤于组建局域⽹的私有IP地址
• 10.,前8位是⽹络号,共16,777,216个地址
• 172.16.到172.31.,前12位是⽹络号,共1,048,576个地址
• 192.168.
,前16位是⽹络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公⽹IP);

在这里插入图片描述

一个路由器是可以配置两个IP地址的,一个叫WAN口IP,另一个叫LAN口IP(子网IP).
路由器LAN口连接的主机,都从属于当前这个路由器的子网中.
不同的路由器,子网IP其实都是一样的,(通常都是192.168.1.1).子网内的主机IP不能重复,但是每个子网之间的IP地址是可以重复的.
每一个家用路由器其实都是运行商路由器子网的一个节点,这样的运行商路由器可以有很多级,最外层的运行商路由器,WAN口IP就是一个公网IP.
如果我们希望自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在一台具有外网IP的服务器上,这样的服务器可以再阿里云/腾讯云上进行购买.

NAT机制:
这里给大家就介绍一下一台主机访问一个外部的服务器的时候的整个过程.由于我们在网络通信的时候,内网中的设备是没法访问公网中的服务器的,所以我们一般在发送请求之后给运行商路由器之后,中间会有一个机制叫NAT,它的作用就是给我们发送的这个数据包重新分配一个I公网的P地址,这样就可以访问外部的服务器,等到收到服务器收到响应之后,站在服务器的角度,它只是知道IP为运行商的机器给他发送了一个请求,对于后面的主机IP是一无所知的,所以发送响应的数据也是发送给了运营商这个IP,然后在运营商路由器里呜呼了一个类似于 “路由表” 的东西,这个东西的作用,就是将路由器IP和主机IP做了一个映射关系,等到我们收到数据之后,根据路由表找到发送请求的主机,然后将数据发送给对应的主机,完成整个通信过程.

在这里插入图片描述

🐎🐎🐎路由选择:

我们知道在真实的网络通信中,线路是非常复杂的,那么我们在网络通信的时候,到底是如何选择通信的线路的呢?

这里的过程就类似于 “跳一跳” 即 “问路” 的过程.

IP数据包的传输过程就类似于问路的过程.

  • 当IP数据包,到达路由器之后,路由器会先查看其目的IP;
  • 如果目的IP可以到达,直接将数据发送给目的IP.否则发送给另一个路由器
  • 重复这个过程,直到到达IP地址.

在这里插入图片描述
注意:

网络中,路由器的寻找,是不能直接寻找最优解的,我们只能找到所谓的 “较优解” 因为一台路由器是无法知道整个网络的结构的,它只能直到它附近的路由器的信息,所以我们寻找 “最优解” 的这个过程是启发式的,试探性的,逐渐知道最终的目标.

🐎🐎🐎数据链路层

对于数据链路层,就越来越接近底层了,离程序员越来越远了,这里着重关注一下其中的以太网协议就好,以太这个概念本身是物理上面的概念,用来描述光在真空中传播的一种介质,但是后面证明这个概念是不存在的,我们计算机就把这个概念拿来用了.

以太网横跨数据链路层和物理层,平时我们使用的有线网络就是以太网.
在这里插入图片描述

这里有一个非常重要的概念叫MAC地址(存在于目的地址和源地址是网卡出厂的时候固化的).

MAC地址和IP地址都是为了区分网络上的不同设备.
其实在开始的时候,开发MAC和开发IP地址的是同一伙人,独立各自提出的.
只是IP地址设置的是4个字节,MAC地址设置的是6个字节,现在4个字节明显不够用了,但是6个字节的MAC地址还是勉强够用的,我们刚才也说了,MAC地址是在出厂的时候,在网卡固化的时候设置的,所以理论上每个主机都有一个唯一的MAC地址.

基于这个原因,MAC地址就有了利另一个用处,可以用来识别主机的唯一的标记.

这里就让我想起了 “卖外挂” 商家,为了不让买家把外挂卖给被人或者到处传播,就会在外挂中加一个识别买家主机的程序,只有和买家的主机的MAC地址一致,才能使用外挂系统.所以理论上,我们其实是可以手动修改主机 的MAC地址的,只要修改成买家的MAC地址,就可以成功安装外挂了~~.

MAC的用处:

对于IP地址来说,是支持整个数据的转发过程的.而MAC是支持两个相邻的节点数据之间的转发.
这里给大家举一个栗子:
我要从未央区到周至,大致有这样几个过程:
未央区.西安北站.杨凌.周至
从IP地址的角度我们要对整个过程进行规划:
未央区->西安北站->杨凌->周至
具体每个过程我们需要从一个地方到另一个地方~~

  1. 未央区->西安北站
    源IP:未央区
    目的IP:周至
    源MAC:未央区
    目的MAC:西安北站
    2.西安北站->杨凌
    源IP:未央区
    目的IP:周至
    源MAC:西安北站
    目的MAC:杨凌
    3.杨凌->周至
    源IP:未央区
    目的IP:周至
    源MAC:杨凌
    目的MAC:周至

计算机中也是一样IP地址负责记录整个过程中的路线,而MAC地址则是记录每次走的每一步对应的路线.

我们上面针对以太网数据帧可以了解到其最大长度是1500字节,此处的1500也称为MTU(和硬件相关联的)针对不同的数据链路层协议,对应的MTU是不同的.

在这里插入图片描述
这里的 ARP 协议是为了给了每个路由器一个"转发表"这个表中就记录了IP地址->MAC地址的映射.

我们在发数据的时候,先根据目的IP,确定接下来往哪里走,直到下一跳的IP(查路由表),然后根据下一跳的IP,查转发表,直到IP对应的 MAC / 端口是哪个.

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

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

相关文章

AI大模型之旅-大模型为的微调参数详解

output model.generate( inputs.input_ids, max_lengthmax_length, do_sampledo_sample, temperaturetemperature, top_ptop_p, top_ktop_k ) 大模型文本常用参数为以上几个,下面我们详细解析下: 初解: max_length 定义:生成的…

MacOS安装homebrew,jEnv,多版本JDK

1 安装homebrew homebrew官网 根据官网提示,运行安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装后,bash会提示执行两条命令 (echo; echo eval "$(/opt/homebrew/b…

简明linux系统编程--共享内存消息队列信号量

目录 1.父子进程共享内存 1.1基本说明 1.2主要步骤 1.3shmget函数介绍​编辑 1.4函数返回值 1.5shmat函数介绍 1.6shmdt函数介绍 1.7结合代码理解 2.非亲缘关系的进程的共享内存通信 2.1和上面的区别 2.2如何通信 2.3具体代码 3.父子进程消息队列 4.非亲缘关系的进…

极狐GitLab 重要安全版本:17.3.3, 17.2.7, 17.1.8, 17.0.8, 16.11.10

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…

BitLocker硬盘加密的详细教程分享

硬盘加密是将数据转换为一种只有授权用户才能读取的形式。通过使用加密算法,硬盘上的数据在存储时被加密,只有输入正确的密钥或密码才能解密和访问这些数据。 硬盘加密的重要性 数据是现代社会的重要资产,保护这些数据免受非法访问和窃取至关…

Mobile net V系列详解 理论+实战(2)

Mobilenet 系列 实践部分一、数据集介绍二、模型整体框架三、模型代码详解四、总结 实践部分 本章针对实践通过使用pytorch一个实例对这部分内容进行吸收分析。本章节采用的源代码在这里感兴趣的读者可以自行下载操作。 一、数据集介绍 可以看到数据集本身被存放在了三个文件…

处理RabbitMQ连接和认证问题

在使用RabbitMQ进行消息队列管理时,我们可能会遇到各种连接和认证问题。本文将介绍如何诊断和解决这些问题,并通过使用RabbitMQ的管理端进行登录验证来确保配置正确。 1. 问题概述 在最近的一次部署中,我们遇到了两个主要问题: …

一对一,表的设计

表很大,比如用户 用户登录只需要部分数据,所以把用户表拆成两个表 用户登录表 用户信息表 一对一设计有两种方案: 加外键,唯一 主键共享

学生考试成绩老师发布平台

老师们一直肩负着传授知识与评估学生学习成果的双重责任。其中,发布学生考试成绩是教学过程中不可或缺的一环。然而,传统的成绩发布方式往往繁琐且耗时。老师们需要手动整理成绩,然后通过电话、短信或电子邮件逐一通知学生和家长,…

Jenkins设置自动拉取代码后怎么设置自动执行构建任务?

在 Jenkins 中设置自动拉取代码后,可以通过以下步骤设置自动执行构建任务: 一、配置构建触发器 打开已经设置好自动拉取代码的 Jenkins 任务。在 “构建触发器” 部分,除了 “Poll SCM”(用于定时检查代码仓库更新)外…

Mybatis 和 数据库连接

第一次要下载驱动 查询数据库版本 但是在idea查看数据库我不行,插件我也装了,然后我在尝试改版本。也不行。 爆错 感觉还是插件的问题。先不弄了,影响不大。 但是加载了这个,能在idea写sql语句,还能有提示。

【IPOL阅读】点云双边滤波

文章目录 简介点云滤波处理结果 简介 IPOL,即Image Processing On Line,理论上是一个期刊,但影响因子很低,只是个SCIE,按理说没什么参考价值。但是,这个网站的所有文章,都附带了源代码和演示窗…

【三步搭建 本地 编程助手 codegeex】

这里写目录标题 第一步 ollama安装常见报错 第二步 下载启动模型下载启动模型常见问题 第三步配置codegeex安装插件本地配置 其他 如果可以联网,vscode装个codegeex插件即可,本次搭建的本地编程助手,解决因安全问题完全无网络的情况下的编程助…

诗文发布模板(python代码打造键盘录入诗文自动排版,MarkDown源码文本)

python最好用的f-string,少量代码打造键盘录入诗文自动排版。 (笔记模板由python脚本于2024年09月19日 19:11:50创建,本篇笔记适合喜欢写诗的pythoner的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free&am…

新手入门大模型教程(非常详细)零基础入门到精通,收藏这一篇就够了

目前大模型非常的火,国内开始流行大模型应用,那么作为程序员对于大模型有什么要了解和学习的我们今天就来研究下。 深度学习基础 因为大模型也是人工智能,人工智能就要先学习一下深度学习,深度学习是机器学习领域中的一个方向。…

Linux通过yum安装Docker

目录 一、安装环境 1.1. 旧的docker包卸载 1.2. 安装常规环境包 1.3. 设置存储库 二、安装Docker社区版 三、解决拉取镜像失败 3.1. 创建文件目录/etc/docker 3.2. 写入镜像配置 https://docs.docker.com/engine/install/centos/ 检测操作系统版本,我操作的…

英飞凌最新AURIX™TC4x芯片介绍

概述: 英飞凌推出最新的AURIX™TC4x系列,突破了电动汽车、ADAS、汽车e/e架构和边缘应用人工智能(AI)的界限。这一代面向未来的微控制器将有助于克服安全可靠的处理性能和效率方面的限制。客户将可缩短快速上市时间并降低整体系统成本。为何它被称为汽车市场新出现的主要颠覆…

SourceTree保姆级教程1:(克隆,提交,推送)

本人认为sourceTree 是最好用的版本管理工具,下面将讲解下sourceTree 客户端工具 克隆,提交,推送 具体使用过程,废话不多说直接上图。 使用步骤: 首先必须要先安装Git和sourceTree,如何按照参考其它文章&…

计算机网络:概述 --- 体系结构

目录 一. 体系结构总览 1.1 OSI七层协议体系结构 1.2 TCP/IP四层(或五层)模型结构 二. 数据传输过程 2.1 同网段传输 2.2 跨网段传输 三. 体系结构相关概念 3.1 实体 3.2 协议 3.3 服务 这里我们专门来讲一下计算机网络中的体系结构。其实我们之前…

力扣1143-最长公共子序列(Java详细题解)

题目链接:1143. 最长公共子序列 - 力扣(LeetCode) 前情提要: 如果你做过718. 最长重复子数组 - 力扣(LeetCode)并且看过我的这篇题解力扣718-最长重复子数组(Java详细题解)-CSDN博…