JavaEE:网络初识

news2024/9/21 20:47:05

文章目录

  • 网络初识
    • 网络中的重要概念
      • IP地址
      • 端口号
      • 认识协议(最核心概念)
      • OSI七层模型
      • TCP/IP五层(或四层)网络模型
      • 网络设备所在分层
      • 封装和分用


网络初识

网络中的重要概念

网络互联的目的是进行网络通信,也是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据.

那么,在组建网络的过程中,如何判断到底是从哪台主机,将数据传输到哪台主机呢?这就需要使用IP地址来标识.

IP地址

IP地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址,简单说,IP地址用于定位主机的网络地址.

IP地址是一个32位的二进制数,通常被分割为个"8位二进制数"(也就是4个字节).

通常用"点分十进制"的方式来表示,即a.b.c.d的形式(a,b,c,d都是0-255之间的十进制整数)
在这里插入图片描述

端口号

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

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

虽然是0~65535这样的范围,但是实际上0~1023这些端口,都是有一些特定含义的.咱们自己写代码使用的端口,一般都是用剩下的.

有了IP地址和端口号,可以定位到网络中唯一的一个进程,但是还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?

网络通信传输的数据类型可能有多种:图片,视频,文本等等.同一个类型的数据,格式可能也不同,如发送一个文本字符串"你好!".那么如何标识发送的数据是文本类型,及文本的编码格式呢??

基于网络传输,需要使用协议来规定双方的数据格式.

认识协议(最核心概念)

协议是指各方之间达成的共同约定或规定的规则和规范。在计算机领域,协议是指计算机系统、设备或应用程序之间进行通信和交互所使用的规定格式、语法和行为。协议可以规定数据的传输方式、通信的语言和格式、消息的编码和解码方式等,确保各方能够理解和正确处理通信中的数据和指令。

协议最终体现为在网络上传输的数据包的格式.

为什么需要协议?
因为计算机之间的传播媒介是光信号和电信号.通过"频率"和"强弱"来表示0和1这样的信息.想要传递不同的信息,就需要约定好双方的数据格式.
在这里插入图片描述

  • 计算机生产厂商有很多
  • 计算机操作系统,也有很多
  • 计算机网络硬件设备,还是有很多

如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?
就需要有人站出来,约定一个共同的标准.大家都来遵守,这就是网络协议.

由于网络通信是一件非常复杂的事情.
如果使用一个协议,约定所有的网络通信细节,那么就会导致这个协议非常庞大,非常复杂.

于是我们把一个大的协议,拆分成多个小的协议,让每一个小的协议,专注于解决一个/一类问题,再让这些协议相互配合来完成通信.

这一拆,拆出来很多协议,为了更好的把这些协议组织起来,我们就对这些协议进行了分层(把功能定位类似的协议,放到同一层里,并且约定好层和层之间的交互关系)
在这里插入图片描述
我们约定,协议之间不能随意相互交互,只能是相邻的层之间才可以.
上层协议调用下层协议,下层协议给上层提供服务.

分层最大的好处,类似于面向接口编程:定义好两层之间的接口规范,让双方遵循这个规范来对接.

在代码中,类似于定义好一个接口,一方为实现接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务):

  • 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可.
  • 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可.

协议分层降低了整个体系的耦合性,我们可以灵活的变更某个层次的协议.

这样便于更好的扩展和维护~

OSI七层模型

OSI:即Open System Interconnection,开放系统互联.

  • OSI七层网络模型是一个逻辑上的定义和规范,它把网络从逻辑上分为了7层.
  • OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输.

在这里插入图片描述
在这里插入图片描述

由于OSI七层模型既复杂又不实用,所以OSI七层模型没有落地,实现.

实际组建网络时,只是以OSI七层模型设计中的部分分层,也是以下TCP/IP五层(或四层)模型来实现.

TCP/IP五层(或四层)网络模型

这里的五层都是啥,都是啥作用,一定要记住!!(背下来)

TCP/IP是一组协议的代名词,他还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通信协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

