计算机网络(第7版)读书笔记

Contents

思维导图

感觉不错的思维导图
图片.png
图片.png
图片.png
图片.png
图片.png
图片.png
图片.png

概述

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

21世纪的重要特征:数字化、网络化和信息化,它是一个以网络为核心的信息时代。
三大类网络:电信网络、有线电视网络和计算机网络。
互联网两个重要基本特点:连通性和共享
互联网+:互联网+各个传统行业,其特点就是把互联网的创新成果深度融合于经济社会各领域之中。

互联网概述

网络的网络

计算机网络由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机、集线器、交换机或者路由器等。
网络之间还可以通过路由器互连起来,这就构成了一个覆盖范围更大的计算机网络。这样的网络称为互联网。因此互联网是"网络的网络"。
图片.png
网络把许多计算机连接在一起,而互联网则把许多网络通过路由器连接在一起。与网络相连的计算机称为主机。
图片.png
网络互连并不是把计算机仅仅简单地在物理上连接起来,因为这样做并不能达到计算机之间能够相互交换信息的目的。我们还必须在计算机上安装许多使计算机能够交换信息的软件才行。因此当我们谈到网络互连时,就隐含地表示在这些计算机上已经安装了适当的软件,因而在计算机之间可以通过网络交换信息。

internet和Internet

以小写字母i开始的internet(互联网)是一个通用名词,它泛指由多个计算机网络互连而成的计算机网络。在这些网络之间的通信协议(即通信规则)可以任意选择,不一定非要使用TCP/IP协议。
以大写字母I开始的Internet(互联网或因特网)是一个专有名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定互连网,它采用TCP/IP协议族作为通信的规则,且其前身是美国的ARPANET。

互联网基础结构发展的三个阶段

第一阶段:从单个网络ARPANET向互联网发展。分组交换网ARPANET最初只是一个单个的分组交换网(并不是一个互连的网络),1983年TCP/IP协议成为ARPANET上的标准协议,使得所有使用TCP/IP协议的计算机都能利用互联网相互通信,因而人们就把1983年作为互联网的诞生时间。
第二阶段:建成了三级结构的互联网。1985年起,美国国家科学基金会NSF就围绕六个大型计算机中心建设计算机网络,即国家科学基金网NSFNET。它是一个三级计算机网络,分为主干网、地区网和校园网(或企业网)。
第三阶段:逐渐形成了多层次ISP结构的互联网。ISP就是一个进行商业活动的公司,因此ISP又常译为互联网服务提供商。

现在的互联网已不是某个单个组织所拥有而是全世界无数大大小小的ISP共同所拥有的。
ISP三个不同层次:主干ISP、地区ISP和本地ISP。
图片.png
互联网交换点IXP的主要作用就是允许两个网络直接相连并交换分组,而不需要再通过第三个网络来转发分组。

互联网的组成

互联网的拓扑结构虽然复杂,并且在地理上覆盖了全球,但从其工作方式上看,可以划分为两大块:
(1)边缘部分:由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
(2)核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
图片.png
在网络边缘的端系统之间的通信方式通常可以划分为两大类:客户-服务器方式(C/S方式)和对等方式(P2P方式)。

互联网的核心部分

网络核心部分是互联网中最复杂的部分,在网络核心部分起特殊作用的是路由器,它是一种专用计算机。路由器是实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
1、电路交换的主要特点
图片.png
从通信资源的分配角度来看,交换就是按照某种方式动态地分配传输线路的资源。
这种必须经过建立连接(占用通信资源)=>通话(一直占用通信资源)=>释放连接(归还通信资源)三个步骤的交换方式成为电路交换。
电路交换的一个重要特点就是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源。
图片.png
2、分组交换的主要特点
图片.png
当我们讨论互联网的核心部分中的路由器转发分组的过程中,往往把单个的网络简化成一条链路,而路由器成为核心部分的结点。
图片.png
分组交换在传送数据前不必占用一条端到端的链路的通信资源。分组在哪段链路上传送才占用这段链路的通信资源。分组到达一个路由器后,先暂时储存下来,查找转发表,然后从一条合适的链路转发出去。

计算机网络的类别

计算机网络的定义

计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。

几种不同类别的计算机网络

按照网络的作用范围分类:广域网WAN、城域网MAN、局域网LAN、个人区域网PAN。
按照网络的使用者进行分类:公用网、专用网。

计算机网络的性能

计算机网络的性能指标

1、速率
网络技术中的速率指的是数据的传送速率,它也称为数据率或比特率。
当提到网络的速率时,往往指的是额定速率或标称速率,而并非网络实际上运行的速率。
2、带宽
带宽有两种不同的意义:
(1)带宽本来是指某个信号具有的频带宽度。
(2)在计算机网络中,带宽表示单位时间内网络中某信道所能通过的"最高数据率"。
3、吞吐量
吞吐量表示在单位时间内通过某个网络(或信道、接口)的实际的数据量。
4、时延
时延是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。
发送时延:主机或路由器发送数据帧所需要的时间。
传播时延:电磁波在信道中传播一定的距离需要花费的时间。
5、时延带宽积
时延带宽积=传播时延 x 带宽相乘
6、往返时间RTT
互联网上的信息不仅仅是单向传输而是双向交互的。
7、利用率
信道利用率:某信道有百分之几的时间是被利用的。
网络利用率:全网络的信道利用率的加权平均值

计算机网络的体系结构

具有五层协议的体系结构

OSI的七层协议体系结构的概念清楚,理论也比较完整,但它既复杂又不实用。
TCP/IP体系结构却得到了广泛的应用
综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构。
图片.png
五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是TCP/IP四层体系结构。
(1)应用层(application layer)
应用层的任务是通过应用进程间的交换来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。
(2)传输层(transport layer)
运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。
运输层主要使用以下两种协议:
* 传输控制协议TCP(Transmission Control Protocol)---提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段。
* 用户数据报协议UDP(User Datagram Protocol)---提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。

(3)网络层(network layer)
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把传输层产生的报文段或用户数据报封装成分组或包进行传送。
网络层的另一个任务就是要选择合适的路由器,使源主机运输船所传下来的分组,能够通过网络中的路由器找到目的主机。
(4)数据链路层(data link layer)
在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
(5)物理层(physical layer)
在物理层上传输的单位是比特。发送方发送1或者0时,接收方应当收到1或者0,而不是0或者1。因此物理层要考虑用多大的电压代表1或者0,以及接收方如何识别出发送方所发送的比特。
图片.png

