计算机网络概述

计算机网络的概念

定义

一些互连的、独立自治的计算机集合。最重要的功能是连通性和资源共享

分类

从网络的作用范围进行分类 广域网 WAN (Wide Area Network) 局域网 LAN (Local Area Network) 城域网 MAN (Metropolitan Area Network) 个人区域网 PAN (Personal Area Network) 从网络的使用者进行分类 公用网 (public network) 专用网 (private network) 接入网 AN (Access Network)

计算机网络的性能指标

基础前置知识

比特(bit)意思是一个二进制数字(0或1)。 B为字节(Byte),b为比特(bit),一字节为8比特,即1B = 8b。 网络技术中的数率指的是数据的传送速率,当数据率较高时,常常在bit/s前面加上字母,比如k = 10310^3,M = 10610^6,G = 10910^9,T = 101210^{12}等。 注意区分网络传输和文件系统中的数据后缀字母。比如一个100MB的文件,这里的M就是2202^{20},传输率为100Mbit/s,这里的M为10610^6

数据率

又叫比特率,指连接在网络上的主机在数字信道上传送数据的速率。 速率的单位是 b/s,或kb/s, Mb/s, Gb/s 等,

带宽

带宽本来是指信号具有的频带宽度,单位是赫(或千赫、兆赫、吉赫等)。 现在“带宽”是数字信道所能传送的“最高数据率”的同义语。

时延

发送时延

发送数据时,数据帧从结点进入到传输媒体所需要的时间。 $$\mathrm{发送时延}\;=\;\frac{\mathrm{数据帧长度}(b)}{\mathrm{发送速率}(b/s)}$$

传播时延

电磁波在信道中需要传播一定的距离而花费的时间。 $$\mathrm{传播时延}\;=\;\frac{\mathrm{信道长度}(米)}{\mathrm{信号在信道上的传输速率}(b/s)}$$

处理时延

交换结点为存储转发而进行一些必要的处理所花费的时间。

排队时延

结点缓存队列中分组排队所经历的时延.

总时延

总时延 = 发送时延+传播时延+处理时延+处理时延

利用率

信道利用率指出某信道有百分之几的时间是被利用的。 网络利用率则是全网络的信道利用率的加权平均值. $$D\;=\;\frac{D_0}{1\;-\;U}$$ D_0D\_0为网络空闲时的时延,DD为当前时延,U为利用率。

计算机网络的体系结构

OSI的七层协议

从上到下为:应用层,表示层,会话层,运输层,网络层,数据链路层,物理层。

协议的概念

控制两个对等实体进行通信而建立的规则、标准或约定。 语法:数据与控制信息的结构或格式 。 语义:需要发出何种控制信息,完成何种动作以及做出何种响应。 同步:事件实现顺序的详细说明。

分组交换技术

提高信道利用率,提高抗毁性 端到端数据流被划分为若干数据块,添加首部形成若干分组,分组首部中携带地址、长度等控制信息 主机的用途是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。 路由器的用途则是用来转发分组的,即进行分组交换的。

存储转发

路由器在输入链路上接收整个分组 存储接收的分组 然后选择输出链路,并以最大传输速率向输出链路转发

优点

高效:动态分配传输带宽,对通信链路是逐段占用。 灵活:以分组为传送单位和查找路由。 迅速:不必先建立连接就能向其他主机发送分组。 可靠:保证可靠性的网络协议;分布式的路由选择协议使网络有很好的生存性。

五层结构(OSI与TCP/IP的折中方案)

应用层

是体系中的最高层,任务是通过应用进程间的交互来完成特定网络应用,把应用层交互的数据单元称为报文。

运输层

负责两台主机中进程之间的通信提供通用的数据传输服务。主要用到以下两种协议

  • TCP:传输控制协议(Transmission Control Protocol),提供面向连接,可靠地数据传输服务,其数据传输的单位是报文段
  • UDP:用户数据报协议(User Datagram Protocol),提供无连接的,尽最大努力的数据传输服务,是不可靠的。其数据传输的单位是用户数据报。

网络层

负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或者用户数据报封装成分组或包进行传送。在TCP/IP体系中使用IP协议,因此分组也叫做IP数据报。

数据链路层

两台主机之间的数据传输,总是在一段一段的链路上进行传送的,需要使用专门的链路层协议,在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点之间的链路上传送帧。每一帧包括数据和必要的控制信息(同步信息,地址信息,差错控制等)。 在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样数据链路层在接收到一个帧后,就可以从中提取出数据部分,上交给网络层。

物理层

物理层上所传数据的单位是比特传递信息所用的载体(比如双绞线,光缆等)不属于物理层,是物理层下面一层。

TCP/IP体系结构(四层结构,IP协议的地位)

物理层

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。

数据通信基础

通信方式