在这里插入图片描述

  • 应用层:负责应用程序间的沟通,如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)等.我们的网络编程主要就是针对应用层.
  • 传输层:负责两台主机之间的数据传输.如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机.
  • 网络层:负责地址管理和路由选择.例如在IP协议中,通过IP地址来标识一台主机,并通过路由表示的方式规划出两台主机之间的数据传输的线路(路由).路由器工作在网络层.
  • 数据链路层:负责设备之间的数据帧的传送和识别.例如网卡设备的驱动,帧同步(就是说从网线上检测到什么信号算作新帧的开始),冲突检测(如果检测到冲突就自动重发),数据差校验等工作.有以太网,令牌环网,无线LAN等标准.交换机(Switch)工作在数据链路层.
  • 物理层:负责光/电信号的传输方式.比如现在以太网通用的网线(双绞线),早期以太网采用的同轴电缆,光纤,现在的wifi无线网络使用电磁波等都属于物理层的概念.物理层的能力决定了最大传输速率,传输距离,抗干扰等.集线器(Hub)工作在物理层.

也可以看图~
在这里插入图片描述

物理层我们考虑的比较少.因此很多时候也可以称为TCP/IP四层模型.
TCP/IP中把表示层和会话层融合到一起了.

网络设备所在分层

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即使TCP/IP五层模型的下四层.
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层.
  • 对于一台交换机,它实现了从数据链路层 到物理层,也即是TCP/IP五层模型的下两层.
  • 对于集线器,它只实现了物理层.

以上的说法都是站在经典的模型上讨论的.如果在笔试中遇到了选择题/填空题,就照着上面写~
真实情况下,交换机,也可能是工作在网络层,甚至是传输层/应用层;路由器,也可能是工作中数据链路层,也可能是传输层,也可能是应用层~

封装和分用

数据在网络通信中的整体流程,涉及到了两个名词,分别叫做封装和分用.

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame).这几个术语,严格来说是有区别的,但是平时日常交流的时候,就不会刻意区分~
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装.
  • 首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理.

下图为数据封装的过程
在这里插入图片描述

下图为数据分用的过程

在这里插入图片描述

光说概念可能不太好理解.
举个例子~
我现在要通过QQ,发送一个hello给另一个人.


[站在发送方的视角]

  1. 用户在输入框中输入"hello"字符串,点击发送按钮.
    QQ这样的程序就会把hello这个内容从输入框中读取到,并构造成一个"应用层数据包".应用层的网络协议就描述了这个数据包的构造.这里的应用层协议,往往是开发QQ的程序员自行定义的.
    如果是我来开发QQ,我可能会按照下列的方式来定义这个应用层数据包的结构(定义方式有很多种).由于网络上传输的数据都是"二进制"的字符串,所以我们要能够约定好一个类似于分隔符这样的机制,用来划分不同的内容(下文的使用 ; 来表示).
    数据包格式: 发送者的QQ号;接受者的QQ号;发送时间;消息的正文\n
    数据包样例: 123456789;987654321;2024-08-05 12:00:00;hello\n

    进行网络传输数据,通常需要把一个"结构化"的数据,转成一个二进制字符串.

    • 把 结构化数据 转换成 二进制字符串 这个过程称为序列化.
    • 把 二进制字符串 转换成 结构化数据 这个过程称为反序列化.
  2. QQ 这样的应用程序就会调用操作系统提供的API(传输层给应用层提供的API)
    操作系统会提供一个类似于"发送数据"这样的API,然后应用程序就会把上述组织好的应用层数据包,作为参数传进来,于是应用层数据包就到了系统内核里了,就进入到传输层的代码部分了.
    此时,传输层这里,就会把上述的应用层数据,再进一步的封装成一个传输层数据包.

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

    由于传输层有多种协议(其中最主要的是这两个,TCP和UDP)
    此处假设使用的是UDP协议~
    在这里插入图片描述

    UDP报头里就包含了一些UDP相关的信息,比如包含发送者的端口号和接受者的端口号.

  3. 传输层构造好之后,就会继续调用网络层提供给传输层的api,把数据进一步交给网络层了.
    由于传输层和网络层都是系统内核里面实现好的,上述的调用过程,我们无需关心,也感知不到~
    IP协议,就会把上述拿到的传输层数据包构造成网络层数据包.(再次进行字符串拼接,拼接上IP报头)
    在这里插入图片描述

    IP报头里会包含很多信息,这里主要的信息,发送方的IP地址,和接收方的IP地址.

  4. 网络层继续调用数据链路层的api,把数据交给数据链路层处理,数据链路层的常见协议:以太网(平时插网线,进行上网的这种方式)

    在IP数据包的基础上再进一步进行包装
    在这里插入图片描述

  5. 上述得到的数据,需要进一步交给物理层(硬件设备)

    网卡就会针对上述的二进制数据,进行真正的传输操作,就需要把上述 0101 这样的序列,转换为 光信号/电信号/电磁波…


[接收方视角]

