【网络】计算机网络基础——计算机网络背景和发展、认识网络协议、OSI七层模型、TCP/IP四层模型、网络的传输

文章目录

  • Linux网络
    • 1. 计算机网络背景和发展
    • 2. 认识网络协议
    • 3. OSI七层模型
      • 3.1 物理层
      • 3.2 数据链路层
      • 3.3 网络层
      • 3.4 传输层
      • 3.5 会话层
      • 3.6 表示层
      • 3.7 应用层
    • 4. TCP/IP四层模型
    • 5. 网络的传输

Linux网络

1. 计算机网络背景和发展

  开始的计算机都是独立模式(计算机之间相互独立)

在这里插入图片描述
  

  由于每台计算机所存储和处理的数据都局限在本地,不同计算机之间难以直接交换和共享数据,所以提出了:网络互联(多台计算机连接在一起, 完成数据共享)。

在这里插入图片描述
  

  网络互联打破了数据的孤立状态,使得不同计算机之间能够高效地交换信息和共享资源,但是需要对网络的管理复杂度增加了,所以又使用了:局域网LAN: (计算机数量更多了, 通过交换机和路由器连接在一起)。

在这里插入图片描述

  

  但是局域网的覆盖范围还是有限,通常只能覆盖一个相对较小的区域,为了让范围在大些,又提出了使用:广域网WAN: (将远隔千里的计算机都连在一起)。

在这里插入图片描述
  

  广域网(WAN)和局域网(LAN)主要有以下区别:

  (1)覆盖范围:

  局域网通常覆盖的区域较小,如一个办公室、一栋楼、一个校园等。

  广域网的覆盖范围则广泛得多,可以跨越城市、国家甚至大洲,连接不同的局域网。
  

  (2)传输速率:

  局域网内的数据传输速率通常较高,一般能达到 100Mbps 甚至更高。

  广域网由于距离远、中间经过的网络节点多,传输速率相对较低。

  

  (3)网络所有权:

  局域网通常为一个组织或个人所拥有和管理。

  广域网则一般由电信运营商等服务提供商建立和运营。

  

  (4)拓扑结构:

  局域网的拓扑结构相对简单,常见的有星型、总线型和环形等。

  广域网的拓扑结构较为复杂,通常是由多个不同的网络通过路由器等设备连接而成。

  

  (5)成本:

  构建和维护局域网的成本相对较低。

  广域网的建设和运营成本较高。

  

  (6)安全性:

  局域网相对更容易控制访问权限和保障数据安全。

  广域网由于范围广、涉及的用户多,数据在传输过程中面临的安全风险较大。

  
  例如,一个公司内部的办公网络就是典型的局域网,而连接不同城市分公司的网络则属于广域网。

  虽然有这么多差别,但其实所谓 “局域网” 和 “广域网” 也只是一个相对的概念。

  

2. 认识网络协议

  “协议” 是一种约定。是计算机网络中进行数据交换和通信所遵循的规则、标准或约定的集合。

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

  简单的说:我们让这些不同厂商之间生产的计算机能够相互通信,所有的厂商就要约定一个共同的标准,大家都来遵守这一个共同的标准,这就是网络协议

  

  网络协议特点:

  (1)标准化: 网络协议通常由标准化组织制定和发布,以确保不同厂商生产的设备和软件能够相互兼容和通信。

  (2)分层结构: 常见的网络协议采用分层的架构,如 OSI 模型和 TCP/IP 模型,每一层负责特定的功能,并遵循相应的协议。

  

  网络协议的作用:

  (1)数据封装和解封装:在发送数据时,按照协议将数据进行封装,添加必要的控制信息;接收方则按照协议进行解封装,获取原始数据。

  (2)错误检测和纠正:协议能够检测传输过程中出现的错误,并采取相应的纠正措施。

  (3)流量控制:防止发送方发送数据过快,导致接收方无法及时处理

  

3. OSI七层模型

  OSI七层模型在计算机网络中具有极其重要的地位。

  OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。

  把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器,交换机。

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

  它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。

  通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

在这里插入图片描述

在这里插入图片描述
  
在这里插入图片描述

  

