JavaEE:网络初识

文章目录

  • 网络初识
    • 网络中的重要概念
      • 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.mfbz.cn/a/879233.html

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

相关文章

cmd命令

常用命令 查看电脑名称: hostname 查看网卡信息: ipconfig 快速打开网络设置界面: control.exe netconnections 或 rundll32.exe shell32.dll,Control_RunDLL ncpa.cpld 打开防火墙设置: wf.msc 指定网卡设置IP地址&#…

如何使用ssm实现高校智能培训管理系统分析与设计+vue

TOC ssm633高校智能培训管理系统分析与设计vue 第一章 绪论 1.1 选题背景 目前整个社会发展的速度,严重依赖于互联网,如果没有了互联网的存在,市场可能会一蹶不振,严重影响经济的发展水平,影响人们的生活质量。计算…

如何使用宝塔面板安装中间件

如何快速安装中间件,宝塔镇河妖非常简单。 使用 SSH 连接工具,如堡塔SSH终端连接到您的 Linux 服务器后,挂载磁盘,根据系统执行相应命令开始安装(大约2分钟完成面板安装): Centos安装脚本 yum…

C++:日期类的实现

目录 一、前言 二、头文件 三、各个函数的实现 打印、检查日期及获取日期 、、-、-、 、<、<、>、>、 &#xff01; 日期-日期 >>、<< 一、前言 前面几篇讲了关于类和对象的一些知识&#xff0c;本篇就来实现一下前面用到的日期类。 二、头文…

【LGR-200-Div.4】洛谷入门赛 #27 A - H题解,包含(C++, Go语言)

前言&#xff1a; 本文为【LGR-200-Div.4】洛谷入门赛 #27 A - H题解 我只是一个只会各种暴力法的蒟蒻&#xff0c;这场比赛没有参加&#xff0c;是比赛完去写的&#xff0c;但是那个题目昨天晚上才能提交&#xff0c;导致拖久了一点 最后面贴一个Go语言的&#xff0c;反正也没…

英文ai写作怎么写?5个软件帮助你轻松进行ai写作

英文ai写作怎么写&#xff1f;5个软件帮助你轻松进行ai写作 AI写作工具正在改变内容创作方式&#xff0c;尤其是英文写作。以下是5款优秀的AI写作工具&#xff0c;它们可以帮助你快速、高效地完成各种英文写作任务&#xff0c;无论是博客、文章、社交媒体文案还是电子邮件。 聪…

Internet选项检查所存网页的较新版本的设置

每次访问此页时检查代表着,你无论打开任何网页时,都不用IE缓存,直接刷新浏览每次启动IE时检查,代表着,只要你IE浏览器不关闭,,那么他在访问相当网站,网页时,就会调用IE缓存(你会感觉打开非常快),这时候,他并没有下载网页,,只是调用缓存而已。。但是如果你关闭IE浏览器,再重新打…

AI问答-HTTP:理解 Content-Disposition

本文背景 在下载arraybuffer文件时&#xff0c;想要获取文件名&#xff0c;这时引入本文内容Content-Disposition&#xff0c;我们在Content-Disposition获取到文件名就可以在下载后的文件以该文件名命名了。 一、简介 Content-Disposition是HTTP协议中的一个响应头字段&…

跨平台开发新视角:利用Android WebView实现Web内容的原生体验

在移动应用开发领域&#xff0c;跨平台解决方案一直是一个热门话题。开发者们不断寻求能够同时在iOS和Android平台上提供一致用户体验的方法。而Android的WebView组件&#xff0c;作为一个强大的工具&#xff0c;允许开发者在Android应用中嵌入Web内容&#xff0c;为用户提供接…

第R3/4周:天气预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、前言 这周的任务添加了探索式数据分析&#xff08;EDA&#xff09;&#xff0c;什么是探索式数据分析呢&#xff1f; 探索性数据分析&#xff08;Explor…

linux 双网卡服务器突然断电后网卡单通故障解决

