网络初识-

网络的相关概念

一、局域网和广域网

将各种计算机、外部设备等相互连接起来,实现在这个范围内数据通信和资源共享的计算机网络。它的覆盖范围通常在几百米到几公里之内。例如,一个小型企业的办公室,通过交换机将多台电脑连接在一起,这些电脑可以共享打印机、文件等资源,这个网络就是一个局域网。就像是一个网吧,就是一个局域网

是一种覆盖范围很广的网络,它可以跨越城市、国家甚至全球。广域网是通过电信运营商的网络设施,如电话线、光纤电缆、卫星通信等来连接不同地理位置的网络或计算机系统。像互联网就是最大的广域网,它连接了全球各个国家和地区数以亿计的计算机和网络设备,使得人们可以在世界各地访问网站、发送电子邮件等。

二、路由器和交换机

更多组建局域网的方式是通过路由器和交换机

交换机是一种常见的 网络设备 ,它主要用于局域网内的设备通信
路由器是一种用于连接多个网络的设备,它在网络之间起到了桥梁的作用.

路由器上的接口分为LAN口和WAN口,WAN口用来接运行商的网线.LAN口用来接入设备.路由器的LAN口也可以接入交换机,交换机还可以接交换机,基于上述结构就构成了庞大的网络结构.
在这里插入图片描述
路由器和交换机的区别:
每一台路由器,他实现了网络层到物理层,也就是TCP/IP的下三层,路由器工作在网络层
每一台交换机,实现了从数据链路层到物理层,也就是TCPP/IP的下两层,交换机工作在数据链路层

IP地址

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

就像是我们发快递一样,必须要知道对方的收货地址,快递员才能将包裹送达

计算机上则是通过数字来描述一个设备的地址
为了方便表示,往往IP地址采用"点分十进制"的方式,用三个 . 把这4个字节分为4个部分,每部分一个字节,取值为0-255.
在这里插入图片描述

端口号

具体描述了一个主机上的哪个应用程序.
有了IP可以确定主机,但是主机上有很多程序都在使用网络,主机收到网络数据后就要分辨是交给哪个程序使用数据.
每个程序在进行网络通信中都有一个端口号(可以自己定义,也可以系统分配).同一个主机上端口号不能重复.

网络通信中的IP和端口号

网络通信中的IP地址和端口号其实是有两个的

其实和快递一样,记录了收发地址,以及收发人的联系方式

源IP:相当于发件人地址
源端口:发件人手机号
目的IP:收件人地址
目的端口:收件人手机号

描述了"从哪里来,到哪里去"的问题.

协议[重要]

协议就是一种通信过程中的约定.
通信双方需要制定好数据的格式,才能确保双方进行正常沟通.

通信双方的计算机可能来源于不同的厂商,为了确保两个计算机中的网络通信,就需要计算机遵守相同的网络协议.
在这里插入图片描述
网络通信过程中,其实有很多的细节需要注意,如果只是靠一个协议来完成的话,就需要面面俱到,这样就导致了协议非常复杂不利于维护.

于是我们把协议拆分成了很多层,把功能定位相似的放在同义词,上层协议调用下层功能,下层协议为上层服务.

只有相邻层次之间可以进行沟通,不能越级沟通.
就像是在公司中,我们完成任务只需要向自己的上一级交代,不需要直接向老板汇报.
在这里插入图片描述

协议分层的其他好处

1.上层协议可以直接调用下层协议,而不用关心具体的实现细节.

就像打电话,我们不用关心电话是怎样实现双方沟通的
在这里插入图片描述
2.某一层协议进行替换时,对其他应用也不会有什么影响.
在这里插入图片描述

OSI七层网络协议

我们并不常用OSI七层网络协议,这里只是给大家简单介绍,有兴趣的可以在挖掘~~
在这里插入图片描述
在这里插入图片描述
接下里我们重点介绍下TCP/IP五层网络协议.

TCP/IP五层网络协议

网络编程主要就是针对应用层,因为剩下的都是操作系统内核封装好的,我们没办法干预.

应用层:程序拿到数据之后,要解决什么问题,用来做什么

传输层:传输层执行进程到进程的端到端通信,关注的是数据的起点和终点(类似关注收件人发件人以及他们的信息).

网络层:网络层负责将数据从一个节点传输到另一个节点,主要进行寻址.将数据从源机器传送至目的机器的数据路径

数据链路层:相邻节点的之间的传输.通过检测、纠正数据包错误来建立可靠的邻接网络节点之间的数据传输

物理层:网络通信的硬件设备.

封装和分用(网络传输数据最核心的流程)

假设A给B在QQ上发了一个hello的消息.

封装

1.应用层
QQ从输入框获取到这个消息,就要把这个字符串封装成一个应用层的数据包.
QQ这样的程序就内置了一个应用层协议,用来构造应用层数据包.(就是利用字符串拼接的方式)

假定约定的格式是:

发送方QQ号;接收方QQ号;发送时间;消息正文

