网络原理 - 初识

文章目录

  • 局域网(LAN)
  • 广域网(WAN)
  • 网络设备
  • IP地址
    • 格式
  • 端口号
    • 格式
  • 认识网络协议
    • 协议分层
  • OSI七层模型(只是理论,没有实际运用)
  • TCP/IP五层(或四层)模型
    • 网络设备所在分层
  • 封装和分用

计算机之间通过网络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网和广域网。
所谓 “局域网” 和 “广域网” 只是⼀个相对的概念。

局域网(LAN)

局域网,即 Local Area Network,简称LAN。
局域网是本地,局部组建的⼀种私有网络,又称为内网。局域网内的主机之间能方便的进行网络通信;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:
(1)基于网线直连
(2)基于集线器组建
(3)基于交换机组建
(4)基于交换机和路由器组建

广域网(WAN)

广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
如果有很多分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即可称为“广域网”。
如果属于全球化的公共型广域网,则称为互联网(又称公网,外网)。
有时在不严格的环境下说的广域网,其实是指互联网。

网络设备

主机:上网的设备(电脑,手机…)
组建网络的重要设备:路由器,交换机

  • 路由器有WAN口(连接运营商的网线)和LAN口(连接要上网的设备)
  • 交换机的接口没有WAN口和LAN口一说

家里的路由器和其连接的上网设备形成一个局域网
而家里的路由器可以连接到运营商的路由器,运营商的路由器又连接到更大的运营商路由器,这样就可以形成一个大的网络

“猫”,专业术语叫做"调制解调器"
以前没有宽带的时候,上网用电话线,通过"猫"把电话线中的模拟信号转成数字信号
后面宽带入户就不用电话线上网了,光猫就是路由器,只不过WAN口是插光纤的,LAN口还是正常插网线的
光纤主要材质是玻璃,通过激光在玻璃里传输信号;网线里面是铜丝,是通过电流来传输信号

虽然路由器有很多网口,但路由器上的口可能不够用,此时就可以使用交换机对网口进行拓展(类似于电脑的扩展坞)
交换机的特点是口特别多,连接到交换机上的设备彼此之间不会相互影响和干扰

IP地址

如何判断哪台主机发出数据,哪台主机接收数据呢?这就需要使用IP地址来标识。

IP地址用于标识网络主机、其他网络设备(如路由器)的网络地址。通过地址找到这个设备,进而进行通信。
就像我们寄快递⼀样,需要知道对方的收货地址,才能将包裹送达。

格式

IP地址是⼀个32位的二进制数(IPv4),通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110

通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数),如:100.4.5.6

在控制台输入ipconfig就可以看到本地IPv4 地址和其他一些信息
在这里插入图片描述

端口号

在网络通信中,IP地址用于标识主机的网络地址,端口号可以标识一个主机中发送数据、接收数据的进程。简单说:端口号用于标识主机中的进程(应用程序)。
类似寄快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。

格式

端口号是0~65535(2个字节)范围的数字,在网络通信中,进程可以通过绑定⼀个和其他进程不重复的端口号,来发送及接收网络数据。

端口号不会不够用,端口号是区分同一个主机上的不同进程,而不是区分不同主机的不同进程

可能会谈到有的程序是有固定的端口号的,这种说法源自于一个概念,“知名端口号”。很久以前,为了避免当时的一些程序的端口号之间发生冲突,就给一些知名的程序分配了不同的端口号,一共分了1024个。如今,知名端口更多是"建议"而不是约束,也可以使用别的不重复的端口号。不过最好避开知名端口号,有些系统上要使用知名端口号需要管理员权限

认识网络协议

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

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

网络通信传输的数据类型可能有多种:图片,视频,文本等。同⼀个类型的数据,格式可能也不同,这时就需要使用协议来规定双方的数据格式。

另外:
• 计算机生产厂商有很多;
• 操作系统也有很多;
• 计算机网络硬件设备,还是有很多
如何让这些不同厂商生产的计算机能够相互顺畅的通信?
就需要约定⼀个共同的规则,大家都来遵守。

