草庐IT

【计算机网络】网络体系结构

林慢慢脑瓜子嗡嗡的 2023-11-18 原文

前言:本章作为《计算机网络》系列的开篇文章,内容主要是向大家介绍介绍网络体系结构,引入计算机网络的概念、组成、功能、分类、标准化、性能指标以及体系结构和OSI、TCP/IP参考模型等内容。(参考资料为b站上点击量最高的两个计网视频——王道&方老师,王道有的地方会讲的不够好,大家可以两个交替看)


文章目录


本章主要知识点导图

其中分层结构算是“类”,ISO/OSI、TCP/IP模型算是“实例”。


1.概念与功能

1.1“四网”

包括电网、有线电视网、电信网、计算机网络


1.2计算机网络的定义

是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完软件实现资源共享和信息传递的系统。

互连网就是“网络连接网络”。

计算机网络是互连的、自治的计算机集合。
互连:通过通信链路互联互通

自治:无主从关系

关于“云”


1.3计算机网络的功能


2.组成和分类

2.1组成部分

硬件、软件、协议(一系列规则和约定的集合)


2.2分类

2.2.1 按工作方式分类

核心部分提供服务,边缘部分才能实现端系统与端系统之间的通信。

边缘部分:用户直接使用,包括B/S方式、C/S方式以及P2P方式。

2.2.2 按组成功能分类

2.2.3 按作用范围分类

2.2.4 按使用者分类

2.2.5 按交换技术分类

电路交换:不允许被打断,通信资源被占用时不能被别人使用。

报文交换、分组交换:都是存储转发

2.2.6 按拓扑结构

2.2.7 按传输方式分类

2.2.8计网组成、功能、概念、分类思维导图


3.标准化工作


3.1标准的分类


3.2 如何申请一个因特网标准?

草案标准这一步不需要了


3.3 标准化工作的相关组织


3.4标准化工作及组织思维导图


4.性能指标

4.1速率

连接在计算机网络上的主机在数字信道上传送数据位数的速率


4.2 带宽

指的是网络设备所支持的最高速度,单位同速率,是理想条件下最高速率

带宽高并不是说传播速度变快了,而是单位时间内所能传播的最大数据量。


4.3 吞吐量

指的是单位时间内通过某个网络的数据总量

带宽只是理想的状态,实际情况肯定是小于带宽的。速率就是实际网速,带宽是理论网速,吞吐量是一个或多个设备的综合速率,比如说1000m宽带的路由器连着三部手机,每部手机都是10mb/s看片,那么速率就是10mb/s,带宽是宽带的1000m,路由器吞吐量是30mb/s,即三者之和。


4.4 时延

高速链路(提高网速),只能减小发送时延,无法减少其他三个时延。

4.4.1四类时延总结

名称描述计算公式
发送时延数据从主机到信道上所用的时间发送的数据长度/发送速率
传播时延数据在信道上传播所花费的时间信道长度/电磁波在信道上传播的速率
排队时延数据在路由器前等待前面数据处理的时间无计算方式
处理时延数据在路由器中处理需求的时间无计算方式

4.5 时延带宽积

公式:时延带宽积=传播时延x带宽
即是链路上有多少比特的数据


4.6 往返时延RTT

发送方发送数据开始,到发送方收到来自接收方的确认(接收方收到数据后便立即发送确认),总共经历的时延
计算:RTT=传播时延x2+处理时间(有时可能直接忽略)


4.8 利用率

4.8.1信道利用率

信道利用率=有数据通过时间/有+无数据通过时间

4.8.2 网络利用率

网络利用率=信道利用率加权平均值

利用率越高,延迟越大,所以利用率也不是越高越好!


4.9性能指标思维导图


5.分层结构

5.1 为什么要分层?

5.1.1 网络体系标准

5.1.2 协议

5.1.3 两个主机交换文件

向下推一层

继续向下推


5.2 怎么分层?

各层需要完成的主要功能

同一级别层次之间才有协议的说法,上下层(相邻层)之间是接口,服务只能是下层为上层提供。

上层的PDU会作为下一层的SDU,一层一层往下。


5.3 概念总结


5.4分层结构思维导图


6.OSI参考模型


6.1 OSI七层

背诵技巧“用试惠淑网联物”

名称作用
应用层直接为用户的应用进程(例如电子邮件、文件传输和终端仿真)提供服务。如HTTP、SMTP、FTP、DNS等
表示层把数据转换为能与接收者的系统格式兼容并适合传输的格式,即让两个系统可以交换信息
会话层负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接
传输层负责端到端通讯,可靠传输,不可靠传输 ,流量控制,复用分用
网络层负责选择路由最佳路径,规划IP地址(ipv4和ipv6变化只会影响网络层),拥塞控制
数据链路层帧的开始和结束,还有透明传输,差错校验(纠错由传输层解决)
物理层定义网络设备接口标准,电气标准(电压),如何在物理链路上传输的更快

6.2 ISO/OSI参考模型解释通信过程

上四层中间系统用不到,端到端通信,主机A和主机B直接联系,中间系统只用到了底下四层。

从应用层开始,DATA+H7作为下一层的PDU,以此类推,其中数据链路层多加了一个头部。
物理层什么都不加,只管发送数据(比特流)


6.3 OSI模型七层描述

6.3.1 应用层

6.3.2 表示层

6.3.3 会话层

6.3.4 传输层

6.3.5 网络层

6.3.6 数据链路层

6.3.7 物理层


6.4思维导图


7.TCP/IP参考模型


7.1 OSI与TCP/IP参考模型的不同点


7.2 五层参考模型简介


7.3 五层参考模型的数据封装与解封装

A发出数据时,每一层从上到下均添加一个首部PDU,但是数据链路层还要多加一个尾部信息。

而B获得数据过程则反过来,每一层从下到上剥去首部,逐层向上,直到到达时,就是原始数据!


7.4分层结构思维导图


8.本章知识点思维导图

读者可自行在思维导图基础上进行知识点回顾及内容扩展!!!



计算机网络的网络体系结构部分到此介绍结束了,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连(点赞、收藏、关注)——做个手有余香的人。

有关【计算机网络】网络体系结构的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  3. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  4. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  5. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  6. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  7. ruby-on-rails - 一般建议和推荐的文件夹结构 - Sinatra - 2

    您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应

  8. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  9. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  10. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

随机推荐