某台linux 双网卡服务器突然断电后网卡单通故障解决 故障现象&#xff1a;断电后重启服务器&#xff0c;主用网卡IP只能同网段访问&#xff0c;其他网段无法访问&#xff0c;备用网卡则正常&#xff1b; 解决方案&#xff1a;route -n查询路由信息&#xff0c;发现主网卡路由…

第二期: 第11节, uboot 命令的使用

问题&#xff1a;如果你只想控制一个led 灯&#xff0c;并且不想去写驱动。 那么可以直接 使用uboot 的命令&#xff0c;去改写内存。 uboot 命令的解析&#xff1a; 读命令&#xff0c; md[.b, .w. .l] address 注意&#xff1a; 这里的 .w 指的是两个字节&#xff0c;…

探索Python的Excel世界:openpyxl的魔法之旅

文章目录 探索Python的Excel世界&#xff1a;openpyxl的魔法之旅背景&#xff1a;为什么选择openpyxl&#xff1f;什么是openpyxl&#xff1f;如何安装openpyxl&#xff1f;简单的库函数使用方法场景应用&#xff1a;openpyxl在实际工作中的应用常见bug及解决方案总结 探索Pyth…

Spring高手之路23——AOP触发机制与代理逻辑的执行

文章目录 1. 从整体视角学习Bean是如何被AOP代理的2. AOP代理的触发机制2.1 postProcessAfterInitialization方法源码分析2.2 wrapIfNecessary方法源码分析2.3 时序图演示触发机制 3. AOP代理逻辑的执行3.1 AOP代理如何使用拦截器3.2 proceed方法源码分析3.3 时序图 1. 从整体视…

特价电影票对接接口平台推荐?微客云影票

特价电影票对接接口平台推荐 一、常见的较好平台 微客云影票与全国 12000 多家影院建立了合作&#xff0c;覆盖范围广&#xff0c;其提供的电影票价格普遍低于市场价&#xff0c;平均每张票能省下不少钱&#xff0c;在万达、CGV 等大型影院优惠更为显著。 二、判断平台好坏的…

【Qt】Qt C++ Widget中嵌入qml

1. 效果 2. 方法 使用QQuickWidget方式 QQuickWidget *view new QQuickWidget;view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));view->show();除了QQuickWidget方式还可以使用QQuickView方式&#xff0c;请自行查阅资料 3. 代码 3.1 工程目录 3.2 …

Weblogic部署

要安装weblogic&#xff0c;首先要有java环境&#xff0c;因此需要先安装jdk。 这里需要注意&#xff0c;weblogic版本不同&#xff0c;对应的jdk版本也不同&#xff0c;我在这里就踩了很多坑&#xff0c;我这里下载的是fmw_12.2.1.4.0_wls_lite_generic.jar对应的是jdk-8u333…

visual prompt tuning和visual instruction tuning

visual prompt tuning&#xff1a;作为一种微调手段&#xff0c;其目的是节省参数量&#xff0c;训练时需要优化的参数量小。 输入&#xff1a;视觉信息image token可学习的prompt token 处理任务&#xff1a;比如常见的分类任务 visual prompt tuning visual instruction tu…

唯徳知识产权管理系统 DownloadFileWordTemplate 文件读取漏洞复现

0x01 产品简介 唯徳知识产权管理系统,由深圳市唯德科创信息有限公司精心打造,旨在为企业及代理机构提供全方位、高效、安全的知识产权管理解决方案。该系统集成了专利、商标、版权等知识产权的全面管理功能,并通过云平台实现远程在线办公,提升工作效率。是一款集知识产权申…

客户说了算!精益产品开发,让中小企业精准触达用户需求!——张驰咨询

随着全球经济环境的波动&#xff0c;特别是疫情后经济复苏进程的反复&#xff0c;很多中小制造企业面临产品滞销、同质化严重和内卷竞争加剧的困境。市场饱和、利润微薄&#xff0c;还在新产品开发上遇到了研发人才不足、资金短缺等问题。许多企业在这场市场博弈中徘徊在生死边…