JavaEE之网络初识(网络中的一些基本概念)详解

😽博主CSDN主页: 小源_😽

🖋️个人专栏: JavaEE

😀努力追逐大佬们的步伐~


目录

1. 前言

2. 网络中的一些基本概念

2.1 IP地址

2.2 端口号

2.3 网络协议

2.4 协议分层

2.5 封装

2.6 分用 (封装的逆向过程)

2.7 客户端 vs 服务器

2.8 请求, 响应

2.9 两台主机之间的网络通信流程


1. 前言

计算机进行网络的操作主要就是通过网卡这样的硬件设备, 在操作系统中被视为文件来进行管理的

网络/互联网是怎么来的呢? 这个东西一诞生, 就拯救了世界! 在美苏争霸一触即发之时, 双方都手握核武器, 这两个国家都希望自己的核弹头打出去之后, 直接把对方打的毫无还手之力

两者之间通过网络连接, 能否摧毁信号到发射井的通信网络就成了焦点问题

互联网就给出了一个答案: 通过足够的冗余, 两点之间有很多路线, 只要有一个没被摧毁, 信号就可以顺利传输

很多影响世界的发明, 都是先应用在军事领域, 后来才民用

本章重点

本文着重讲解了网络初始知识


2. 网络中的一些基本概念

2.1 IP地址

描述了一个设备在网络上的位置, 是一个 32 位, 4 个字节的整数

为了方便表示, 往往用 "点分十进制"  的方式: 把这 4 个字节分成 4 个部分. 每个部分 1 个字节, 取值范围为 0-255

在 Windows 命令运行框中, 输入 ipconfig 就可以看到自己的主机的 IP 地址

2.2 端口号

描述了一个主机上正在进行网络通信的应用程序, 是一个整数

一个主机上可能有很多程序在使用网络, 主机收到的网络数据得区分出需要交给哪个应用程序使用, 每个程序在进行网络通信的过程中都需要有一个端口号来进行区分 (可能是用户手动指定, 也可能是系统自动分配, 同一个主机上, 程序之间的端口号不能冲突)

我们需要注意: 一次网络通信中, 涉及到的 IP 和 端口 各有两个!

和买东西类似:

收件人地址 对应 目的 IP: 标识目的主机

收件人电话 对应 目的端口: 标识目的主机中该次通信接受数据的进程

发件人地址 对应 源 IP: 标识源主机

发件人电话 对应 源端口: 标识源主机中该次通信发送数据的进程

2.3 网络协议

就是一种通信过程中的约定, 是网络中非常核心的概念

发送方和接收方需要提前商量好数据的格式才能确保两者之间能够进行正确的沟通

因为通信双方的这两个计算机, 可能来自不同的厂商, 为了确保任意两个这样的计算机之间都能够正确的网络通信, 就要求这些计算机需要遵守相同的网络协议

是一种约定, 确保不同厂商生产的设备之间能够相互配合


2.4 协议分层

把一个复杂庞大的协议拆分成多个功能单一的协议并相互配合, 其中功能相似的在同一层, 上层协议会调用下层协议的功能, 下层协议给上层协议提供服务

只有相邻的层次之间可以进行沟通, 不能跨层次调用 (容易混乱)

协议分层还附带了一些好处:

1) 上层协议直接通过下层协议提供的 api 调用下层协议即可, 不需要了解下层协议的细节 (相当于下层协议把细节封装好了)

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数, 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力, 而又无需访问源码, 或理解内部工作机制的细节. ——百度百科

例如我们只要会说汉语, 男女老少就可以通过电话交流, 不需要了解电话的工作原理

2) 某一层的协议进行替换后, 对其他层没什么影响

如 汉语协议可以替换成英语协议, 无线电协议也可以替换成电话协议

OSI 七层网络协议, 这是大佬们最初设计的时候给出的方案, 但是实施的时候太麻烦了, 所以简化成了五层: TCP/IP 五层网络协议 (也有人叫 TCP/IP 四层模型, 不算物理层(纯硬件))

1. 应用层: 程序拿到数据后, 要用来干什么, 解决什么问题

2. 传输层: 负责关注 网络数据包 的起点和终点

