计算机网络(第一章)

文章目录

概述

1.1计算机网络在信息时代的作用

  • 计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施.
  • 计算机网络已经像水,电,煤气这些基础设施一样,成为我们生活中不可或缺的部分.

既然我们无法避免计算机网络,那为什么我们不去了解它,然后使用它么?

1.2因特网概述

1. 网络,互连网(互联网)和因特网
  • 网络(Network) 由若干结点 (Node) 和 连接这些结点的链路 (Link)组成.

  • 多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围很大的网络,这也就是互联网(或互连网).因此,互联网是"网络的网络 "(Network of Networks)

  • 因特网(Internet) 是世界上最大的互连网络(用户数以亿计,互连的网络数以百万计)

2. 因特网发展的三个阶段

普通用户是如何接入因特网的呢?⇒ ISP

  • 因特网提供者ISP(Internet Service Provider)
    ISP可以从因特网管理机构申请到成块的IP地址,同时拥有通信线路以及路由器等连网设备,任何机构或者个人只要向ISP交纳费用就可以从ISP得到所需要的IP地址,这一点很重要,因为因特网的主机都必须有IP地址才能进行通信.
  • 基于ISP的三层结构的因特网

第一层ISP通常也被称为因特网主干网.一般能够覆盖国际性区域范围并具有高速链路和交换设备,第一层ISP之间直接互连,第二层ISP和一些大公司都是第一层ISP的用户,通常具有区域性或国家性覆盖规模,与少数第一层ISP相连接,第三层ISP又称为本地ISP,它们是第二层ISP的用户,且只拥有本地范围的网络,一般的校园网企业网,以及住宅用户和无线移动用户都是第三层ISP的用户,从该图可以看出,因特网逐渐演变成基于ISP的多层次结构网络,但今天的因特网由于规模太大,已经很难对整个网络结构给出细致的描述.

这样的情况是我们常遇到的就是相隔较远的两台主机间的通信可能需要经过多个ISP,顺便提一下,一旦某个用户能够接入因特网,那么它也可以成为一个ISP,所需要做的就是购买一些如调制解调器或路由器这样的设备让其他用户能够和它相连.

3.因特网的标准化工作

值得注意的是,并非所有的RFC文档都是因特网标准,只有一小部分RFC文档最后才能变成因特网标准.

4.因特网的组成

功能上划分:

1.3 三种交换方式

电路交换 (Circuit Switching)


每一部电话都连到电话交换机上,可以把电话交换机简单地看成是一个有多个开关的开关器,可以将需要通信的任意两部电话的电话线路按需接通,从而大大减少了连接电话线的数量,当电话机的数量增多时就需要使用很多彼此连接起来的电话交换机来完成全网的交换任务.用这样的方法就构成了覆盖全世界的电信网.

思考一下: 如果使用电路交换来实现计算机数据通信是否可行?

当使用电路交换来传送计算机数据时,其线路的传输效率往往很低.一个用户占用的资源暂时未被利用该通信资源也不能被其他用户,宝贵的通信线路资源就白白浪费了.利用因此计算机网络通常采用分组交换,而不是电路交换

分组交换 (Packet Switching)



与分组交换类似,报文交换中的交换节点也采用存储转发方式,但报文对报文的大小没有限制,这就要求交换结点需要有较大的缓存空间.需要注意的是报文交换主要用于早期的电报通信网,现在较少使用,通常被先进的分组交换方式所替代.所以报文交换就不再详细介绍了.

报文交换 (Message Switching)
三个交换的对比

当分组交换时,构成原始报文的一个个分组,在各结点交换机上进行存储转发,相比报文交换,减少了转发时延[这是因为报文在结点交换机上要经历存储转发的过程],还可以避免过长的报文长时间占用链路,同时也有利于进行差错控制.报文错一点就要全部重传, 分组只需要重传那个小分组就行.

什么是'虚电路' ??? 往后具体学习才知道。

1.4 计算机网络的定义和分类

注意:此处的终端机不是个人计算机,只是显示器和鼠标键盘的结合.这不是自治的计算机,所以也不是计算机网络.因此,这只是一个运行分时系统的大型机系统.