实体、协议、服务和服务器访问点

当研究开放系统中的信息交换时,往往使用实体(entity)这一较为抽象的名字表示任何可以发送或者接收信息的硬件或软件进程。
协议是控制两个对等实体(或多个实体)进行通信的规则的集合。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。
在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常成为服务访问点SAP(Service Access Point)。

TCP/IP的体系结构

图片.png
TCP/IP协议可以为各种各样的应用提供服务,同时TCP/IP协议也允许IP协议在各式各样的网络构成的互联网上运行。
图片.png

物理层

物理层的基本概念

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层的主要任务可以描述为确定与传输媒体的接口有关的一些特性:机械特性、电气特性、功能特性、过程特性。
数据在计算机内部多采用并行传输方式,但数据在通信线路(传输媒体)上的传输方式一般都是串行传输(处于经济上的考虑),即逐个比特按照时间顺序传输。因此物理层还要完成传输方式的转换。

数据通信的基础知识

数据通信系统的模型

一个数据通信系统可划分为三大部分:源系统(或发送方、发送端)、传输系统(或传输网络)和目的系统(或接收方、接收端)。
图片.png
源系统包括:
* 源点
源点设备产生要传输的数据。
* 发送器
通常源点生成的数字比特流要通过发送器编码后才能够在传输系统中进行传输。

目的系统包括
* 接收器
接收传输过来的信号,并把它转换为能够被目的设备处理的信息。
* 终点
终点设备从接收器获取传送来的数字比特流,然后把信息输出。

在源系统和目的系统之间的传输系统可以是简单的传输线,也可以是连接在源系统和目的系统之间的复杂网络。

通信的目的是传送消息(messgae)。
数据(data)是运送消息的实体。
信号(signal)是数据的电气或电磁的表现。

在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形就称为码元。

有关信道的几个基本概念

信道一般都是用来表示向某一个方向传送信息的媒体。
从通信的双方信息交互的方式来看,可以有以下三种基本方式:
(1)单向通信,又称为单工通信。
(2)双方向交替通信,又称为半双工通信。
(3)双向同时通信,又称为全双工通信。

常用编码方式
图片.png
基本的带通调制方法
图片.png

信道的极限容量

数字通信的优点:虽然信号在信道上传输时会不可避免地产生失真,但在接收端只要我们从失真的波形中能够识别出来原来的信号,那么这种失真对通信质量就没有影响。
码元传输的速率越高,或信号传输的距离越远,或噪声干扰越大,或传输媒体质量越差,在接收端的失真就越严重。
图片.png
限制码元在信道上的传输速率的因素有两个:
(1)信道能够通过的频率范围
在任何信道中,码元传输的速率是有上限的,传输速率超过此上限,就会出现严重的码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。
(2)信噪比
噪声存在于所有的电子设备和通信信道中。
信噪比就是信号的平均功率和噪声的平均功率之比,常记为S/N,并用分贝(dB)作为度量单位。
图片.png
香农公式表明,信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高。
还可以用编码的方法让每一个码元携带更多比特的信息量来提高信息的传输速率。

物理层下面的传输媒介

传输媒体也成为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。
两大类传输媒介:导引型传输媒介和非导引型传输媒介。

导引型传输媒介
  • 双绞线
    图片.png
  • 同轴电缆
    图片.png
  • 光缆
    光纤通信就是利用光导纤维传递光脉冲来进行通信。有光脉冲相当于1,而没有光脉冲相当于0。
    图片.png
非导引型传输媒体

当通信距离很远时,敷设电缆既高贵又费时。但利用无线电波在自由空间的传播就可较快地实现多种通信。由于这种通信方式不使用各种导引型传输媒体,因此就将自由空间称为非导引型传输媒体。
传统的微波通信主要有两种方式:地面微波接力通信和卫星通信

信道复用技术

频分复用、时分复用和统计时分复用

频分复用的所有用户在同样的时间占用不同的带宽资源。
时分复用的所有用户在不同的时间占用同样的带宽资源。

波分复用

波分复用WDM(Wavelength Division Multiplexing)就是光的频分复用。
图片.png

码分复用

各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。

宽带接入技术

用户要连接道互联网,必须先连接到某个ISP,以便获取上网所需的IP地址。

ADSL技术

非对称数字用户线ADSL技术是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带数字业务。
当ADSL启动时,用户线两端的ADSL调制解调器就测试可用的频率、各子信道受到的干扰情况,以及在每一个频率上测试信号的传输质量。
ADSL不能保证固定的数据率。
基于ADSL的接入网由以下三大部分组成:数字用户接入复用器DSLAM,用户线和用户家中的一些设施。
图片.png

光纤同轴混合网(HFC网)

图片.png

FTTx技术

多种宽带光纤接入方式,称为FTTx。x可代表不同的光纤接入地点。
限制已有多种不同的FTTx。光纤到户FTTH,光纤到路边FTTC,光纤到小区FTTZ,光纤到大楼FTTB,光纤到楼层FTTF,光纤到办公室FTTO,光纤到桌面FTTD。

数据链路层

数据链路层使用的信道主要有点对点信道和广播信道。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。
图片.png

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

数据链路和帧

所谓链路就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他交换点。
当需要在一条链路上传送数据时,除了必须有一条物理线路外,还必须有一条必要的通信协议来控制这些数据的传输。把实现这些协议的硬件和软件加到链路上,就构成了数据链路
点对点信道的数据链路层的协议数据单元:帧
网络层协议数据单元:IP数据包(或简称为数据报、分组或包)
点对点信道的数据链路层在进行通信时的主要步骤:
1、结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
2、结点A把封装好的帧发送给结点B的数据链路层。
3、若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧。

三个基本问题

