草庐IT

第一章 计算机网络概述

赟文武 2023-07-26 原文

计算机网络基本概念

  • 计算机网络是计算机技术与通信技术相互融合的产物
  • 计算机网络是互连的、自治的计算机的集合
    • 自治——互连的计算机系统彼此独立,不存在主从或者控制与被控制关系
    • 互连——利用通信链路连接相互独立的计算机系统
  • 目前最大的、应用最广泛的计算机网络就是Internet或因特网
  • 协议——网络通信实体之间在数据交互过程中需要遵循的规则或约定
  • 协议三要素如下:
    • 语法;定义实体之间交换信息的格式与结构,或者定义实体之间传输信号的电平等
    • 语义;定义实体之间交换的信息需要发送(或包含)哪些控制信息
    • 时序(同步);定义实体之间交换信息的顺序以及如何匹配或适应彼此的速度
  • 计算机网络功能如下:
    • 硬件资源共享;云计算、云存储
    • 软件资源共享;SaaS——软件即服务
    • 信息资源共享;互联网成为人们获取信息的重要渠道
  • 计算机网络分类
    • 按覆盖范围分类
      • 个域网PAN;蓝牙,覆盖范围在1-10m
      • 局域网LAN;办公室、办公楼、厂区、校园等,覆盖范围在10m-1km
      • 城域网MAN;城市范围,覆盖范围在5-50km
      • 广域网WAN;覆盖范围在几十到几千千米
    • 按拓扑结构分类
      • 星形拓扑结构;优点:易于监控和管理 ,故障诊断与隔离容易,缺点:中央结点是网络瓶颈,一旦故障,全网瘫痪,网络规模受限于中央结点的端口数量
      • 总线型拓扑结构;优点:结构简单、所需电缆数量少,易于扩展,缺点:通信范围受限,故障诊断与隔离较困难,容易产生冲突
      • 环形拓扑结构;多见于早期局域网、园区网和城域网中,优点:所需电缆长度短,可以使用光纤,易于避免冲突,缺点:某结点故障容易引起全网瘫痪,新结点的加入或撤出比较麻烦,存在等待时间问题
      • 网状拓扑结构;常见于广域网、核心网络等,优点:可靠性高,缺点:网络结构复杂,造价成本高,选路协议复杂
      • 树形拓扑结构;优点:易于扩展,故障隔离容易;缺点:根节点可靠性要求高
      • 混合拓扑结构;如Internet,优点:易于扩展;缺点:结构辅助,管理与维护复杂
    • 按交换方式分类
      • 电路交换网络;建立电路、传输数据、拆除电路
      • 报文交换网络
      • 分组交换网络
    • 按网络用户属性分类
      • 公用网;国家或企业出资建设,面向公众提供收费或免费服务的网络
      • 私有网;某个组织出资建设,专门面向该组织内部业务提供网络传输服务,不向公众开放的网络

注:拓扑结构图片示例如下:

计算机网络结构

  • 大规模现代计算机网络结构包括网络边缘、接入网络与网络核心三部分
    • 网络边缘;连接到网络上的计算机、服务器、智能手机、智能传感器、智能家电等称为主机或端系统
    • 接入网络
      • 电话拨号接入;通过调制解调器将数字信号调制到模拟电话线路,通过电话网络的模拟语音信号作为载波传送到远端,再利用调制解调器解调
        • 最大带宽通常为56kbit/s
      • 非对称数字用户线路ADSL;基于频分多路复用(FDM),上行带宽比下行带宽小
        • 3-5km——典型上行带宽512kbit/s~1Mbit/s,下行带宽为1-8Mbit/s
        • 1.3km以内时,称为VDSL;典型下行带宽可达到55Mbit/s,上行带宽可达到19.2Mbit/s
        • ADSL是独享式接入
      • 混合光纤同轴电缆HFC接入网络;基于频分多路复用技术,利用有限电视网络同轴电缆剩余的传输能力实现电视信号传输与网络数据传输的共享。上行带宽小于下行带宽
        • 上行带宽为30.7Mbit/s,下行带宽为42.8Mbit/s
      • 局域网;典型的局域网技术是以太网,WIFI等
      • 移动接入网络 ;利用移动通信网络(3G/4G/5G),实现智能手机、移动终端等设备的网络接入
    • 网络核心;作用是实现网络边缘中主机之间的数据中继与转发

