本节重点:

1.了解网络发展背景,对局域网/广域网的概念有基本认识

2.了解网络协议的意义,重点理解TCP/IP五层结构模型

3.学习网络传输的基本流程,理解封装和解包分用

一、计算机网络发展背景:

人与人之间是需要协同工作的,就注定了计算机需要协同工作,网络的产生是必然的

  • 早期计算机是昂贵的大型设备(如 IBM 大型机),体积庞大、功能单一,且为 “单机运行” 模式,一台计算机仅供少数人使用,资源(如计算能力、存储)无法共享。
  • 军事、科研领域首先产生了 “多设备协同” 需求:例如,美国军方需要让不同地点的计算机共享数据,以提高指挥效率;科研机构希望连接多台计算机,协同完成复杂计算(如导弹轨迹计算、气象模拟)。

早期的计算机是独立模式(计算机之间相互独立)

网络互联模式:多台计算机连接在一起,完成数据共享,协同工作 

二、局域网与广域网:

局域网(LAN)和广域网(WAN)是计算机网络按地理覆盖范围划分的两种核心类型

局域网:在有限地理范围内(如家庭、办公室、校园、工厂)将多台设备(计算机、手机、打印机等)互联形成的网络。

交换机;主要用于在同一网络(如局域网 LAN)内实现多个设备的高效通信

广域网:覆盖广阔地理范围(如城市、国家、全球)的网络,用于连接多个局域网或其他广域网,实现远距离数据传输。

总结:局域网就是局部的,广域网就是远距离,所谓局部和广部是相对的概念,取决于观察的视角、网络的规模和应用场景。

三、协议:

协议是指网络中不同设备之间进行通信时必须共同遵守的一套规则、标准或约定,它规定了通信的格式、时机、顺序以及错误处理方式等,确保数据能够准确、有序、高效地在设备间传输。

简单理解:就不如两个人交流,只有是用同一套语言(中文/英文),并且遵循基本的语法规则才能相互交流沟通,网络也是如此,只有达成约定,才能互相传输解析数据 

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

显然不是,就好比一个是中文,一个是英文,我都各自遵循自己的协议,但没有人制定国际交流语言就不行,两个还是不能沟通,就好比计算机生产厂商很多,os很多,硬件设备很多,如何让不同的设备不同的厂商之间的计算机能够相互顺畅的通信,就需要有人约定一个标准,让大家都来遵循,这个标准就叫网络协议。 

3.1  协议分层:

 

例子中:我们简单的进行通信,在我们语言层看来是面对面的,但实际是我们语言层的数据经过通信设备层,在经过电话机协议,转到对方的通信设备层在到语言层。

那我们为什么要进行协议分层?本质就是为了解耦,如果我们把所有的协议都揉在一起,都放在一层,那这个协议会很冗杂,如果我们改变语言层的东西,就意味着改变整个协议,不利于实现和维护、发展

3.2  理解分层:

a.软件设计方面的优势————实现低耦合

b.分层的依据是让功能比较集中,耦合度比较高的模块为一层 

c.每一层都要解决特定的问题(这就是我们学习网络的框架)

3.3  用例子理解每一层次

假设我们有两台主机,主机a和主机b,我们该如何传输数据?

1.如何把数据交付给和自己相连的下一台主机(注意:不是主机a到b,而是主机a到b的过程中经过的其他主机)

2.当我们能传输后,我们要解决往哪传输,也就是路径的选择

3.我们要有纠错/容错的能力,如果传输失败,数据该怎么办???

4.数据包从主机a到b后要解决应用方面的问题(比如主机a向b发出申请下载电影,把数据发送给对方是手段,目的是为了下载电影,为了解决应用问题)

总结:综上是网络要解决的4个问题,应用低耦合高内聚的分层原理,每一层次都有自己匹配的协议,每一层的协议都要解决自己的问题。

3.4  OSI(Open System Interconnection)七层模型

OSI 七层模型:是国际标准化组织(ISO)提出的一种理论上的分层架构,目的是为网络协议的设计提供统一的 “功能划分标准”。它将网络通信从底层到上层划分为 7 个层级(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),每个层级明确了需要解决的核心问题(如物理层负责信号传输,网络层负责路由选择等)。
简单说,OSI 模型像一张 “建筑图纸”,规定了 “房子应该有地基、墙体、屋顶”,但不具体规定 “地基用什么水泥,屋顶用什么瓦片”