数据链路层的协议有许多种,但有三个基本问题则是共同的:
* 封装成帧
封装成帧就是在一段数据数据的前后分别添加首部和尾部,这样就构成了一个帧。
每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限---最大传送单元MTU。
图片.png
* 透明传输
透明:某一个实际存在的事物看起来却好像不存在一样。
发送端的数据链路层在数据中出现控制字符"SOH"或"EOT"的前面插入一个转义字符"ESC"(16进制编码为1B,二进制编码为00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充字符填充。
图片.png
* 差错检测
比特差错:比特在传输的过程中可能会产生差错,1可能会变成0,而0可能会变成1。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC的检错技术。

点对点协议PPP

PPP协议的特点

PPP协议是用户计算和和ISP进行通信时所使用的数据链路层协议。
图片.png
PPP协议应满足的要求:简单、封装成帧、透明性、多种网络层协议、多种类型链路、差错检测、检测连接状态、最大传送单元、网络层地址协商、数据压缩协商。

PPP协议的帧格式

图片.png
零比特填充
图片.png

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

局域网的数据链路层

局域网的主要特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
图片.png
适配器的作用
计算机与外界网络的连接是通过通信适配器进行的。
适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。
图片.png

CSMA/CD协议

在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,进行的是半双工通信。
CSMA/CD(多点接入载波监听/冲突检测)协议要点:多点接入说明是总线型网络,计算机以多点接入的方式连接在一根总线上,协议的实质是载波监听碰撞检测
载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。
碰撞检测就是边发送边监听。就是网卡边发送数据边检测新岛上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。
CSMA/CD协议的工作过程:
* 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入网卡的缓存中,但在发送之前,必须先检测信道。
* 检测信道:不停地检测信道,一直等待信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小时间间隔),就发送这个帧。
* 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
* 发送成功:在争用期内一直未检测到碰撞,这个帧发送成功
* 发送失败:在争用期内检测到碰撞,这是立即停止发送数据,并按规定发送认为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。若重传16次仍不能成功,则停止重传向上报错。

以太网每发完一帧,一定要把已经发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个帧重传一次。

以太网的MAC层

1、MAC层的硬件地址
在局域网中,硬件地址又称为物理地址或MAC地址。
名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。
MAC地址实际上就是适配器地址或适配器标识符EUI-48。当这块适配器插入或者嵌入到某台计算机后,适配器上的标识符就成为这台计算机的MAC地址了。
适配器有过滤功能。适配器从网络上收到的每一个MAC帧都先用硬件检查MAC帧的目的地址。如果是发往本站的帧则收下,然后在进行其他处理。否则就丢弃,不再进行其他处理。
发往本站的帧包括:
* 单播帧(一对一)
* 广播帧(一对全体)
* 多播帧(一对多)

以太网适配器还可以设置为一种特殊的工作方式:混杂方式。工作在此方式下的适配器只要"听到"有帧在以太网上传输就都悄悄的接收下来,而不管这些帧发往哪个帧。
网络工具嗅探器(Sniffer)就使用了设置为混杂方式的网络适配器。
2、MAC帧的格式
常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准,另一种是IEEE的802.3标准。
图片.png

以太网交换机的特点

以太网交换机实质上就是一个多接口网桥,和工作在物理层的转发器和集线器有很大差别,以太网交换机每个接口都与一个单个计算机或另一个集线器相连。一般都工作在全双工方式。交换速率较高。利用以太网交换机,将若干个工作站划分为几个虚拟局域网,即VLANn。在虚拟局域网上的每一个战都能听到同一虚拟网上其他成员所发出的广播。相互通信的主机都是独占传输媒体,无碰撞地传输数据。

以太网交换机的自学习能力

图片.png

虚拟局域网

虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。
图片.png

高速以太网

速率达到或超过100Mb/s的以太网称为高速以太网。

100BASE-T 以太网——快速以太网
  • 100BASE-T是在双绞线上传送100Mb/s基带信号的星形拓扑以太网。
  • 仍使用IEEE802.3的CSMA/CD协议。
  • 它又称为快速以太网(Fast Ethernet)。
  • 用户只需更换一张适配器,再配上一个100Mb/s的集线器,就可很方便地由10BASE-T以太网直接升级到100BASE-T,而不需要改变网络的拓扑结构。
吉比特以太网——千兆以太网
  • 吉比特以太网又称为千兆以太网。
  • 吉比特以太网可用作现有网络的主干网,也可在高带宽(即高速率)的应用场合中用来连接工作站和服务器。
  • 吉比特以太网的物理层使用以下两种成熟的技术:
    (1)来自现有的以太网。
    (2)ANSI制定的光纤通道FC(Fibre Channel)。
  • 吉比特以太网的标准IEEE802.3z有以下几个特点:
    (1)允许在1Gb/s下全双工和半双工两种工作方式。
    (2)使用IEEE802.3协议规定的帧格式。
    (3)在半双工方式下使用CSMA/CD协议,而在全双工方式下不需要使用CSMA/CD协议。
    (4)与10BASE-T和100BASE-T技术向后兼容。
10吉比特以太网——万兆以太网
  • 10吉比特以太网又称为万兆以太网。
  • 10GE并非将吉比特以太网的速率简单地提高到10倍。
  • 由于10GE的出现,以太网的工作范围已经从局域网扩大到城域网和广域网,从而实现了端到端的以太网传输。这种工作方式的好处是:
    (1)以太网是一种经过实践证明的成熟技术,无论是因特网服务提供者ISP还是端用户都很愿意使用以太网。
    (2)以太网的互操作性也很好,不同厂商生产的以太网都能可靠地进行互操作。
    (3)在广域网中使用以太网时,其价格大约只有SONET的五分之一和ATM的十分之一,以太网还能够适应多种的传输媒体,如铜缆、双绞线和各种光缆,这就使具有不同传输媒体的用户在通信时不需重新布线。
    (4)端到端的以太网连接使帧的格式全都是以太网的格式,而不需要再进行帧格式的转换,这就简化了操作和管理。
  • 10吉比特以太网的物理层使用以下两种新开发的技术:
    (1)局域网物理层 LAN PHY。
    (2)可选的广域网物理层 WAN PHY。
  • 10吉比特以太网的特点:
    (1)10GE的帧格式与10Mb/s、100Mb/s和1Gb/s以太网的帧格式完全相同。
    (2)由于传输速率高,10GE不再使用铜线而只使用光纤作为传输媒体。
    (3)10GE只工作在全双工方式,因此不存在争用问题,也不使用CSMA/CD协议。