我们可以看看自己家种路由器背面的各接口,很可能标记一个WAN和多个LAN而不是标记为中文的广域网接口和局域网接口.广域网的覆盖范围通常为几十公里到几千公里,可以覆盖一个国家,地区,甚至横跨几个洲,因而有时也称为远程网.广域网是因特网的核心部分,其任务是为核心路由器提供远距离(例如:横跨不同国家的) 高速连接,互连分布在不同区域的城域网和局域网.城域网一般是一个城市,可跨越几个街区甚至整个城市,其作用距离为5-50公里,城域网通常作为城市骨干网互连大量企业,机构和校园局域网.局域网一般用微型计算机或工作站通过高速通信线路相连,速率通常在10Mbit/s以上,但地理上则局限在较小的范围内如果一个实验室,一栋楼或者一个校园内.现在一个学校或奇特大都拥有许多个互连的局域网,这样的网络通常称为校园网或企业网.个域网不是用来连接普通计算机的,而是在个人工作的地方把属于个人使用的电子设备,例如便携式计算机,打印机,鼠标,键盘,耳机等用无线技术连接起来的网络,覆盖范围一般为10米,如果范围更小,例如仅1米的数量级甚至更小,则一般就称之为多处理机系统,而不称它为计算机网络.

1.5 计算机网络的性能指标


厂家给出的单位GB中的G,为 1 0 9 10^9 109,操作系统的数据量单位为 2 30 2^{30} 230


可能你会遇到这样的场景:

朋友问: "你家的出口网速有多大?"

你可能回答说:"200M" 这里我们省略了比特每秒,所以这句话的意思是最高速率为200Mb/s,而这个最高速率,其实就是你家网络的出口带宽.这个直接关系到我们的网络应用体验

带宽 说的是水管, 某个水管 单位时间内 最多允许流过的水的量 ,相当于描述水管的粗细。 速率 说的是水流,也就是 水流的速度 。

带宽是理想,吞吐量是现实.

在构建网络时,应该做到各设备间以及传输介质的速率匹配,这样才能完全发挥出本应具有的传输性能.这一点需要重视,因为以后可能会面临新房装修时网络布线以及相关设备的采购问题,如果未认真考虑造成网络性能无法满足自己的应用需求再进行改造就比较麻烦了,目前主流的家庭局域网带宽是1000M

要计算传播时延需要先确定采用的是什么传输媒体,进而可以确定电磁波在该传输媒体中的传播速率.上面三个可以作为常识记住.光纤里面发生的是全反射,没有折射

处理时延没有简单的计算公式,因为它不方便计算,因为网络的数据流量是动态变化的,路由器的繁忙程度也是动态变化,另外各种路由器的软硬件性能也可能有所不同.一般在题目中都是会标明忽略不计

那大家想想如果处理时延忽略不计,那网络总时延中传播时延谁占主导呢?

应具体情况具体分析





1.6 计算机网络体系结构

1.常见的计算机网络体系结构

为了使不同体系结构的计算机网络都能互连 ,"开发系统网络参考模型"==>OSI

为什么会有这种说法? 是因为TCP/IP体系结构比OSI体系早进入市场,TCP/IP协议是公司所创建的标准,有一定的市场需求,根据这个体系结构生产的计算机网络可以满足人们的需求,而OSI体系结构虽然是一些专业的学者来设计的,但是制作周期长,没有市场驱动,OIS体系结构冗杂,甚至根据这个标准无法满足人们的需求,因此他只是法律上的.

大多数用户每天都有接入因特网的需求,这就要求用户的主机必须使用TCP/IP协议,当然了,即使用户的网络不需要接入因特网,也可以使用TCP/IP协议,在用户主机的操作系统中,通常都带有符合TCP/IP体系结构的TCP/IP协议族,而用于网络互连的路由器中,也带有符合TCP/IP体系结构标准的TCP/IP协议族,只不过路由器一般只包含网络接口层和网际层,TCP/IP体系结构的网络接口层饼没有规定什么具体的内容,这样做的目的是可以互连全世界各种不同的网络接口,例如有线的以太网接口,无线局域网的WIFI接口,而不限定仅使用一种或几种网络接口,因此本质上TCP/IP体系接口只有上面的三层.IP协议是TCP/IP体系结构网际层的核心协议,TCP和UDP是TCP/IP体系结构运输层的两个重要协议,TCP/IP体系结构的应用层包含了大量的应用层协议,例如HTTP,SMTP,DNS,RTP等.