从上图可以看出:每一层都有自己的协议和自己要解决的问题

实际问题中,567层是需要我们自己设计的,也就是之前的例子中的第四点(解决应用问题)234层对应问题123,物理层暂时不考虑

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

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP协议簇。

TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。 

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

也就是把567层归结到应用层,后续如果我们说四层模型就是省略了物理层

结合上面所说的,我们实际编程是应用层,os其实早就在内部规定好了传输层和网络层。 

 一般而言:

对于一台主机, 它的操作系统内核实现了从传输层到数据链路层的内容。

对于一台路由器, 它实现了从网络层到物理层。

对于一台交换机, 它实现了从数据链路层到物理层。

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

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)。

四、局域网中的两台主机是如何通信的???

4.1  协议报头

例子:比如一个快递,你想买的东西实际上是箱子里的东西,并不包括快递盒及快递单,这多出来的就叫协议,协议上的从哪寄到哪,收件人名字等信息就叫报头,将来快递在站点与站点之间传递时只需要看报头

a.报文=报头+有效载荷(后面会提)

b.协议每一层都有,而每一个协议最终表现就是协议要有报头

c.协议通常是通过协议报头来进行表达的

4.2  局域网

a.两台主机同处一个局域网是能够直接通信的

b.局域网的原理(简单提,后面详细讲)

   每一台主机都有自己的”名字“,每一台都有网卡,网卡也有自己的地址,MAC地址(表明自己在     局域网中的唯一性)(在linux中ifconfig可以查询,其中有一行ether就是MAC地址,16进制,一     共48bit位 ,window是ipconfig /all)

简单来说就是A给D发数据,所有的主机都会收到,但由于所有主机在自己最底层的协议判断时,C和B直接把该报头丢弃,只有D识别并且判断出是A发给自己的,所以就会处理

 当一个”你好“从主机1发到主机2时要经历封装,解包分用的过程,也就是”你好“每经过一层时要加上对应的报头,对方在接收到后到达应用层要经过解包分用的过程

在网络协议中,我们可以认为同层协议在直接通信,也可以理解成向下交付,这是两种不同的认知

4.3  报文=报头+有效载荷

报头就是每一层的协议,有效载荷就是除掉协议后剩下的

比如在传输层(站在传输层的视角):报文为传输层报头+应用层包头+”你好“

报头=传输层报头,有效载荷=应用层报头+”你好“

4.4  数据包封装和分用 

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

数据分用的过程:

 

4.5  每一层协议都要面临和解决的问题

1.如何判断哪里是报头,哪里是有效载荷

2.如何判断自己的有效载荷要交给上一层的哪个协议???每一层的协议也有几个,要清楚交给那个协议

以上就是每一层协议的报头都要涵盖的信息,这就是协议的共性

4.6  局域网的分类

1.以太网

a.当主机a给d发时,b不能给c发(只允许一个主机在任何一个时刻给局域网中发送信息,否则发送碰撞)

b.碰撞(Collision) 指的是多个设备同时在同一物理介质(如网线)上发送数据,导致信号相互干扰、无法被正确接收的现象。(网线站在os的角度就是共享资源/临界资源)

c.如果发送碰撞就需要重新发送

2.令牌环路

令牌环路就类似与锁,谁拥有令牌谁就可以发信息,避免了碰撞

特点:可靠性高、实时性较好,但成本高、扩展性差,目前已几乎被以太网取代。

3.无线LAN

基于无线通信技术(如无线电波、红外线)的局域网,核心标准是 IEEE 802.11 系列(即 WiFi),也属于广义以太网的延伸(无线以太网)。
特点:无需布线,灵活性强,适用于移动设备接入。

4.7  MAC地址和ip地址

在Linux中是用ifconfig命令进行查询

ehc0和lo都是网络接口,ehc0相当于入网接口,收数据和发数据都是这个,相当于数据链路层

4.7.1  MAC地址

其中echo中 ether是以太意思,这后面跟着就是MAC地址,每个数字都是16进制,一共有12个数字,每两个:分隔,12x4就是48位,也就是6个字节

在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址)。

4.7.2  IP地址