使用高速以太网进行宽带接入
  • 高速以太网接入的一个重要特点:是它可以提供双向的宽带通信,并且可以根据用户对带宽的需求灵活地进行带宽的升级。
  • 高速以太网接入可以采用多种方式,其中一种方式——光纤到大楼FTTB
    (1)每个大楼的楼口都安装一个100Mb/s的以太网交换机(对通信量不大的楼房也可以使用10Mb/s的以太网交换机)。
    (2)然后根据情况在每一楼层安装一个10Mb/s或100Mb/s的以太网交换机。
    (3)各大楼的以太网交换机通过光纤汇接到光结点汇接点。
    (4)若干个光结点汇接点再通过吉比特以太网汇接到一个高速汇接点(称为GigaPoP)。
    (5)然后通过城域网连接到因特网的主干网。
    图片.png

网络层

网络层提供的两种服务

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络层不提供服务质量的承诺。
图片.png

网际协议IP

与IP协议配套使用的还有三个协议:
* 地址解析协议ARP(Address Resolution Protocol)
* 网际控制协议ICMP(Internet Control Message Protocol)
* 网际组管理协议IGMP(Internet Control Management Protocol)
图片.png

虚拟互连网络

将网络互连起来需要一些中间设备,根据中间设备所在的层次:
* 物理层使用的中间设备叫做转发器
* 数据链路层使用的中间设备叫做网桥或桥接器
* 网络层使用的中间设备叫做路由器
* 在网络层以上使用的中间设备叫做网关。

虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。
互联网可以由多种异构网络互连组成。

分类的IP地址
IP地址及其表示方法

整个的互联网就是一个单一的、抽象的网络。
IP地址现在由互联网名字和数字分配机构ICANN进行分配。
IP地址的编址方法共经过了三个历史阶段:
(1)分类的IP地址
(2)子网的划分
(3)构成超网
地址格式为:IP地址=网络地址+主机地址
* 网络地址标志主机或者路由器所连接的网络,一个网络号在整个互联网范围内必须是唯一的。
* 主机地址用于识别该网络中的主机或者路由器

IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
图片.png

常用的三种类别的IP地址

图片.png
图片.png
图片.png

IP地址与硬件地址

从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
图片.png
在IP层抽象的互联网上只能看到IP数据报。
路由器只根据目的站的IP地址的网络号进行路由选择。
在局域网的链路层,只能看见MAC帧。

地址解析协议ARP

ARP协议可以根据已经知道的一个机器(主机或路由器)的IP地址,找出其相对应的硬件地址。
图片.png
由于是IP协议使用了ARP协议,因此通常就把ARP协议划归网络层。
网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。
地址解析协议ARP在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
每一台主机都设有一个ARP高速缓存表(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。
图片.png
图片.png
图片.png
当路由器收到一个待转发的数据报,在从路由表得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成硬件地址(必须使用ARP),并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。

分组转发算法:
图片.png

划分子网和构造超网

划分子网
从两级IP地址到三级IP地址

IP地址的利用率有时很低
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
两级IP地址不够灵活
为解决上述问题,从1985年起在IP地址中又增加了一个"子网号字段",使两级IP地址变为三级IP地址,这种做法叫做划分子网(subnetting),或子网寻址或子网路由选择
划分子网的基本思路如下:
(1)一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网只是单位内部的事情,本单位以为无法得知这个网络具体的子网数及组成,这个单位对外仍然只表现为一个网络。
(2)划分子网的方法是从网络的主机号借用若干位作为子网号subnet-id,与此同时主机号也减少相应位数(总位数32位不变)。由此两级IP地址可变为三级IP地址: IP地址 ::= {<网络号>,<子网号>,<主机号>}
(3)从外部网络发送给本单位某主机的IP数据报仍根据目的网络号找到连接在本单位网络上的路由器。但随后在本网络内部,路由器根据目的网络号和子网号找到目的子网,将IP数据报交付目的主机。
注意:划分子网只是把IP地址的主机号这部分进行再划分,并不改变IP地址原来的网络号~
图片.png
当没有划分子网时,IP地址是两级结构。划分子网后IP地址就变成了三级结构。划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。
######子网掩码
子网掩码是一个网络或一个子网的重要属性,路由器的路由表中除了有目的网络地址,还有该网络的子网掩码,这是现在因特网的标准规定~
将三级IP地址的子网掩码(根据子网划分而变)和收到的数据报的目的IP地址逐位“与”(AND),就可得出所要找的子网的网络地址~即主机号对应的位置为0,其他位均为1。

使用子网时的分组转发

在划分子网的情况下,路由器转发分组的算法如下:
图片.png

五分类编址CIDR(构造超网)

CIDR的两个特点:
* CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,能更加有效的分配IPV4的地址空间。CIDR把32位的IP地址划分为前后两个部分。前面部分是网络前缀,用来指明网络,后面部分用来指明主机。 CIDR使IP地址从三级编址又回到了两级编址,但这已是无分类的两级编址IP 地址 ::={<网络前缀>,<主机号>}
CIDR还使用"斜线记法",或称为CIDR记法,即在IP地址后面加上斜线"/",然后写上网络前缀所占的位数。
* CIDR把网络前缀相同的连续的IP地址组成一个"CIDR地址块"。CIDR使用的地址掩码也可继续称为子网掩码。斜线记法中,斜线后面的数字就是地址掩码中1的个数。
图片.png
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合,也称为构成超网
图片.png

网际控制报文协议ICMP

为了更有效的提高ip数据报的成功转发和交付的效率,在网际层使用了icmp网际控制报文协议,这个协议允许主机和路由器提供差错和异常情况的报告,icmp不是高层协议,而是网际层的协议,加在ip数据报中一起发出。
ICMP报文通过ip报文发送,ICMP报文当做是ip数据包的数据部分,而IP数据包又被放倒了以太网的数据帧中的数据区。
图片.png
ICMP的报文种类有ICMP差错报文和ICMP询问报文:
差错报告报文有5种:
(1)终点不可以到达:当路由器和主机不能交付的时候:
(2)源点抑制:当路由器由于网络拥塞而丢弃的时候
(3)时间超过:当路由器收到生存时间为0的数据报的时候
(4)参数问题:当目的主机发现收到的数据报首部有问题的时候
(5)改变路由:路由器把改变你的路由交付主机,告诉下一次的主机

两种ICMP询问报文:
(1)ICMP请求与回答报文:主机和路由器向主机发送一个ICMP请求报文,目的主机发送一个ICMP回答报文,用来测试两方能否互相通信
(2)ICMP时间戳请求与回答报文:ICMP时间戳报文请某个主机和路由器回答当前的时间,ICMP回答时间戳是一个32位的字段,其中写入的整数表示从1900/1/1到现在的秒数

互联网的路由选择协议

有关路由选择协议的几个基本概念

理想的路由算法:算法必须是正确和完整的、算法在计算上应简单、算法应能适应通信量和网络拓扑的变化、算法应具有稳定性、算法应该是公平的、算法应是最佳的。
两大类路由选择策略:静态路由选择策略和动态路由选择策略
两大类路由选择协议:内部网关协议和外部网关协议
自治系统之间的路由选择也叫做域间路由选择,而在自治系统内部的路由选择叫做域内路由选择。
图片.png

内部网关协议RIP

RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议。RIP是一种分布式的基于距离向量的路由选择协议。
RIP协议要求网络中每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
RIP协议将“距离”定义为从一路由器到直接连接的网络的距离定义为1。RIP协议的"距离"也称为"跳数"。
RIP允许一条路径最多只能包含15个路由器。"距离"等于16时相当于不可达。可见RIP只适用于小型互联网。
RIP不能在两个网络之间同时使用多条路由。RIP选择一条具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

RIP协议的特点:
1)仅和相邻路由器交换信息。
2)路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
3)按固定的时间间隔交换路由信息,例如每隔30秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。

