【JavaEE】-- 网络编程基础概念(详解)

news2024/9/22 13:31:14

🎇🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!
人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习!
欢迎志同道合的朋友一起加油喔 💪💪💪
目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个🐒嘿嘿
谢谢你这么帅气美丽还给我点赞!比个心

目录

  • 1.IP地址(区分不同的主机)
    • 1.1概念
    • 1.2格式
  • 2.端口号(标识一个主机上不同的应用程序)
    • 2.1概念
    • 2.2格式
    • 2.3要求
  • 3.协议(⭐⭐⭐⭐⭐最核心的概念)
    • 3.1概念
    • 3.2作用
  • 4.协议分层
    • 4.1简单理解分层
    • 4.2什么是协议分层
    • 4.3分层的作用(为什么需要网络协议的分层?)
  • 5.TCP/IP五层(或四层)模型
    • 5.1网络设备所在分层
    • 5.2网络分层对应
  • 6.封装、分用
    • 📚6.1 举个发送消息的例子
    • 6.1.1 A通过QQ给B发送hello(应用层)
    • 6.1.2 A通过QQ给B发送hello(传输层)
    • 6.1.3 A通过QQ给B发送hello(网络层)
    • 6.1.4 A通过QQ给B发送hello(数据链路层)
    • 6.1.5 A通过QQ给B发送hello(物理层)
    • 6.2 下图为数据封装的过程
    • 6.3 下图为数据分用的过程
      • 6.3.1 B接收到A发送的hello信息(五层解析)
      • 6.3.2 数据分用
  • 7.客户端(Client)
  • 8.服务器(Server)

1.IP地址(区分不同的主机)

1.1概念

  • IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器) 的⽹络地址。简单说 ,IP地址⽤于定位主 机的⽹络地址。

就像我们发送快递⼀样 ,需要知道对⽅的收货地址 ,快递员才能将包裹送到⽬的地。

1.2格式

  • IP地址(IPv4)是⼀个32位的⼆进制数 ,通常被分割为4个“ 8位⼆进制数”(也就是4个字节),如:
    01100100.00000100.00000101.00000110。
  • 通常⽤ “ 点分⼗进制” 的⽅式来表⽰ ,即 a.b.c.d 的形式(a,b,c,d都是0~255之间 0~255之间的⼗进制整数)。 如 :100.4.5.6。

在这里插入图片描述

  • 先简单了解,后续详细介绍

2.端口号(标识一个主机上不同的应用程序)

2.1概念

  • 在⽹络通信中 ,IP地址⽤于标识主机⽹络地址 ,端⼝号可以标识主机中发送数据、接收数据的进程。 简单说:端⼝号⽤于定位主机中的进程。

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

2.2格式

  • 端⼝号是0~65535范围的数字 ,在⽹络通信中 ,进程可以通过绑定⼀个端⼝号 ,来发送及接收⽹络数 据。
  • 端口号是一个2个字节的整数

2.3要求

  • 主机上每个程序在启动的时候,就需要关联上(也可以叫做绑定)一个和别人不重复的端口号
  • 有的时候,可能会谈到,有的程序,是有固定端口号的,这个说法源自于一个概念“知名端口号”。
  • 有的时候可能会谈到,有的程序,是有固定的端口号的,这个说法源自于一个概念"知名端口号”。
  • 上古时期,大佬们,为了避免当时的一些程序,端口之间发生冲突.就给这些知名的程序,分配了不同的端口.
  • 比如,http服务器,80
  • ssh服务器22
  • ftp服务器23
  • https 443 等等…
  • 这些知名端口当时一共分了1024个
  • 不包含mysql,也不包含tomcat,更不包含java(这些都是后来的)
  • 随着时间的发展,知名端口,更多的是"建议"而不是约束.你搞一个http服务器,你可以使用80,也可以使用别的.想用哪个,你自己说了算~~

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

⽹络通信传输的数据类型可能有多种: 图⽚ ,视频 ,⽂本等。 同⼀个类型的数据 ,格式可能也不同, 如发送⼀个⽂本字符串“你好!”:如何标识发送的数据是⽂本类型 ,及⽂本的编码格式呢?

