【JavaEE】初识网络

news2024/11/19 20:24:18

网络初识

文章目录

  • 网络初识
    • 网络发展史
      • 独立模式
      • 网络互连
        • 局域网LAN
        • 广域网
    • 网络通信基础
      • IP地址
      • 端口号
        • 格式
      • 协议
      • 五元组
      • 协议分层
        • OSI七层模型
        • TCP/IP五(四)层协议
          • 1.物理层
          • 2.数据链路层
          • 3.网络层
          • 4.传输层
          • 5.应用程序
      • 网络设备所在的分层
      • 封装和分用
        • 例子
          • 发送方
          • 接收方

网络发展史

单机时代 -> 局域网时代 -> 广域网时代 -> 移动互联网时代

独立模式

计算机之间相互独立

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网络互连

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

网络互连:将多台计算机连接在一起,完成数据共享。

数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信

根据网络互连的规模不同,可以划分为局域网和广域网。

局域网LAN

把几个电脑,通过路由器连接到一起

局域网,即 Local Area Network,简称LAN

Local 即标识了局域网是本地,局部组建的一种私有网络。

局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

以下是局域网组建网络的几种方式:

  1. 基于网线直连

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 基于集线器或交换机组建

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 基于交换机和路由器构建

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

广域网

把更多的局域网连接到一起,所构成的网络更加庞大,可能已经覆盖一个城市/一个国家/全世界

广域网,即 Wide Area Network,简称WAN

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是有一个点:局域和广域之间是没有明确的界限的!

网络通信基础

IP地址

描述了一个设备,在网络上的地址

举例子:

生活中:江苏省 盐城市 建湖县境内 蔡徐村

计算机中:使用一个32位,4字节数字,表示地址,一啊不能来说,会把IP地址给表示成4个0-255之间的十进制数字,并且使用3个点进行分隔,点分十进制

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特殊IP

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)

端口号

区分一个主机上不同的应用程序的

端口号也是一个整数(2个字节,相对比较小的数字)

不同的程序,就可以关联/绑定到不同的端口号

要求同一个主机上的应用程序,不能关联到同一个端口号、

(一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口号)

格式

端口号是2字节:0->65535

0 :一般不是使用

1-1023 : 这个范围的端口号,系统留作特殊用途,我们写的程序不要去占用

知名端口号:

22 :ssh

80 :http

443 :https

23 : telnet

在实际的通信过程中,IP和端口往往是一对

举个例子:

我们买东西

收件人地址,收件人电话

发件人地址,发件人电话

好比西游记中的唐僧

贫僧自东土大唐而来,前往西方拜佛求经

贫僧:源端口

东土大唐:源IP

西方:目的IP

佛:目的端口

协议

协议就是一种约定,约定了通信双方按照啥样的方式来传递数据~

网络上,本质就是通过光/电信号佬传输数据的

比如说:低电平(电压)表示1,高电平表示0,高频光信号表示1,低频光信号表示0

举个例子

就好比你去相亲,你们约好了在xx酒店相遇,然而呢别的相亲对象也约定好在xx酒店,那待会你就会可能发生认错人的情况(你懂的,反正我不懂🥵🥵🥵)

那么此时就有一个简单的方法,你们可以约定见面的时候带个绿帽子或者戴个项圈🫣🫣🫣(正经的哈别乱想)

通过这样的操作,就像相当于是一种协议~

协议,就是单纯的约定,并不一定会遇到很复杂的。

由于在网络通信的世界中,遇到的场景/问题往往比较棘手,的确是有一些网络协议是非常复杂的~

五元组

在TCP/IP协议中,用五元组来标识一个网络通信:

  1. 源IP:标识源主机

  2. 源端口号:标识源主机中该次通信发送数据的进程

  3. 目的IP:标识目的主机

  4. 目的端口号:标识目的主机中该次通信接收数据的进程

  5. 协议号:标识发送进程和接收进程双方约定的数据格式

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

五元组在网络通信中的作用,类似于发送快递:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同时我们也可以在cmd中输入netstat -ano来查看网络数据传输中五元组的信息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

协议分层

我们平时写代码,若代码越写越多,越写越复杂,那么我们往往需要将代码拆分成多个部分~

网络通信的场景,可能会比较复杂
有很多的问题需要通过协议来进行解决,
如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大.非常复杂,就不利于人们去学习和理解,
相比之下,也可以把大的协议,拆分成多个小的协议.让每个小的协议只专注于做一小块事情~~
使每个小的协议,都不会太复杂.(化繁为简)

由于网络通信实在太复杂,拆分就拆出来太多的小的协议.这么多小的协议也就不好管理了.

此时就需要对协议进行分层了.

并且约定了不同层次之间的"调用关系
上层协议,调用下层协议”"下层协议给上层协议提供支持
这样的话,这么多协议就不容易混乱~~

这里我们用一个例子来理解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