3. 网络层: 负责关注起点和终点之间的路径规划  如: 上海 -> 南京 -> 无锡 -> 西安 (四个设备), 也可以是 两个点 (即两个设备)

4. 数据链路层: 负责两个相邻节点之间的传输方式  如: 上海到南京 用飞机空运, 南京到无锡, 用铁路运输......

5. 物理层: 通信过程中的基础设施  如: 公路, 铁路, 航线


2.5 封装

假想现在有一个场景: A 通过 QQ 给 B 发了一条 hello

以下是传输数据的流程 :

1. 应用层 (应用程序) QQ

QQ 从消息输入框获取用户输入的 hello, 把这个字符串构造成一个应用层数据包

(QQ 这样的程序内部设置了一个应用层协议, 应用层数据包就是按照这个协议来构造的)

约定格式如下(字符串拼接):

  

  

应用程序调用操作系统的 api, 把这个数据交给传输层的协议进行处理

2. 传输层: 把上述数据包作为一个整体, 再构造成一个传输层的数据包

传输层涉及的协议, 最主要的就是 TCP 和 UDP

此处假定使用的 UDP 进行通信, 就会构造一个 UDP 数据包

  

如图, 添加报头的过程就叫"封装", 其实就是字符串拼接

UDP 报头虽然不能保护数据, 但是能承载一些关键的用来转发数据的信息, 最重要的就是 源端口 和目的端口

拼好 UDP 数据包后, 就交给下层, 网络层

(交给下层指的是下层协议提供一组 api (函数), 上层调用这个 api, 把刚才构造好的数据通过参数传进去, 下层协议就可以处理这个数据了)

UDP 协议调用网络层的 api, 把数据交给网络层这里的协议进行处理

3. 网络层 : 把刚才传输层的 UDP 数据包作为一个整体, 拼上 IP 协议的报头, 构造成一个 IP 数据包

  

IP 报头中最关键的辅助转发的信息就是 源 IP 和 目的 IP

构造完 IP 数据包后, IP 协议调用数据链路层的 api, 把数据交给数据链路层这里的协议进行处理

4. 数据链路层:  在 IP 数据包上添加帧头和帧尾

5. 物理层

把以太网数据帧(二进制结构), 转换成光信号 (通过光的频谱进行编码)/电信号 (高低电平)/电磁波 

                                                           光纤                                            网线                      无线 wifi

经过上述一系列的操作, 数据终于从你的电脑上发出来了! (刚出家门) 


2.6 分用 (封装的逆向过程)

我们暂时不考虑中间过程, 假定数据包已经到 B 的网卡了. B 的处理过程就叫做分用

1. 物理层: B 的物理层收到 光信号/电信号/电磁波, 把这些物理信号转换成 数字信号 (二进制的 0 1 0 1) 

得到一个以太网的数据帧

2.数据链路层: 以太网

按照 以太网数据帧 的格式进行解析, 去除其中的载荷, 再交给上层协议

3. 网络层: IP 协议

按照 IP 协议的格式进行解析, 去除其中的载荷, 再交给上层协议

4. 传输层: UDP 协议

按照 UDP 协议格式进行解析, 去除其中的载荷, 再交给上层协议

5. 应用层: QQ 应用程序

按照 QQ 应用程序内部的应用层协议格式来解析数据

QQ 拿到这些信息之后, 就会在窗口给你弹出提示, 并且把消息/消息的发送者/发送时间 都显示到聊天窗口上


2.7 客户端 vs 服务器

在网络中, 主动发起通信的这一方称为 "客户端", 被动接受的这一方称为 "服务器"

同一个程序在不同的场景中, 可能是客户端, 也可能是服务器

2.8 请求, 响应

客户端给服务器发送的数据, 称为 "请求"(request)

服务器给客户端发送的数据, 称为 " 响应" (response)

客户端和服务器之间的交互, 也有很多种模式

1. "一问一答": 一个请求一个响应 (多用于网站开发)

2. "一问多答": 一个请求多个响应 (下载)

3. "多问一答": 多个请求一个响应 (上传)

4. "多问多答": 一个请求对应多个响应, 一个响应对应多个请求 (远程控制/远程桌面)