协议与标准的区别:
协议可以是私下自定义的,而标准需要有一个具有公信力的官方的组织,公开发布并得到大家的支持和拥护。

协议分层

网络通信是一件非常复杂的事情,如果用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂。所以网络协议往往分成几个层次进行定义。
此处谈到的分层,每一层里都有很多协议(对协议进行了分类,就得到了所谓的"层")

把很多协议按照功能分在不同的层级,每个层级都有对应的目标/要解决的问题。上层协议调用下层协议的功能,下层协议给上层协议提高服务。分层而不乱的前提是: 不能跨级交流

网络协议分层的作用:

  1. 封装的效果

分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
⼀方为接口的实现类(提供方,提供服务),⼀方为接口的使用类(使用方, 使用服务)
• 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可,降低学习成本
• 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可

  1. 任意层的协议,都是可以灵活替换的(解耦合)

OSI七层模型(只是理论,没有实际运用)

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

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

OSI 七层模型既复杂又不实用,所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也就是 TCP/IP 五层(或四层)模型来实现。

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

在这里插入图片描述

这个就是现在实际采用的网络分层模型。我们目前接触到的电脑上网大部分都是TCP/IP模型。4G/5G通信就是另外一套专门的模型协议(手机流量上网)

TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议的5层层级结构:

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

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

程序猿打交道最多的就是应用层,写的网络程序都会涉及到应用层。其他的四层的协议都是操作系统内核,硬件和驱动已经实现好了,无需干预。不过我们要重点关注传输层,因为应用层是需要调用传输层提供的接口(API)来进行一些功能的实现的

网络设备所在分层

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

注意我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)。现在的路由器和交换机功能越来越多,界限也越来越模糊了。有些交换机的功能,路由器也有;有些路由器的功能,交换机也有。有些路由器和交换机,能工作在应用层。比如通过QQ发消息,路由器/交换机就能感知到发的消息内容是啥

封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发送时,每层协议都要加上⼀个数据首部(header),这个过程称为封装
  • 首部信息中包含了⼀些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理,这就是分用

QQ里就有一个应用层网络协议,约定了数据按照什么样的格式来组织。在QQ发消息,QQ应用程序就会把要传递的内容组织成"应用层数据包"
网络传输的数据,本质上是二进制字符串/字符串,所以要把结构化数据(包含很多属性,字段)先转成二进制字符串/字符串(序列化)

现在有应用层数据包了, QQ程序接下来就要调用传输层(操作系统内核)的API(socket API),把数据包交给传输层,传输层拿到应用层数据包之后就会对这个数据包进一步地封装,构造成传输层数据包。在传输层典型的协议有两个:TCP和UDP

此处假设使用UDP来作为传输层协议

在这里插入图片描述

传输层构造好数据包之后,就会继续把数据包交给网络层(传输层会调用网络层提供的API,这个调用过程是系统内核自行负责了)

网络层典型的协议是IP协议
IP协议不关心载荷里面是啥,只关心IP报头里的数据
在这里插入图片描述
之后调用数据链路层的API,把IP数据包交给数据链路层的协议,同样也是系统内核负责完成的,程序猿感知不到。这里的API往往是网卡的驱动程序提供的

硬件厂商发布硬件的时候提供配套的软件(驱动程序),通过驱动程序可以让操作系统实现对硬件的精细控制

数据链路层典型协议是"以太网"协议
电脑通过有线网传输数据走的就是"以太网"协议,我们电脑上插的网线也叫做"以太网线"
WiFi则是另外一套数据链路层的协议
因特网则指当前世界上最大的、开放的、由众多网络相互连接而成的特定计算机网络

以太网也有自己的数据包格式,会对上述IP数据包进一步封装
在这里插入图片描述
上述数据已经进入到网卡驱动中了,接下来就要真正发送出去了

到达物理层,上述的以太网帧本质上还是二进制数据,硬件设备要把上述的二进制数据转换为光信号/电信号才真正进行发射