数据交换技术

  • 电路交换;利用电路交换进行通信包括建立电路、传输数据和拆除电路3个阶段
    • 优点:实时性高、时延和时延抖动都较小
    • 缺点:对于突发性数据传输,信道利用率低,且传输速率单一
    • 适用于语音和视频这类实时性强的业务
  • 报文交换;工作过程为发送方把要发送的信息附加上发送/接收主机的地址及其他控制信息,构成一个包围,然后以报文在交换网络的个结点之间以存储-转发方式传送,直至送达目的主机
    • 采用存储-转发机制,不需要实现建立连接
    • 报文交换线路利用率相较于电路交换高;报文延迟时间长且不固定,有时不得以需丢弃报文

  • 分组交换;分组交换需要将待传输数据分割为较小的数据块,每个数据块附加上地址、序号等控制信息构成数据分组,每个分组独立传输到目的地,目的地将收到的分组重新组装,还原为报文
    • 采用存储-转发技术
    • 分组交换优点:交换设备存储容量要求低、交换速度快、可靠传输效率高、更加公平
    • 分组长度的确定原则如下:
      • 分组长度与延迟时间成正比
      • 分组长度与误码率

计算机网络性能

  • 速率是指网络单位时间内传送的数据量,基本单位是bit/s,其他单位有kbit/s、Mbit/s、Gbit/s、Tbit/s;换算关系如下图:

  • 带宽:信号具有的频带宽度,即信号成分的最高频率和最低频率之差,单位为Hz,单位也是bit/s
  • 时延:数据从网络中一个结点到达另一个结点所需要的时间
    • 结点处理时延;记作dc,到达交换结点(路由器)交换设备进行一系列操作所耗费时间
    • 排队时延;记作dq,结点内等待从输出链路发送到下一交换结点
      注:结点处理时延、排队时延均在结点内产生
    • 传输时延;记作dt,dt=L/R其中L为分组长度,链路带宽为R,从结点“搬”到链路上的时间
    • 传播时延;记作dp,定义如下:信号从发送端发送出来,经过一定距离的物理链路到达接收端所需要的时间dp=D/V;D为物理链路长度,信号传播速度为V

  • 时延带宽积:传播时延与带宽的乘积,单位是位

  • 丢包率;计算公式为丢失分组总数/发送分组总数,如下图所示:

  • 吞吐量:在单位时间内源主机通过网络项目地主机实际送达的数据量,单位是bit/s或B/s记作Thr

计算机网络体系结构

  • IBM在20世纪60年代后期开发了系统网络体系结构(SNA)——第一个

OSI参考模型


注:物链网输会示用——“物联网淑慧试用”

  • 物理层:实现无结构比特流传输
  • 数据链路层:实现相邻结点之间数据可靠而有效的传输;“成帧”
  • 网络层:如何将分组通过交换网络传送至目的主机,主要功能时数据转发与路由
  • 传输层:端到端,进程-进程的层次;复用/分解、端到端的可靠数据传输、连接控制、流量控制和拥塞控制机制等
  • 会话层:用户与用户连接,主要功能:在建立会话时核实双方身份是否有权参加会话,确定双方支付通信费用,双方在各种选择功能方面一致,会话建立后对进程对话进行管理与控制
  • 表示层:处理应用实体件交换数据的语法;文本压缩/解压缩、数据加密/解密、字符编码的转换等
  • 应用层:与提供给用户的网络服务相关,文件传送、电子邮件、P2P应用等

TCP/IP参考模型

  • 应用层:合并了会话层、表示层,在Internet上常见的一些网络应用大多在这一层:WWW服务、文件传输、电子邮件等
  • 传输层:把上层数据传输到接收主机上对等的应用层程序
  • 网络互联层:核心,路由选择,分组转发,提供网络层寻址——IP嗲之,异构网互连,网络互连层核心协议为IP,还包括ICMP、IGMP、BGP、OSPF、RIP等
  • 网络接口层:网络层IP分组在这一层被封装为底层网络的链路层数据帧中,最终以比特流的形式在物理介质上进行传输

五层参考模型

注:三个参考模型同框图如下:

有关第一章 计算机网络概述的更多相关文章

  1. 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,

  2. 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

  3. 网络编程套接字 - 2

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

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

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

  5. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

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

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

  7. 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

  8. ruby-on-rails - CarrierWave - PDF - 只选择第一页 - 2

    我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful

  9. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  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

随机推荐