单工通信:能有一个方向的通信而没有反方向的交互:广播和电视节目 半双工通信:通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收):对讲机 全双工通信:通信的双方可以同时发送和接收信息:手机

数字信号的编码概念

将数字数据采用数字信号进行编码 数字信号是离散的电压或电流脉冲序列 常用方法是使用脉冲信号来表示二进制数字字符“0”和“1”

数字信号的编码方式

不归零制:正电平代表1,负电平代表0 归零制:正脉冲代表1,负脉冲代表0 曼彻斯特编码:位周期中心的向上跳代表0,位周期中心的向下跳代表1,也可以反过来定义 差分曼彻斯特编码:在每一位的中心处始终都有跳变,位开始边界有跳变代表0,而位开始边界没有跳变代表1

信道极限容量

信噪比:如果信号相对较强,那么噪声的影响就相对较小,因此信噪比就很重要。 $$\mathrm{信噪比}(dB)=10\log_{10}\left(\frac SN\right)$$ 香农(Shannon)用信息论的理论推导出了带宽受限且有高斯白噪声干扰的信道的极限无差错的信息传输速率。信道的极限信息传输速率 C 可表达为 $$C=W\log_2\left(1+\frac SN\right)$$ W 为信道的带宽(以 Hz 为单位);S 为信道内所传信号的平均功率;N 为信道内部的高斯噪声功率。

传输介质

概念

泛指计算机网络中用于连接各计算机的物理媒体,特指用来连接各个通信处理设备的物理介质。

分类

  • 双绞线:最古老又最常用、价格便宜
  • 光纤:传输带宽大,传输损耗小,中继距离长,抗干扰能力强(雷电和电磁干扰),保密性好(不易被窃听)体积小,重量轻。精确对接困难。
  • 无线电波:通过空间电磁传播、无需安装物理线路
  • 红外线:通过空间电磁传播、无需安装物理线路

多路复用技术

复用是通信技术中的基本概念。

频分

用户在分配在一定频宽后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样的时间占用不同的带宽资源。

时分

将时间划分为一段段等长的时分复用帧,每一个时分复用的用户在每一个TDM帧中占领固定序号的时隙,时分复用的所有用户是在不同的时间占用同样的频带宽度。

码分

更常用的名词是码分多址CDMA,每个用户可以在同样时间使用同样频带进行通信,具有很强的抗干扰性。

宽带接入技术

ADSL

非对称数字用户线,ADSL 技术就是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务。

HFC

光纤同轴混合网HFC,HFC 网是在目前覆盖面很广的有线电视网 CATV 的基础上开发的一种居民宽带接入网。HFC 网除可传送 CATV 外,还提供电话、数据和其他宽带交互型业务。

数据链路层

使用点对点信道的数据链路层

这种信道使用一对一的点对点通信方式。

三个基本问题

封装成帧

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。

透明传输

字节填充或字符填充, 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

差错控制

在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。 误码率与信噪比有很大的关系。 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。 数据链路层广泛使用循环冗余检验 CRC的检错技术。

CRC循环冗余检验

以下运算皆使用二进制的模2运算 CRC冗余码的生成:先进行2n2^n乘M(待发送的数码),相当于在M后面加n个零,M(k位)是原本的数码,然后除以除数P(n+1位)(一般用多项式表示,比如P为1101,用多项式表示就是P(x) = x3+x2+1x^3+x^2+1,就是对应位),得到的余数(n位)就是冗余码,把它拼接到尾部即可。 CRC冗余码的检验:将收到的数码(k+n位)除以事先商定好的除数P(n+1位),得出的余数为R(n位),如果R为0说明没有差错

点对点协议PPP

现在全世界使用得最多的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。 用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。

零比特填充

在发送端,只要发现有 5 个连续 1,则立即填入一个 0。接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除,

使用广播信道的数据链路层

这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

局域网

局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。 局域网具有如下的一些主要优点 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。 提高了系统的可靠性、可用性和残存性。

CSMA/CD协议

CSMA/CD:载波监听多点接入/碰撞检测 “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。 “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。 “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。

使用广播信道的以太网

以太网:施乐公司1975年研制的基带总线局域网,数据率为2.94Mb/s,使用集线器的星形拓扑,传统以太网最初是使用同轴电缆,发展为使用更便宜和更灵活的双绞线。这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器(hub)。

以太网的利用率

发送成功一帧需要占用的时间为T_0+tT\_0+t 要提高信道利用率必须减小ttT_0T\_0的比值 定义参数a:a=fractT_0a=\\frac{t}{T\_0} 在理想化的情况下,以太网上的各站发送数据都不会产生碰撞,即总线一旦空闲就有某一个站立即发送数据。 发送一帧占用线路的时间是 T_0+tT\_0+t,而帧本身的发送时间是 T_0T\_0。于是我们可计算出理想情况下的极限信道利用率 $$S_{max}=\frac{T_0}{T_0+t}=\frac1{1+a}$$