2.9 两台主机之间的网络通信流程

进行网络编程, 需要使用 传输层 提供的 API

传输层涉及到的两个协议之间的差异还挺大的, 他们的 api 也差别较大

TCP 的特点:

有连接

可靠传输

面向字节流

全双工

UDP 的特点

无连接

不可靠传输

面向数据报

全双工

有链接: 指的是抽象, 虚拟的连接, 本质上是通信双方各自保存对方的相关信息

可靠传输/不可靠传输: 发的数据到没到, 发送方可以清楚的感知到. 网络上的"异常情况"很多, 无论用什么样的软硬件技术手段, 无法保证 100% 把网络数据从 A 传输到 B, 此处是尽可能的完成数据传输, 虽然无法确保数据到达对方, 至少知道, 当时这个数据对方是不是收到了

面向字节流: 网络中传输数据的基本单位就是字节

面向数据报: 每次传输的基本单位是一个数据报 (由一系列的字节构成), 是一个特定的结构

全双工: 一个信道, 可以双向通信 (如日常见到的马路)

半双工: 一个通道, 只能单向通信 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniApp使用XR-Frame创建3D场景(7)加入点击交互

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解如何与场景中的模型交互&#xff08;点击识别&#xff09; 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"><xr-node><xr-mesh id"…

连续信号离散信号的功率谱密度--用MATLAB求功率谱密度

连续信号&离散信号的功率谱密度--用MATLAB求功率谱密度 目录 前言 一、能量及功率定义 1、连续信号 2、离散信号 二、功率谱密度计算公式 三、MATLAB仿真 1、源代码 2、仿真结果分析 总结 前言 一直对数字信号处理中的功率谱密度计算有点好奇&#xff0c;虽然MATLAB有提供现…

【MySQL】15. 事务管理(重点) -- 1

1. CURD不加控制&#xff0c;会有什么问题&#xff1f; 2. CURD满足什么属性&#xff0c;能解决上述问题&#xff1f; 买票的过程得是原子的 ?买票互相应该不能影响 ?买完票应该要永久有效 ?买前&#xff0c;和买后都要是确定的状态? 3. 什么是事务&#xff1f; 事务就是…

探索 2024 年 Web 开发最佳前端框架

前端框架通过简化和结构化的网站开发过程改变了 Web 开发人员设计和实现用户界面的方法。随着 Web 应用程序变得越来越复杂&#xff0c;交互和动画功能越来越多&#xff0c;这是开发前端框架的初衷之一。 在网络的早期&#xff0c;网页相当简单。它们主要以静态 HTML 为特色&a…

CSS 结构伪类选择器 伪元素选择器 盒子模型

目录 1. 结构伪类选择器1.1 :nth-child(公式) 2. 伪元素选择器3. 盒子模型3.1 盒子模型的重要组成部分3.2 盒子模型 - 边框线3.3 盒子模型 - 内边距3.4 盒子模型 - 尺寸计算3.5 盒子模型 - 外边距3.6 盒子模型 - 元素溢出3.7 外边距问题 - 合并现象3.8 外边距问题 - 塌陷问题3.…

游戏推广的新篇章:Xinstall助力实现全渠道效果统计与提升

随着游戏市场的日益繁荣&#xff0c;游戏推广已成为各大游戏公司争夺市场份额的关键环节。然而&#xff0c;面对众多推广渠道和复杂的用户行为&#xff0c;如何精准地评估推广效果、优化投放策略&#xff0c;成为了游戏推广人员亟待解决的问题。此时&#xff0c;Xinstall作为一…