构造成数据包:
在这里插入图片描述
构造完成之后应用层就会调用系统的api,将数据包传给传输层

2.传输层
传输层就会把上述数据作为一个整体,构造成一个传输层数据包
传输层涉及到最主要的两个协议:TCP,UDP
这里我们假定使用UDP进行通信,就会构成一个UDP数据包
在这里插入图片描述
形如上述,添加报头的过程就叫封装,其实就是字符串的拼接,但是报头有一定的数据结构

对于UDP报头来说,承载的最重要的信息就是记录了源端口和目的端口

UDP报头虽然不能起到保护数据的作用但是能用来承载关键的用来转发的信息

拼接好传输层数据包后,就可以将他传给下层(网络层)继续封装
在这里插入图片描述
3.网络层(涉及到最核心的IP协议)

网络层IP协议,将传输层的UDP数据包作为一个整体再次进行封装,再拼上IP协议的报头,构成了IP数据包
在这里插入图片描述
IP协议,就是把整个UDP数据包视为一个整体.

IP报头也会保存一些关键的信息,这里保存的就是源IP和目的IP

网络层封装完成之后会继续调用api,将IP数据包传输到 数据链路层.

4.数据链路层 涉及到的核心协议:以太网

以太网数据帧.就是把IP数据包作为一个整体,在这个基础上加上帧头和帧尾
在这里插入图片描述
封装好后继续往下走交给物理层.

5.物理层
把上面的以太网数据帧,二进制结构(一串0101),转换成光信号/电信号/电磁波.发送出去.

经过上述过程,就算是把消息发送出去

分用
假设数据包已经到达了B的网卡,B的处理过程就叫分用

1.物理层
B的物理层接收到了信号并且将他转换成数字信号,得到一个以太网数据帧,进一步将以太网数据帧传输给数据链路层.

2.数据链路层
按照以太网数据帧的格式来解析,取出其中的载荷,交给上层协议
在这里插入图片描述
3.网络层
按照IP协议的格式来解析,取出其中的载荷,交给上层协议
在这里插入图片描述
4.传输层
按照UDP协议的格式来解析,取出其中的载荷,交给上层协议

在这里插入图片描述
5.应用层
根据 应用层协议来解析数据

路由器和交换机对上述封装分用同样适用

在这里插入图片描述

对于交换机来说,只需要封装到数据链路层即可

在这里插入图片描述
而对于路由器来说则是要封装到,网络层.
在这里插入图片描述

下一篇我们分享下网络编程,这里介绍一些前置知识.

网络编程中的一些概念

客户端/服务器

在网络中,主动发起请求的一方就是客户端,被动接受的一方就是服务器.

客户端发送给服务器的数据,叫做请求(request)
服务器返回给客户端的数据,叫做响应(response)

客户端-服务器之间的交互:

1.一问一答
在这里插入图片描述

2.一问多答

在这里插入图片描述

3.多问一答
在这里插入图片描述
4.多问多答
在这里插入图片描述

TCP/UDP

进行网络通信,需要调用系统的api,本质上是传输层提供的

传输层涉及到的协议主要是TCP和UDP

TCP和UDP区别:
在这里插入图片描述

连接:网络上的连接是抽象的,本质上就是通信双方保存了对方的相关信息.
就像客户端,有一些数据结构,记录了谁是他的服务器.
服务器,有一些数据结构,记录了谁是他的客户端.

可靠传输:这里的可靠传输就是发的数据到没到,发送方能够清楚的感知到

面向字节流:网络中传输的数据的基本单位是字节

面向数据报:每次传输的基本单位是数据报

全双工:一个信道可以双向通信,就像公路一样是双向车道
半双工:只能单向通信,就像过独木桥

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

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

相关文章

如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件

DHTMLX Scheduler 是一个全面的调度解决方案,涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能,并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下,很可能可以使用自定义解决方案来实现此类功能。…

haproxy+nginx负载均衡实验

准备三台虚拟机: HAProxy 服务器192.168.65.131Web 服务器 1192.168.65.132Web 服务器 2192.168.65.133 在 HAProxy 服务器(192.168.65.131)上操作: 安装 HAProxy: sudo yum install -y haproxy编辑 HAProxy 配置…

数据结构与算法之排序算法-插入排序

排序算法是数据结构与算法中最基本的算法之一,其作用就是将一些可以比较大小的数据进行有规律的排序,而想要实现这种排序就拥有很多种方法~ 那么我将通过几篇文章,将排序算法中各种算法细化的,详尽的为大家呈现出来: &…

cv2小练习

基础概念 帧率是指在单位时间内,显示的图像帧数的数量。它是衡量视频或动画流畅度的一个重要指标。帧率的单位通常是每秒帧数(Frames Per Second,简称FPS)。在数字视频和计算机图形领域,帧率是决定视频播放质量和流畅度…

在Mac arm架构终端中运行 corepack enable yarn 命令,安装yarn

