家庭接入:
- 数字用户线(DSL)(电话线):高速下行信道,中速上行信道,普通的双向电话信道。
- 电缆因特网接入(电视线):重要特征是共享广播媒体。
- 光纤到户(FTTH):从本地中心局直接到家庭的一条光纤。两种结构:主动光纤网络(AON),被动光纤网络(PON)。
企业(或家庭)接入:
- 以太网,WiFi。
导引型媒体:双绞线,同轴电缆,光。
非导引型媒体:陆地无线电信道,卫星无线电信道。
分组交换
网络中端系统交换报文(message),将长报文分为较小的数据块称为分组(packet),每个分组都通过通信链路和分组交换机(packet switch)(路由器和链路层交换机)传输。
- 存储转发传输(store-and-forward transmission):交换机先接受到整个分组,在向输出链路传输该分组。
- 排队时延和分组丢失:每个分组交换机与多条链路相连,对于每条链路,分组交换机都有一个输出缓存(output buffer),当某链路忙于传输其他分组时就导致了排队时延(queue delay)。因为缓存空间有限,可能出现分组丢失(packet lost)。
- 转发表和路由选择协议:每台路由器具有一个转发表(forwarding table),用于将目的地址映射成为输出链路。因特网通过路由选择协议(routing protocol)自动设置转发表。
电路交换
在端系统间通信会话期间,预留了通信沿路径所需要的资源。比如传统的电话网络。
- 电路交换网络中的复用:频分复用(FDM):链路的频谱由跨越链路创建的所有连接所共享,在连接期间链路为每条连接专用一个频段。时分复用(TDM):时间被划分为固定区间的帧,每帧划分为固定数量的时隙,当创建一条连接时,网络为该连接指定一个时隙。
- 分组交换的性能优于电路交换,,趋势朝着分组交换方向发展。
时延的类型
- 处理时延:检查分组首部和决定将该分住导向何处等需要的时间。
- 排队时延:分组在链路上等待传输的时间。
- 传输时延:将所有分组的比特传输向链路所需要的时间。
- 传播时延:从链路起点到路由器所需的时间。
协议层次及其服务模型
- 应用层:网络应用程序及它们的应用层协议存留的地方。位于应用层的信息分组称为报文(message)。
- 运输层:在应用程序端点之间传送应用层报文。运输层分组称为报文段(segment)。
- 网络层:将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。
- 链路层:将分组从一个结点移动到路径上的下一个结点。链路层分组称为帧(frame)。
- 物理层:将帧中的一个一个比特从一个结点移动到下一个结点。
网络核心设备应不在应用层上起作用,而仅在较低层起作用,特别是位于网络层及下面层次。
两种主要的网络应用程序体系结构:
- 客户—服务器体系结构(client-server architecture):有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。例如Web,FTP,Telnet等。注:在此结构中客户之间不直接通信;该服务器具有固定的IP地址。
- P2P体系结构(P2P architecture):应用程序在间接连接的主机对之间使用直接通信,这些主机对称为对等方。流量密集型应用通常采用P2P结构,例如迅雷,Skype等。
进程通信:进行通信的实际上是进程(process)而不是程序。
- 客户和服务器进程:网络应用程序由成对的进程组成,一个标识为客户(client),一个表示为服务器(server),进程通过网络互相发送报文。
- 进程与计算机网络之间的接口:进程通过一个称为套接字(socket)的软件接口向网络发送和接收报文。套接字也称为程序和网络之间的应用程序接口(API),应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层端几乎没有控制权。
可供应用程序使用的运输服务:
当发送端的应用程序将报文推进套接字时,在套接字的另一侧,运输层协议负责使报文进入接收进程的套接字。许多网络提供了多种运输层协议,我们必须从中选择一种适当的。
- 可靠数据传输:确保发送的数据正确,完全地交付。但是对一些可以容忍丢失的应用,如多媒体应用,就可以使用不提供可靠数据传输的服务。
- 吞吐量:具有吞吐量要求的应用程序称为带宽敏感应用,例如多媒体应用。而弹性应用能根据情况调整可供使用的吞吐量,如电子邮件,文件传输等。
- 定时:例如对发送方注入进套接字中的每个比特到达接受方的套接字在多少时间之内。
- 安全性:发送方加密,接受方解密。
因特网提供的运输服务:
- TCP 服务:面向连接的服务:在应用层数据报文开始流动之前,TCP让客户与服务器互相交换运输层控制信息。 可靠的数据传送服务:依靠TCP交付所有发送的数据。注:TCP还具有拥塞控制机制。TCP没有提供加密机制,SSL是TCP的安全加强版。
- UDP 服务:没有握手过程,没有拥塞控制机制,提供一种不可靠数据传输服务。
- 因特网运输协议不提供的服务:因特网通常可以为时间敏感应用提供满意的服务,但不提供任何定时或带宽保证。
应用层协议:
定义了运行在不同端系统上的应用程序进程如何相互传递报文。
- 交换的报文类型
- 各种报文类型的语法
- 字段的语义
- 一个进程何时以及如何发送报文
有些应用层协议是由RFC文档定义的,因此它们位于公共域中。应用层协议只是网络应用的一部分。
Web的应用层协议是超文本传输协议(HTTP),它是Web的核心。HTTP由一个客户程序和一个服务器程序实现,HTTP使用TCP作为它的支撑运输协议。注:服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息,所以说HTTP是一个无状态协议(stateless protocol)。
两种连接方式:
- 非持续连接:每个TCP连接在服务器发送一个对象后关闭,即该连接部委其他的对象而持续下来。没个TCP连接只传输一个请求报文和一个响应报文。
- 持续连接:HTTP的默认方式。服务器在发送响应后保持该TCP连接打开。
用户与服务器的交互:cookie
cookie有四个组件:1、在HTTP响应报文中的一个cookie首部行;2、在HTTP请求报文中的一个cookie首部行;3、在用户端系统中保留一个cookie文件,并由用户的浏览器进行管理;4、位于Web站点的一个后端数据库。
Web缓存:
也叫代理服务器,是能够代表初始Web服务器来满足HTTP请求的网络实体,它有自己的磁盘存储空间,并在缓存器中保存最近请求过的对象的副本。Web缓存器是服务器同时也是客户。
Web缓存器可以大大减少客户请求的响应时间,特别是当客户与初始服务器之间的瓶颈带宽远低于客户与Web缓存器之间的瓶颈带宽时更是如此。另外,Web缓存器能够大大减少一个机构的接入链路到因特网的通信量。
条件GET方法:
保存在缓存器中的对象副本可能是旧的,条件GET方法用来证实缓存器中的对象是最新的。
如果请求报文使用GET方法,并且请求报文中包含一个“if-Modified-Since:”首部行。那么这个HTTP请求报文就是一个条件GET请求报文。
FTP 使用两个并行的TCP连接来传输文件,一个是控制连接(control connection),一个是数据连接(data connection)。控制连接贯穿了整个用户会话期间,但是对会话中的每一次文件传输都需要建立一个新的数据连接(即数据连接是非持续的)。FTP服务器必须在整个会话期间保留用户的状态,而HTTP是无状态的。
由三个部分组成:用户代理,邮件服务器,简单邮件传输协议(SMTP)。 SMTP 是因特网电子邮件应用的核心。SMTP一般不使用中间邮件服务器发送邮件。
SMTP和HTTP的区别:1、HTTP是一个拉协议(pull protocol),TCP连接由想接收文件的机器发起。而SMTP是一个推协议(push protocol),TCP连接由要发送文件的机器发起。2、SMTP要求每个报文使用7个比特ASCII码格式,而HTTP不受限制。3、HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文中。
邮件访问协议:由于SMTP是一个推协议,接受方的用户代理不能使用SMTP取回邮件服务器上的邮件,于是引入了一些邮件访问协议。
SMTP发送方的邮件服务器传输到接受方的邮件服务器;SMTP也用来将邮件从发送方的用户代理传输到发送方的邮件服务器;然后邮件访问协议用来将邮件从接受方的邮件服务器传输到接受方的用户代理。
POP3:一个非常简单的邮件访问协议。通过打开一个到邮件服务器端口110上的TCP连接开始工作,有三个阶段:特许,事务处理和更新。
IMAP:IMAP服务器把每个报文与一个文件夹联系起来,收件人能够把邮件移到一个用户创建的文件夹中,浏览邮件,删除邮件等。另外它还具有允许用户代理获取报文组件的命令。注:IMAP服务器维护了IMAP会话的用户状态信息。
基于Web的电子邮件:用户代理就是浏览器,用户和他的远程邮箱之间的通信用HTTP进行。
识别主机有两种方式:主机名或者IP地址。 DNS是:1、一个由分层的DNS服务器实现的分布式数据库;2、一个使得主机能够查询分布式数据库的应用层协议。
DNS服务器通常是运行在DIND软件的UNIX机器,DNS协议运行在UDP上,使用53号端口。
DNS提供的另外的服务:1、主机别名;2、邮件服务器别名;3、负载分配。
分布式、层次数据库:根DNS服务器 > 顶级域DNS服务器 > 权威DNS服务器。 注:本地DNS服务器也是重要的组成部分。
一般的DNS查询中,从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的。
DNS缓存:改善时延性能并减少在因特网上到处传输的DNS报文数量。
DNS记录和报文:共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(RR),RR提供了主机名到IP地址的映射。
资源记录是一个包含了下列字段的4元组:(Name, Value, Type, TTL)。
Name 和 Value 的值取决于 Type :
- Type=A时,Name是主机名,Value是该主机名对应的IP地址。这条记录提供了标准的主机名到IP地址的映射。
- Type=NS时,Name是个域,Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。这条记录用于沿着查询链来路由DNS查询。
- Type=MX时,Value是个别名为Name的邮件服务器的规范主机名。
运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能。协议在端系统中而不是在路由器中实现,网络路由器仅作用于该数据报的网络层字段,即它们不检查封装在该数据报的运输层报文段的字段。
注:网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供逻辑通信。
多路复用和多路分解:
也就是将由网络层提供的主机到主机交付服务延伸到为运行在主机上的应用程序提供进程到进程的交付服务。
每个运输层报文端中具有几个字段,在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运输层报文端中的数据交付到正确的套接字的工作叫做多路分解。在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层的工作叫做多路复用。
多路复用要求:1、套接字有唯一标识符;2、每个报文段有特殊字段来指示该报文段所要交付到的套接字。(特殊字段包括源端口号字段和目的端口号字段等,端口号是一个16比特的数,其大小在0~65535之间,其中0~1023范围的端口号称为周知端口号,是受限制的)
- 无连接的多路复用和多路分解 : 通常应用程序的客户端让运输层自动地分配端口号,而服务器端则分配一个特定的端口号。一个UDP套接字由一个二元组来全面标识,二元组包含一个目的IP地址和一个目的端口号。因此,如果两个UDP报文段有不同的源IP地址和/或源端口号,但有相同的目的IP地址和目的端口号,那么这两个报文段将通过相同的目的套接字被定向到相同的目的进程。源端口号的作用是用在返回地址中,做为返回的报文的目的端口号。
- 面向连接的多路复用和多路分解 : TCP有套接字是由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识的。所以两个具有不同源IP地址或源端口号的到达TCP报文段将被定向到两个不同的套接字。
UDP只是做了运输协议能够做的最少工作,除了复用/分解功能以及少量的差错检验外,它几乎没有对IP增加别的东西。DNS是一个通常使用UDP的应用层协议的例子。
UDP的优势:1、关于何时,发送什么数据的应用层控制更为精细。2、无需连接建立。3、无连接状态。4、分组首部开销小。
注:使用UDP的应用是可以实现可靠数据传输的,比如通过在应用程序自身中建立可靠性机制。这样,应用程序可以进行可靠性通信,而无需受制于由TCP拥塞控制机制。
UDP检验和:UDP检验和提供了差错检测功能,也就是说,检验和用于确定当UDP报文段从源到达目的地移动时,其中的比特是否发生了改变。
UDP提供检验和的原因是由于不能保证源和目的地之间的所以链路都提供差错检测。在既无法确保逐链路的可靠性,又无法确保内存中的差错检测的情况下,UDP就必须在端到端基础上在运输层提供差错检测。这个设计被叫做端到端原则。虽然UDP提供差错检测,但它对差错恢复无能为力,它只是丢弃受损的报文段。
TCP连接提供的是全双工服务,采用点对点模式。TCP连接的组成包括:一台主机上的缓存、变量和与进程连接的套接字,以及另一台主机上的另一组缓存、变量和与进程连接的套接字。而在这两台主机之间的网络元素(路由器、交换机和中继器)中,没有为该连接分配任何缓存和变量。
TCP报文段首部包括:元端口号,目的端口号,序号字段,确认号字段,接收窗口字段,首部长度字段,选项字段,标志字段等。序号字段和确认号字段是最重要的字段,是TCP可靠传输服务的关键。
TCP在不可靠的IP上创建了一种可靠数据传输服务。TCP发送方有3个主要事件:从上层应用程序接收数据,定时器超时和收到ACK。
TCP提供了流量控制下「服务以消除发送房是接受方缓存溢出的可能性,流量控制是一个速度匹配服务,即发送方的速率与接受方应用程序的读取速率相匹配。TCP通过让发送方维护一个称为接收窗口的变量来提供流量控制。
客户TCP经历的典型的TCP状态序列 : CLOSE –>(客户应用程序发起一个TCP连接,发送SYN)–> SYN_SENT –>(接收SYN&ACK,发送ACK)–> ESTABLISHED –>(发送FIN,客户应用程序发送关闭连接)–> FIN_WAIT_1 –>(接收ACK,不发送)–> FIN_WAIT_2 –>(接受FIN,发送ACK)–> TIME_WAIT –>(等待30秒)–> CLOSED
服务器端TCP经历的典型的TCP状态序列 : CLOSE –>(服务器应用程序创建一个监听套接字)–> LISTEN –>(接收SYN并发送SYN&ACK)–> SYN_RCVD –>(接收ACK,不发送)–> ESTABLISHED –>(接收FIN,发送ACK)–> CLOSN_WAIT –>(发送FIN)–> LAST_ACK –>(接收ACK,不发送)–> CLOSED
TCP让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率。 运行在发送方的TCP拥塞控制机制跟踪一个额外的变量,即拥塞窗口。通过限制发送方中未被确认的数据量,间接限制发送方的发送速率。 注:
- 一个丢失的报文段表意味着拥塞,因此当丢失报文段时应当降低TCP发送方的速率。
- 一个确认报文段指示该网络正在向接收方交付发送方的报文段,因此,当对先前未确认报文段的确认到达时,能够增加发送方的速率。
- 带宽探测。
TCP拥塞算法:1、慢启动,2、拥塞避免,3、快速恢复。
转发和路由选择
- 转发。当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路。
- 路由选择。当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。
网络服务模型定义了分组在发送和接收端系统之间的端到端运输特性:
- 确保支付。该服务确保分组将最终到达目的地。
- 具有时延上界的确保支付。不仅确保支付,而且在特定的主机到主机时延上界内支付。
- 有序分组支付。确保分组以它们发送的顺序到达目的地。
- 确保最小带宽。该服务模仿在发送和接收主机之间的一条特定比特率的传输链路的行为。
- 确保最大时延抖动。确保位于发送方的两个相继分组之间的时间量等于在目的地接收到它们之间的时间量。
- 安全性服务。使用仅由源和目的主机知晓的一个秘密会话秘钥,在源主机中的网络层能够加密向目的主机发送的所有数据报负载。
虚电路网络:
包括ATM,帧中继的体系结构等网络体系采用虚电路网络。组成:1、源和目的主机之间的路径。2、VC号沿着该路径的每段链路的一个号码。3、沿着该路径的每台路由器中的转发表表项。
无论何时跨越一台路由器创建一条新的虚电路,转发表就增加了一个新表项,终止一条虚电路,沿着该路径每个表中的相应项就被删除。一个分组沿着其路由器在每条链路上不简单地保持相同的VC号的原因:1、逐链路代替该号码减少了在分组首部中VC字段的长度。2、通过允许沿着该虚电路路径每条链路有一个不同的VC号,大大简化了虚电路的建立。
在虚电路网络中,该网络的路由器必须为进行中的连接维持连接状态信息。
虚电路的3个阶段:
- 虚电路建立。发送运输层与网络层联系,指定接收方地址,等待网络建立虚电路。网络层决定路径并决定VC号,在每台路由器的转发表中增加表项。
- 数据传输。
- 虚电路拆除。
数据报网络:
每当一个端系统要发送分组,它就为该分组加上目的端系统的地址,然后将分组推进网络中。无需建立任何虚电路,路由器不维护任何虚电路的状态信息。
当分组从源到目的地传输,它通过一系列路由器传递。这些路由器中的每台都使用分组的目的地址来转发该分组。特别是,每台路由器有一个将目的地址映射到链路接口的转发表;当分组到达路由器时,路由器使用该分组的目的地址在转发表中查找适当的输出链路接口,然后将分组向该接口转发。
一台路由器的组成部分:
- 输入端口。它要执行将一条输入的物理链路与路由器相连接的物理层功能,执行需要与位于入链路远端的数据链路层交互的数据链路层功能,在输入端口完成查找功能,决定输出端口。
- 交换结构。将路由器的输入端口和输出端口相连接。
- 输出端口。存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输入链路上传输这些分组。
构成因特网的网络层有三个主要组件:1、IP协议。2、路由器选择部分。3、报告数据报中的差错和对某些网络层信息请求进行相应的设施。
IPv4数据报中的关键字段:
- 版本号。规定了数据报的IP协议版本。
- 首部长度。确定IP数据报中数据部分实际从哪里开始。
- 服务类型。时不同类型的IP数据报能相互区分开来。
- 数据报长度。
- 标识、标志、片偏移。
- 寿命(TTL)。
- 协议。仅在一个IP数据报到达其最终目的地才会有用,指示了IP数据报的数据部分交给哪个特定的运输层协议。
- 首部检验和。帮助路由器检测收到的IP数据报中的比特错误。
- 源和目的IP地址。
- 选项。允许IP首部被扩张。
- 数据(有效载荷)。最重要的字段,包含要交付给目的地的运输层报文段。
动态主机配置协议(DHCP): DHCP是一个客户-服务器协议,具有将主机连接进一个网络的网络相关方面的自动能力。
协议的四个步骤:
- DHCP服务器发现。通过使用一个DHCP发现报文来发现一个要与其交互的DHCP服务器。
- DHCP服务器提供。DHCP服务器收到一个发现报文时,用一个DHCP提供报文响应。
- DHCP请求。客户从一个或多个服务器中选择一个,并向服务器提供一个DHCP请求报文进行响应,回显配置参数。
- DHCP ACK。服务器用DHCP ACK报文对请求报文进行响应,证实所请求的参数。
网络地址转换(NAT):
NAT使能路由器对于外部世界来说不像一台路由器,更像一个具有单一IP地址的单一设备。从本质上讲,NAT使能路由器对外界隐藏了家庭网络的细节。在NAT路由器上有一张NAT转换表,包含了端口号及其IP地址。注:NAT的主要问题是它妨碍P2P应用程序。
UPnP时一种允许主机发现并配置临近NAT的协议,允许外部主机使用UDP或TCP向NAT化的主机发起通信会话。提供了有效的NAT穿越解决方案,可能成为P2P应用程序的救世主。
IPv6定义的字段:
- 版本。
- 流量类型。
- 流标签。
- 有效载荷长度。
- 下一个首部。
- 跳限制。
- 源地址和目的地址。
- 数据。
两种类型的链路层信道:1、广播信道。用于连接有限局域网、卫星网和混合光纤同轴电缆接入网中的多台主机。2、点对点通信链路。适用范围从经电话线拨号服务到经光纤链路的高速点到点帧传输。
链路层提供的服务:
- 成帧。在网络层数据报经链路传送之前,要将其用链路层帧封装起来。
- 链路接入。媒体访问控制(MAC)协议规定了帧在链路上传输的规则。
- 可靠支付。
- 差错检测和纠正。
链路层的主体部分时在网络适配器中实现的,也称网络接口卡(NIC)。位于网络适配器核心的链路层控制器时一个实现了许多链路层服务的专用芯片。链路层时硬件和软件的结合体,时协议栈中软件与硬件交接的地方。
多路访问链路和协议:
- 信道划分协议:时分多路复用(TDM),频分多路复用(FDM),码分多址(CDMA)。
- 随机接入协议:时隙ALOHA,ALOHA,载波侦听多路访问(CSMA),具有碰撞检测的载波侦听多路访问(CSMA/CD)。
- 轮流协议:轮询协议,令牌传递协议。
适配器(即网络接口)具有链路层地址即MAC地址,也称LAN地址、物理地址。链路层交换机并不具有与它们的接口相关联的链路层地址。
地址解析协议(ARP)能在网络层地址(IP)和链路层地址(MAC)之间进行转换。 每台主机或路由器在内存中具有一个ARP表,包含IP地址到MAC地址的映射关系。
以太网帧结构:
- 数据字段。承载了IP数据报。
- 目的地址。包含目的适配器的MAC地址。
- 源地址。包含了传输该帧到局域网上的适配器的MAC地址。
- 类型字段。允许以太网复用多种网络层协议。
- CRC。循环冗余检测字段的目的时使得接收适配器检测帧中是否引入了差错。 前同步码。
交换机和路由器比较:交换机使用MAC地址转发分组,是第二层的分组交换机,二路由器使用IP地址转发,是第三层的交换机。
链路层的基本服务时将网络层的数据报从一个节点移动到一个相邻的节点。