inet是ip地址,内网ip/私有ip ip地址中每个取值范围是0~255,即用一个char类型来表示,四个字节就可以表示一个ip地址,这种表示方案称为IPv4,以点分隔,叫点分十进制 

IPv6 采用 128 位二进制数表示地址,按每 8 位(1 字节)划分为 16 个字节,通常用8 组十六进制数表示(每组 4 个十六进制数,对应 16 位二进制,即 2 个字节),组之间用冒号(:)分隔。
例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334 就是一个标准的 IPv6 地址。

IPv6是解决IPv4地址不够用的情况

一般情况是局域网用MAC地址,广域网用ip,但ip还可以用于局域网(后面会解释)

4.7.3 ip地址和mac地址的作用

既然ip和mac都可以表示主机的唯一性,那区别是啥???作用是啥???

ip地址是提供方向目标,方便路径选择,比如西游记唐僧从大唐到西天取经

目的mac地址是会变的,是提供可行性,比如上一站女儿国下一站黑风岭,上一站黑风岭下一站火焰山

也就是ip提供给你一个方向,mac是沿着这个大致方向在两个相邻结点间一直跳,直到终点

ip地址工作在网络层提供宏观方向,mac地址工作在数据链路层提供微观执行

五、总结梳理数据如何在网络当中传输 

图中中间部分代表路由器,两边部分代表主机

圈圈代表一个一个的局域网

传输层和网络层是os内置好的,链路层是驱动

可以明确未来我们用户是通过编写代码,调用系统调用接口来向下传达我们的网络发送任务才交给对方主机

一定是左主机自顶向下进行封装,然后经过网线转发到路由器,然后在做自底向上的解包

当经过第一个路由器A时,因为mac地址是在数据链路层,到路由器A时已经去掉源mac地址和目的mac地址,然后经过网络层检查发现需要到另外一个路由器,所以在A中自顶向下封装,加上源mac地址和去B的nac地址,到B后依次循环这样的操作,最后到右主机

最后形成的路径就会变成这样

问题:为什么路由器A到B时它是清楚去B,而不是别的路由器???

 原因就在于ip地址宏观的路径选择,ip地址早已经决定了从哪个到哪个在到哪个

mac地址实现的是微观的,是决定从哪个到哪个这种局部的

 

 

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

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

相关文章

PDF 编辑器:多文件合并 拆分 旋转 顺序随便调 加水印 密码锁 页码背景

各位打工人、学生党们,你们是不是也遇到过这种情况,领导甩来一个PDF让你改,结果你捣鼓半天,发现这玩意儿根本动不了,简直想原地爆炸!别急别急,今天就给你们安利一个办公软件——PDF编辑器&#…

【软件基础学习配置那些事 4-3】3ds Max2026 菜单栏常用命令-----文件、视图、编辑、工具、组

3ds Max学习的笔记小知识!!!!!!!!后续都会补充添加!!!!(个人的一些学习笔记,如有不对,欢迎订正&am…

网络爬虫的介绍

网络爬虫库网络爬虫通俗来讲就是使用代码将HTML网页的内容下载到本地的过程。爬取网页主要是为了获取网中的关键信息,例如网页中的数据、图片、视频等。Python语言中提供了多个具有爬虫功能的库,下面将具的介绍。urlib库:是Python自带的标准库&#xff0…

C# 编程实战进阶:字符串与字符串数组 (3)

目录 1、给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 2、无重复字符的最长字符串 ,给定一个字符串 s 请你找出其中不含有重复字符的最长字符串的长度。 3、给定两个字符串 s 和 t ,它们只包含小…

Python趣味算法:百钱百鸡问题——双重循环优化与算法效率分析

如何用Python解决中国古代数学难题?本文从暴力枚举到高效优化,带你领略算法之美,效率提升100倍! 看在每天坚持分享有趣知识的份上,点个关注吧(づ ̄ 3 ̄)づ 关注是我更新的动力 ̄︶ ̄∗ ̄︶ ̄∗) 作者会分享更多涉及到各种编程语言的有趣知识!(^∀^●)ノシ 目录 …

JAVA_TWO-初识Java2

1.IDEA管理Java程序的结构2.idea编译后的class文件在哪在工程out文件夹下。3.idea一些快捷键4.导入模块File→New→Module from Existing Sources → 添加后缀.iml文件5.注释单行注释 //多行注释 /* 注释内容1注释内容2 */文档注释 /** 注释内容 */ (文档注释内容可…