3.1 物理层

  物理层是 OSI 七层模型中的最底层,它是整个网络通信的基础。

  物理层主要负责在物理介质上传输未经处理的比特流,也就是 0 和 1 的电信号或光信号。

  其主要功能包括:

  定义了物理连接的特性,如连接器的类型、插头的规格、线缆的类型(如双绞线、同轴电缆、光纤等)以及接口的机械和电气特性。

  规定了信号的传输模式,包括模拟信号和数字信号的传输方式,以及信号的编码和解码方式。

  确定了数据传输的速率和带宽。

  

  物理层的技术标准和规范非常多样化,以适应不同的应用场景和需求。例如:

  在以太网中,常用的物理层标准有 10BASE-T(使用双绞线,传输速率为 10 Mbps)、100BASE-TX(双绞线,100 Mbps)等。

  在无线通信中,如 Wi-Fi 技术,物理层规定了不同的频段、调制方式和传输功率等。

  物理层的性能直接影响到整个网络的通信质量和效率。如果物理层出现问题,如线缆损坏、信号干扰等,将导致数据传输错误或中断。

  
在这里插入图片描述

  

3.2 数据链路层

  数据链路层在 OSI 七层模型中位于物理层之上。它主要负责将物理层传输的比特流组合成帧,并进行差错检测和纠正,以在相邻节点之间可靠地传输数据。

  其关键功能包括:

  帧的封装与解封装: 将网络层传来的数据加上帧头和帧尾,封装成帧。接收方则进行相反的操作,解封装出原始数据。

  差错控制: 通过使用循环冗余校验(CRC)等技术检测和纠正帧传输过程中产生的错误。

  流量控制: 协调发送方和接收方的传输速率,防止接收方缓冲区溢出。

  介质访问控制(MAC):在共享介质的网络中,确定节点何时能够访问介质进行数据传输,例如以太网中的 CSMA/CD 协议。

  

  数据链路层的常见协议有:

  以太网协议:这是应用最广泛的数据链路层协议之一。

  PPP(Point-to-Point Protocol,点到点协议):常用于拨号连接和专线连接。

  举例来说,当您通过以太网发送一份文件时,数据链路层会将文件分割成多个帧,并为每个帧添加控制信息。在接收端,数据链路层会检查帧是否有错误,如果有错误会请求重传,确保数据的正确传输。

  

在这里插入图片描述

  

3.3 网络层

  网络层处于 OSI 七层模型中的第三层,它的主要职责是负责数据包的路由和转发,以实现不同网络之间的通信。

  网络层的关键功能包括:

  逻辑寻址: 为网络中的设备分配逻辑地址(如 IP 地址),以便识别和定位网络中的节点。

  路由选择: 根据路由表和特定的路由算法,确定数据包从源节点到目标节点的最佳路径。

  数据包的分段与重组: 当数据包的大小超过网络链路的最大传输单元(MTU)时,网络层负责将数据包分段,在目标节点再进行重组。

  **拥塞控制:**监测网络的拥塞情况,并采取相应的措施来缓解拥塞,例如调整发送速率。

  

  网络层的核心协议是 IP 协议(Internet Protocol),此外还包括 ICMP(Internet Control Message Protocol,互联网控制报文协议)、IGMP(Internet Group Management Protocol,互联网组管理协议)等。

  例如,当您发送一封电子邮件从北京到纽约,网络层会根据目标地址和网络的拓扑结构,选择一系列的路由器和链路,将数据包逐步转发到目的地。

  

在这里插入图片描述
  

  认识IP地址

  IP协议有两个版本,IPv4和IPv6。

  IP地址是在IP协议中,用来标识网络中不同主机的地址。

  对于IPv4来说,IP地址是一个4字节,32位的整数。

  我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节,范围是 0 - 255。

  

  认识MAC地址:

  MAC地址用来识别数据链路层中相连的节点。

  长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。

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

  

