【JavaEE初阶】网络原理

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

⽹络互连

IP地址

端口号

协议

协议分层

优势

TCP/IP 五层网络模型

数据在网络通信中的整体流程 封装和分用

封装

分用


⽹络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完 成业务,就有了⽹络互连。

⽹络互连:将多台计算机连接在⼀起,完成数据共享。 数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。 根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹

局域网:把几台电脑连接在一起,就构成了局域网

路由器上面的口,数目比较有限,就引入了交换机(对路由器的端口进行了扩展)

广域网:通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部 的局域⽹都属于其⼦⽹。

IP地址

IP地址描述了一台主机,在互联网上所处的位置,使用32位整数("点分十进制",为了方便人阅读)来表示

端口号

区分当前主机上的指定的应用程序(进程)

一个主机上,使用网络的程序有很多个,通过端口号区分当前主机收到的数据是 交给那个程序来处理使用, 端口号同样也是一个整数,是一个2个字节的整数(范围:0->65535,但是0->1023这些端口都是有特殊含义的,我们自己写代码时,一般使用剩下的)

协议

网络中最核心的概念.

协议是进行一切通信的基础

通信至少要有两个主机,让发送方发的数据,接收方能够理解,双方需要按照同样的规则来构造/解析数据,协议 就是在约定通信双方交互数据的规则

如何进行网络通信问题 转为了 如何设计网络通信协议

协议分层

如果使用一个协议约定所有的网络通信细节,这个协议就会非常庞大,复杂.所以把这个协议拆分成了多个小协议,每个小协议专注解决一个/一类问题,再让这些协议相互配合.

并且约定好协议之间不能相互交互(只有相邻层之间才行),上层协议调用下层协议,下层协议给上层提供服务

优势

  • 降低了使用成本,使用某个协议时,不需要关注其他协议的实现细节
  • 降低整个体系的耦合性,灵活的变更某个层次的协议

TCP/IP 五层网络模型

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

TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求

分为应用层 ,传输层 ,网络层 ,数据链路层 ,物理层

  1. 应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。(程序员能够干预到的)
  2. 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发 送到⽬标主机。
  3. ⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
  4. 数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上 检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。 有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。
  5. 物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理 层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。 
  • 应用层:关注传输的数据用来干啥
  • 传输层:主要关注网络通信中"起点和终点",并不关心通信的中间细节
  • 网络层:进行网络通信的路径规划,网络层还需要负责地址管理
  • 数据链路层:在针对上述规划好的路径,进行具体的实施
  • 物理层:描述了硬件设备(网线这样的设备)需要满足什么条件(传输数据的硬件基础设施),相当于"公路","铁路","航线"

OSI七层网络协议(这种划分只是存在于教科书里,并没有真正的被采用)

物理层我们考虑的⽐较少。因此很多时候也可以称为TCP/IP四层模型。

驱动程序是硬件厂商配套提供的

网络设备所在的分层(站在经典的模型上讨论的)

  • 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四 层;
  • 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于集线器(将网线进行分叉,现在几乎见不到了),它只实现了物理层;

真实情况下,交换机,也可能是工作在网络层,甚至是 传输层/应用层

路由器,也可能是工作在数据链路层,也可能在传输层或应用层

数据在网络通信中的整体流程 封装和分用

封装

计算机网络中的封装 其实就是 字符串拼接

  1. 假设通过QQ发送一个hello给另一个人,hello这个内容从输入框读取到,构造成一个"应用数据包"(应用层的网络协议就描述了这个数据包的构造,此协议往往是开发该程序的程序员 自行定义的)
  2. QQ就会调用操作系统提供的API(传输层给应用层 提供的类似于"发送数据"的API), 然后应用程序就会把已准备好的 应用层数据包 作为参数传进来,此时应用层数据包就到了系统内核里(进入了传输层的代码部分)
  3. 再将该应用层数据包进一步 封装成一个传输层数据包,由于传输层有多种协议(最主流的是TCP和UDP,这两个协议给应用层提供了两种不同的API,应用层代码使用哪组API,就使用哪个协议)
  4. 继续调用 网络层 提供给传输层的api,把数据进一步交给网络层(传输层和网络层都是系统内核里已经实现好的),网络层也有多种协议(其中最主要的就是IPv4协议,简称IP协议),IP协议会把上述 传输层数据包 构造成 网络层数据包  
  5. 网络层 继续调用数据链路层的api,把数据交给数据链路层进一步包装,数据链路层的常见协议,以太网
  6. 上述得到的数据进一步交给物理层(硬件设备),网卡会针对上述的二进制数据进行真正的传输操作,把0101这样的序列转为光信号/电信号/电磁波.....

  • 序列化:把结构化的数据 => 二进制字符串
  • 反序列化: 把二进制字符串 => 结构化数据