路由表中最主要的信息:到某个网络的距离(即最短距离),以及应经过的下一跳地址。
路由表更新的原则是找出到每个目的网络的最短距离。这种更新算法又称为距离向量算法。
当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。

内部网关协议OSPF

OSPF这个协议的名字是"开放最短路径优先"。
OSPF最主要的特征就是使用分布式的链路状态协议.和RIP协议相比,OSPF的三个要点和RIP的都不一样
* 向本自治系统中所有路由器发送信息.这里使用的方法是洪泛法.
* 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息.所谓”链路状态”就是说明本路由器都和那些路由器相邻,以及该链路的”度量”.OSPF将这个”度量”用来表示费用,距离,时延,宽带,等等.这些由网络管理人员决定.
* 只有当链路状态发生变化时,路由器才会向所有路由器用洪泛法发送此信息.而不像RIP那样,不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息

OSPF的链路状态数据库能较快地进行更新.即OSPF的更新过程收敛得比RIP更快.
OSPF不用UDP而是直接用IP数据报传送.

外部网关协议BGP

BGP是可靠的,基于TCP(Port Numer 179)进行建立和维护连接,并且具有并使用TCP的滑动窗口的机制来更新路由表,可以支持一次性的大量路由条目的更新.
BGP是增量更新,同时也是触发更新;周期性的发送Keepalive信息来验证TCP连接是否正常,以确保对方的路由器状态是正常的。

BGP的使用原则
1. 多条路径时,BGP Speaker只选最优的给自己使用
2. BGP Speaker只把自己的路由通告给邻居
3. 从EBGP获得的路由会向它所有BGP邻居通告(EBGP/IBGP)
BGP Speaker从IBGP获得的路由不会通告给它的IBGP邻居(BGP的水平分割)IGP是基于端口的水平分割;而IBGP是基于邻居的水平分割。水平分割的作用是避免产生路由环路。
4. BGP Speaker从IBGP获得的路由是否通告给它的EBGP邻居要服从IGP和BGP是否同步来决定
5. 邻居关系一建立,BGP Speaker就把自己所有的BGP最优路由通告给新的邻居

路由器的构成

路由器是一种具有多个输入端扣和多个输出端口的专用计算机,其任务是转发分组。
图片.png
路由器结构可分为两大部分:路由选择和分组转发
路由选择部分也叫做控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选择的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
分组转发由三部分组成:交换结构,一组输入端口和一组输出端口。
交换结构又称为交换组织,它的作用就是根据转发表对分组就行处理。
图片.png

IPv6

IPv6的基本首部

图片.png
IPV6数据报由两大部分组成,即基本首部和后面的有效载荷。有效载荷也称为净负荷。有效载荷允许有零个或者多个扩展首部,再后面是数据部分。
图片.png

IPV6的地址

IPV6数据报的目的地址可以是三种基本类型地址之一:单播、多播、任播。

IPv6地址为128位长,但通常写作8组,每组为四个十六进制数的形式。例如:

2001:0db8:85a3:08d3:1319:8a2e:0370:7344

如果四个数字都是零,可以被省略。例如:

2001:0db8:85a3:0000:1319:8a2e:0370:7344

2001:0db8:85a3::1319:8a2e:0370:7344

图片.png

ICMPv6

和IPV4一样,IPv6也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。因此IPv6也需要使用ICMP来反馈一些差错信息。新的版本称为ICMPv6。地址解析协议ARP和网际组管理协议IGMP的功能都已被合并到ICMPv6中。
图片.png

IP多播

能够运行多播协议的路由器称为多播路由器。
在互联网上进行多播就叫做IP多播。IP多播所传送的分组需要使用多播IP地址。
图片.png
多播地址仅能用于目的地址,不能用于源地址。
IP多播可以分为两种。一种是只在本局域网上进行硬件多播,另一种则是在因特网的范围进行多播。
IP多播需要两种协议:网际组管理协议(IGMP)和多播路由选择协议

虚拟专用网VPN和网络地址转换NAT

一个机构能申请到的IP地址数远远小于本机构所拥有的主机数。一个机构内也不需要把所有的主机接入到外部的互联网。
如果任意选择一些IP地址作为本机构内部使用的本地地址,那么在某种情况下可能会引起一些麻烦。RFC1918指明了一些专用地址,在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
图片.png
采用这样的专用的IP地址的互连网络称为专用互联网和本地互联网,或专用网。专用IP地址也叫做可重用IP地址。

图片.png
虚拟私有网络(VPN)隧道是通过Internet隧道技术将两个不同地理位置的网络安全的连接起来的技术。当两个网络是使用私有IP地址的私有局域网时,它们之间是不能相互访问的,这时使用隧道技术就可以使得两个子网内的主机进行通讯。

如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
图片.png

网络地址转换NAT

NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。

原理:
NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。

NAT有三种类型:
* 静态NAT: 一对一映射,每台主机对应一个真实的IP地址
* 动态NAT: 映射一个未注册IP地址到注册IP地址池中的一个注册IP地址.
* PAT: 通过端口区分内网主机,将多个私网IP地址映射到一个公网IP

NAPT与 动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。

