【JavaEE】-- 网络原理

文章目录

  • 1. 网络发展史
    • 1.1 广域网
    • 1.2 局域网
  • 2. 网络通信基础
    • 2.1 IP地址
    • 2.2 端口号
    • 2.3 认识协议
    • 2.4 五元组
    • 2.5 协议分层
      • 2.5.1 分层的作用
      • 2.5.2 OSI七层模型(教科书)
      • 2.5.3 TCP/IP五层(或四层)模型(工业中常用,行业中常说)
    • 2.6 封装和分用

在这里插入图片描述

1. 网络发展史

1.1 广域网

广域网,即WideArea Network,简称WAN。通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
在这里插入图片描述
如果有北、中、南等分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即称为“广域网”。如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。有时在不严格的环境下说的广域网,其实是指互联网。所谓“局域网”和"广域网”只是一个相对的概念。比如,我们有"天朝特色”的广域网,也可以看做一个比较大的局域网。

1.2 局域网

局域网,即LocalAreaNetwork,简称LAN。Local即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:

  1. 基于网线直连
    在这里插入图片描述

  2. 基于集线器组建
    在这里插入图片描述

  3. 基于交换机组建
    在这里插入图片描述
    可以实现对所有计算机设备的数据转发,在内网中实现组网,主要用在公司内部。

  4. 基于交换机和路由器组建
    在这里插入图片描述
    通过路由可以连接互联网(广域网),获取一个公网IP。

在公司和家庭中很常见,路由器下面可以连接多个交换机。

路由:可以理解为一个地方到另一个地方的路径。但是路径有多条,有路程最短的、用时最短的、最通畅的、成本最低的。例如:从北京到上海的快递可能有多种路线,路由器类似“中转站”负责选择最快或最经济的路径。

2. 网络通信基础

2.1 IP地址

概念: IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

格式: IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节,也就是相当于一个整形的大小,42亿左右),如:01100100.00000100.00000101.00000110。
我们把这种表示称为IPv4,但是,随着网络设备越来越多,42亿个IP就不够了,升级成了IPv6。
通常用“点分十进制”的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)如:100.4.5.6。

在这里插入图片描述

2.2 端口号

概念: 在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。

类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。

格式: 端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

如果是服务提供方就需要一个确定的端口号(比如MySQL服务端的端口号默认是3306),如果是客户端的话系统会随机分配一个端口号。1 ~ 1024是知名端口号,比较有名的程序已经占用了的端口号,比如web程序用的80,FTP用的21。1025 ~ 65535这个范围内可以随便指定,原则就是一台主机上的端口号不能在不同的网络程序之间冲突。

**问题:**有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?
基于网络数据传输,需要使用协议来规定双方的数据格式。

2.3 认识协议

概念: 协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。协议(protocol)最终体现为在网络上传输的数据包的格式。

2.4 五元组

在TCP/IP协议中,用五元组来标识一个网络通信:

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

在这里插入图片描述
可以在cmd中,输入netstat -ano查看网络数据传输中的五元组信息:
在这里插入图片描述

2.5 协议分层

2.5.1 分层的作用

分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务):

  1. 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可。
  2. 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。
    在这里插入图片描述

2.5.2 OSI七层模型(教科书)

在这里插入图片描述
在这里插入图片描述
OSI七层模型既复杂又不实用:所以OSI七层模型没有落地、实现。实际组建网络时,只是以OSI七层模型设计中的部分分层,也即是以下TCP/IP五层(或四层)模型来实现。

2.5.3 TCP/IP五层(或四层)模型(工业中常用,行业中常说)

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

在这里插入图片描述
1. 应用层: 和用户打交道,接收与展示用户的数据,比如手法快递的过程中,只关注物品本身。
2. 传输层: 完成端到端的传输的准备,也就是说确定收发主机的地址和端口号,比如确认快递的收件人和发件人的地址和电话。
3. 网络层: 规划出端到端之间的网络路径,路径中可能会包含中间经过其他的网络设备,比如快递运输过程中可能经过的加油站。
4. 数据链路层: 完成点到点之间的传输,每个网络设备之间的传输。