基于⽹络数据传输 ,需要使⽤协议来规定双⽅的数据格式。

3.协议(⭐⭐⭐⭐⭐最核心的概念)

3.1概念

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

3.2作用

  • 为什么需要协议?
  • 就好⽐见⽹友 ,彼此协商胸⼝插⽀玫瑰花见⾯ ,这就是⼀种提前的约定 ,也可以称之为协议。
    在这里插入图片描述

计算机之间的传输媒介是光信号和电信号。通过 “频率” 和 “强弱” 来表⽰ 0 和 1 这样的信息。要想传递 各种不同的信息 ,就需要约定好双⽅的数据格式。

  • 计算机⽣产⼚商有很多;
  • 计算机操作系统 ,也有很多;
  • 计算机⽹络硬件设备 ,还是有很多;

如何让这些不同⼚商之间⽣产的计算机能够相互顺畅的通信?

  • 就需要有⼈站出来 ,约定⼀个共同的标准 ,⼤家都来遵守 ,这就是网络协议

进行网络通信的时候,一定是需要通信协议的
主要是,两个用来通信的主机设备,不同的硬件,不同的操作系统,不同的应用程序
即使上述内容不同,通信也能够正确进行.
进行网络通信的时候,通信协议是非常关键的环节

4.协议分层

4.1简单理解分层

  • 网络通信,是一个非常复杂的事情.这个过程中涉及到很多的细节问题

  • 如果你使用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂

  • 此时,就可以把一个功能复杂的协议,拆分成
    多个功能更单一的协议了.

  • 确实是拆分了,但是,拆出来的协议,太多了.
    于是,就要对这些协议,进行分类,甚至,要进行"分层"

    在这里插入图片描述

  • 对于⽹络协议来说 ,往往分成⼏个层次进⾏定义。

4.2什么是协议分层

  • 协议分层,也就是上述类似的效果,把很多协议,按照功能分成不同的层级,每个层级都有对应的主线任务(目标/要解决的问题)
  • 上层协议会调用下层协议的功能,下层协议会给上层协议提供服务
    (不能够“越级调用)

4.3分层的作用(为什么需要网络协议的分层?)

  • 分层最大的好处 ,类似于⾯向接⼝编程:定义好两层间的接⼝规范 ,让双⽅遵循这个规范来对接。
  • 在代码中 ,类似于定义好⼀个接口,一方为接口的实现类(提供方 ,提供服务),一方为接口的使用类(使用方,使用服务):
  • 对于使用方来说 ,并不关⼼提供方是如何实现的 ,只需要使用接口即可
  • 对于提供方来说 ,利⽤封装的特性 ,隐藏了实现的细节 ,只需要开放接⼝即可。 这样能更好的扩展和维护 ,如下图:
    在这里插入图片描述

5.TCP/IP五层(或四层)模型

TCP/IP是⼀组协议的代名词 ,它还包括许多协议 ,组成了TCP/IP协议簇。
TCP/IP通讯协议采⽤了5层的层级结构 ,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。
4G/5G通信,就是另一套专门的模型协议(手机流量上网)

  • 第一层 物理层:

负责光/电信号的传递⽅式。 比如现在以太网通⽤的网线(双绞 线)、早期以太网采⽤的的同 轴电缆(现在主要⽤于有线电视)、光纤 ,现在的wifi⽆线网使⽤电磁波等都属于物理层的概念。物理 层的能力决定了最⼤传输速率、传输距离、抗干扰性等。集线器( Hub)工作在物理层。
硬件层面上的相关约定 (网线、网口…)

  • 第二层 数据链路层:

负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上 检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。 有以太⽹ 、令牌环⽹ ,⽆线LAN等标准。交换机(Switch) ⼯作在数据链路层。
关注的是,通信过程中,两个相邻结点 之间的 通信。

  • 第三层 ⽹络层:

负责地址管理和路由选择。例如在IP协议中 ,通过IP地址来标识⼀台主机 ,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由) 。路由器( Router) ⼯作在⽹路层。
关注的是 通信中 :通信路径的规划
规划出的路径,就决定了,数据要经过那些结点
“ 点 ” 到 “ 点 ” 的传输

  • 第四层 传输层:

负责两台主机之间的数据传输。如传输控制协议 (TCP) ,能够确保数据可靠的从源主机发 送到⽬标主机。
关注的是 通信双方的 “ 起点 ” 和 “ 终点 ”
“ 端 ” 到 “ 端 ” 的传输

  • 第五层 应⽤层:

负责应⽤程序间沟通 ,如简单电⼦邮件传输(SMTP) 、⽂件传输协议( FTP) 、⽹络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
和具体应用程序相关
传输的数据是干啥用的 ~~~~ 如何使用 ----- 有何意义 ~~~~~

📚以上五层和送快递比较相似📚

  • 接下来看图:

主要关注 应用层 + 传输层

在这里插入图片描述

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

5.1网络设备所在分层

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

注意我们这⾥说的是传统意义上的交换机和路由器 ,也称为⼆层交换机( ⼯作在TCP/IP五层模型的下 两层) 、三层路由器( ⼯作在TCP/IP五层模型的下三层)。
随着现在⽹络设备技术的不断发展 ,也出现了很多3层或4层交换机 ,4层路由器。我们以下说的⽹络设 备都是传统意义上的交换机和路由器。

5.2网络分层对应

  • ⽹络数据传输时 ,经过不同的⽹络节点(主机、路由器) 时 ,⽹络分层需要对应。 以下为同⼀个⽹段内的两台主机进⾏⽂件传输:
    在这里插入图片描述
  • 以下为跨⽹段的主机的⽂件传输:数据从⼀台计算机到另⼀台计算机传输过程中要经过⼀个或多个路由器

在这里插入图片描述

6.封装、分用

在这里插入图片描述

📚6.1 举个发送消息的例子

6.1.1 A通过QQ给B发送hello(应用层)

  • A通过QQ发送hello给B
  • A在聊天窗口里,输入hello,点击发送
  • QQ应用程序就要负责实现上述逻辑~~
  • 很明显,上述信息都需要通过网络来传输~~
  • QQ应用程序,首先就会把上述要传递的内容,组织成"应用层数据包"
  • QQ里就会有个应用层网络协议.
  • 协议,就是约定,约定了,数据,按照什么样的格式来组织~~
  • 假设,QQ的应用层协议是这样的~~四个信息,为了组织成字符串,就通过,来分割各个部分,使用结束标志
  • 发送人的qq号,接收人的qq号,发送时间,消息正文\n
    在这里插入图片描述
    在这里插入图片描述

6.1.2 A通过QQ给B发送hello(传输层)

  • 应用层数据包,已经有了.
    QQ程序,就要调用系统的api,来进行传输
  • 应用层接下来要把数据交给,传输层
    怎么交给传输层?传输层(操作系统内核)提供了api让应用程序去调用
  • 称为socket api
    在这里插入图片描述
    在这里插入图片描述

类似于包装快递

6.1.3 A通过QQ给B发送hello(网络层)

在这里插入图片描述

6.1.4 A通过QQ给B发送hello(数据链路层)

在这里插入图片描述

6.1.5 A通过QQ给B发送hello(物理层)

在这里插入图片描述

上述层层包装数据,不停的加数据报头的过程,称为"封装"

6.2 下图为数据封装的过程

在这里插入图片描述

6.3 下图为数据分用的过程

6.3.1 B接收到A发送的hello信息(五层解析)

在这里插入图片描述

6.3.2 数据分用

在这里插入图片描述

7.客户端(Client)

  • 客户端(Client) 或称用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在客户机上,需要与服务端互相配合运行。例如:下载 QQ 或者微信时,实际上我们下载的是腾讯开发的客户端程序(在我们电脑或者手机执行的程序)。
  • 客户端获取服务资源

在这里插入图片描述

  • 客户端保存资源在服务端

在这里插入图片描述