分用

分用其实是 封装的"逆向工作"

  1. 接收方的 物理层 收到光电信号 并还原成二进制字符串
  2. 将该数据交给 数据链路层,以太网拿到这个数据包并进行解析(拿出这里的报头 和载荷,根据报头中的信息决定这个数据包是 丢弃,转发还是 自己保留(向上解析))
  3. 网络层拿到解析好的数据包,IP协议对这个数据包进行解析(取出IP报头 和载荷,同样根据报头信息确认丢弃,转发或保留)
  4. 传输层的UDP协议也要针对数据包进行解析(取出UDP报头和载荷,此处需要把载荷进一步交给应用层协议(应用程序),并且依赖UDP报头中的"端口号"来区分不同的进程)
  5. 数据到达应用程序,程序对上述数据进行反序列化,针对这里的数据进行进一步的逻辑(将消息显示在界面上,播放提示音,显示弹窗等等)

中间过程的交换机和路由器也会涉及到 封装和分用

  • 交换机 封装分用到数据链路层就可以决定数据是丢弃还是继续转发,不再继续分用
  • 路由器 封装分用到网络层 同样可以决定数据是丢弃还是继续转发,不再继续分用

通常认为网络通信的速度比 硬盘的更慢,但比人的反应更快

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

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

相关文章

828华为云征文 | 云服务器Flexus X实例:向量数据库 pgvector 部署,实现向量检索

目录 一、什么是向量数据库 pgvector ? 二、pgvector 部署 2.1 安装 Docker 2.2 拉取镜像 2.3 添加规则 三、pgvector 运行 3.1 运行 pgvector 3.2 连接 pgvector 3.3 pgvector 常见操作 四、总结 本篇文章通过 云服务器Flexus X实例 部署向量数据库 pgve…

第十四章:html和css做一个心在跳动,为你而动的表白动画

💖 让心跳加速,传递爱意 💖 在这个特别的时刻,让爱在跳动中绽放!🌟 无论是初次相遇的心动,还是陪伴多年的默契,我们的心总在为彼此跳动。就像这颗炙热的爱心,随着每一次的跳动,传递着满满的温暖与期待。 在这个浪漫的季节,让我们一同感受爱的律动!无论你是在…

手搓 HTTP服务器 手把手带你实现高并发HTTP服务器 C++ HTTP服务器 服务器项目实战 高性能服务器实战 服务器项目 服务器

手搓 HTTP服务器 高并发HTTP服务器 C HTTP服务器 1、什么是socket Socket是一种用于网络通信的编程接口,允许不同计算机之间通过网络发送和接收数据。它在客户端和服务器之间创建连接,支持多种协议,如TCP和UDP。2、实现socket 通讯 1、soc…

Milvus - 架构设计详解

Milvus 是一个专为在大规模密集向量数据集上进行相似性搜索而设计的开源向量数据库系统。其架构建立在流行的向量搜索库之上,如 Faiss、HNSW、DiskANN 和 SCANN,能够处理数百万、数十亿甚至数万亿的向量数据。为了全面了解 Milvus 架构,我们首…

苏州 数字化科技展厅展馆-「世岩科技」一站式服务商

数字化科技展厅展馆设计施工是一个综合性强、技术要求高的项目,涉及到众多方面的要点。以下是对数字化科技展厅展馆设计施工要点的详细分析: 一、明确目标与定位 在设计之初,必须明确展厅的目标和定位。这包括确定展厅的主题、目标受众、展…

实用SQL小总结

WHERE 条件 column 为纯英文字符 或 不包含任何字符 语法: SELECT * FROM your_table WHERE REGEXP(your_column,^[A-Za-z]$); SELECT * FROM your_table WHERE NOT REGEXP(your_column,^[A-Za-z]$);例: SELECT DISTINCT t.pldlibho FROM kibb_pldlyw…

Naive UI 选择器 Select 的:render-label 怎么使用(Vue3 + TS)

项目场景: 在Naive UI 的 选择器 Select组件中 ,如何实现下面的效果 ,在下拉列表中,左边展示色块,右边展示文字。 Naive UI 的官网中提到过这个实现方法,有一个render-label的api,即&#xff…

数据库操作:数据类型