协议分层的好处就是;

  1. 协议分层之后,上层和下层彼此之间就进行了封装
    使用上层协议,不必过多关注下层;
    使用下层协议,也不必过多关注上层

    这也就大大降低了使用者的成本~

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 每一层协议都可以根据需要灵活替换

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

协议分层之后,好处多多.因此现在网络世界都是这种分层的结构。

OSI七层模型

这种一般就出现在教科书中~

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

  • OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了7层。

  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

  • 它的最大优点是将服务接口协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

越往下,越进阶硬件~

重点还是关注TCP/IP协议

TCP/IP五(四)层协议

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.物理层

描述的是网络通信的硬件设备.
好比基础设施.公路,铁路,
比如使用的网线,光纤都应该是啥规格~

2.数据链路层

两个相邻节点之间的数据传输情况

3.网络层

进行路径规划

4.传输层

关注起点和终点

5.应用程序

如何使用数据(也是我们最需要关注的一点)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网络设备所在的分层

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层

  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层

  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层

    交换机的作用就是针对路由器端口进行拓展,路由器上的端口可能是有限、不够

  • 对于集线器,它只实现了物理层

实际上,现在的路由器和交换机功能都越来越强大了.(甚至说一些高端的交换机,也有路由功能)
另一方面,路由器交换机可能还会支持一些更复杂的操作.甚至可能会工作在传输层或者应用层

以下为跨网段的主机的文件传输:数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。

  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。

  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。

  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理

描述了网络通信中,基本的数据传输过程

例子

A通过qq将hello发给B

发送方
  1. 应用层:QQ应用程序.QQ就会把用户输入的"hello",给打包成一个应用层的数据报(这个数据报的格式,得是qq的程序员才能知道)

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    就可以将应用层数据报,通过操作系统的API,将数据交给传输层

  2. 传输层

    就要对列才的应用层数据,再进行打包,变成传输层的数据报~~
    这里的打包过程,本质上还是"字符串拼接"
    把刚才的应用层数据,基础上拼接上传输层的报头

    传输层典型的协议TCR/UDP

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    传输层将数据报搞好了之后,这个数据就会进一步交给网络层

  3. 网络层

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    网络层的数据打包好了之后,继续将数据交给“数据链路层”再来进一步打包

  4. 数据链路层

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    把这个数据给物理层

  5. 物理层

    把上述数据,转换成2进制的01序列
    通过光信号/电信号进行传输

    数据发送出去之后,就会经过一系列的交换机和路由器进行转发
    A和B一般来说不是直接网线连接的.中间还要经过很多的交换机/路由器设备进行转发

    从上层协议到下层协议,层层给数据报添加报头
    这个过程称为"封装"
    注意区分,此处的封装不是面向对象的封装了,
    作用有点像~

    当数据到达B这边之后,B就要针对上述数据进行"分用”(针对上述数据报进行层层的解析)

接收方
  1. 物理层

    拿到的光电信号=>转换成二进制数据=>得到以太网数据报
    这个数据要交给数据链路层对应的议处理

  2. 数据链路层

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 网络层

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  4. 传输层

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 应用层

    将上述的数据根据端口号交给QQ这个程序

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


另外,数据报在网络中还会经历一定的转发过程

如果经过路由器:就会封装分用到网络层
路由器解析到网络层,拿到P地址,决定进一步如何传输
下一步传输的时候,又会重新经过网络层,数据链路层和物理层的封装
如果经过交换机:就会封装分用到数据链路层


那么本篇文章就此结束咯,简单介绍一下网络传输的基本流程
接下来关于网络编程的干货满满,敬请期待~

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

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

相关文章

PyTorch入门教学——dir()函数和help()函数的应用

1、简介 已知PyTorch是一个工具包,其中包含许多功能函数。dir()函数和help()函数是学习PyTorch包的重要法宝。 dir():能让我们知道工具包以及工具包中的分隔区有什么东西。help():能让我们知道每个工具是如何使用的,即工具的使用…

Redis数据序列化器

Redis序列化 Redis 数据序列化器用于将数据在存储到 Redis 中时进行序列化(编码)和反序列化(解码)。 RedisTemplate的两种序列化实践方案: 方案一: 自定义RedisTemplate 修改RedisTemplate的序列化器为…

从一到无穷大 #18 时序数据库运营SLI思考

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 公有云时序数据库SLA 运营商产品每服务周期服务可用率不低于99.9%衡量服务不可用数据指标从采…

SpringAOP是什么?为什么要有SpringAOP?

SpringAOP是什么?为什么要有SpringAOP? 原文:SpringAOP是什么?为什么要有SpringAOP? 一、有SpringAOP之前 简单的开发场景,只需要写简单的业务逻辑,比如CRUD 但是在执行具体的逻辑之前&…

【论文精读】NMP: End-to-end Interpretable Neural Motion Planner

toc 1 背景信息 团队:Uber,多伦大大学 年份:2019 论文链接:https://arxiv.org/abs/2101.06679 2 Motivation 深度学习方案受限于累积误差suffers from the compounding error,而且可解释性差interpretability is d…