如何使用Windows电脑部署Lychee私有图床网站并实现无公网IP远程管理本地图片

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-MSVdVLkQMnY9Y2HW {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

网络工程师实验命令(华为数通HCIA)

VRP系统的基本操作 dis version #查看设备版本信息 sys #进入系统视图 system-name R1 #改设备名字为R1进入接口配置IP地址 int g0/0/0 ip address 192.168.1.1 255.255.255.0 #配置接口地址为192.168.1.1/255.255.255.0 ip address 192.168.1.2 24 sub #此…

flutter生成二维码并截图保存到图库

引入库&#xff1a;flutter_screenutil、image_gallery_saver、qr_flutter弹窗布局 import dart:async; import dart:typed_data; import package/generated/l10n.dart; import package:jade/configs/PathConfig.dart; import package:jade/utils/ImageWaterMarkUtil.dart; im…

车载以太网AVB交换机 gptp透明时钟 8口 千兆/百兆可切换 SW1100TR

SW1100车载以太网交换机 一、产品简要分析 8端口千兆和百兆混合车载以太网交换机&#xff0c;其中包含2个通道的1000BASE-T1采用罗森博格H-MTD接口&#xff0c;5通道100BASE-T1泰科MATEnet接口和1个通道1000BASE-T标准以太网(RJ45接口)&#xff0c;可以实现车载以太网多通道交…

Flink系列之:Flink SQL Gateway

Flink系列之&#xff1a;Flink SQL Gateway 一、Flink SQL Gateway二、部署三、启动SQL Gateway四、运行 SQL 查询五、SQL 网关启动选项六、SQL网关配置七、支持的端点 一、Flink SQL Gateway SQL 网关是一项允许多个客户端从远程并发执行 SQL 的服务。它提供了一种简单的方法…

Unity图集编辑器

图集编辑器 欢迎使用图集编辑器新的改变编辑器图片 欢迎使用图集编辑器 Unity图集操作很是费劲 无法批量删除和添加图集中的图片 新的改变 自己写了一个图集编辑器 客&#xff1a; 支持批量删除 左键点击图片代表选中 右键点击图标定位到资产支持批量添加 选中图片拖拽到编…

Linux 系统 部署weblogic(新手版)

Linux 系统 部署weblogic&#xff08;新手版&#xff09; 一、 1、如果原环境有jdk则需要卸载。 先用命令查看 rpm -qa|grep java 如果有jdk则需要卸载rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64rpm -e --nodeps java-1.8.0-openjdk-headl…

京东云0基础搭建帕鲁服务器_4核16G和8核32G幻兽帕鲁专用服务器

使用京东云服务器搭建幻兽帕鲁Palworld游戏联机服务器教程&#xff0c;非常简单&#xff0c;京东云推出幻兽帕鲁镜像系统&#xff0c;镜像直接选择幻兽帕鲁镜像即可一键自动部署&#xff0c;不需要手动操作&#xff0c;真正的新手0基础部署幻兽帕鲁&#xff0c;阿腾云atengyun.…

【Java面试题】Redis上篇(基础、持久化、底层数据结构)

文章目录 基础1.什么是Redis?2.Redis可以用来干什么&#xff1f;3.Redis的五种基本数据结构&#xff1f;4.Redis为什么这么快&#xff1f;5.什么是I/O多路复用&#xff1f;6.Redis6.0为什么使用了多线程&#xff1f; 持久化7.Redis的持久化方式&#xff1f;区别&#xff1f;8.…

【JavaEE】初识线程,线程与进程的区别

文章目录 ✍线程是什么&#xff1f;✍线程和进程的区别✍线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 ✍线程是什么&#xff1f; ⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按…

Github 2024-03-28Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-03-28统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目9非开发语言项目1Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:…

vue组件弹窗窗

import { createApp } from vue; import { Popup } from vant;const app createApp(); app.use(Popup); 有这样的一个效果 在手机上很美观 不错 建议大家使用

HarmonyOS实战开发-实现一个计步器卡片应用

介绍 本篇Codelab基于Stage模型实现带有卡片的计步应用&#xff0c;用于介绍卡片的开发及生命周期实现。需要完成以下功能&#xff1a; 消息通知栏&#xff0c;通知用户今天所行走步数。元服务卡片&#xff0c;在桌面上添加2x2或2x4规格元服务卡片&#xff0c;能看到步数变化…

论文问卷的六类分析思路

很多同学在写论文时&#xff0c;会选择通过收集问卷来获取研究所需的数据。然而&#xff0c;问卷收集完成后&#xff0c;如何对这些数据进行有效的分析&#xff0c;成为了一个重要的问题。这么多的问卷数据摆在面前&#xff0c;该如何进行分析呢&#xff1f; SPSSAU从问卷设计…
最新文章