NAT协议的应用
  • 数据伪装: 可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。
  • 端口转发: 当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。
  • 负载平衡: 目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。
  • 失效终结: 目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上。
  • 透明代理: NAT可以把连接到因特网的HTTP连接重定向到一个指定的HTTP代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让他们的客户配置他们的浏览器支持代理连接。

运输层

运输层协议概述

进程之间的通信

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
从IP层来说,通信的两端是两台主机。但真正进行通信的实体是在主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据。因此严格来讲,两台主机进行通信就是两台主机中的应用进程互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。
运输层重要的功能:复用(multiplexing)和分用(demultiplexing)
网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
运输层要对收到的报文进行差错检测,网络层中IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。
根据应用程序的不同需求,运输层需要有两种不同的运输协议。即面向连接的TCP和无连接的UDP。

运输层的两个主要协议

(1)用户数据报协议UDP(User Datagram Protocol)[RFC 768]
(2)传输控制协议TCP(Transmission Control Protocol)[RFC793]
按照OSI的术语,两个对等运输实体在通信时传送的数据单位叫做运输协议数据单元TPDU。但在TCP/IP体系中,则根据所使用的协议是TCP或UDP,分别称之为TCP报文段或UDP用户数据报。
UDP在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP报文后,不需要给出任何确认。
TCP提供面向连接的服务。在数据传输之前必须先建立连接,数据传送结束后要释放连接。
图片.png

运输层的端口

复用:应用层所有的应用进程都可以通过运输层再传送到IP层(网络层)
分用:运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程。
虽然通信的终点是应用进程,但只要把所传送的报文交到目的主机的某个合适的目的端口,剩下的工作(即最后交付目的进程)就由TCP或UDP来完成。
在协议栈层间抽象的协议端口是软件端口。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
运输层端口号分为两大类:
图片.png

用户数据报协议UDP

UDP概述

(1)UDP是无连接的,减少了开销和发送数据之前的时延。
(2)UDP使用最大努力交付,不保证可靠交付。
(3)UDP是面向报文的,对应用程序交下来的报文,在添加首部之后直接交付给IP层。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
(4)UDP没有拥塞控制,对于实时应用很有效。
(5)UDP支持一对一、一对多、多对一、多对多的交互通信。
(6)UDP首部开销小,只有8个字节,比TCP的20个字节的首部要短。

UDP的首部格式

用户数据报UDP有两个字段:数据字段和首部字段。
图片.png
当运输层从IP层收到UDP数据报时,根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点---应用进程。如果接收方UDP发现收到的报文中目的端口号不正确,就丢弃该报文,并由网际控制报文协议ICMP发送"端口不可达"差错报文给发送方。
伪首部不是UDP用户数据报真正的首部,只是在计算检验和时,临时添加在UDP用户数据报的前面,得到一个临时的UDP用户数据报,伪首部仅仅是为了计算检验和。
IP数据报的检验和只检验IP数据报的首部,但是UDP的检验和是把首部和数据部分一起都检验。

控制传输协议TCP概述

TCP最主要的特点
  • 面向连接型的传输协议
  • 仅支持单播传输
  • 传输单位为数据段
  • 仅一种TPDU格式
  • 支持全双工传输
  • TCP连接是基于字节流的,而非报文
  • 每次发送的TCP数据段大小和数据段数都是可变的
TCP的连接

TCP把连接作为最基本的抽象。TCP连接的端点叫做套接字或插口
RFC793定义:端口号拼接到IP地址即构成了套接字。
套接字 socket=(IP地址:端口号)
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
TCP连接 ::= {socket1,socket2} = {(IP1:port1),(IP2:port2)}

可靠传输的工作原理

TCP发送的报文段是交给IP层传送的。但IP层只能提供尽最大努力服务,也就是说TCP下面的网络所提供的是不可靠的传输。因此,TCP必须采用适当的措施才能使得两个传输层之间的通信变得可靠。

停止等待协议

全双工通信的双方既是发送方也是接收方。
停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
无差错情况
图片.png
出现差错
超时重传:A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组。
要实现超时重传,就要在每发送完一个分组时设置一个超时计时器。
* A在发送完一个分组后,必须暂时保留已发送的分组的副本。
* 分组和确认分组都必须进行编号
* 超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。

确认丢失和确认重传
若B所发送的对M1的确认丢失了,A在超时计时器到期后就要重传M1。此时B应采取两个动作:
(1)丢弃这个重复的分组M1,不向上层交付。
(2)向A发送确认

使用上传的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的传输。像上传的这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)

信道利用率
停止等待协议的优点是简单,但缺点是信道利用率太低。
图片.png

连续ARQ协议

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
图片.png
接收方一般都是采用累计确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已正确收到了。
优点:容易实现,即使确认丢失也不必重传。
缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。

TCP报文段的首部格式

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中各字段的作用。
TCP报文段首部的前20个字节是固定的。后面有4n字节是根据需要而增加的选项。因此TCP首部的最小长度是20字节。
图片.png

TCP可靠传输的实现

以字节为单位的滑动窗口

在没有收到B的确认的情况下,A可以连续把窗口内的数据都发出去。凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。
图片.png
窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,因而可能获得更高的传输速率。
要描述一个发送窗口的状态需要三个指针:P1,P2,P3。
小于P1的都是已发送并已确认的部分,大于P3的是不允许发送的部分
P3-P1=A的发送窗口
P2-P1=已发送但尚未收到确认的字节数
P3-P2=允许发送但当前尚未发送的字节数(有效窗口或可用窗口)

图片.png
图片.png

超时重传时间的选择

由于TCP下层是互联网环境,发送的报文会经过一个高速率的局域网,也可能经过多个低速率的网络,并且每个IP报文所选择的路由器还可能不同,那么问题就来了。如果把超时重传的时间设置得太短,就会引起很多报文产生不必要的重传,但如果把超时重传的时间设的太长就会影响传输速率。
TCP采用的超时重传RTO

RTO=RTTs+4xRTTD 
RTT为报文段的往返时间,RTTs是加权往返时间 
RTTs=(1-a)x(旧的RTTs)+ax(RTT样本) 
0<=a<1 
RTTD是RTTs的偏差的加权平均值 
RTTD=(1-b)x(旧的RTTD)+bx|RTTs-新的RTT样本|

图片.png
如果都当做是超时重传的确认,那么RTT会被计算小,如果都当做是发送端的确认,则RTT会偏大
在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本,但是这样超时重传时间就不会被更新,所以最终做法是新的重传时间设为旧的重传时间的二倍。