通过交换机/路由器一系列转发之后最终到达收件人的主机
之后就是上述过程的"逆过程"

物理层收到一系列光电信号,把这些信号转成二进制数据交给数据链路层

数据链路层按照以太网协议对数据进行解析(解析报头中的关键信息,为后续的传输/转发打下基础),解析出来的载荷数据是要交给上层(网络层)

网络层的IP协议拿到了IP数据包,按照协议格式进一步解析,解析报头中的关键信息,取出载荷,把载荷再进一步的交给上层(传输层)

传输层拿着UDP的数据包,按照UDP格式进一步解析,解析出关键的信息(要交给哪个端口号对应的进程),以及解析出载荷数据,再把载荷交给对应的应用程序

在应用层,QQ程序拿到了应用数据包
QQ按照自己的协议格式进行解析,拿到数据包里的二进制字符串/字符串转成结构化数据(反序列化),显示到界面上

上述层层包装数据,不停加数据报头的过程,称为"封装"
"分用"就是上述逐层解析数据包的过程

中间的路由器,交换机也要封装分用,也是上述过程,只不过交换机封装分用到数据链路层,即可知道下一步如何转发(工作在数据链路层),路由器封装分用到网络层即可知道下一步如何转发(工作在网络层)

每个协议报头中,都包含对应的信息,告诉上一层要交给哪个协议来处理
要确保分用使用的协议和封装使用的协议对得上

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

18、Gemini-Pentest-v2

难度 中 目标 root权限 一个flag 靶机启动环境为VMware kali 192.168.152.56 靶机 192.168.152.63 信息收集 web测试 访问80端口 上面介绍了一下这个系统是一个内部系统,让员工查看他们的个人资料还可以导出为PDF 页面还有一个链接是UserList可以访问但是页面什…

前端【CSDN创作优化3】CSDN自定义模块:解决保存CSDN自定义模块时显示fail

【CSDN创作优化3】CSDN自定义模块:解决保存CSDN自定义模块时显示fail 写在最前面遇到的问题:保存CSDN自定义模块时显示fail1.符号问题:删除所有符号2.超出字符长度限制:压缩保存3.li模块不见了:小窗口正常显示元素 &am…

补题篇--codeforces