二、Dify 版本升级教程(LInux-openeuler)

首先,你需要先按照好dify,然后才能升级,本文教程是基与Docker Compose 如果你还没有安装,可以看看这个教程。 一、Dify 私有部署、本地安装教程(LInux-openeuler)_dify1.5版本部署-CSDN博客 安装完成后&a…

Java 大视界 -- Java 大数据在智能安防门禁系统中的多生物特征融合识别与权限管理(280)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 本博…

【Tools】Ubuntu24.04安装详细教程

00. 目录 文章目录00. 目录01. Ubuntu 24.04简介02. Ubuntu 24.04下载03. Ubuntu 24.04虚拟机创建04. Ubuntu 24.04安装步骤05. Ubuntu 24.04常用软件06. 附录01. Ubuntu 24.04简介 Ubuntu 24.04 LTS(代号“Noble Numbat”)是Canonical于2024年4月25日发…

linux基础入门Ubuntu 22.04 系统中添加、删除和授予用户 sudo权限

在 Ubuntu 中,sudo 允许授权用户以 root 级别权限执行任务,即使他们不知道 root 用户密码。这对于执行管理任务非常重要,因为它可以避免直接使用 root 用户,从而减少系统被误操作的风险,同时在企业生产中由于ubuntu系统…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1

问题描述使用git bash, cmd运行npm都可以,但是用Power Shell运行npm,却报错:npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/…

【面经】实习经历

文章目录一、求职准备篇1.1提升技术水平1.1.1学什么?1.1.2怎么学?1.2做项目1.3做简历1.4找实习二、求职难度篇找实习难不难?笔试面试三、实习内容篇新人入职 -- 学会看代码参与小需求实习日常实习到底难不难?四、总结 一、求职准备…

The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(二)

文章目录The Missing Semester of Your CS Education 学习笔记以及一些拓展知识Bash脚本笔记部分一些在Bash脚本中的常用命令补充常用标准输入输出命令常用环境变量(普通变量)控制命令常用系统时间信息获取命令常用函数执行状态控制命令常用脚本执行控制命令Bash脚本的创建和运…

教育科技内容平台的用户定位与产品方案:从需求到解决方案的精准匹配

教育科技内容平台的用户定位与产品方案:从需求到解决方案的精准匹配打造一款成功的内容平台,核心在于 “懂用户”—— 明确不同用户的需求场景、使用目的,才能设计出真正有价值的产品功能。本文以面向互联网从业者的教育科技内容平台为例&…

网络之路16:认识虚拟化环境H3C CAS

正文共:3888 字 54 图,预估阅读时间:6 分钟目录网络之路第一章:Windows系统中的网络0、序言1、Windows系统中的网络 1.1、桌面中的网卡 1.2、命令行中的网卡 1.3、路由表 1.4、家用路由器网络之路第二章:认识企业设备2…

Sklearn 机器学习 IRIS数据 理解分类报告

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Sklearn 机器学习 IRIS 数据分类报告解读 鸢尾花(Iris)数据集是机器学习入门中最经典…

ni-app 对鸿蒙的支持现状

自 HBuilderX 4.27 版本开始,uni-app 支持 Harmony Next 平台的 App 开发,目前仅支持 Vue3 项目编译到鸿蒙平台。uni-app x 从 4.61 版本起支持纯血鸿蒙,即 Harmony NEXT,其组件、API、CSS 与 Android 和 iOS 基本拉齐。 开发与配…

docker 容器学习

笔者来介绍一下docker 容器的学习1、docker容器背景 docker 里面有两个概念,镜像可看成一个类,而容器则是镜像的一个实例,从这个来看,那么一般镜像是一个,而容器可以有很多个。 镜像:带一堆工具链的操作系统…

MongoDB社区版安装(windows)

下载地址 官网: MongoDB: The World’s Leading Modern Database | MongoDB 8.0.11版本下载地址: https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-8.0.11.zip 安装 解压安装包 解压结果目录如下: bin目录介绍 文件名称作用…

Git上传与下载GitHub仓库

新建GitHub仓库 … 本地上传GitHub 第一步:git add .第二步:git commit -m your content第三步:git push xxx main或者git push xxx master 对于第三步,首先看自己建立的仓库是master分支,还是main分支。以前都是默认m…