5. 物理层: 把真实的BIT数据流通过转换成光电信号在传输介质中传输(网线:电信号;光纤:光信号)。

其中四层是指不包含物理层。

2.6 封装和分用

封装是指在发送方对数据进行的处理。
分用是指在接收方对数据进行的处理。

下面就以qq发送消息与接收消息的场景为例:
1. 应用层
这一层是由应用程序来实现的,此时对应的就是QQ这个应用程序,应用层主要是确定消息体的内容。

比如现在用户A要给用户B发送一个"hello"。下面一个问题就是如何进行数据的组织与解析,这个协议一般是在设计阶段就要完成的任务(协议的任务只有程序员知道),现在我们假设协议是:发送方QQ;接收方QQ;发送的内容

那么,我们按照协议规定组织好的数据就是:123456;654321;hello
在这里插入图片描述

组织好之后,就可以调用系统的API(socket api)进行发送操作,从而信息的处理方移交给下一层。

2. 传输层

传输层众多协议中最典型的两种协议是:TCP协议、UDP协议。我们假设使用TCP协议:

此时我们就接收到消息体,我们把这个消息体称为载荷
在这里插入图片描述
此时会在传输层根据TCP协议加上一个在载荷头部加上一个TCP头,该TCP头主要确定源端口号和目标端口号,该操作由操作洗头膏完成们可以知道哪个程序使用了哪个端口号。
在这里插入图片描述
3. 网络层
该层会规划出端到端之间的网络路径。

此时当前载荷就变成了:
在这里插入图片描述

该层会根据IP协议在该载荷头部加一个IP头,该IP头主要确定了元IP地址与目标IP地址,此时就可以确认消息要发送给哪台主机的哪个进程。
在这里插入图片描述

如何获取接收方的IP地址与端口号?
我们在使用QQ时都是需要登录的,登陆的时候等于向QQ服务器发送了一个请求,然后QQ服务器给了有一个响应,此时QQ服务器就会记录登陆方的信息类似于key value的形式,比如:(key:QQ123456, value:IP:端口号)。用户A和用户B在进行信息传输的时候并不是两台网络设备直接进行传输的,而是发送方会把信息发送到QQ服务器,服务器根据自己维护的登录用户以及对应的IP地址,找到接收方的IP,再把消息转发给接收方。
在这里插入图片描述

4. 数据链路层
此时的载荷是:在这里插入图片描述

该层会根据以太协议在当前载荷的头部和尾部分别加一个帧头和帧尾。

在这里插入图片描述

帧头中存放的是源MAC地址和目标MAC地址;帧尾中存放的是校验和。

校验和
发送方通过某种算法(CRC–对每个byte进行累加操作,最终得一个值)对载荷进行运算,得到一个值并保存起来,接收方在收到数据之后,取出载荷以相同的算法进行计算,如果得到的结果与校验和相同,就表示接收到的载荷与发送的载荷一致,中途没有被篡改,否则载荷就是无效的。

加入帧头和帧尾之后,把数据以二进制的形式发送给物理层。

5. 物理层
这一层主要是把具体的数据(报文)转换成光电信号,通过传输介质进行传输。

如何通过电信号表示0和1?
高电平表示1(3.5 ~ 5v);低电平表示0(0.1v ~ 0.25v)

6. 物理层
接收到光电信号之后,根据以太网协议把信号转换成二进制BIT流。
在这里插入图片描述

然后以二进制的形式交给上一层。

7. 数据链路层

该层会解析出帧头、帧尾和载荷。

确认数据正确之后,会去掉帧头和帧尾,然后把本层的载荷移交给上一层。

8. 网络层
在这里插入图片描述
根据IP协议解析报文,取出载荷交给上一层。

9. 传输层
在这里插入图片描述
根据TCP协议解析报文,取出载荷交给上一层。

10. 应用层
在这里插入图片描述

按照应用程序解析消息体–发送方QQ:123456;接收方QQ:654321;消息内容:hello.

以上的1-5是发送方,6-10是接收方
发送方的数据从应用层到物理层的过程叫封装;接收方的数据从物理层到应用层的过程叫分用。

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

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