了解完以上我们发现,TCP/IP体系结构并没有对网络接口层有规定内容,这样会导致我们学习计算机网络原理时缺失这一部分的知识,因此我们采取折中的办法,结合OIS体系结构和TCP/IP体系结构,结合出一种五层协议原理体系结构

2.计算机网络体系结构分层的必要性



C如何知道A是传输数据给自己,B,C,D又如何知道这些资源他们应该拒绝呢?

这就很自然地引出了如何标识网络中各主机的问题,也就是主机编址问题,MAC地址其实就是主机在网络中的地址,主机在发送数据时,应该给数据附加上目的地址,当其他主机受到后,根据目的地址和自身地址来决定是否接受数据.

这就是又引出了一个问题: 目的注解如何从信号所表示的一连串比特流中区分地址和数据 . 也就是需要解决分组的封装格式问题,另外对于总线型网络,还会出现下面这种典型的问题,某个时刻总线是空闲的也就是没有主机使用总线来发送数据,片刻之后,主机B和D同时向总线发送数据,这样必然会造成信号碰撞,因此如何协调各主机争用总线,也是必须要解决的问题. 需要说明的是,这种总线型网络结构早就已经淘汰,现在使用的是以以太网交换机将多台主机互连形成的交换式以太网.

那么以太网交换机又是如何实现的? 我们将这些问题,全部划归到数据链路层.

到这里我们发现只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在一个网络上传输了.但是我们每天使用的因特网是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题,还是不能正常工作

看这个例子:

这是一个由三个路由器,4个网络连接起来的计算机网络。这里面由多个网络,我们面临着如何识别各网络以及网络中的各主机(网络和主机共同编址的问题,例如IP地址)相信大家一定听过IP地址

例如这是网络N1中各个设备的IP地址,该类IP地址的前三十个十进制数用来表示网络,第四个十进制数用来标识主机,在本例中,网络N1的网络号为192.168.1,该网络的路由器,笔记本,服务器的网络号都是192.168.1,因为他们都在N1网络上,而第四个十进制数分别为1,2,254 各不相同,用来标识它们自己。同理这是网络N2各设备的IP地址

再看另外一个问题: 源主机和目的主机之间的传输路径往往不止一条,分组从源主机到目的主机可走不同的路径,这样就引出了路由器如何转发分组的问题,以及如何进行路由选择的问题,我们将这些问题全部划归到网络层,至此我们解决了物理层,数据链路层以及网络层各自的问题,则可以实现分组在网络间传输的问题,但是对于计算机网络应用而言这还远远不够,例如假设这台主机中运行着两个与网络通信相关的应用进程,一个是浏览器进程,另一个是qq进程,这台服务器运行着与网络通信相关的服务器进程。某个时刻,主机收到了来自服务器的分组

那么,这些分组是交给浏览器进程处理呢,还是交给qq进程处理呢?

这就引出了我们如何标识与网络通信相关的应用进程,进而解决进程之间基于网络的通信问题 另外如果某个分组在传输过程中出现了误码,或者由于路由器繁忙,导致路由器丢弃分组

换句话说,如果出现传输错误,应该如何处理? 我们将这些问题全部划归到运输层,至此我们解决了物理层,数据链路层,网络层,以及运输层各自的问题,则可以实现进程之间网络的通信。在此基础上,只需指定各种应用层协议,按照协议标准来编写对应的程序。

3.计算机网络体系结果分层思想举例

假设网络拓扑如下所示:

主机属于网络N1,服务器属于网络N2,两个网络通过路由器互连。

我们使用主机中的浏览器来访问Web服务器,当输入网址后(假如是www.baidu.com),主机会向Web服务器发送请求,Web服务器收到请求后

会发回响应的响应

主机的浏览器收到响应后,将器解析为具体的网页解析出来。这只是一个简化的示意过程。