好⽐在银⾏办事:

  • 银⾏提供存款服务:⽤户(客户端)保存资源(现⾦) 在银⾏ (服务端)
  • 银⾏提供取款服务:⽤户(客户端) 获取服务端资源(银⾏替⽤户保管的现⾦) 常见的客户端服务端模型
    最常见的场景 ,客户端是指给⽤户使⽤的程序 ,服务端是提供⽤户服务的程序:
  1. 客户端先发送请求到服务端
  2. 服务端根据请求数据 ,执⾏相应的业务处理
  3. 服务端返回响应:发送业务处理结果
  4. 客户端根据响应数据 ,展⽰处理结果(展⽰获取的资源 ,或提⽰保存资源的处理结果)
    在这里插入图片描述

8.服务器(Server)

  • 服务器(Server)也是计算机,不过它比普通计算机运行更快、负载更高。通俗点说它也是一台电脑,它的某些性能可能比我们的普通电脑高。服务器上运行着服务器端程序(客户机不用下载的程序),主要负责根据客户端发送过来的请求进行业务逻辑和数据的处理。

对于服务器要求不高的话我们的电脑也可以充当一台服务器(将服务器端程序在本机运行),平时我们线下开发就是这么做的。不过服务器都是一直工作(开机)着的,因为一旦软件上线,一般都要一直为其使用者提供服务的。

生产环境下的服务器一般都是放置在机房中,由专业人员进行远程操控和维护(没有屏幕和键盘等其它部件,跟一台高性能主机差不多)。

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

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

相关文章

AV1技术学习: Compound Prediction

一、双向 Compound Prediction AV1支持两个参考帧的预测通过多种复合模式线性组合。复合预测公式为 其中,权重m(x, y) is scaled by 64 以进行整数计算,R1(x, y)和R2(x, y)表示两个参考块中位于(x, y)的像素。P(x, y)将按比例缩小 1/64 以形成最终的预测…

十五、【机器学习】【监督学习】- 神经网络回归

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

MyPostMan 迭代文档管理、自动化接口闭环测试工具(自动化测试篇)

MyPostMan 是一款类似 PostMan 的接口请求软件,按照 项目(微服务)、目录来管理我们的接口,基于迭代来管理我们的接口文档,文档可以导出和通过 url 实时分享,按照迭代编写自动化测试用例,在不同环…

定制QCustomPlot 带有ListView的QCustomPlot 全网唯一份

定制QCustomPlot 带有ListView的QCustomPlot 文章目录 定制QCustomPlot 带有ListView的QCustomPlot摘要需求描述实现关键字: Qt、 QCustomPlot、 魔改、 定制、 控件 摘要 先上效果,是你想要的,再看下面的分解,顺便点赞搜藏一下;不是直接右上角。 QCustomPlot是一款…

Spring中IoC容器和Bean

目录 IoC(Inversion of Control)控制反转思想 Spring技术对IoC思想的实现 DI(Dependency Injection)依赖注入 目标 最终效果 IoC入门案例 传统方法,不使用IoC思想调用dao层 使用IoC思想调用dao层 第一步:导入Spring坐标 第二步:创建…

stm32:CAN通讯

目录 介绍 协议层 CAN的 帧/报文 种类 数据帧 远程帧(遥控帧) 错误帧 过载帧 帧间隔 总线仲裁 stm32的CAN外设 工作模式 测试模式 功能框图 时序 标准时序 例子 环回静默模式测试 寄存器代码 HAL版本 介绍 一种功能丰富的车用总线标…

【ffmpeg命令入门】重新编码媒体流、设置码率、设置帧速率

文章目录 前言ffmpeg的描述重新编码媒体流重新编码媒体流的命令ffmpeg支持的媒体流 设置视频码率视频码率是什么设置视频的码率 设置文件帧数率帧数率是什么ffmpeg设置帧数率 总结 前言 在数字媒体处理领域,ffmpeg是一款非常强大的工具,它可以用来进行媒…

自动化产线 搭配数据采集监控平台 创新与突破

自动化产线在现在的各行各业中应用广泛,已经是现在的生产趋势,不同的自动化生产设备充斥在各行各业中,自动化的设备会产生很多的数据,这些数据如何更科学化的管理,更优质的利用,就需要数据采集监控平台来完…