相关文章

UVa1384/LA3700 Interesting Yang Hui Triangle

UVa1384/LA3700 Interesting Yang Hui Triangle 题目链接题意分析AC 代码 题目链接 本题是2006年icpc亚洲区域赛上海赛区的题目 题意 给出素数P和整数N&#xff0c;求杨辉三角第N1行中不能整除P的数有几个&#xff0c; P < 1000 , N ≤ 10 9 P<1000,\;N≤10^9 P<1000…

文件系统与文件管理:从磁盘到内核的全链路解析

一、文件系统&#xff1a;磁盘的 “数据管家” 1.1 硬盘物理结构&#xff1a;数据存储的硬件基础 硬盘如同一个多层书架&#xff0c;由以下核心部件构成&#xff1a; 盘片&#xff1a;多层磁性圆盘&#xff0c;正反两面覆盖磁性涂层&#xff0c;用于存储二进制数据&#xff…

HTML5 Canvas 星空战机游戏开发全解析

HTML5 Canvas 星空战机游戏开发全解析 一、游戏介绍 这是一款基于HTML5 Canvas开发的2D射击游戏&#xff0c;具有以下特色功能&#xff1a; &#x1f680; 纯代码绘制的星空动态背景✈️ 三种不同特性的敌人类型&#x1f3ae; 键盘控制的玩家战机&#x1f4ca; 完整的分数统…

Telegram平台分发其聊天机器人Grok

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【GlobalMapper精品教程】095:如何获取无人机照片的拍摄方位角

文章目录 一、加载无人机照片二、计算方位角三、Globalmapper符号化显示方向四、arcgis符号化显示方向一、加载无人机照片 打开软件,加载无人机照片,在GLobalmapperV26中文版中,默认显示如下的航线信息。 关于航线的起止问题,可以直接从照片名称来确定。 二、计算方位角 …

SpringBoot使用ffmpeg实现视频压缩

ffmpeg简介 FFmpeg 是一个开源的跨平台多媒体处理工具集&#xff0c;用于录制、转换、编辑和流式传输音频和视频。它功能强大&#xff0c;支持几乎所有常见的音视频格式&#xff0c;是多媒体处理领域的核心工具之一。 官方文档&#xff1a;https://ffmpeg.org/documentation.h…

OpenCv高阶(十九)——dlib关键点定位

文章目录 一、什么是人脸关键点定位&#xff1f;二、关键点模型的下载及关键信息的理解三、dlib关键点定位的简单实现&#xff08;1&#xff09;导入必要的库&#xff08;2&#xff09;从指定路径读取图像文件&#xff08;3&#xff09;创建dlib的正面人脸检测器对象&#xff0…

人工智能100问☞第36问:什么是BERT?

目录 一、通俗解释 二、专业解析 三、权威参考 BERT是基于Transformer Encoder的双向语言预训练模型,具备强大的语义理解能力,是现代自然语言处理的重要基石。它是一套让机器像人一样“前后一起看”的语言理解技术,它让AI不光“读得快”,还“读得懂”。现在很多搜索引擎…

Chrome/ Edge 浏览器弹出窗口隐藏菜单地址栏

Chrome 利用快捷方式&#xff0c;打开一个无地址栏的浏览器窗口&#xff0c;以百度为例 创建浏览器快捷方式&#xff0c;在目标栏里 添加 -apphttps://www.baidu.com 点击【应用】&#xff0c;【确定】按钮保存生效。后面通过空上快捷方式打开的浏览器没有地址栏。 Edge浏览…

计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍

计算机网络体系结构 从本此开始&#xff0c;我们就要开始介绍有关计算机网络体系结构的知识了。内容包括&#xff1a; 常见的计算机网络体系结构 计算机网络体系结构分层的必要性 计算机网络体系结构的设计思想 举例说明及专用术语 计算机网络体系结构是计算机网络课程中…

【C++】“多态”特性

