【JavaEE】——初始网络原理
阿华代码,不是逆风,就是我疯
你们的点赞收藏是我前进最大的动力!!
希望本文内容能够帮助到你!!
目录
一:局域网
1:概念
二:局域网的连接方式
1:网线直连
2:集线器组建
3:交换机组建
4:基于交换机和路由器组建
二:广域网
1:概念
2:交换机和路由器的区别(面试)
三:网络通信
1:IP地址
2:端口号
3:通信所用端口
四:协议
五:五元组
六:协议分层
1:概念
2:优点
3:TCP/IP五层网络协议
4:设备所在层级
七:封装(数据发送过程)
八:分用(数据接收过程)
九:经典交换机的封装分用
十:经典路由器的封装分用
一:局域网
1:概念
局域网Local Area Network 简称LAN
局域网是本地,局部组建的一种私有网络
二:局域网的连接方式
1:网线直连
2:集线器组建
意识把一个网口扩展成多个,但扩展出来的多个网口彼此间会影响。而交换机则不会出现这种情况

3:交换机组建
交换机上所有的口都是一样的,连上的电脑就构成了局域网那个

4:基于交换机和路由器组建
路由器:就是我们常说的wifi、猫。上面有两种接口——WAN和LAN,
WAN口:WAN口接运营商给的网线
LAN口:构成局域网的电脑连到LAN口
路由器下面的LAN口还可以继续接交换机,(即对现有的路由器的端口进行扩展)交换机还能再接路由器,层层套娃

二:广域网
1:概念
广域网,Wide Area Network 简称WAN
通过路由器,把多个局域网连接起来,(可以理解成事几个局域网的集群),内部的局域网属于广域网的子网。

2:交换机和路由器的区别(面试)
路由器工作在网络层,交换机工作在数据链路层。
三:网络通信
1:IP地址
描述一个设备在网络上的位置,32位二进制数——由4个字节组成
用“点分十进制”方式表示——三个点分割开4个字节

2:端口号
描述主机上的每一个应用程序都有一个不同的整数端口号
主机收到网络数据之后,通过端口号来确定,把这段数据交给哪个应用程序使用。
3:通信所用端口
在一次网络通信过程中,涉及到的IP和端口,其实各有两个。
收件人地址——目的IP
收件人电话——目的端口
发件人地址——源IP
发件人电话——源端口
四:协议
通信过程中的一种约定,发送方和接收方提前约定好数据的格式,这样双方才能正确的沟通(就像电报,摩斯密码)
尽管双方的计算机不是同一个厂商生产的,但是在同一种协议下,两者能进行相互配合
五:五元组
在TCP/IP协议中,用五元组来标识一个网络通信
1:源IP
标识源主机
2:源端口号
标识源主机中该次通信发送数据的进程
3:目的IP
标识目的主机
4:目的端口号
标识目的主机中该次通信接收数据的进程
5:协议号
标识发送进程和接受进程双方约定的数据格式

六:协议分层
实际中,协议涉及到非常多的细节,庞大又复杂,不利于维护和更新。
于是我们就把协议进行了拆分——协议分层。
1:概念
上层协议会调用下层协议,下层协议给上层协议提供服务。只有相邻层次的协议可以沟通,不能跨层调用
2:优点
(1)上层协议直接使用下层协议,无需了解下层协议的细节
(2)某一层协议进行替换后,对其它层没有影响
(相当于下层协议内部怎么实现的,不用管,只要下层把协议封装好提供给上层一个接口就行了,好比我们写代码中调用函数的方法,只要达到目的就行,管你方法内部是怎样一个逻辑算法)
3:TCP/IP五层网络协议
(以下为通俗理解)OSI网络协议是大佬们搞出来的协议分层(共七层),但是实际开发中用不了那么多层,就简化成了五层也就是下图中的TCP/IP(这五层中,除了应用层,其它四层在计算机中都已经内置好了,作为程序员我们能影响到的就是应用层)