选择确认SACK

TCP通信时,如果发送序列中间某个数据包丢失,TCP会通过重传最后确认的包开始的后续包,这样原先已经正确传输的包也可能重复发送,急剧降低了TCP性能。为改善这种情况,发展出SACK(Selective Acknowledgment, 选择性确认)技术,使TCP只重新发送丢失的包,不用发送后续所有的包,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据重发了,哪些数据已经提前收到等。

SACK信息是通过TCP头的选项部分提供的,信息分两种,一种标识是否支持SACK,是在TCP握手时发送;另一种是具体的SACK信息。

如果收到的数据块序列号大于期待的序列号,说明中间包被丢弃或延迟,此时可以发送SACK通知发送方出现了网络丢包。

TCP的流量控制

利用滑动窗口实现流量控制

流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
为了解决如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据这一问题。滑动窗口本质上是描述接受方(本地)的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。
图片.png
发送方的发送窗口不能超过接收方给出的接收窗口的数值。

TCP的传输速率

在TCP传输数据流中,存在两种类型的TCP报文段,一种包含成块数据(通常是满长度的,携带一个报文段最多容纳的字节数),另一种则包含交互数据(通常只有携带几个字节数据)。对于成块数据的报文段,TCP采用正常的流程发送即可,因为数据利用率很高。而对于交互数据的报文段,数据利用率就显得很低,在网络环境不好的情况下容易加重网络负担。所以TCP必须对交互数据单独处理

Nagle算法:若发送应用进程把要发送的数据逐个字节地送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到达的数据进行缓存。只有在收到对前一个报文段的确认后才继续发送下一个报文段。

TCP的拥塞控制

拥塞控制的一般原理

在计算机网络中的链路量(即带宽)、交换结点中的缓存和处理机制等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞(congestion)
所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。
拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
提供的负载:代表单位时间内输入给网络的分组数目。
吞吐量:代表单位时间内从网络输出的分组数目。
图片.png
当提供的负载达到某一数值时,网络的吞吐量反而随提供的负载的增大而下降,这时网络就进入了拥塞状态。
当提供的负载继续增大到某一数值,网络的吞吐量就下降到0,网络已无法工作,这就是所谓的死锁
拥塞控制的方法:开环控制和闭环控制
开环控制:在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。一旦整个系统运行起来,就不再中途进行改正了。
闭环控制:基于反馈环路的概念
(1)检测网络系统以便检测到拥塞发生在何时、何处地方。
(2)把拥塞发生的信息传送到可采取行动的地方。
(3)调整网络系统的运行以解决出现的问题。

TCP的拥塞控制方法

TCP进行拥塞控制的算法有四种:慢开始、拥塞避免、快重传、快恢复。

主动队管理AQM

AQM实际上就是对路由器中的分组排队进行智能管理,而不是简单地把队列的尾部丢弃。

TCP的运输连接管理

运输连接有三个阶段:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。

TCP连接的建立

TCP建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个TCP报文段。
图片.png
TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接
图片.png

TCP连接的释放

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
图片.png

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

应用层

运输层为应用进程提供了端到端的通信服务。但不同的网络应用进程之间,还需要有不同的通信规则。因此在运输层协议之上,还需要有应用层协议。因为每个应用层协议都是为了解决某一类应用问题,而问题的解决必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间的这种通信必须遵循严格的规则。应用层的具体内容就是精确定义这些通信规则。
应用层的许多协议都是基于客户服务器方式。客户和服务器都是指通信中所设计的两个应用进程。客户是服务请求方,服务器是服务提供方。

域名系统DNS

域名系统概述

域名系统DNS是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
域名到IP地址的解析是由分布在互联网上的许多域名服务器程序共同完成的。域名服务器在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。
域名到IP地址的解析过程:
* 当某一个应用进程需要把主机名解析为IP地址时,该应用程序就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。(使用UDP是为了减少开销)。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
* 若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

互联网的域名结构

任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
每一个域名都由标号序列组成,而各标号之间用点隔开。
图片.png
DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母。级别最低的域名写在最左边,级别最高的顶级域名则卸载最右边。由多个标号组成的完整域名总共不超过255个字符。

域名服务器

实现域名系统则是使用分布在各地的域名服务器。
一个服务器所负责管辖的范围叫做区。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。DNS服务器的管辖范围不是以域为单位,而是以区为单位。
图片.png
根据域名服务器所起的作用,可以把域名服务器划分为四种类型:根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器。
图片.png
为了提高DNS查询效率,并减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量,在 域名服务器中广泛使用了高速缓存。用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
许多主机在启动时从本地域名服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到名字时才使用域名服务器。

文件传送协议

FTP概述

文件传送协议FTP(File Transfer Protocol)[RFC 959]是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效口令)。
FTP采用双TCP连接方式
* 控制连接-使用TCP端口号21
用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息。控制连接在整个FTP会话期间一直保持打开。
* 数据连接-使用TCP端口号20
用于传输数据,包括数据上传、下载、文件列表发送等。数据传输结束后数据连接将终止。

FTP的基本工作原理

FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
在进程文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:"控制连接"和"数据连接"。控制连接在整个会话期间一直保持打开,FTP客户机所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是"数据连接"。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建"数据传送进程"和"数据连接",用来连接客户端和服务器的数据传送进程。
图片.png
NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。在网络上传送的只是少量修改的数据。

简单文件传送协议TFTP