解决Ubuntu 20.04下外接显示屏无信号问题【多次尝试无坑完整版!!!】

解决Ubuntu 20.04下外接显示屏无信号问题【多次尝试无坑完整版!!!】 一、引言 作为一名开发者,我经常在Windows和Ubuntu之间切换,以满足不同的开发需求。最近,我在使用惠普暗影精灵9(搭载RTX 4…

HLS加密技术:保障流媒体内容安全的利器

随着网络视频内容的爆炸性增长,如何有效保护视频内容的版权和安全成为了一个亟待解决的问题。HLS(HTTP Live Streaming)加密技术作为一种先进的流媒体加密手段,凭借其高效性和安全性,在直播、点播等场景中得到了广泛应…

隐性行为克隆——机器人的复杂行为模仿学习的新表述

介绍 论文地址:https://arxiv.org/pdf/2109.00137.pdf 源码地址:https://github.com/opendilab/DI-engine.git 近年来,人们对机器人学习进行了大量研究,并取得了许多成果。其中,模仿学习法尤其受到关注。这是一种从人…

JavaEE初阶 - IO、存储、硬盘、文件系统相关常识 (二)

🎇🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…

appium2.0 执行脚本遇到的问题

遇到的问题: appium 上的日志信息: 配置信息 方法一 之前用1.0的时候 地址默认加的 /wd/hub 在appium2.0上, 服务器默认路径是 / 如果要用/wd/hub 需要通过启动服务时设置基本路径 appium --base-path/wd/hub 这样就能正常执行了 方法二…

HarmonyOS NEXT学习——@BuilderParam装饰器

初步理解,相当于VUE的插槽slot Builder function overBuilder() {}Component struct Child {label: string ChildBuilder customBuilder() {}Builder customChangeThisBuilder() {}BuilderParam customBuilderParam: () > void this.customBuilder; // 使用自定…

【TDA4板端部署】基于 Pytorch 训练并部署 ONNX 模型在 TDA4

1 将torch模型转onnx模型 Ti转换工具只支持以下格式: Caffe - 0.17 (caffe-jacinto in gitHub) Tensorflow - 1.12 ONNX - 1.3.0 (opset 9 and 11) TFLite - Tensorflow 2.0-Alpha 基于 Tensorflow、Pytorch、Caffe 等训练框架,训练模型:选择…

Hadoop3:HDFS存储优化之小文件归档

一、情景说明 我们知道,NameNode存储一个文件元数据,默认是150byte大小的内存空间。 那么,如果出现很多的小文件,就会导致NameNode的内存占用。 但注意,存储小文件所需要的磁盘容量和数据块的大小无关。 例如&#x…

【5G Sub-6GHz模块】专为IoT/eMBB应用而设计的RG520NNA、RG520FEB、RG530FNA、RG500LEU 5G模组

推出全新的5G系列模组: RG520NNADB-M28-SGASA RG520NNADA-M20-SGASA RG520FEBDE-M28-TA0AA RG530FNAEA-M28-SGASA RG530FNAEA-M28-TA0AA RG500LEUAA-M28-TA0AA ——明佳达 1、5G RG520N 系列——专为IoT/eMBB应用而设计的LGA封装模块 RG520N 系列是一款专为 IoT…

Kafka Producer发送消息流程之Sender发送线程和在途请求缓存区

文章目录 1. Sender发送数据1. 发送数据的详细过程:2. 关键参数配置 2. 在途请求缓存区 1. Sender发送数据 Sender线程负责将已经在RecordAccumulator中准备好的消息批次发送到Kafka集群。虽然消息在RecordAccumulator中是按照分区组织的,但Sender线程在…

百日筑基第二十三天-23种设计模式-创建型总汇

百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类: 创建型模式,共五种:单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式,共…

【JavaEE】synchronized原理详解

本文使用的是JDK1.8 目录 引言 Java对象在JVM的结构 对象头 Mark Word Monitor Owner EntryList WaitSet 加锁过程 锁消除 偏向锁 偏向锁使用 重偏向 撤销偏向 轻量级锁 重量级锁 自旋优化 引言 对于synchronized原理讲解之前,我们需要知道Java对象…