主机和Web服务器交互的过程实际上是主机中的浏览器应用进程与Web服务器应用进程之间基于网络的通信

那么体系结构的各个层次起到了什么作用呢?

从主机端按体系结构自钉向下的顺序来看,应用层按照http协议的规定,构建一个http请求报文

应用层将http报文交付给运输层处理,运输层给Http请求报文添加一个TCP首部,使之成为TCP报文段

该首部的目的主要是为了区分应用进程以及实现可靠传输

运输层将TCP报文段交付给网络层处理,网络层给TCP报文段添加一个IP首部,使之成为IP数据报

该首部的作用主要是为了使得IP数据包可以在互连网上传输,也就是被路由器转发

网络层将IP数据报交付给数据链路层处理。链路层给IP数据包添加一个首部和尾部使之成为帧,假设N1是以太网

该首部的作用主要是为了让帧能够在一段链路上或一个网络上传输

能够被相应的目的主机接收。以太网帧尾部,其作用是为了让目的主机检查所接收到的帧是否有误码。

数据链路层将帧交付给物理层,物理层将帧看作是比特流,由于N1是以太网,它会在比特流首部添加前导码,其作用是为了目的主机做好接受帧的准备

物理层将添加有前导码的比特流变换成相应的信号发送到传输媒体,信号通过传输媒体到达路由器,路由器中的物理层处理这个信号,去掉前导码后,将其交付给数据链路层

交付的其实是帧,数据链路层将帧的首部和尾部去掉后,将其交付给网络层

网络层解析IP数据报的首部,从中提取出目的网络地址,然后查找自身的路由表确定转发端口,以便进行转发,网络层将IP数据包交付给数据链路层,链路层给IP数据包添加一个首部和尾部成为帧,然后传递给物理层,物理层把帧堪称是比特流,由于网络N2是以太网,所以也要加上前导码,然后变换成相应的信号发送到传输媒体,信号通过传输媒体到达Web服务器,到达服务器后,物理层将前导码去掉向上交付帧给数据链路层,数据链路层去掉首部和尾部,向上交付IP数据包,网络层将IP数据报的首部去掉后将其交付给运输层,这实际上交付的是TCP报文段,运输层将TCP报文段的首部去掉后,将其交付给应用层,这实际上交付的是HTTP请求报文。应用层对HTTP请求报文进行解析,然后给主机发回HTTP响应报文。与之前类似,HTTP响应报文需要在Web服务器层层封装,然后通过物理层变换相应的信号,再通过传输媒体传输到路由器,路由器转发该相应报文给主机,主机通过物理层将收到的信号转换为比特流,之后逐层解封,最终取出HTTP响应报文。

4. 计算机网络体系结构中的专用术语

我们将这些专用术语中最具代表性的三个作为分类名称.


之所以称为逻辑通信,是因为这种通信其实并不存在,它只是我们假设出来的一种通信,目的在于方便我们单独研究体系结构某一层时,而不用考虑其他层。

1.你在吗?2. 我在! 3.我知道你在了,现在可以开始传数据了

这里的透明可以类比"人类呼吸空气,但是空气时透明的看不见的"。或者这样理解,我们肯定看得见手机为我们提供的各种服务,但是我们只是享受这些服务,而没有必要弄懂手机的工作原理。

在计算机网络体系结构中,对通信双方所交互的数据包有专门的术语,我们把对等层次之间传递的数据包称为该层的协议数据单元,英文缩写词为PDU。

计算机网络体系结构相关习题











答案: BACDC

时延相关习题




无论有多少个比特,在总时延中只包含一个传播时延,增大比特数量只是增大了发送时延,而传播时延数量不变。






每个分组都有一个分组头,因为分组时报文均分之后+头部,1000里面包含了头部,减去20才能算平均分了多少份

相关推荐
JaguarJack12 小时前
FrankenPHP 原生支持 Windows 了
后端·php·服务端
BingoGo13 小时前
FrankenPHP 原生支持 Windows 了
后端·php
JaguarJack2 天前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo2 天前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack2 天前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay3 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954483 天前
CTF 伪协议
php
BingoGo6 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack6 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo7 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php