TCP/IP协议族中还有一个简单文件传送协议TFTP(Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议。
TFTP只支持文件传输而不支持文件交互。TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
TFTP的两个主要优点:
* 可用于UDP环境,例如当需要将程序或文件同时向许多机器下载时。
* 代码所占的内存较小。

TFTP主要特点
* 每次传送的数据报文中有512字节的数据,但最后一次可不足512字节。
* 数据报文按序编号,从1开始
* 支持ASCII码或二进制传送
* 可对文件进行读或者写
* 使用很简单的首部

远程终端协议TELNET

TELNET是一个简单的远程终端协议。用户使用TELNET就可以在其所在地通过TCP连接注册(即登陆)到远地的另一台主机上。TELNET能将用户的击键传送远地主机,同时也能将远地主机的输出通过TCP连接返回到用户的屏幕。
TELNET能够适应许多计算机和操作系统的差异。
图片.png

万维网WWW

万维网概述

万维网WWW(World Wide Web)并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所。
图片.png
* 万维网以客户服务器方式工作。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
* 万维网使用统一资源定位符URL标志万维网上的各种文档,并使每个文档在整个互联网的范围内具有唯一的标识符URL。
* 为了实现万维网上的各种连接,就要使万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议HTTP(HyperText Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。
* 为了使不同的创作者创作的不同风格的万维网文档都能在互联网上的各种主机上显示出来,同时使用户知道在什么地方存在链接,万维网使用超文本传输语言HTML(HyperText Markup Language)使得万维网页面的设计者可以很方便的用链接从本页面的某处链接到互联网的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来。

统一资源定位符URL

URL的格式
统一资源定位符URL是用来表示从互联网上得到的资源位置和访问这些资源的方法。
URL的一般形式由以下四个部分组成

<协议>://<主机>:<端口>/<路径>
超文本传输协议HTTP
HTTP的操作过程

HTTP协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
图片.png
在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传输协议HTTP。
HTTP协议是本身无连接的,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
HTTP协议是无状态的。
HTTP/1.0的主要缺点就是每请求一个文档就要有两倍RTT的开销。若一个主页上有一很多链接对象需要依次进行链接,那么每一次链接下载都导致2×RTT的开销。另一种开销就是万维网客户和服务器每一次建立新的TCP连接都要分配缓存和变量。这种非持续连接会使万维网服务器的负担很重。
HTTP/1.1协议使用了持续连接,就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
HTTP/1.1协议的持续连接有两种工作方式,即非流水线方式和流水线方式。

代理服务器

代理服务器是一种网络实体,它又称为万维网高速缓存

HTTP报文结构

图片.png

电子邮件

电子邮件两个最重要的标准:简单邮件传送协议SMTP和互联网文本报文格式
由于互联网的SMTP只能传送可打印的7位ASCII码邮件,因此在1993年又提出了通用互联网邮件扩充MIME。MIME在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等)。在MIME邮件中可同时传送多种类型的数据。
图片.png

简单邮件传送协议SMTP

1、连接建立
发件人的邮件送到发送方邮件服务器的邮件缓存后,SMTP客户就每隔一段时间(例如30分钟)对邮件缓存扫描一次。如发现有邮件,就使用SMTP的端口25与接收方服务器的SMTP服务器建立TCP连接。连接建立后,接收方服务器要发送"220 Service ready"。然后SMTP向SMTP服务器发送HELO命令,附上发送方的主机名。SMTP服务器若有能力接收邮件,则回答"250 OK",若SMTP服务器不可用,则回答"421 Service not available"。
SMTP服务器不使用中间的邮件服务器。
2、邮件传送
1)、邮件的传送从MAIL命令开始。MAIL命令后面有发件人的地址。如MAIL FROM:<test@163.com> 。服务器给出响应回应;

2)、接下来便是一个或多个RCPT命令,取决于把同一个邮件发送给一个或多个收件人,其格式为RCPT TO:<收件人地址>

3)、再接下来就是DATA命令,表示要开始传送邮件的内容了。SMTP服务器返回的信息是:354 Start mail input;end with . ;这里是回车换行的意思。发送完毕后,再发送.表示邮件内容结束。
3、连接释放
邮件发送完毕后,SMTP客户发送QUIT命令。SMTP服务器返回的信息是:221 服务关闭,表示SMTP同意释放TCP连接。邮件传送的全部过程即结束。

动态主机配置协议DHCP

互联网现在广泛使用的是动态主机配置协议DHCP,它提供了一种机制,称为即插即用连网。
DHCP使用客户服务器方式,需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文(将目的地址置为全1,即255.255.255.255),这时该主机就成为DHCP客户。发送广播报文是因为现在还不知道DHCP服务器在什么地方,因此要发现DHCP服务器的IP地址。这台主机目前还没有IP地址,因此它将IP数据报的源IP地址设为全0。在本地网络上的所有主机都会收到这个广播报文,但只有DHCP服务器才对此广播报文回答。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。找不到则从服务器的IP地址池(address pool)中取一个地址分配给该计算机。DHCP的回答报文叫做提供报文(DHCPOFFER)。
每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息。当DHCP中继代理收到主机A以广播形式发送的发现报文后,就以单播方式向DHCP服务器转发此报文,收到DHCP服务器回答的提供报文后,DHCP中继代理再把此提供报文发回给主机。
图片.png
DHCP服务器分配给DHCP客户的IP地址是临时的。

应用进程跨域网络的通信

如果我们还有一些特定的应用需要互联网的支持,但这些应用又不能直接使用已经标准化的互联网应用协议。那么就要了解系统调用应用编程接口

系统调用

现在大多数的操作系统采用系统调用的机制在应用程序和操作系统之间转化控制权。例如应用程序要对一个文件进行操作,它不能直接去找那个文件然后操作。应用程序的进程首先要调用一个请求函数(系统调用)请求对这个文件的操作,操作系统进程得到此请求后会创建一个文件描述符(后面将详述)给应用程序进程,应用程序进程再根据系统提供的文件描述符去操作文件。

应用编程接口

应用编程接口(API)系统调用接口的另一种称呼。它定义了许多标准的应用接口函数供应用进程调用,以获得操作系统的服务。在网络编程中,应用进程与运输层协议(如 TCP、UDP、甚至SCTP)的接口就是套接字。
图片.png
套接字以上的进程是受应用程序控制的,而在套接字以下的运输层协议软件则是受计算机操作系统的控制。因此,只要应用程序使用TCP/IP协议进行通信,它就必须通过套接字与操作系统交互(这就要使用系统调用函数)并请求服务。
图片.png

客户进程、服务器进程的通信

图片.png
以上是针对TCP连接的,由于UDP是不是面向连接的,所以不会有listen 和 accept。服务器进程虽然创建了套接字,但是其中的端口号和IP地址时空的,调用bind可以获取端口号和IP地址。客户端进程没有调用套接字,端口号随机分配。这其中最重要的就是accept的调用,当服务器主进程调用accept后,将会发生以下步骤:
* 主进程为每一个新的连接请求新建一个套接字(连接套接字),以及创建一个从属进程;
* 从属进程用新建的连接套接字与客户进程建立连接,然后在这个连接上传送和接受数据;
* 主进程利用原来的套接字重新调用accept,继续接受下一个连接请求。

这样服务器就能同时处理多个连接,并发工作。