3.4 传输层

  传输层处于 OSI 七层模型的第四层,它起着承上启下的关键作用,为上层的应用层提供端到端的数据传输服务。

  传输层的主要功能包括:

  服务质量的定义: 根据应用程序的需求,提供不同质量的传输服务,如可靠的面向连接服务(TCP)或不可靠的无连接服务(UDP)。

  端口号的分配: 通过端口号来标识不同的应用程序或进程,使多个应用程序能够同时共享网络连接。

  分段与重组: 如果应用层传来的数据过大,传输层会将其分割成较小的段,并在接收端进行重组。

  流量控制: 通过调整发送方的发送速率,确保接收方不会因为数据接收过快而缓冲区溢出。

  差错控制: 对传输的数据进行差错检测,对于出错的数据进行重传。

  

  常见的传输层协议有 TCP(Transmission Control Protocol,传输控制协议) UDP(User Datagram Protocol,用户数据报协议)。

  TCP 提供可靠的、面向连接的、带有流量控制和拥塞控制的传输服务。 例如,在文件传输、电子邮件等对数据准确性要求高的应用中通常使用 TCP。

  UDP 则提供不可靠的、无连接的、快速但尽力而为的数据传输服务。 像实时视频流、在线游戏等对实时性要求高而对少量数据丢失不太敏感的应用常使用 UDP。

  

  举例来说,当您在浏览器中访问一个网站时,浏览器与服务器之间的通信就是通过传输层来完成的。传输层根据应用的需求选择合适的协议,并确保数据能够准确、有序地在两端之间传输。

  传输层的有效工作使得各种应用能够在网络上稳定、高效地运行,满足了不同应用对数据传输的多样化需求。

  

在这里插入图片描述

  

3.5 会话层

  会话层处于 OSI 七层模型的第五层,它主要负责在通信双方之间建立、管理和终止会话。

  会话层的主要功能包括:

  会话建立和维护: 在通信双方之间建立连接,并在通信过程中保持会话的活跃状态。

  会话同步: 确保会话过程中数据的有序传输和完整性,处理因网络故障等原因导致的数据丢失或乱序问题。

  令牌管理: 控制会话双方对共享资源的访问权限,避免冲突。

  活动管理: 协调和管理会话中的各种活动,如数据交换、远程操作等。

  

  会话层的作用在一些复杂的通信场景中尤为重要。例如,在远程数据库访问中,会话层确保了多个查询和操作的有序进行,并在网络中断后能够恢复会话状态,保证数据的一致性和完整性。

  然而,在实际的网络通信中,会话层的功能在很多情况下被整合到了应用层或传输层中,其独立性相对较弱。

  

3.6 表示层

  表示层位于 OSI 七层模型的第六层,主要负责处理数据的表示方式、格式转换、加密和解密等。

  其重要功能包括:

  数据格式转换: 将来自应用层的数据转换为适合网络传输的格式,或者将接收到的数据转换为应用层能够理解的格式。例如,将不同计算机系统中的字符编码进行转换。

  数据压缩与解压缩: 减少数据的冗余,提高传输效率。

  数据加密与解密: 对敏感数据进行加密,以保证数据在网络传输中的安全性,在接收端再进行解密。

  语法选择:根据不同的应用需求选择合适的语法表示。

  

  表示层的作用在以下场景中较为明显:

  比如,当一个图像文件从一台计算机发送到另一台计算机时,发送方的表示层会将图像数据进行压缩和编码,使其适合在网络中传输;接收方的表示层则进行解压缩和解码,还原出原始的图像数据。

  在现代网络通信中,由于很多表示层的功能已经被集成到应用程序中,或者通过特定的应用协议来实现,所以表示层的独立性不像其他层那么突出。

  

3.7 应用层

  应用层是 OSI 七层模型中的最高层,它直接与用户和应用程序交互,为用户提供各种网络服务。

  应用层的主要功能包括:

  提供用户接口: 使得用户能够与网络进行交互,例如通过图形界面、命令行等方式。

  识别和定义通信对象: 确定通信的目标和所需的服务。

  

  应用程序服务:包含了各种各样的网络应用和服务,如网页浏览(HTTP)、电子邮件(SMTP、POP3 等)、文件传输(FTP)、远程登录(Telnet)、域名系统(DNS)等。

  应用层的特点和重要性体现在以下几个方面:

  多样性: 涵盖了众多不同类型和功能的应用,满足了用户在工作、学习、娱乐等方面的各种需求。

  与用户需求紧密结合: 直接响应和满足用户的具体业务需求和操作习惯。

  不断发展和创新: 随着技术的进步和用户需求的变化,新的应用和服务不断涌现。

  举例来说,当您在浏览器中输入网址访问网站时,应用层的 HTTP 协议负责与服务器进行通信,获取网页内容并展示在您的屏幕上。又比如,您使用电子邮件客户端发送邮件时,SMTP 协议在应用层发挥作用,将邮件从您的计算机发送到收件人的邮件服务器。