传送门:Problem - G - Codeforces 题意: 思路: 注意: n 的范围很小,大概率考察状态压缩 因此这个题可以考虑用 状压dp f[i][j] 表示状态为 i 的选法,以第 j 首歌为结尾的播放列表中的歌曲总数 f[ i | …

codeforces Round 970 (Div. 3)(A-F)

文章目录 [Codeforces Round 970 (Div. 3)](https://codeforces.com/contest/2008)A-[Sakurakos Exam](https://codeforces.com/contest/2008/problem/A)B-[Square or Not](https://codeforces.com/contest/2008/problem/B)C-[Longest Good Array](https://codeforces.com/cont…

Linux_kernel汇编04

一、温故知新 1、Uboot的操作 1)Uboot的简介 需要确定一点,系统上电后,Uboot是第一个执行的系统软件。 类似PC机上的BIOS(Basic Input Output System) Uboot的核心功能: 【1】负责初始化硬件 【2】负责加载…

C++入门基础知识47——【关于C++函数】之函数参数及参数默认值

成长路上不孤单😊【14后,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊!!!!&#xff…

MQ专题:消息积压相关问题和解决思路

一、如何发现消息出现了堆积 二、常见的原因及解决方案 三、消息出现了大量堆积,如何解决 四、建议

Android Studio gradle下载太慢了!怎么办?(已解决)

Android Studio!你到底干了什么?! 不能高速下载gradle,我等如何进行app编程?! 很简单,我修改gradle地址不就是了。 找到gradle-wrapper.properties文件 修改其中distributionUrl的地址。 将 ht…

Axure健康助理小程序原型图70+页,医疗类高保真高交互模板

作品概况 页面数量:共 70 页 源文件格式:限 Axure RP 9/10,非app软件无源码 适用领域:医疗健康、健康助理 作品特色 本作品为健康助理小程序的Axure原型设计图,属于医疗健康项目,设计规范内容清晰&#…

SVN介绍和使用

一、SVN(Subversion) SVN 是一种版本控制系统,可以用于管理和控制文件的变更。以下是SVN的基本使用步骤: 安装SVN:首先,您需要在计算机上安装SVN客户端。您可以从Subversion官方网站下载安装程序&#xff…

SQL 五十周年:何去何从?

原文地址 https://www.infoworld.com/article/2337457/sql-at-50-whats-next-for-the-structured-query-language.html SQL 即使被生成式 AI 隐藏在幕后,也将继续在数据交互和使用方面发挥关键作用。 CREDIT: PAVEL L PHOTO AND VIDEO / SHUTTERSTOCK 1974 年 5 月…

苹果手机升级iOS 18时一直显示“正在检测更新”怎么办?

随着科技的不断发展,苹果手机的iOS系统也在不断迭代更新,为用户带来更加优质的使用体验。然而,在升级iOS 18的过程中,一些用户可能会遇到手机一直显示“正在检测更新”的问题,导致无法顺利完成系统升级。 这种情况不仅…

Vitis AI 综合实践(DPU example: dpu_resnet50.ipynb)

目录 1. 简介 2. 代码解析 2.1 导入库 2.2 图像预处理 2.3 读取标签 2.4 读取图像 2.5 获取IO形状 2.6 申请内存 2.7 运行推理 2.8 后处理 3. 相关类的介绍 3.1 DpuOverlay 类 3.2 Overlay 类 3.3 Bitsteam 类 3.4 Device 类 3.5 DeviceMeta 元类 3.6 type 类…

mysql优化案例分享

一、mysql介绍 1、InnoDB引擎 mysql5.5.8版本开始后。InnoDB引擎就是默认存储引擎,本文介绍知识点也都是围绕该引擎展开。 知识点1聚集存储 InnoDB引擎采用聚集存储,即每张表的存储都是主键的顺序进行存放,也就是每行存储的物理顺序和主键…

TCP/IP 报文传输过程

目录 1. 概念理解2. 传输过程 原文回到 TCP/IP 强烈推荐下面博客,详细阐述了TCP/IP协议概念和传输过程 TCP协议详解 (史上最全) 1. 概念理解 2. 传输过程 以一个具体例子为例,如下图所示,由A 给 F 发送一个数据包整个过程是怎样的

米家“智能中枢网关”和“智能多模网关”有什么区别?

文章目录 中枢网关(Central Gateway)多模网关(Multi-Mode Gateway)对比总结 中枢网关(Central Gateway) 定义: 中枢网关是整个网络系统中的核心设备,负责连接和管理不同子网或设备之…

前端三件套配合MarsCode实现钉钉官网动画 # 豆包MarsCode

文章目录 如何固定动画区域创建项目MarsCode 设置样式MarsCode 优点1MarsCode 缺点MarsCode 优点2 js实现动画实现获取动画曲线的函数为什么实现这个函数?根据当前滚动位置,计算每一个元素不同的数值更新 dom 的 style更新 animationMapgetDomAnimation …

23 - 模块独立编译的支持

---- 整理自狄泰软件唐佐林老师课程 文章目录 1. 模块独立编译的支持1.1 问题1.2 背景1.3 解决方案1.4 关键技术点 2. makefile 中的代码复用3. 实验 1. 模块独立编译的支持 1.1 问题 一般而言,不同工程师负责不同模块的开发,编译环境中如何支持模块的…

MQ专题:顺序消息落地方案

一、什么是顺序消息 投递消息的顺序和消费消息的顺序一致。 比如生产者按顺序投递了1/2/3/4/5 这 5 条消息,那么消费的时候也必须按照1到5的顺序消费这些消息。 二、顺序消息如何实现?(2种方案) 方案1:生产者串行发…

【esp32】VScode添加库

以添加PubSubClient库为例 如图操作,在搜索框输入PubSubClient,点击下载 给你的某一个工程添加该库 编译成功