以太网的MAC层

硬件地址又称为物理地址,或 MAC 地址

网络层

网络层概述

基本服务:主机到主机的端到端通信服务 网络层要解决的基本问题:异构网络互联的方法,提供何种类型的网络服务,主机编址,数据转发与路由选择 网络层向上只提供简单灵活的无连接的尽最大努力交付的数据报服务。

IP地址

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一

分类的IP地址(A,B,C,D)

IP的指派范围 一般不使用的特殊IP

IP地址和硬件地址(MAC)

物理地址是数据链路层和物理层使用的地址IP地址是网络层和以上各层使用的地址,是一种逻辑地址(因为IP地址是用软件实现的)。 在发送数据时,数据从高层下到低层,然后才能到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在了MAC帧首部。 IP地址放在IP数据报首部,硬件地址规则放在MAC帧的首部,在网络层以上使用的都是IP地址在数据链路层及以下使用的都是硬件地址

地址解析协议ARP

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。通过地址解析协议ARP即可知道IP地址对应的MAC值。

划分子网(子网掩码)

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。 子网掩码的二进制值高位连续为1时,对应的IP地址值为子网号;子网掩码二进制值连续为0时,对应的IP地址值为主机号。

CIDR地址块

无分类的两级编址,IP地址 ::= {<网络前缀>, <主机号>} CIDR 还使用“斜线记法”,又称为CIDR记法 即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数 128.14.32.0/20=10000000 00001110 00100011 00000111 CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块” 128.14.32.0/20 表示的地址块共有 2122^{12} 个地址(因为斜线后面的 20 是网络前缀的位数。 这个地址块的起始地址是 128.14.32.0 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块” 128.14.32.0/20 地址块的最小地址:128.14.32.0 128.14.32.0/20 地址块的最大地址:128.14.47.255 全 0 和全 1 的主机号地址一般不使用

网际控制报文协议ICMP

为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 ICMP 不是高层协议,而是 IP 层的协议。 ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。 ICMP 差错报告报文:终点不可达 ,源点抑制(Source quench) ,时间超过 ,参数问题,改变路由(重定向)(Redirect)。

应用:ping和tracert命令原理

PING 用来测试两个主机之间的连通性。 PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

因特网的路由选择协议

RIP

路由信息协议(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议。 RIP是一种分布式的基于距离向量的路由选择协议,是因特网的标准协议,其最大优点就是简单。 RIP协议的距离也称为跳数,每经过一个路由器,跳数就加1。RIP认为一个好的路由就是它通过的路由器的数目少,即距离短。 RIP协议要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离。 RIP 协议最大的优点就是实现简单,开销较小。 RIP 协议具有一个特点:好消息传播得快,而坏消息传播得慢。 RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

OSPF

OSPF(Open Shortest Path First) 协议的基本特点: “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。 “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。 是分布式的链路状态协议

运输层

运输层概述

端口

进程的创建和撤销都是动态的,通信的一方几乎无法识别对方机器上的进程,解决这个问题的办法就是在运输层使用协议端口号,简称端口。这种在协议层间的抽象协议端口是软件端口,注意和路由器或交换机上的硬件端口进行区分, 硬件端口是不同硬件设备进行交互的接口,软件接口是应用层的各种协议进程与运输实体进行层间交互的一种地址。

用户数据报协议UDP

功能

只是在IP的数据报服务上加了很少一点功能,这就是复用和分用的功能以及差错检测功能。

特点

  • 无连接:发送数据前不需要建立连接,减少开销和发送数据之前的时延。
  • 尽最大努力交付:也就是不保证可靠交付,主机不需要维持复杂的连接状态表(这里面有很多参数)
  • 面向报文:应用层给UDP多长的报文,UDP就照样发送。
  • 无拥塞控制:网络上出现的拥塞不会使源主机的发送速率降低。但是可能会出现严重的网络拥塞。
  • 支持一对一,一对多,多对一和多对多交互通信。
  • UDP首部开销小:只有8个字节,比TCP的20个字节短很多。

传输控制协议TCP

特点

  • TCP 是面向连接的运输层协议:进程在使用TCP通信之前必须先建立TCP连接。
  • 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一)
  • TCP 提供可靠交付的服务:通过TCP连接传送的数据,无差错不丢失不重复,并且按序到达
  • TCP 提供全双工通信:TCP允许通信双方的应用程序在任何时刻都能发送数据,TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信数据。
  • 面向字节流:TCP中的“流(stream)”指的是流入进程或从进程流出的字节序列。面向字节流的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成一连串无结构的字节流,TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小关系(例如,发送方应用程序交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付上层的应用程序)。这就要求开发者自己做好分包粘包操作。
  • 流量控制:发送方不能淹没接收方
  • 拥塞控制:抑止发送方速率来防止过分占用网络资源

TCP可靠传输

由于TCP发送的报文段是交给IP层发送的,而IP层不是可靠传输,所以TCP自己需要采用适当措施才能使两个运输层之间通信可靠。

停止等待协议

在发送完一个分组后,必须暂时保留已发送的分组的副本。 分组和确认分组都必须进行编号。 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。 使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。 这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest) 。 ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。