应用层是网络通信与用户实际需求的直接接口,是整个网络体系中最贴近用户、最能体现网络价值的一层

  
在这里插入图片描述

  

4. TCP/IP四层模型

  物理层: 负责光/电信号的传递方式。 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

  数据链路层: 负责设备之间的数据帧的传送和识别。 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。

  网络层: 负责地址管理和路由选择。 例如在IP协议中, 通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层。

  传输层: 负责两台主机之间的数据传输。 如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。

  应用层: 负责应用程序间沟通。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。

  
在这里插入图片描述

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

  一般而言:

  (1)对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容。

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

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

  (4)对于集线器, 它只实现了物理层。

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

  

5. 网络的传输

  同一个网段内的两台主机进行文件传输。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  

数据包封装和分用

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

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

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

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

  

  下图为数据封装的过程:

在这里插入图片描述

在这里插入图片描述

            

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

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

相关文章

谷歌新的网站索引策略:将来可能不再为您的网站编制索引

10 年前,在 WordPress 上推出新博客的同时,Google 上的内容几乎是即时索引。 搜索引擎试图尽快向用户提供所有信息,这对内容创作者也有利。 然而,随着时间的推移,情况发生了变化,现在谷歌在索引方面变得极…

网络安全之信息收集阶段攻击和防护手段(一)

一、信息收集 前言:社工钓鱼往往是攻击者最喜欢的方式,攻击者一般会伪装成求职者、修改邮箱名称伪造办公邮件,诱导意识薄弱的员工进行下载恶意文件或恶意链接,链接往往会通过名称遮掩真实的IP地址。 攻击方:攻击者通…

Maven打包时将本地 jar 加入 classpath

在使用 maven 编译项目时&#xff0c;我们有时候会需要引入本地的 jar 包作为依赖&#xff08;不部署到本地仓库&#xff09;&#xff0c;一般会使用 scope 为 system 的标签来引入&#xff0c;如下所示&#xff1a; <dependency><groupId>com.example</groupI…

【解决】ubuntu20.04 root用户无法SSH登陆问题

Ubuntu root用户无法登录的问题通常可以通过修改‌SSH配置文件和系统登录配置来解决。 修改SSH配置文件 sudo vim /etc/ssh/sshd_config 找到 PermitRootLogin 设置&#xff0c;并将其值更改为 yes 以允许root用户通过SSH登录 保存并关闭文件之后&#xff0c;需要重启SSH服务…

用uniapp 及socket.io做一个简单聊天app 2

在这里只有群聊&#xff0c;二个好友聊天&#xff0c;可以认为是建了一个二人的群聊。 const express require(express); const http require(http); const socketIo require(socket.io); const cors require(cors); // 引入 cors 中间件const app express(); const serv…

6 Go语言的常量、枚举、作用域

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;由浅入深讲解Go语言&#xff0c;希望大家都能够从中有所收获&#xff0c;也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;大家一起学习&#xff0c;…

【Python】主字符串中查找子字符串:滑动窗口、正则表达式、递归检查

一、题目 In this challenge, the user enters a stirng and a substring. You have to print the number of times that the substring occurs in the given string. String traversal will tack place from left to right, not from right to lef. NOTE: String letters ar…

Leetcode—426. 将二叉搜索树转化为排序的双向链表【中等】Plus

2024每日刷题&#xff08;148&#xff09; Leetcode—426. 将二叉搜索树转化为排序的双向链表 实现代码 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Nod…

R包:plot1cell单细胞可视化包