0. 铺垫 1.数值类型 注:此图的最大值都要减1;因为我的错误,后面会改正; 1.0、tinyint 类型大小——1字节 create table tt1(num tinyint); insert into tt1 values(1); insert into tt1 values(128); -- 越界插入,…

【Android】 IconFont的使用

SVG 的特点: 矢量图形:SVG 使用基于路径的矢量图形,这意味着图形可以无限放大而不失真,非常适合需要多种分辨率的应用。 可伸缩性:SVG 文件的大小通常比位图小,这使得它们在网页上加载更快。 编辑和创作&…

Text-to-SQL方法研究

有关Text-to-SQL实现细节,可以查阅我的另一篇文章text-to-sql将自然语言转换为数据库查询语句 1、面临的挑战 自然语言问题往往包含复杂的语言结构,如嵌套语句、倒装句和省略等,很难准确映射到SQL查询上。此外,自然语言本身就存在歧义,一个问题可能有多种解读。消除…

11.C++程序中的常用函数

我们将程序中反复执行的代码封装到一个代码块中,这个代码块就被称为函数,它类似于数学中的函数,在C程序中,有许多由编译器定义好的函数,供大家使用。下面就简单说一下,C中常用的函数。 1.sizeof sizeof函…

spring boot 项目中redis的使用,key=value值 如何用命令行来查询并设置值。

1、有一个老项目,用到了网易云信,然后这里面有一个AppKey,然后调用的时候要在header中加入这些标识,进行与服务器进行交互。 2、开发将其存在了redis中,一开始的时候,我们测试用的老的key,然后提…

ROS学习笔记(二):鱼香ROS — 超便捷的一键安装/配置/换源指令(Ubuntu/ROS/ROS2/IDE等)

文章目录 前言鱼香ROS1 一键安装:快速搭建开发环境2 具体使用2.1 如何开始?2.2 我的常用配置方案2.3 安装示例 3 总结相关链接 前言 关于Ubuntu与ROS的常规安装,可以看这几篇。 SLAM实操入门(一):在已有…

【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(三)

文章目录 一、商品管理1、需求说明2、生成基础代码(1)创建目录菜单(2)配置代码生成信息(3)下载代码并导入项目 3、商品类型改造(1)基础页面 4、商品管理改造(1&#xff0…

【ADC】使用仪表放大器驱动 SAR 型 ADC 时的输入输出范围

概述 本文学习于TI 高精度实验室课程,介绍使用仪表放大器时 SAR ADC 驱动放大器的注意事项。具体包括:介绍如何使用仪表放大器设计数据转换器驱动电路。 仪表放大器(Instrumentation Amplifier,下文简称 INA)可抑制输…

开关电源为什么要进行负载测试,负载测试都包含哪些项目?

开关电源在现代电子设备中占据着重要的地位,其性能的稳定性和可靠性直接影响着电子设备的正常运行。为了确保开关电源的质量,需要对其进行负载测试。负载测试可以模拟实际工作环境中的负载情况,检测开关电源在不同负载条件下的输出特性、稳定…

wireshark使用要点

目录 IP过滤 端口过滤 内容过滤 过滤udp 过滤tcp IP过滤 ip.src XXX.XXX.XXX.XXX 只显示消息源地址为XXX.XXX.XXX.XXX的信息 ip.dst XXX.XXX.XXX.XXX 只显示消息目的地址为XXX.XXX.XXX.XXX的信息 ip.addr XXX.XXX.XXX.XXX显示消息源地址为XXX.XXX.XXX.XXX&#xff0…

Python库matplotlib之四

Python库matplotlib之四 小部件(widget)RadioButtons构造器APIs应用实列 Slider构造器APIs应用实列 小部件(widget) 小部件(widget)可与任何GUI后端一起工作。所有这些小部件都要求预定义一个Axes实例,并将其作为第一个参数传递。 Matplotlib不会试图布局这些小部件…

DTH11温湿度传感器

DHT11 是一款温湿度复合传感器,常用于单片机系统中进行环境温湿度的测量。以下是对 DHT11 温湿度传感器的详细讲解: 一、传感器概述 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感…

【STM32】江科大STM32笔记汇总(已完结)

STM32江科大笔记汇总 STM32学习笔记课程简介(01)STM32简介(02)软件安装(03)新建工程(04)GPIO输出(05)LED闪烁& LED流水灯& 蜂鸣器(06)GPIO输入(07)按键控制LED 光敏传感器控制蜂鸣器(08)OLED调试工具(09)OLED显示屏(10)EXTI外部中断(11)对射式红外传感器计次 旋转编码器…