文章目录 1. 什么是 Corepack?2. 运行 corepack enable yarn 的作用3. 如何运行 corepack enable yarn4. 可能遇到的问题及解决方法问题 1:corepack 命令未找到问题 2:Yarn 未正确安装问题 3:权限问题 5. 验证 Yarn 是否启用成功6…

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录,点击立即体验 点击千帆大模型平台 向下滑动,进入到模型…

【Vue中BUG解决】npm error path git

报错内容如下: 从错误信息可知,这是一个 ENOENT(No Entry,即找不到文件或目录)错误,并且与 git 相关。具体来说,npm 在尝试调用 git 时,无法找到 git 可执行文件,下面为…

(一)Axure制作移动端登录页面

你知道如何利用Axure制作移动端登录页面吗?Axure除了可以制作Web端页面,移动端也是可以的哦,下面我们就一起来看一下Axure制作移动端登录页面的过程吧。 第一步:从元件中拖入一个矩形框,并设置其尺寸为:37…

自动化遇到的问题记录(遇到问题就更)

总结回归下自己这边遇到的一些问题 “EOF错误”,获取不到csv里面的内容 跑多csv文件里的场景,部分场景的请求值为 1、检查csv文件里不能直接是[]开头的参数,把[]改到ms平台的请求参数里 2、有时可能是某个参数值缺了双引号的其中一边 met…

LabVIEW软件需求开发文档参考

在项目开发的工作历程中,精准把握项目需求无疑是成功打造整个项目的首要关键步骤,同时也是一个至关重要且不可忽视的核心环节。明确且详尽的项目需求就如同建筑的基石,为后续的设计、开发、测试等一系列工作提供了坚实的支撑和清晰的指引。倘…

【JVM详解五】JVM性能调优

示例: 配置JVM参数运行 #前台运行 java -XX:MetaspaceSize-128m -XX:MaxMetaspaceSize-128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio8 - XX:UseConcMarkSweepGC -jar /jar包路径 #后台运行 nohup java -XX:MetaspaceSize-128m -XX:MaxMetaspaceS…

android studio下载安装汉化-Flutter安装

1、下载android studio官方地址:(这个网址可能直接打不开,需要VPN) https://developer.android.com/studio?hlzh-cn mac版本分为X86和arm版本,电脑显示芯片是Inter的就是x86的,显示m1和m2的就是arm的 …

(2025)深度分析DeepSeek-R1开源的6种蒸馏模型之间的逻辑处理和编写代码能力区别以及配置要求,并与ChatGPT进行对比(附本地部署教程)

(2025)通过Ollama光速部署本地DeepSeek-R1模型(支持Windows10/11)_deepseek猫娘咒语-CSDN博客文章浏览阅读1k次,点赞19次,收藏9次。通过Ollama光速部署本地DeepSeek-R1(支持Windows10/11)_deepseek猫娘咒语https://blog.csdn.net/m0_70478643/article/de…

【深度学习入门实战】基于Keras的手写数字识别实战(附完整可视化分析)

​ 本人主页:机器学习司猫白 ok,话不多说,我们进入正题吧 项目概述 本案例使用经典的MNIST手写数字数据集,通过Keras构建全连接神经网络,实现0-9数字的分类识别。文章将包含: 关键概念图解完整实现代码训练过程可视化模型效果深度分析环境准备 import numpy as np impo…

kafka生产端之架构及工作原理

文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前,有可能需要经历拦截器(Interceptor)、序列化器(Serializer)和分区器(Partitioner)等一系列的作用,那么在此之后又会…

docker compose部署flink集群

本次部署2个jobmanager和3个taskmanager 一、部署zookeeper集群 flink使用zookeeper用作高可用 部署集群参考:docker compose部署zookeeper集群-CSDN博客 二、创建目录及配置文件 创建timezone文件,内容填写Asia/Shanghai 手动创建目录&#xff1a…

3dtiles——Cesium ion for Autodesk Revit Add-In插件

一、说明: Cesium已经支持3dtiles的模型格式转换; 可以从Cesium官方Aesset中上传gltf等格式文件转换为3dtiles; 也可以下载插件(例如revit-cesium插件)转换并自动上传到Cesium官方Aseet中。 Revit转3dtiles插件使用…

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件,可以采取以下几种方法: 一、使用浏览器内置功能 打开HTML文件:在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框:按下CtrlP(Windows)或CommandP(M…

Linux(socket网络编程)TCP连接

Linux(socket网络编程)TCP连接 基础文件目录函数系统进程控制函数fork()exec系列函数void abort(void)void assert(int expression)void exit(int status)void _exit(int status)int atexit(void (*func)(void))int on_exit(void (*function)(int,void*)…

GeekPad智慧屏编程控制(二)

前面已经实现了智慧屏开关的控制了,接下来再继续实现消息的订阅。 先如下图所示增加几个控件,一个按钮,2个文本框,其中右下角的文本框显示的内容会比较多,需要打开多行和右侧滚动条。 然后添加订阅消息的事件&#xf…