如何设计一个ToC的弹窗

本文主要分享了如何设计一个具有高可扩展性的弹窗功能。 本设计参考了优惠券功能的设计思路,有兴趣的朋友可以看看优惠券的分享:如何设计一个可扩展的优惠券功能_java优惠券系统设计-CSDN博客 一、需求介绍 假如你的项目需要实现以下弹窗,…

排序算法-合并排序法(MergeSort)

排序算法-合并排序法(MergeSort) 1、说明 合并排序法(MergeSort)是针对已排序好的两个或两个以上的数列(或数据文件),通过合并的方式将其组合成一个大的且已排好序的数列(或数据文…

debian9换源存在的问题

今天租借了云服务器搭建了debian9,给apt-get换源过程中出现了很多问题,主要有两个问题: 问题1: sudo apt-get update 0% [Working]问题2: W: The repository http://mirrors.aliyun.com/debian stretch Release doe…

软考网工选择题易错总结(2020下~2022下)

目录 2020下半年 2021上半年 2021年下半年 2022上半年 2022下半年 2020下半年 15、在卫星通信中,通常采用的差错控制机制为(15)。 A.停等 ARQ B.后退 N 帧 ARQ C.选择重发 ARQ D.最大限额 ARQ 答案&#xff1…

Golang基础学习笔记

Golang基础学习笔记 1、下载安装 1.1、下载 Golang下载地址:https://golang.google.cn/dl/ 1.2、安装 1.3、环境变量 # GOPATH D:\GolandProjects# GOPROXY https://mirrors.aliyun.com/goproxy# 启用Go模块支持 go env -w GO111MODULEon1.5、验证安装/配置 1.…

Premiere pro

操作 1.音乐淡入淡出 窗口 效果 音频过度 交叉淡化 指数淡化 拖动到首尾音频上2.手机视频序列设置 3.视频转场淡入淡出 选中视频 在视频连接处 交叉溶解

家居行业如何打破获客困局?2023重庆建博会现场,智哪儿AI营销第一课给出了答案

10月12日-14日,2023中国(重庆)建筑及装饰材料博览会(简称:2023中国重庆建博会)正在重庆国际博览中心如火如荼地进行。「智哪儿」携手2023中国重庆建博会主办方共同主办的《2023家居行业AI营销第一课&#x…

【quartus13.1/Verilog】swjtu西南交大:计组课程设计

实验目的: 通过学习简单的指令系统及其各指令的操作流程,用 Verilog HDL 语言实 现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简 化的计算机核心部件组成的系统。 二. 实验内容 1. 底层用 Verilog…

推荐《金田一少年事件簿》

天树征丸原作,佐藤文也作画的漫画 金田一少年事件簿 播报编辑讨论7上传视频 《金田一少年事件簿》是一部日本推理漫画。早期原作为金成阳三郎(后担任剧本),原作为天树征丸(前原案),由漫画家佐…

【Python小项目之Tkinter应用】【实用工具】实现手写签名器,可选线条粗细,支持清空、撤销、恢复功能,可将写好的签名保存成图片

文章目录 前言一、实现思路二、关键代码三、完整代码总结同系列项目文章:前言 老规矩,先看效果: 在手写签名窗口中,用户可以选择线条粗细来签名,点击清空按钮可以清空画布,点击撤销按钮可以撤销一笔,点击恢复按钮可以撤销上一步进行的清空或撤销操作,点击保存按钮可以…

java案例RSA分段加密解密,签名验签,公钥加密私钥解密,私钥加密公钥解密,解密乱码怎么解决

一. 原理 非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只…

Docker基础操作命令演示

Docker中的常见命令,可以参考官方文档:https://docs.docker.com/engine/reference/commandline/cli/ 1、常见命令介绍 其中,比较常见的命令有: 命令说明文档地址docker pull拉取镜像docker pulldocker push推送镜像到DockerReg…

Googleplay近期大量开发者二次验证问题与解决思路

近期谷歌play更新风控,开发者需要进行二次验证。9月份后大部分的开发者账号不论新老大部分都触发了二次验证风控,笔者目前整理了两个方向的解决方案。 老账号目前解决方案可以通过上传护照、身份证明、驾驶证或者租赁合同、水电费账单、信用卡账单、电话…

了解华为交换机路由器的基本命令

什么是CLI:使用户与设备交互的界面,用户输入对应的命令,设备会回复我们输入的内容,回车车后设备会执行对应命令,达到管理、配置、查看的目的。 CLI界面分为三种操作视图: 用户试图:设备登陆后…

基于阿基米德优化优化的BP神经网络(分类应用) - 附代码

基于阿基米德优化优化的BP神经网络(分类应用) - 附代码 文章目录 基于阿基米德优化优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.阿基米德优化优化BP神经网络3.1 BP神经网络参数设置3.2 阿基米德优化算…