此处接收方做的工作,其实就是发送方的工作的"逆序工作".
发送方的封装,可以认为是"打包快递".
接收方的分用,可以认为是"拆快递".

  1. 接收方物理层收到光信号,把这样的光信号还原成 010101 这样的二进制字符串.

  2. 物理层转换回来的数据,交给数据链路层.
    以太网拿到这个数据包,就会对这个数据包进行解析.拿出这里的报头和载荷,根据报头中的信息,做一些处理.
    根据报头信息决定这个数据包是丢弃还是转发,还是自己保留(向上进行解析)
    在这里插入图片描述

  3. 网络层拿到了上述解析好的数据.

    IP协议,也要对这个数据包进行解析,取出IP报头和载荷.这里也是需要根据报头中的信息确认,是丢弃,转发,还是保留(给上层协议)
    在这里插入图片描述

  4. 传输层这边,UDP协议也要针对数据进行解析了.
    取出UDP报头和载荷.根据报头判断是丢弃还是保留(给上层协议).
    在这里插入图片描述
    如果保留,那么就会把载荷这里的内容进一步交给应用层协议(应用程序).
    由于应用程序有很多,那么这里的内容该交给那个程序处理呢?
    UDP报头中会包含"端口号",可以根据端口号来找到对应的进程进行处理.

  5. 到这里,数据就到了QQ这样的应用程序这里了.
    在这里插入图片描述
    QQ就要针对上述数据进行"反序列化",并针对反序列化后的数据进行进一步的逻辑.

    1. 把收到的消息,显示到界面上
    2. 播放"滴滴滴"这样的声音,提醒收到消息
    3. 显示弹窗提示收到消息
    4. 更新未读消息的列表

[数据转发过程]

在这里插入图片描述
中间过程的交换机和路由器,也会涉及到封装和分用.(这里谈到的都是经典的,教科书上的交换机)

交换机封装分用到数据链路层,就可决定数据是要丢弃,还是要继续转发了,不继续分用.

路由器,封装分用到网络层,就可以决定数据是要丢弃,还是要继续转发了,也不再继续分用.

封装分用这么麻烦,那会不会导致交换机,路由器,主机的通信的过程效率很低呢?
如果拿网络通信和人的反应时间去比,那速度还是很快的.
如果拿网络通信和读写硬盘来比,通常确实认为,网络的速度比硬盘的速度更慢,更不必说与内存比了~

本文到这里就结束啦~

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

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

相关文章

论文解读《LaMP: When Large Language Models Meet Personalization》

引言:因为导师喊我围绕 “大语言模型的个性化、风格化生成” 展开研究,所以我就找相关论文,最后通过 ACL 官网找到这篇,感觉还不错,就开始解读吧! “说是解读,其实大部分都是翻译哈哈哈&#x…

域控操作十七点五:域用户无管理员权限下安装IT打包的软件

1,需要软件Runasspcadmin三件套和winrar压缩软件 2,将需要打包的软件放进这个文件夹内,使用播放器举个例子 3,打开runasspcadmin.exe 按图片写就行了 文件夹现在是这样的然后全选右击,用WinRAR添加到压缩包 这个可以自…

量化交易backtrader实践(一)_数据获取篇(4)_通达信数据应用

在第2节实践了从金融数据接口包例如tushare.pro或akshare获取数据,在第3节实践了直接从网页上爬取股票数据。其实,我们的电脑上怎么可能没有几个股票软件,在这些股票软件里,历史行情,实时行情都有,我们能否…

Windows环境本地部署Oracle 19c及卸载实操手册

前言: 一直在做其他测试,貌似都忘了Windows环境oracle 19c的部署,这是一个很早很早的安装记录了,放上来做个备录给到大家参考。 Oracle 19c‌:进一步增强了自动化功能,并提供了更好的性能和安全性。这个版本在自动化、性能和安全性方面进行了重大改进,以满足现代企业对数…

运维人员转行 AI 大模型全攻略:史上最详尽总结,一篇在手,转行无忧!

前言 做运维的苦,谁做谁懂。有时候真感觉自己就像个杂役,在公司都快成修电脑的了。不装了,我要转行!在此给大家分享点经验,希望能帮到你们。 运维工程师若要转行至大模型领域,需要学习一系列全新的技能与…

开放式耳机原理?五款超强单品推荐!