(1)应用层
传输的数据在应用程序中怎么使用
(2)传输层
关注网络数据包的起点和终点,从哪里来要到哪里去,端和端之间的传输
(3)网络层/互联网层
关注起点和终点之间,走哪条路,传输路径的规划
(4)数据链路层/网卡层
负责两个相邻节点之间的传输细节
(5)物理层/硬件
通信过程中的基础设施,都是一些硬件啥的
4:设备所在层级
以下谈到的设备都是“经典”的,现实中的路由器和交换机功能更复杂和强大
主机:操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP的下四层
路由器:实现了网络层到物理层,TCP/IP的下三层(主要工作在网络层)
交换机:实现从数据链路层到物理层,TCP/IP的下两层(主要工作在数据链路层)
集线器:实现了物理层
七:封装(数据发送过程)
注:封装和分用时网络传输数据过程中,最核心的流程
数据传输常用的单词
假设现在应用A要给应用B发送数据,发送过程主要操作为A
1:应用层
在应用层,应用数据包会根据应用层数据协议进行构造,再由应用程序调用操作系统的API,把数据包发给传输层
2:传输层
传输层会把应用层发过来的数据包,再构造成一个传输层数据包,此处构造遵循的协议,主要就是:TCP和UDP
假设用UDP协议——UDP数据包=UDP报头(header)+载荷(payload)
UDP报头:承载一些关键的用来转发数据的信息,最重要的信息就是源端口和目的端口
添加报头的过程就是对数据包进行封装成API
3:网络层
网络层涉及到最核心的协议,IP协议
同样,网络层调用传输层封装好的API,拿到UDP数据包,在IP(主要)协议的基础山,对数据包添加上报头,构造成一个IP数据包。
IP报头:承载一些辅助转发的关键信息,最关键的信息就是源IP和目的IP了
4:数据链路层
数据链路层涉及到最核心的协议,以太网
注:以太网就是我们日常中见到的有线网络,用到的网线也叫做“以太网线”,用到的网口叫做“以太网口”,用到的交换机叫做“以太网交换机”
以太网数据帧:以IP数据包为一个整体,在头和尾分别加上以太网帧头和以太网帧尾
5:物理层
物理层拿到以太网数据帧之后,把二进制这样的数据,转化为光信号、电信号、电磁波等进行发送
八:分用(数据接收过程)
假设现在应用A要给应用B发送数据,接受过程主要操作为B
1:物理层
B的物理层接收到信号后,把信号转换为二进制数据,得到一个以太网数据帧,把这个帧交给数据链路层处理
2:数据链路层
数据链路层按照以太网的格式,来解析,去除载荷,再交给上层协议
3:网络层IP协议
按照IP协议的格式进行解析,取出载荷,再交给上层协议
4:传输层UDP协议
按照UDP协议格式来解析,取出载荷,再交给上层协议
5:应用层
按照应用层相应的应用协议解析数据
九:经典交换机的封装分用
①交换机,拿到信号,进行二进制解析后,把以太网数据帧交给数据链路层
②数据链路层 解析:一方面取出载荷部分,一方面解析帧头中的信息,这并添加新的帧头帧尾构造出新的以太网数据帧
③传输给物理层,物理层在发送出去
十:经典路由器的封装分用
比交换机多了一层协议
①物理层拿到信号,转化成二进制以太网数据包,发给数据链路层
②数据链路层,解析拿到载荷,发给网络层
③网络层根据IP协议解析报头,取出载荷,重新封装,发送给数据链路层
④数据链路层加上帧头帧尾,发送给物理层
⑤物理层把二进制数据包转换为信号发送出去
相关文章:
【JavaEE】——初始网络原理
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:局域网 1:概念 二:局域网的连接方式 1:网线直连 …...
Nginx和Lua配合使用
在NGINX中使用Lua进行开发时,可以通过不同的配置块来指定Lua脚本的执行位置。这些配置块被称为“phase hooks”,即阶段挂钩。每个阶段挂钩都有其特定的作用时间和目的。以下是NGINX Lua模块中常见的配置指令及其用途: 常见的Phase Hooks 1.a…...
程序化交易是什么,它有哪些优势,需要注意什么?
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
水库抽样算法(大数据算法作业)
时隔一个多月,终于想起来写大数据算法基础的实验报告,主要是快截止了,hh 这两天加急把这个报告写完了~ 接下来,写一写证明过程(参考书籍:高等教育出版社《数据科学与工程算法基础》)主要代码以…...
SHCTF-2024-week1-wp
文章目录 SHCTF 2024 week1 wpMisc[Week1]真真假假?遮遮掩掩![Week1]拜师之旅①[Week1]Rasterizing Traffic[Week1]有WiFi干嘛不用呢? web[Week1] 单身十八年的手速[Week1] MD5 Master[Week1] ez_gittt[Week1] jvav[Week1] poppopop[Week1] 蛐蛐?蛐蛐! SHCTF 2024…...
docker-comapose安装部署mysql
docker-comapose安装部署mysql version: "3.4" services:mysql:image: docker.das-security.cn/middleware/mysql:8.4.1container_name: mysqlenvironment:- MYSQL_ROOT_PASSWORD密码volumes:- /etc/localtime:/etc/localtime- ./configs/mysql/initdb:/docker-entr…...
C语言初阶-数据类型和变量【下】
紧接上期------------------------->>>C语言初阶-数据类型和变量【上】 全局变量和局部变量在内存中存储在哪⾥呢? ⼀般我们在学习C/C语⾔的时候,我们会关注内存中的三个区域: 栈区 、 堆区 、 静态区 。 内存的分配情况 局部变量是…...
C++:命名空间(namespace)详细介绍与案例
命名空间(namespace)是C中的一个重要概念,用于组织代码和避免名称冲突。它们允许程序员将标识符(如变量、函数、类等)组织在一起,以便在较大的程序中防止命名冲突。 1. 基本概念 命名空间的基本定义方式如…...
专题十一_递归_回溯_剪枝_综合练习_算法专题详细总结
目录 1. 找出所有⼦集的异或总和再求和(easy) 解析: 方法一: 解法二: 总结: 2. 全排列 Ⅱ(medium) 解析: 解法一:只关心“不合法”的分支 解法二&…...
java中Runnable接口是什么?基本概念、工作原理、优点、`Runnable`与`Thread`的对比、与`Callable`接口的对比、实际场景
Runnable接口是Java提供的一种用于实现多线程的接口,通常用来定义任务的具体逻辑。与Thread类不同,Runnable接口只提供一种抽象方法run(),没有任何与线程的生命周期、管理相关的功能。它的主要作用是与Thread类或线程池(如Executo…...
Mybatis Plus连接使用ClickHouse也如此简单
通过阅读列式数据库ClickHouse官网,不难看出它有支持JDBC规范的驱动jar包,可以直接集成到Object Relational Mapping框架等,下面我用SpringBootMybatisPlus环境连接ClickHouse来演示一下 集成步骤 1.Maven引入ClickHouse提供的JDBC依赖 <…...
什么社交平台可以找到搭子?分享多款找搭子必备的人气软件
在这个丰富多彩的世界里,我们常常渴望有一个志同道合的搭子,一起分享生活的点滴,共同探索未知的领域。无论是追寻美食的舌尖之旅,还是踏上充满惊喜的旅途;无论是在健身房挥洒汗水…… 找到一个合适的搭子,都…...
STM32 RTC实时时钟 F407 寄存器
RTC介绍 STM32F1: RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。 即在F1系列,RTC的日历部分只有一个32位的寄存器 该寄存器直接存放 时间戳 的值,即࿱…...
矩阵等价、向量组等价、线性方程组同解与公共解的关系
矩阵等价 矩阵 A 、 B 等价 ⇔ 两矩阵秩相等 R ( A ) R ( B ) ⇔ 每个矩阵的行秩等于列秩,两个矩阵的行秩与列秩分别相等 ⇔ 若行满秩则列向量组等价 ⇔ 若列满秩则行向量组等价 \begin{align} 矩阵A、B等价\\ &\Leftrightarrow 两矩阵秩相等R(A)R(B)\\ &\…...
[Linux] Linux 进程程序替换
标题:[Linux] Linux 进程程序替换 个人主页水墨不写bug (图片来源于网络) 目录 O、前言 一、进程程序替换的直观现象(什么是进程程序替换?) 二、进程程序替换的原理 三、进程程序替换的函数(…...
【Linux系统编程】第三十一弹---深入理解静态库:从零开始制作与高效使用的完全指南
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、静态库 1.1、怎么做静态库 1.2、怎么使用静态库 1、静态库 1.1、怎么做静态库 在Linux环境下,通常使用GCC&am…...
FFmpeg 简介及其下载安装步骤
目录 一、FFmpeg 简介 二、FFmpeg 安装步骤 2.1 打开官网 2.2 选择FFmpeg系统版本 2.3 下载FFmpeg压缩包 2.4 将下载好的压缩包进行解压 2.5 设置环境变量 2.5.1 在搜索栏中搜索【环境变量】,然后单击将其打开 2.5.2 找到系统变量中的【Path】,点…...
使用CSS+SVG实现加载动画
使用CSSSVG实现加载动画 效果展示 CSS知识点 SVG元素使用SVG相关CSS属性运用 整体页面布局 <section><div class"box"><div class"loader"><svg><circle cx"40" cy"40" r"40"></circl…...
物联网(IoT)的未来发展:智能互联时代的到来
物联网(IoT)的未来发展:智能互联时代的到来 物联网(IoT)正在迅速改变我们与世界互动的方式。无论是智能家居、智慧城市,还是工业自动化,物联网技术通过设备互联、数据采集和智能控制࿰…...
斯坦福 CS229 I 机器学习 I 构建大型语言模型 (LLMs)
1. Pretraining -> GPT3 1.1. Task & loss 1.1.1. 训练 LLMs 时的关键点 对于 LLMs 的训练来说,Architecture(架构)、Training algorithm/loss(训练算法/损失函数)、Data(数据)、Evalu…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...










①交换机,拿到信号,进行二进制解析后,把以太网数据帧交给数据链路层



④数据链路层加上帧头帧尾,发送给物理层