介绍 plot1cell是用于单细胞数据seurat数据对象的可视化包。 安装 ## You might need to install the dependencies below if they are not available in your R library. bioc.packages <- c("biomaRt","GenomeInfoDb","EnsDb.Hsapiens.v86&qu…

无人机之起飞前准备

一、检查无人机状态 1、确保无人机的电池充满电或有足够的电量&#xff1b; 2、检查螺旋桨是否安装牢固&#xff0c;没有损坏&#xff1b; 3、确认无人机的固件是最新版本&#xff0c;以保证拥有最新的功能和修正。 二、选择合适的起飞地点 1、避免在人群密集或有障碍物的…

深入理解 Java17 新特性:Sealed Classes

0 关键总结 Java SE 15在2020年9月发布&#xff0c;预览功能引入“封闭类”(JEP 360)封闭类是一种限制哪些其他类或接口可扩展它的类或接口类似枚举&#xff0c;封闭类在领域模型中捕获替代方案&#xff0c;允许程序员和编译器推理其穷尽性封闭类对于创建安全的层次结构也很有…

iOS 创建一个私有的 CocoaPods 库

创建一个私有的 CocoaPods 库&#xff08;pod&#xff09;涉及几个步骤&#xff0c;包括设置私有的 Git 仓库、创建 Podspec 文件、发布到私有仓库等等。以下是详细步骤&#xff1a; 设置私有 Git 仓库 首先&#xff0c;在 GitHub、GitLab 或 Bitbucket 上创建一个新的私有仓库…

身份证如何查验真伪?C#身份证二要素、三要素接口集成

身份证不仅是我们的身份证明&#xff0c;更是社会生活中的“通行证”&#xff0c;现在人们的衣食住行都离不开身份证。但对于提供服务的平台而言&#xff0c;如何对用户提供的身份信息进行真伪核验便成为了一大难题。别担心&#xff0c;今天小编为服务平台带来了身份证二要素、…

MySQL:增删改查、临时表、授权相关示例

目录 概念 数据完整性 主键 数据类型 精确数字 近似数字 字符串 二进制字符串 日期和时间 MySQL常用语句示例 SQL结构化查询语言 显示所有数据库 显示所有表 查看指定表的结构 查询指定表的所有列 创建一个数据库 创建表和列 插入数据记录 查询数据记录 修…

Android 列表视频滑动自动播放—滑动过程自动播放(滑动播放页面卡顿优化)

上一篇文章我们RecyclerView列表滑动自动播放——Android 列表视频滑动自动播放—滑动过程自动播放(实现思路) 实际我们会发现滑动页面自动播放视频页面会卡顿&#xff0c;针对这个问题&#xff0c;我们可以优化一下代码&#xff0c;通过Handler.runnable()去实现计算播放视频…

力扣 232用栈实现队列

思路&#xff1a; 栈的特性是先进后出&#xff0c;队列是先进先出 因此用两个栈来模拟队列 要实现的功能包括 push 入队列 pop() 出队列 peek获取队列的最上元素 isempty 队列判空 push 正常操作 stin.push()&#xff0c;只要元素入栈就行&#xff0c;stout元素…

C++ Map Set的模拟实现

C Map Set的模拟实现 文章目录 前言一、Map 和 Set是什么&#xff1f;1.Set2.Map 二、困难点困难一、set和map中值的类型不同困难二、Map和Set中值不可修改困难三、红黑树中迭代器的和--1.2.- - 困难四、map中[ ] 运算符重载的实现1.修改红黑树以及Map和Set中insert的返回值1.修…

Three.js投射光线实现三维物体交互

<template><div id"webgl"></div> </template><script setup> import * as THREE from three //导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入 dat.gui import { GUI } from thre…

k8s v1.30 完整安装过程及CNI安装过程总结

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

【ffmpeg命令入门】添加水印

文章目录 前言什么是水印&#xff1f;为什么要添加水印&#xff1f;ffmpeg添加水印添加图片水印添加文字水印基本使用方法drawtext的参数 总结 前言 在视频制作和编辑的过程中&#xff0c;添加水印是一个常见且重要的步骤。水印不仅可以保护版权&#xff0c;还能用于品牌宣传和…