改进(连续ARQ协议)

停止等待协议的优点是简单,但缺点是信道利用率太低。 发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。 由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。 接收方一般采用累积确认的方式。 即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。 优点是:容易实现,即使确认丢失也不必重传。 缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。

小知识:TCP报文段首部

滑动窗口协议

(接收方会把自己的接收窗口数值放在窗口字段发送给对方)

超时重传

重传机制是 TCP 中最重要和最复杂的问题之一。 TCP 每发送一个报文段,就对这个报文段设置一次计时器。 只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。 超时计时器的重传时间应当比数据在分组传输的平均往返时间RTT更长一些。

加权平均往返时间

TCP 保留了 RTT 的一个加权平均往返时间 RTT_SRTT\_S(这又称为平滑的往返时间)。 第一次测量到 RTT 样本时,RTT_SRTT\_S 值就取为所测量到的 RTT 样本值。以后每测量到一个新的 RTT 样本,就按下式重新计算一次 RTT_SRTT\_S: $$\mathrm{新的}RTT_S=\left(1-\alpha\right)\times(\mathrm{旧的}RTT_S)+\alpha\times(\mathrm{新的}RTT\mathrm{样本})$$ RFC 2988 推荐的alpha\\alpha值为 1/8,即 0.125。

超时重传时间RTO

RTO 应略大于上面得出的加权平均往返时间 RTTS RFC 2988 建议使用下式计算 RTO: $$RTO=RTT_S+4\times RTT_D$$ RTT_DRTT\_D 是 RTT 的偏差的加权平均值。RFC 2988 建议这样计算 RTT_DRTT\_D:第一次测量时,RTT_DRTT\_D 值取为测量到的 RTT 样本值的一半。在以后的测量中,则使用下式计算加权平均的 RTT_DRTT\_D: $$\mathrm{新的}RTT_D=(1-\beta)\times\left(\mathrm{旧的}RTT_D\right)+\beta\times\leftRTT_S-\mathrm{新的}RTT\mathrm{样本}\right$$ beta\\beta推荐值为0.25

TCP的运输连接管理

运输连接的三个阶段:连接建立数据传送连接释放 运输连接的管理就是使运输连接的建立和释放都能正常地进行 连接建立过程中要解决以下三个问题 要使每一方能够确知对方的存在 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等) 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配 为什么不使用两次握手来建立TCP连接? 三次握手可防止已失效的连接请求报文导致建立无效的TCP连接

应用层

不同的网络应用的应用进程之间,还需要有不同的通信规则,因此在运输层协议上,还需要有应用层协议。

域名系统DNS

是互联网使用的命名系统,用来便于人们使用的机器名字转换为IP地址。

域名结构

DNS采用了层次化树状的命名方法 域名:唯一的层次结构名字 域:名字空间中一个可被管理的划分,还可划分子域 如:mail.cctv.com

文件传输协议FTP

因特网上使用得最广泛的文件传送协议。FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。RFC 959 很早就成为了因特网的正式标准。

工作原理

使用TCP的可靠传输,使用客户服务器方式,一个FTP服务器进程可以同时为多个客户进程提供服务,由两大部分组成,一个主进程,负责接受新的请求。有若干个从属进程,负责处理单个请求。 进行文件传输时,要建立两个并行TCP连接,控制连接和数据连接。

万维网WWW

WWW并非某种特殊的计算机网络,万维网是一个大规模的,联机式的信息储藏所,简称Web。万维网引用连接的方法能非常方便的从互联网上的一个站点访问另一个站点,从而主动获取丰富的知识。

统一资源定位符URL

表示从互联网上得到的资源位置和访问这些资源的方法。 由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。 URL 的一般形式是:

超文本传送HTTP

定义了客户进程(浏览器)怎样向万维网服务器请求万维网文档。

超文本标记语言HTML

要使任何一台计算机都能显示出任何一个万维网服务器上面的画面,就必须解决页面制作的标准化问题。超文本标记语言HTML就是一种制作万维网页面的标准语言。

Cookie能干什么? 授权 购物卡 广告 用户会话状态(Web电子邮件) Cookie和隐私: Web网站可以利用cookie获取你的很多信息 你可能向网站提供姓名和电子邮件地址 搜索引擎根据你的信息进行重定向 广告公司通过网站获取你的信息