开放式耳机的原理其实挺直观的,它们不像那些把耳朵完全罩住或者塞住的封闭式耳机。开放式耳机通常就是轻轻地挂在耳朵上,声音通过空气传播,直接送到你的耳朵里。 这种设计有几个好处。首先,因为耳朵没有被完全封闭,所…

【开源项目】数字孪生公园~云南某湿地公园—开源工程及源码

飞渡科技数字孪生湿地公园管理平台,基于园林行业定制硬件以及传感器、摄像头等终端采集数据,借助自主研发国产渲染引擎,以人工智能、物联网、数字孪生技术作为核心,还原公园内外的真实场景,同时实现海量数据处理、系统…

DB-GPT部署和试用

前言 DB-GPT是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。 目的是构建大模型领域的基础设施,通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Mu…

哇!原来vscode的终端可以这么美

相信很多开发小伙伴经常可以看到,为什么别人的vscode的终端可以这么美,又有提示,还有git是提示,时刻告诉你现在正在处于哪个分支,接下来,就让我为大家告诉一个美化vscode终端的方法 先看效果 只要来到这个网…

linux_L2_linux删除文件

linux 删除文件 在Linux下删除文件有多种实现方法,以下是其中几种常见的方法: 方法一:使用rm命令删除单个文件 rm 文件路径例如,删除当前目录下的文件file.txt: rm file.txtQuestion :当你在Linux系统中使用rm命令删…

【视频教程】基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割实践技术应用

随着无人机自动化能力的逐步升级,它被广泛的应用于多种领域,如航拍、农业、植保、灾难评估、救援、测绘、电力巡检等。但同时由于无人机飞行高度低、获取目标类型多、以及环境复杂等因素使得对无人机获取的数据处理越来越复杂。最近借助深度学习方法&…

无线领夹麦克风哪个牌子好,口碑最好的麦克风品牌,领夹麦推荐

在数字化时代的浪潮中,无线领夹麦克风作为现代通讯与创意表达不可多得的工具,正迅速渗透至各类专业及日常场景。在其便捷性与高效性备受推崇的背后,行业内不为人知的秘密也正逐渐浮出水面。近期,五大无线领夹麦克风行业痛点被曝光…

VPSA制氧机与PSA制氧机的差异

制氧机在现代工业及环保等多个领域具有广泛应用,其中VPSA(变压吸附)制氧机和PSA(压力吸附)制氧机是两种常见的制氧设备。尽管两者在基本原理上相似,但在实际应用中却存在诸多显著差异。 工作原理 VPSA制氧机采用变压吸附技术,通过改变吸附剂的…

无线麦克风哪个好,领夹麦克风哪个品牌音质最好,无线麦克风推荐

随着科技的进步,无线领夹麦克风市场迎来了智能化浪潮,各种功能宣传铺天盖地。然而,在这场技术革新的盛宴中,也不乏商家利用信息不对称,设置“智商税”陷阱。从夸大其词的降噪效果到实际使用中的频频失效,再…

Mac上的rar文件怎么解压?Mac上解压RAR文件超实用的方法

rar文件是一种常见的压缩文件格式,它可以将多个文件或文件夹打包成一个文件,从而节省空间和方便传输。但是,mac系统并没有自带的工具可以直接打开或解压rar文件。在这篇文章中,我们将详细解答关于mac解压rar文件的问题。希望我们能…

CI/CD中gitlab和jenkins讲解

一 CICD是什么 CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery) 1.1 持续集成(Continuous Integration) 持续集成…

“京东云深海数据平台” 焕新升级

深海数据平台 致力于为每一个数据客户提供灵活化、一站式、智能化的数据开发与管理工具。同时,根据客户行业提供成熟的数据业务全链路解决方案,包括数据集成、开发、元数据管理等功能,帮助数据开发人员快速高效地完成数据相关工作&#xff0c…

洁净区气流流型验证方案及注意事项 北京中邦兴业

洁净区气流流型验证方案及注意事项是确保洁净区环境符合规定标准的重要环节,以下是对此的详细阐述: 一、洁净区气流流型验证方案 1. 测试目的 验证洁净区内气流流型的均匀性和稳定性,确保洁净区内的空气流动符合设计要求,从而有…

uniapp登录页面( 适配:pc、小程序、h5)

<!-- 简洁登录页面 --> <template><view class"login-bg"><image class"img-a" src"https://zhoukaiwen.com/img/loginImg/2.png"></image><image class"img-b" src"https://zhoukaiwen.com/im…

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络) 文章目录 Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)前言一、Ubuntu依赖安装二、创建操作目录, 下载build_chain.sh脚本2.1 先…