文章目录 一、多态的概念二、多态的定义实现1. 多态的构成条件1.1 虚函数1.2 虚函数的重写 2. 多态的调用3. 虚函数重写的其他问题3.1 协变3.2 析构函数的重写 三、override和final关键字四、重载/重写/隐藏的对比五、纯虚函数和抽象类六、多态的原理 C的三大主要特性&#xff…

2025.5.27学习日记 linux三剑客 sed与正则表达式

sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。 sed是操作、过滤和转换文本内容的强大工具。 常用功能包括结合正则表达式对文件实现快速增删改查 , 其中查询的功能中最常用的两大功能是过 滤 ( 过滤指定字符串)、取行(取出指定行)。 注意sed和awk使用单引号,双引号…

文科小白学习Linux系统之安全管理

目录 前言 一、SELinux安全上下文 1、SELinux 简介 2、基础操作命令 1. 查看SELinux状态 2. 切换工作模式 3、安全上下文&#xff08;Security Context&#xff09; 1. 查看上下文 2. 修改上下文 chcon命令 semanage 命令 4、SELinux布尔值&#xff08;Booleans&am…

企业内训系统源码开发详解:直播+录播+考试的混合式学习平台搭建

在企业数字化转型的大潮中&#xff0c;员工培训早已不再是传统教室中的一场场“走过场”&#xff0c;而是通过技术驱动的“系统化能力提升”。尤其在知识更新换代加速、竞争压力日益激烈的背景下&#xff0c;企业越来越倾向于建设自主可控、功能灵活、支持多种学习形态的内训平…

智能化报销与精细化管理:购物小票识别系统全面提升企业运营效率

在现代企业管理中&#xff0c;购物小票的处理一直是财务和运营管理中的一项挑战。尤其在企业费用报销、会员管理、库存监控等环节&#xff0c;手动整理与核对小票不仅耗时费力&#xff0c;还容易产生错误。随着人工智能技术的发展&#xff0c;企业亟需一种高效、智能的解决方案…

毫秒级数据采集的极致优化:如何用C#实现高性能、无冗余的实时文件写入?

在工业控制、通信系统或高频交易领域&#xff0c;毫秒级数据采集的精度直接决定系统性能。但一个棘手问题常被忽视&#xff1a;如何处理同一毫秒内的重复数据&#xff1f; 若简单写入所有数据&#xff0c;会导致文件臃肿、分析效率骤降&#xff1b;若处理不当&#xff0c;又可能…

NLua性能对比:C#注册函数 vs 纯Lua实现

引言 在NLua开发中&#xff0c;我们常面临一个重要选择&#xff1a;将C#函数注册到Lua环境调用&#xff0c;还是直接在Lua中实现逻辑&#xff1f; 直觉告诉我们&#xff0c;C#作为编译型语言性能更高&#xff0c;但跨语言调用的开销是否会影响整体性能&#xff1f;本文通过基准…

go并发与锁之sync.Mutex入门

sync.Mutex 原理&#xff1a;一个共享的变量&#xff0c;哪个线程握到了&#xff0c;哪个线程可以执行代码 功能&#xff1a;一个性能不错的悲观锁&#xff0c;使用方式和Java的ReentrantLock很像&#xff0c;就是手动Lock&#xff0c;手动UnLock。 使用例子&#xff1a; v…

【HarmonyOS5】DevEco Studio 使用指南:代码阅读与编辑功能详解

⭐本期内容&#xff1a;【HarmonyOS5】DevEco Studio 使用指南&#xff1a;代码阅读与编辑功能详解 &#x1f3c6;系列专栏&#xff1a;鸿蒙HarmonyOS&#xff1a;探索未来智能生态新纪元 文章目录 前言代码阅读代码导航功能代码折叠语法高亮跨语言跳转代码查找 快速查阅API接口…

【Python 深度学习】1D~3D iou计算

一维iou 二维 import numpy as npdef iou_1d(set_a, set_b):# 获得集合A和B的边界 x1, x2 set_ay1, y2 set_b# 计算交集的上下界low max(x1,y1)high - min(x2, y2)# 计算交集if high - low < 0:inter 0else:inter high - low# 计算并集union (x2 -x1) (y2 - y1) - in…