1. 互联网概述
1.1 网络、互联网和因特网
- 网络Network
由若干结点(Node)和连接这些结点的链路(Link)组成。 - 互联网(或互连网)
多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网。互联网是网络的网络。 - 因特网Internet
世界上最大的互联网,用户数以亿计,网络数数以百万计。
internet与Internet
- internet(互联网)是一个通用名词,泛指由多个计算机网络互联而成的网络。这些网络之间的通信协议可以是任意的。
- Internet(因特网)是一个专用名词,指当前全球最大的、开放的、由众多网络互联而成的特定计算机网络,采用TCP/IP协议族作为通信的规则,前身是美国ARPANET。
1.2 因特网发展的三个阶段
1.3 互联网服务提供商ISP
我国主要就是三大ISP:电信、联通、移动。
1.4 因特网的标准化工作
1.5 因特网的组成
路由器是一种专用计算机,但不称其为主机。路由器是实现分组交换的关键构件,任务是转发收到的分组。
1.6 三种交换方式
- 电路交换(circuit switching)
- 电话交换机接通电话线的方式称为电路交换
- 分组交换(packet switching)
- 发送方将待发送的数据等长切分构成分组,即packet,然后在各个分组的头部增加首部,即包头。
- 分组包的传输路径可能不同,即走不同的路由路径
- 分组包从源走到目的的顺序会乱
- 发送方:构造分组和发送分组
- 路由器:缓存分组和转发分组(存储转发)
- 接收方:接收分组和还原报文
- 报文交换(message switching)
基本已被分组交换取代。
报文转发的报文不限制大小。需要各个转发节点需要较大缓存空间。
1.7 计算机网络的分类
按交换技术分类
- 电路交换网络
- 报文交换网络
- 分组交换网络
按使用者分类
- 公用网
- 专用网
按传输介质分类
- 有线网络
- 无线网络
按覆盖范围分类
- 广域网WAN
覆盖范围一般为国家,比较 - 城域网MAN
覆盖范围一般为1个城市或几个街区。 - 局域网LAN
一般一个实验室、一个工厂等范围。 - 个域网PAN
一般个人计算机、打印机、手机等,范围很小,10m。
按拓扑结构分类
- 总线型网络
- 星型网络
- 环形网络
- 网状型网络
1.8 计算机网络的性能指标
1.8.1 速率
连接在计算机网络上的主机在数字信道上传送bit的速率,也称比特率或数据率。
bit/s(bps), kb/s, Mb/s…(k, M等均采用103计数)。
例如100MB的数据以100Mb/s的速率发送,需要多少时间。这里就要注意,数据量的M为220,速率的M为106。计算结果应该为8.388608s。实际中,我们可以估算220 == 106。
1.8.2 带宽
信号所包含的各种不同频率成分所占据的频率范围。用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内所能通过的“最高数据率”。
Hz
1.8.3 吞吐量
单位时间内通过某个网络(或信道、接口)的数据量。
带宽为理想,吞吐量为实际。
吞吐量受带宽或额定速率的影响。
一般1Gb/s带宽的网络,实际吞吐量可能为700M。
1.8.4 时延
网络时延由3部分组成:发送时延、传播时延、处理时延。
- 发送时延:分组长度(b)/发送速率(b/s)
这里发送速率由网卡的发送速率、信道带宽、接口速率(min)共同决定。如果主机网卡的发送速率为100Mb/s,哪怕信道带宽和接口速率都可以达到1Gb/s,发送速率也只能为100Mb/s。 - 传播时延:信道长度(m)/电磁波传输速率(m/s)。真空中,电磁波传输速率为光速3108m/s,铜线为2.3108m/s,光纤为2.0*108m/s。
- 处理时延:一般不方便计算。
1.8.5 时延带宽积
传播时延*带宽
将传输信道想象为一个管道,长度为传播时延,横截面积为带宽。时延带宽积就是管道所能容纳的最多bit数。
若发送端连续发送数据,则在第一个bit到达终点时,发送端就已经发送了时延带宽积个bit。
链路的时延带宽积又被称为以bit为单位的链路长度。
1.8.6 往返时间
RTT,Round-Trip Time。
从源主机发送分组,直到源主机收到对端发来的确认分组,这个时间就是RTT。
1.8.7 利用率
- 信道利用率
某信道有百分之几的时间是被利用的,即有数据通过。 - 网络利用率
全网络的信道利用率的加权平均。
信道利用率并非越高越好。
根据排队论,信道利用率越高,该信道的时延越高。如下图分析,
1.8.8 丢包率
丢包率就是分组丢失率,一定时间范围内,传输过程中丢失的分组数量与总分组数量的比率。
- 接口丢包率
- 结点丢包率
- 链路丢包率
- 路径丢包率
- 网络丢包率
网络运维一般关心丢包率,但是用户一般不会感知。
两种场景导致丢包:
- 分组在传输过程中出现误码,被结点丢弃
- 分组到达一台队列已满的分组交换机时被丢弃;在通信量较大时就可能造成网络拥塞。
一般分组交换机不会等到输入缓冲区已满的情况下才开始丢包,一般会根据拥塞控制算法,在输入缓冲区满之前就开始丢包。
因此丢包率反映了网络的拥塞情况,
- 无拥塞时,路径丢包率为0
- 轻度拥塞时,路径丢包率为1% ~ 4%
- 严重拥塞时,路径丢包率为5% ~ 15%
- 路径丢包率更大时,一般应用就无法正常工作了。
1.9 计算机网络体系结构
1.9.1 常见的计算机网络体系结构
1.9.1.1 开放系统互连参考模型,OSI
七层。从上向下分别是,
- 应用层
- 表示层
- 会话层
- 运输层
- 网络层
- 数据链路层
- 物理层
OSI模型是法律上的国际标准,但是因特网流行更早、更加广泛,因特网从1983年开始使用TCP/IP协议族,采用的是TCP/IP体系结构。
1.9.1.2 TCP/IP体系结构
该体系结构是一个4层结构,从上向下分别是,
- 应用层
- 运输层
- 网际层
- 网络接口层
TCP/IP体系结构是事实上的国际标准。
1.9.1.3 OSI与TCP/IP的区别与联系
OSI基本已经是失败的互联网体系结构标准,实现复杂、各层次功能存在重叠等。
- 将OSI的数据链路层和物理层合并,就是TCP/IP体系结构的网络结构层。
- 去掉OSI的会话层和表示层
- TCP/IP在网络层使用IP协议,IP协议的中文含义为网际协议,因此网络层常称为网际层
路由器一般只有网际层和网络接口层。
TCP/IP体系结构不要求网络接口层使用什么介质,可以是网线,可以是无线的WiFi等,因此事实上TCP/IP体系结构为上面的3层。
TCP协议和IP协议是TCP/IP体系结构最为重要的2个协议,该体系结构还包含许多其他协议,统一使用TCP/IP协议族命名,在嵌入式领域,TCP/IP协议族又被称为TCP/IP协议栈,这是因为TCP/IP体系结构与数据结构中的栈的画图表示方式相似。
1.9.1.4 五层原理体系结构
适用于教学,综合了OSI和TCP/IP体系结构的优点,采用一种5层协议的原理体系结构。就是又将TCP/IP体系结构网络接口层分为了物理层和数据链路层。
- 应用层
- 运输层
- 网路层
- 数据链路层
- 物理层
1.9.2 计算机网络体系结构分层的必要性
以五层原理体系结构为例。
计算机网络是个非常复杂的系统。
分层可将庞大而复杂的问题,转化为若干较小的局部问题。
- 物理层
- 如何传递信号
- 数据链路层
- 如何标识网络中的各个主机(主机编址问题,例如MAC地址)
- 如何从信号表示的一连串比特流中区分地址和数据
- 如何协调各主机争用总线
- 网络层
- 如何标识各网络以及网络中的各主机(网络和主机共同编址的问题,例如IP地址)
- 分组传播时路径可能不止一条,路由器如何转发分组,如何进行路由选择
- 运输层
- 如何解决进程之间基于网络的通信问题
主机运行着QQ和浏览器等均需与网络通信相关的进程,服务器也运行着与网络通信相关的进程。某个时刻主机收到一个分组,如何选择应该将分组交给QQ还是浏览器? - 丢包或者误码时,即传输错误时,如何处理
- 如何解决进程之间基于网络的通信问题
- 应用层
- 通过应用进程间的交互完成特定的网络应用
- 支持万维网应用的http协议
- 支持电子邮件的SMTP协议
- 支持文件传输的FTP协议
- 通过应用进程间的交互完成特定的网络应用
总的来说,按照五层原理体系结构,
- 应用层
解决通过应用进程的交互来实现特定网络应用的问题 - 运输层
解决进程之间基于网络通信的问题 - 网络层
解决分组在多个网络上传输和路由的问题 - 数据链路层
解决分组在一个网络(或一段链路)上传输的问题 - 物理层
解决使用何种信号来传输bit的问题
1.9.3 计算机网络体系结构分层思想举例
以一个网址访问为例,主机访问某个网址(对端的服务器),再接收对端发来的响应。本质上发生的是,主机的浏览器应用进程与web服务器的web服务器应用进程之间基于网络的通信。一般经过以下步骤。
-
主机发送侧
- 浏览器应用构建一个HTTP报文
- 运输层给HTTP请求添加一个TCP首部,TCP首部的作用主要是为了区分应用进程,以及实现可靠传输
- 网络层添加一个IP首部,成为一个IP数据报,该首部的作用是使IP数据报可以在互联网上传输,也就是被路由器转发
- 数据链路层添加一个首部和一个尾部,成为一个帧,首部的作用主要是为了让帧能够在一段链路上或一个网络上传输,能够被响应的目的主机接收。尾部(FCS)的作用是校验。
- 物理层将帧看作比特流,并在头部增加前导码,目的是让目的主机做好接收帧的准备。将比特流转换为相应的信号送到传输媒体。
-
路由器
- 物理层将信号变换为比特流,去掉前导码,然后交付给数据链路层,交付的是帧
- 数据链路层将帧的首部和尾部去掉后,交付给网络层,交付的是IP数据报
- 网络层解析IP数据报的首部,从中提取目的网络地址,然后查找自身的路由表,确认转发端口,以便进行转发。网络层将IP数据报交付给数据链路层。
- 数据链路层给IP数据报添加一个首部和一个尾部,成为帧,交付给物理层
- 物理层添加前导码,变换成相应的信号发送给传输媒体,到达web服务器
-
web服务器
- 物理层接收信号,转换为bit流,去掉前导码,得到帧,交付给数据链路层
- 数据链路层将帧的首部和尾部去掉,得到IP数据报,送给网络层
- 网络层将IP数据报的首部去掉后,交付给运输层(TCP报文段)
- 运输层将TCP报文段的首部去掉后,交付给应用层,交付的是HTTP请求报文。
- 应用层解析并处理HTTP请求,给主机发回HTTP响应报文,与上面的过程类似。
1.9.4 计算机网络体系结构中的专用术语
这些专业术语来源于OSI,但也适用于TCP/IP体系结构及五层原理体系结构。
-
实体
任何可发送或接收信息的硬件或软件进程。
- 对等实体:收发双方相同层次中的实体。例如发送方的应用层和接收方的应用层就互为对等实体。发送网卡和接收网卡、浏览器和服务器的apache等等就互为对等实体。
-
协议
协议是控制两个对等实体进行逻辑通信的规则的集合。应用层对等实体在应用层协议的控制下进行逻辑通信,运输层对等实体在运输层协议的控制下进行逻辑通信。。。
注意逻辑通信,这个通信实际不存在,是一种假设出来的通信,目的在于方便研究某一层,而不用考虑其他层。
协议的三要素:
-
语法
定义所交换信息的格式。例如IP数据报的格式。
-
语义
定义通信双方所要完成的操作。例如上面例子中,HTTP的GET请求报文,服务器收到后要执行读取并返回响应。
-
同步
定义通信双方的时序关系。不是时钟同步,而是类似于,TCP采用“三报文握手”建立连接的过程。
-
-
服务
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。
例如,物理层对等实体在物理层协议的控制下向数据链路层提供服务。
要实现本层协议,还需要使用下面一层所提供的服务。
协议是水平的,服务是垂直的。
实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也即,下面的协议对上面的实体是“透明”的。
-
服务器访问点
在同一系统中,相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
例如,数据链路层服务访问点为帧的“类型”字段,网络层的服务访问点为IP数据报首部的“协议”字段,运输层的服务访问点为端口号。
-
服务原语
上层使用下层所提供的服务,必须通过与下层交换一些命令,这些命令称为服务原语。
-
协议数据单元,PDU
-
物理层对等实体进行逻辑通信的数据包称为比特流bit stream。
-
数据链路层对等实体进行逻辑通信的数据包称为帧frame。
-
网络层对等实体进行逻辑通信的数据包称为分组packet。如果采用IP协议,也成为IP数据报。
-
运输层的PDU根据协议而定,TCP报文段(segment)或UDP用户数据报(datagram)。
-
应用层对等实体进行逻辑通信的数据包称为报文message。
-
多个SDU可以合成为一个PDU,一个SDU也可以划分为几个PDU。
-