目录
用户数据报协议UDP(User Datagram Protocol)
传输控制协议TCP(Transmission Control Protocol)
在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议
RIP(Routing Information Protocol)
OSPF(Open Shortest Path First)
NAT(Natwork Address Translation)
2.试描述构建应用程序中的客户机服务器模式(C/S)和P2P模式的区别
3.交换机和路由器都采用存储和转发(store-and-forward)的设计,简述它们构建转发表(forwarding table)的过程有何不同?
5.简单文件传送协议TFTP与FTP的主要区别?各用在什么场合?
7. 为什么在TCP首部中要把TCP端口号放入最开始的4个字节?
参考资料
《计算机网络 - 第7版》- 谢仁希 《计算机网络-自顶向下方法》
本文章是学习计网的一些笔记整理,可用于复习、考研、面试......
如果你需要的是习题,可直接跳到“习题”章节
本文按自顶向下的思路整理,不一定按照课本顺序整理,会有一些概括与比较,请根据自己的知识体系选择性阅读
第一章 概述
1.1 互联网边缘部分和核心部分的作用,分组交换的概念
网络与互联网
网络把许多计算机连接在一起,而互联网则把许多网络通过路由器连接在一起。与网络相连的计算机常称为主机。
互联网的组成
(1)边缘部分:由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
(2)核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)
端系统间的通信方式(边缘部分)
边缘部分的主机又称为端系统(end system),其可以是个人电脑、大型计算机、网络摄像头等。端系统之间的通信方式通常可划分为两大类:客户-服务器方式(C/S方式)和对等方式(P2P)
1.客户-服务器方式
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程(或者直接当作运行这种程序的及其)。客户是服务请求方,服务器是服务提供方,双方都需要使用网络核心部分所提供的服务。
客户程序与服务器程序的特点:
客户程序:
(1)被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
(2)不需要特殊的硬件和很复杂的操作系统
服务器程序:
(1)是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求
(2)系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址
(3)一般需要有强大的硬件和高级的操作系统支持
2.对等连接方式(peer-to-peer)
两台主机在通信时并不区分哪一个是服务请求放哪一个是服务提供方。只要两台主机都运行了对等连接软件(P2P)软件,它们就可以进行平等的、对等连接通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档。
互联网的核心部分
1.电路交换(circuit switching):经过“建立连接”(占用通信资源)->“通话”(一直占用通信资源)->“释放连接”(归还通信资源)三个步骤的交换方式称为电路交换。
电路交换的特点:在通话的全部时间内,通话的两个用户始终占用端到端的通信资源
2.分组交换:分组交换采用存储转发技术。把一个报文划分为几个分组后再进行传送,通常我们把要发送的整块数据称为一个报文(message)。把报文划分为一个个更小的数据段,在每一个数据段前加上一些由必要信息组成的首部(header)后,就构成了一个分组(packet)。分组又称为“包”,而分组的首部也可以称为“包头”。
分组交换的主要优点:
高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用
灵活:为每一个分组独立地选择最合适的路由
迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组
可靠:保证可靠性的网络协议:分布式多路由的分组交换网,使网络有很好的生存性
缺点:
①由于分组在各路由器存储转发时需要排队,这就会造成一定的时延。
②无法确保通信时端到端所需的带宽。
③各分组必须携带的控制信息也造成了一定的开销(overhead)
④整个分组交换网需要专门的管理和控制机制
3.电路交换、报文交换、分组交换数据流特点比较
电路交换---整个报文的比特流连续地从源点直达终点,好像在一个管道中传送
报文交换---整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点
分组交换---单个分组(整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点
结论:
①若要传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快
②报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率
③由于一个分组的长度远远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性
1.2 计算机网络的类别
1.按照网络的作用范围进行分类
(1)广域网WAN(Wide Area Network)
(2)城域网MAN(Metropolitan Area Network)
(3)局域网LAN(Local Area Network)
(4)个人区域网PAN(Personal Area Network)
2.按照网络的使用者进行分类
(1)公用网(public network):指电信公司(国有或私有)出资建造的大型网络。“公用”即所有愿意按电信公司的规定交纳费用的人都可以使用。
(2)专用网(private network):该网络不向本单位以外的人提供服务,如军队、铁路、银行、电力等系统。
……(更多分类不再码了)
接入网AN(Access Network):用来把用户接入到互联网的网络。接入网本身既不属于互联网的核心部分也不属于边缘部分,其指的是某个用户端系统到互联网中的第一个路由器(边缘路由器)之间的一种网络。其相当于用户与互联网之间的“桥梁”。
1.3 计算机网络的性能指标
1.速率
网络技术中的速率指的是数据的传送效率,也称为数据率(data rate)或比特率(bit rate)
单位:bit/s (或b/s bps) 比特每秒
当数据率较高时,常常在前面加一个字母,例如:
k(kilo) = 10^3 = 千
M(Mega)= 10^6 = 兆
G(Giga)= 10^9 = 吉
T(Tera)= 10^12 = 太
P(Peta)= 10^15 = 拍
……
“40G的速率”即是一种省略了速率单位bit/s的说法,这种网络速率通常指的是额定速率/标称速率,而非网络实际运行上的速率
2.带宽(bandwidth)
(1)带宽本来指某个信号具有的频带宽度
(2)在计算机网络中,带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率”,单位bit/s
3.吞吐量(throughput)
表示在单位时间内通过某个网络(或信道、接口)的实际的数据量,用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。单位bit/s
有时也用每秒传送的字节数或帧数来表示
4.时延(delay/latency)
指数据(一个报文或分组、甚至比特)从网络(链路)的一端传送到另一端所需的时间。由以下几个部分组成。
(1)发送时延/传输时延(transmission delay):主机或路由器发送数据帧所需要的时间,即从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
发送时延=数据帧长度(bit) / 发送速率(bit/s)
(2)传播时延(propagation delay):电磁波在信道中传播一定的距离需要花费的时间。
传播时延=信道长度(m) / 电磁波在信道上的传播速率(m/s)
(3)处理时延:主机或路由器收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等,这就产生了处理时延。
(4)排队时延:分组在进入路由器后要先在输入队列中排队等待处理,在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。
总时延=发送时延+传播时延+处理时延+排队时延
“光纤信道的传输速率高”这种说法是指可以用很高的速率向光纤信道发送数据(减少发送时延)而不是指光纤信道的传播速率高。光纤信道的传播速率实际上比铜线的传播速率还要略低。
5.时延带宽积
时延带宽积=传播时延×带宽
例如,假设某段链路的传播时延为20ms,带宽为10Mbit/s,算出时延带宽积=2 X 10^5 bit
这个数据表示,若发送端连续发送数据,则在发送的第一个比特即将到达终点时,发送端就已经发送了20万个比特,而在20万个比特都正在链路上向前移动。
6.利用率
链路带宽利用率 = 有效吞吐量/链路速率 ,其中有效吞吐量 = 有效传送数据量/总发送时间(具体计算可以见TCP相关的习题)
1.4 计算机网络分层次的体系结构,各层次协议及服务
网络协议(network protocol),简称为协议,主要由以下三个要素组成:
(1)语法,即数据与控制信息的结构或格式
(2)语义,即需要发出何种控制信息,完成何种动作以及做出何种响应
(3)同步,即事件实现顺序的详细说明
划分层次:
分层的好处:(1)各层次之间是独立的 (2)灵活性好 (3)结构上可分割开 (4)易于实现与维护 (5)能促进标准化工作
各层次要完成的主要功能(可以包括一种,也可以包括多种):
①差错控制 :使相应层次对等方的通信更加可靠
②流量控制 :发送端的发送速率必须使接收端来得及接收,不要太快
③分段和重装:发送端要发送的数据块划分为更小的单位,在接收端将其还原
④复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用
⑤连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
计算机网络的各层及其协议的集合就是网络的体系结构(architecture)
各层次的作用
1. 应用层(application layer):通过应用进程间的交互来完成特定网络应用,应用层协议定义的是应用进程间通信和交互的规则。
2. 表示层:数据的解码和编码,数据的加密和解密,数据的压缩和解压缩
常见的标准如:ASCII JPEG ……
3. 会话层:负责建立、管理和终止表示层实体之间的会话连接;在系统之间协调通信过程,并提供3种不同的方式来组织它们之间的通信:单工、半双工和全双工
4. 运输层(transport layer):负责向两台主机中进程之间的通信提供通用的数据传输服务。具有复用和分用的功能,复用就是多个应用层进程可同时使用下面传输层的服务,分用是指运输层把收到的信息分别交付上面应用层中的相应进程。
5. 网络层(network layer):负责为分组交换网上的不同主机提供通信服务;选择合适的路由,使源主机运输层传下来的分组,能够通过网络中的路由器找到目的主机。
6. 数据链路层(data link layer):将分组数据封装成帧,提供节点到节点方式的传输
7. 物理层(physical layer):在物理媒体上传输比特,提供机械的和电气的归约
各层次常见的协议及其描述
应用层协议:
HTTP(超文本传送协议,80端口):规定了对万维网的网点访问的方法和规范,如URL、请求和响应的格式
FTP(File Transfer Protocol,文件传送协议,20,21端口):使用TCP可靠的运输服务,21端口用于控制连接,20端口用于数据连接,用于任意计算机之间传送文件
TFTP(Trivival File Transfer Protocol,简单文件传送协议,69端口):使用UDP数据报,只支持文件传输而不支持交互
SMTP(简单邮件传送协议,25端口):规定了在两个相互通信的SMTP进程之间应如何交换信息,电子邮件的传送
POP3和IMAP(邮件读取协议):规定了如何读取邮件
TELNET(远程终端协议,23端口):用户用TELNET可在其所在地通过TCP连接登录到远地的另一台主机上,TELNET能讲用户的击键传到远地主机,定义了数据和命令应怎样通过互联网(网络虚拟终端NVT(Network Virtual Terminal))
DNS(Domain Name System,域名系统,53端口):互联网使用的命名系统,用于把便于人们使用的机器名字转换为IP地址
运输层协议:
用户数据报协议UDP(User Datagram Protocol):提供不可靠的传输,面向报文,无连接
传输控制协议TCP(Transmission Control Protocol):提供可靠的传输,面向字节流,面向连接
网络层协议:
网际协议IP(Internet Protocol Address):实现网络互连。使参与互连的性能各异的网络从用户角度看起来好像是一个统一的网络。
地址解析协议ARP(Address Resolution Protocol):解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题
网际控制报文协议ICMP(Internet Control Message Protocol):提供差错报告和询问报文,以提高IP数据交付成功的机会
网际组管理协议IGMP(Internet Group Management Protocol):用于探寻、转发本局域网内的组成员关系
内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部使用的路由选择协议,如RIP(Routing Information Protocal,路由信息协议)、OSPF(Open Shortest Path First,开放最短路径优先)协议
外部网关协议EGP(External Gateway Protocol):数据报从一个自治系统传递到另一个自治系统时使用的协议,如BGP(边界网关协议)的版本4(BGP-4)
数据链路层协议:
PPP协议(Point-to-Point Protocol,点对点协议):用户计算机和ISP进行通信时使用的数据链路层协议
CSMA/CD协议(载波监听多点接入/碰撞检测):用于广播通信,处理总线上发送冲突的问题。
CSMA/CA协议:是无线局域网的MAC层协议,用于尽量避免发生碰撞
各层次的PDU及其格式
协议数据单元PDU(Protocol Data Unit)是指对等层次之间传递的数据单位。 协议数据单元(Protocol Data Unit )
物理层的 PDU是数据位(bit),
数据链路层的 PDU是数据帧(frame),
网络层的PDU是数据包(packet),
传输层的 PDU是数据段(segment),
其他更高层次的PDU是报文(message)。
另外,无论哪一层传送的数据单元,都可笼统地用“分组”来表示
TCP和UDP的首部
(1) 源端口:源端口号
(2) 目的端口:目的端口号
(3) 长度:UDP用户数据报的长度,其最小值是8(仅有首部)
(4) 检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃
(5) 伪首部:计算检验和时临时添加,不向下传送也不想上递交
①源端口和目的端口
②序号:4字节 [0-2^32 – 1] 序号增加到2^32 – 1后下一个序号又回到0
TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,整个要传送的字节流的起始序号必须在连接建立时设置。例如,一个segment的序号字段值是301,而携带的数据共有100字节,那么最后一个字节的序号是400
③确认号:期望收到对方下一个segment(报文段)的第一个数据字节的序号
若确认号 = N,则表明到序号 N – 1 为止的所有数据都已经正确收到
④数据偏移:占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。实际上指出了TCP报文段的首部长度。(4字节为单位)
⑤确认ACK(ACKnowledgment):仅当ACK = 1时确认号字段才有效,当ACK = 0 时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1.
……
⑥同步SYN(SYNchronization):在连接建立时用来同步序号,SYN = 1而ACK = 0时表明这是一个连接请求报文段。
⑦FIN:用来释放一个连接,FIN = 1时表明此报文段的发送方的数据已经发送完毕
⑧窗口:占2字节:指的是发送本报文段的一方的接收窗口,窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位);简而言之,窗口值指出了现在允许对方发送的数据量,窗口值是动态变化着的。
⑨检验和:占2字节,校验范围包括首部和数据两个部分
⑩选项:长度可变,如最大报文段长度MSS:表示每个TCP报文段中的数据字段的最大长度,还有选择确认SACK,时间戳选项等
IP数据报和ICMP
一个IP数据报由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。首部的固定部分后面是一些可选字段,其长度是可变的。
(1) 版本:即IP协议的版本,通信双方使用的IP协议的版本必须一致
(2) 首部长度:占4位,其单位是4字节;首部长度字段的最小值是5(固定长度是20字节),最大值为60字节,当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
(3) 区分服务:一般情况下不使用
(4) 总长度:指首部和数据之和的长度,单位为字节,占16位,因此数据报的最大长度为2^16 – 1 = 65535字节
(5) 标识:当数据报由于长度超过网络的MTU而必须分片时,标识字段的值就被复制到所有的数据报片的标识字段中,相同的标识字段值使分片后的各数据报片最后能正确地重装为原来的数据报
(6) 标志:最低位记为MF(More Fragment),MF = 1表示后面“还有分片”的数据报,MF = 0表示这已经是若干数据报片中的最后一个
中间一位记为DF(Don’t Fragment),意思是“不能分片”,当DF = 0时才允许分片
(7) 片偏移:占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置,即相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍
ICMP报文是装在IP数据报中的,仅作为其中的数据部分。ICMP报文有两类:ICMP差错报告报文和ICMP询问报文
帧(PPP协议和以太网)
PPP帧的首部和尾部分别为四个字段和两个字段;
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E(01111110);
首部中的地址字段A规定为0xFF,控制字段C规定为0x03,这两个字段实际上并没有携带PPP帧的信息;
首部的第四个字段是2字节的协议字段。当当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0Xc021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据;
信息字段的长度是可变的,不超过1500字节;
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS
前两个字段分别为6字节长的目的地址和源地址字段(这个地址指的是硬件地址,MAC地址),第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。数据字段长度在46到1500字节之间(46是最小长度64减去18字节的首部和尾部得出的)。帧检验序列FCS(使用CRC检验)。
为什么以太网的MAC帧格式没有标志字段来确定帧的首部和尾部?
第二章 应用层
本章要点:
(1) 域名系统DNS
(2) 万维网和HTTP协议,以及万维网两种不同的信息搜索引擎
(3) 电子邮件的传送过程,SMTP协议和POP3协议、IMAP协议使用的场合
(4) 动态主机配置协议DHCP的特点
(5) 网络管理的三个组成部分(SNMP本身、管理信息结构SMI和管理信息库MIB)的作用
(6) 系统调用和应用编程接口的概念
(7) P2P文件系统
域名系统DNS
1.域名结构
DNS规定:域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符(一般不超过12个),也不区分大小写字母(CCTV = cctv)
域名服务器:一个服务器所负责管辖的(或有权限的)范围叫做区(zone),区可能等于或小于域,但一定不能大于域
根域名服务器(root name server):最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址,全球的根域名服务器总共有13个域名 a.rootservers.net, b.rootserver.net …… m.rootserver.net由13套装置构成
现在大部分DNS域名服务器,都能就近找到一个根域名服务器查询IP地址
顶级域名服务器(TLD服务器):负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)
权限域名服务器:当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户下一步应该找哪一个权限域名服务器。
本地域名服务器(local name server):当一台主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器
Windows中看到的首选DNS服务器和备用DNS服务器的IP地址就是本地域名服务器。
域名解析过程
一、主机向本地域名服务器的查询一般都采用递归查询(recursive query),递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址
二、本地域名服务器向根域名服务器的查询通常是采用迭代查询(iterative query),迭代查询的结果要么是所要查询的IP地址,要么是下一个要查询的域名服务器的IP地址
客户端发出的查询都是递归查询,DNS服务器向外发出的查询一般都是迭代查询
DNS缓存机制
域名服务器中广泛地使用了高速缓存(有时也称为高速缓存域名服务器),用来存放最近查询过的域名以及从何处获得域名映射信息的记录。这些缓存中的项都绑定有一个时间值多久会删除该信息
文件传送协议 FTP
FTP(File Transfer Protocol)提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存储权限(如访问文件的用户必须经过授权,并输入有效的口令)
FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干个从属进程,负责处理单个请求。
主进程工作步骤:
- 打开熟知端口(21),使客户进程能够连接上
- 等待客户进程发出请求
- 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
- 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。
图中服务器有两个从属进程:
(1)控制进程:控制连接在整个会话期间一直保持打开,控制进程在接收到FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”
(2)数据传送进程:实际用于传输文件的连接是“数据连接”
远程终端协议TELNET
用户用TELNET就可以在其所在地通过TCP连接注册到远地的另一台主机上(使用主机名或IP地址)。TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。
TELNET能够适应许多计算机和操作系统的差异,因为其定义了数据和命令是怎样通过互联网的,这些定义就是网络虚拟终端NVT(Network Virtual Terminal)
万维网WWW & 超文本传送协议HTTP
WWW(World Wide Web)是一个大规模的、联机式的信息储藏所。万维网用链接的方法能够非常方便地从互联网上的一个站点访问另一个站点。
超文本(hypertext):指包含指向其他文档的链接的文本
万维网以客户服务器方式工作,浏览器就是在用户主机上的万维网客户程序。万维网文档所驻留的主机则运行服务器程序
客户程序向服务器程序发出请求,服务器向客户程序送回客户所要的万维网文档,在一个客户程序主窗口上显示出的万维网文档称为页面(page)
万维网必须解决一下问题:
- 怎样标志分布在整个互联网上的万维网文档? -> 统一资源定位符URL(Uniform Resource Locator)
- 用什么样的协议来实现整个万维网上的各种链接? -> 超文本传送协议HTTP
- 怎样使不同作者创作的不同风格的万维网文档,都能在互联网上的各种主机上显示出来,同时使用户清除地直到在什么地方存在着链接?-> 超文本标记语言HTML
- 怎样使用户能够很方便地找到所需的信息?-> 搜索引擎
要点:
1.HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输;HTTP1.0是无状态的,即同一客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时的相同。HTTP/1.1使用了持续连接,即服务器发送响应后仍然在一段时间内保持这条连接;
2.HTTP/1.1的持续连接有两种工作方式,即非流水线方式和流水线方式
非流水线方式:客户在收到前一个响应后才能发出下一个请求
流水线方式:客户在收到HTTP的响应报文之前就能够接着发送新的请求报文,服务器可连续发回响应报文
3.代理服务器:代理服务器把最近的一些请求和响应暂存在本地磁盘中,当新请求到达时,若代理服务器发现这个请求与暂存的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源。代理服务器可在客户端或服务器端工作,也可在中间系统上工作。
4.搜索引擎
搜索引擎大体上可分为两大类:全文检索搜索引擎和分类目录搜索引擎
①全文检索搜索引擎:通过搜索软件到因特网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站。然后按照一定的规则建立一个很大的在线数据库供用户查询,用户在查询时只需要输入关键词,就从已建立的索引数据库上进行查询(并不是实时检索)
②分类目录检索:利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,输入到分类目录的数据库中。
③垂直搜索引擎:针对某一特定领域、特定人群或特定需求提供服务。
④元搜索引擎:将用户提交的检索请求发送到多个独立的搜索引擎上去搜索,并把检索结果集中统一处理
电子邮件-SMTP POP3 IMAP
一个电子邮件系统具有三个主要组成构件:用户代理、邮件服务器,以及邮件发送协议(如SMTP)和邮件读取协议(如POP3、IMAP)
需要注意:SMTP和POP3都是使用TCP连接来传送邮件的
SMTP通信的三个阶段:
(1) 连接建立:连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的。SMTP不适用中间的邮件服务器
(2) 邮件传送
(3) 连接释放:邮件发送完毕后,SMTP应释放TCP连接
试论述邮局协议POP的工作过程。电子邮件的传输为什么需要POP和SMTP这两个协议?IMAP与POP有何区别?
答:POP使用客户机服务器的工作方式,在接收邮件的用户的PC中必须运行POP客户机程序,而在其ISP的邮件服务器中则运行POP服务器程序。POP服务器只有在用户输入鉴别信息(用户名和口令)后才允许对邮箱进行读取。
POP是一个脱机协议,所有对邮件的处理都在用户的PC机上进行;IMAP是一个联机协议,用户可以操纵ISP的邮件服务器的邮箱。
动态主机配置协议DHCP
DHCP提供一种机制,称为即插即用连网。这种机制允许一台计算机加入到新的网络和获取IP地址而不用手工参与。连接到互联网的计算机的协议软件需要配置的项目包括:
(1) IP地址
(2) 子网掩码
(3) 默认路由器的IP地址
(4) 域名服务器的IP地址
DHCP使用客户服务器方式,需要IP地址的主机在启动时向DHCP服务器广播发送发现报文(255.255.255.255),现在每个网络至少有一个DHCP中继代理,它配置了DHCP服务器的IP地址信息
DHCO服务器分配给DHCP客户的IP地址是临时的,这段时间称为租用期。DHCP客户使用的UDP端口时68,服务器使用的UDP端口是67
P2P应用
1.具有集中目录服务器的P2P工作方式:
该方式的特点是,所有运行P2P软件的用户都必须向集中式目录服务器报告自己有哪些文件,当某个用户想下载某个文件时,就像目录服务器发出查询(这个过程仍然是C/S模式),目录服务器检索出结果后向用户返回存放这一文件的计算机的IP地址,于是这一用户就可以从这些IP地址中选一个得到想要的文件(这个下载过程就是P2P方式)
该方式的最大缺点就是可靠性差,在用户数非常多的情况下性能会下降
2.具有全分布式结构的P2P文件共享程序:
与前一种方案的最大区别是:不使用集中式的目录服务器进行查询,而是使用洪泛法在大量用户之间进行查询,为了不使查询的通信量过大,设计了一种有限范围的洪范查询….
比特洪流BT(Bit Torrent):BT采用“最稀有的优先”的技术,可以尽早把最稀有的文件块收集到。凡有当前以最高数据率向某个对等方传送文件块的相邻对等方,该对等方就优先把所请求的文件块传送给这些相邻对等方。
第三章 运输层
本章重点概念:
(1) 运输层为相互通信的应用进程提供逻辑通信
(2) 端口和套接字的意义
(3) 无连接的UDP的特点
(4) 面向连接的TCP的特点
(5) 在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议
(6) TCP的滑动窗口、流量控制、拥塞控制和连接管理
复用与分用:
运输层提供复用与分用的功能,复用即应用层所有的应用进程都可以通过运输层再传送到IP层;运输层从IP层收到发送到各应用进程的数据后,必须分别交付指明的各应用进程,这就是分用
端口和套接字的意义
“端口”需要与硬件端口区分,这里的端口是由软件虚拟出来的,不同的操作系统有不同的实现方式
端口号拼接到IP地址就构成了套接字(socket)或插口,因此套接字的表示方法是在点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开
套接字socket = (IP地址:端口号)
“socket”这个名词也有许多其他含义,比如:
①允许应用程序访问连网协议的应用编程接口API,即运输层和应用层之间的一种接口,称为socket API,并简称为socket
②在socket API中使用的一个函数名也叫作socket
③调用socket函数的端点称为socket,如“创建一个数据报socket”
④调用socket函数时,其返回值称为socket描述符,也可以简称为socket
TCP与UDP
用户数据报协议UDP(User Datagram Protocol)
(1) UDP是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延
(2) UPD使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表
(3) UPD是面向报文的,即UPD一次交付一个完整的报文;因此,应用程序必须选择合适大小的报文;
(4) UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低,适合于实时应用。
(5) UDP支持一对一、一对多、多对一和多对多的交互通信
(6) UDP的首部开销小
首部格式:UDP有两个字段:数据字段和首部字段,首部字段占8个字节,由4个字段组成,每个字段的长度为两个字节
(1) 源端口:源端口号
(2) 目的端口:目的端口号
(3) 长度:UDP用户数据报的长度,其最小值是8(仅有首部)
(4) 检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃
在计算检验和时,需要在UDP数据报之前临时增加12个字节的伪首部,伪首部既不向下传送也不向上提交
传输控制协议TCP(Transmission Control Protocol)
(1) TCP是面向连接的运输层协议,发送数据前需要建立TCP连接,传送数据完毕时也必须释放已经建立的TCP连接
(2) TCP连接只能是点对点的(一对一)
(3) TCP提供可靠交付的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达
(4) TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据,TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
(5) 面向字节流:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
TCP首部
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。
一个TCP报文段分为首部和数据两个部分,TCP报文段的首部的前20个字节是固定的,后面有4n字节是根据需要而增加的。
①源端口和目的端口
②序号:4字节 [0-2^32 – 1] 序号增加到2^32 – 1后下一个序号又回到0
TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,整个要传送的字节流的起始序号必须在连接建立时设置。例如,一个segment的序号字段值是301,而携带的数据共有100字节,那么最后一个字节的序号是400
③确认号:期望收到对方下一个segment(报文段)的第一个数据字节的序号
若确认号 = N,则表明到序号 N – 1 为止的所有数据都已经正确收到
④数据偏移:占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。实际上指出了TCP报文段的首部长度。
⑤确认ACK(ACKnowledgment):仅当ACK = 1时确认号字段才有效,当ACK = 0 时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1.
……
⑥同步SYN(SYNchronization):在连接建立时用来同步序号,SYN = 1而ACK = 0时表明这是一个连接请求报文段。
⑦FIN:用来释放一个连接,FIN = 1时表明此报文段的发送方的数据已经发送完毕
⑧窗口:占2字节:指的是发送本报文段的一方的接收窗口,窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位);简而言之,窗口值指出了现在允许对方发送的数据量,窗口值是动态变化着的。
⑨检验和:占2字节,校验范围包括首部和数据两个部分,计算方法和UDP一样?
⑩选项:长度可变,如最大报文段长度MSS:表示每个TCP报文段中的数据字段的最大长度,还有选择确认SACK,时间戳选项等
应用 | 应用层协议 | 运输层协议 |
名字转换 | DNS(域名系统) | UDP |
文件传送 | TFTP(简单文件传送协议) | UDP |
路由选择协议 | RIP(路由信息协议) | UDP |
IP地址配置 | DHCP(动态主机配置协议) | UDP |
网络管理 | SNMP(简单网络管理协议) | UDP |
远程文件服务器 | NFS(网络文件系统) | UDP |
IP电话 | 专用协议 | UDP |
流式多媒体通信 | 专用协议 | UDP |
多播 | IGMP(网际组管理协议) | UDP |
电子邮件 | SMTP(简单邮件传送协议) | TCP |
远程终端接入 | TELNET(远程终端协议) | TCP |
万维网 | HTTP(超文本传送协议) | TCP |
文件传送 | FTP(文本传送协议) | TCP |
在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议
TCP发送的报文段是交给IP层传送的,但IP层只能提供尽最大努力的服务?也就是说,TCP下面的网络所提供的是不可靠的传输。因此,TCP必须采用适当的措施才能使两个运输层之间的通信变得可靠。
理想的传输条件有以下两个特点:
(1)传输信道不产生差错
(2)不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
然而实际的网络中不具备以上条件,但我们可以使用一些可靠传输协议,当出现差错时,让发送方重传出现差错的数据,同时在接收方来不及处理收到的数据时,及时告诉发送方适当降低发送数据的速度。
停止等待协议
停止等待协议只是一种用于保证可靠传输的简单策略,运输层并没有使用这种简单的协议。
原理:发送方每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。
1.无差错情况:如下图(a),A发送完一个分组就暂停发送直到收到了B对该分组的确认再发送下一个分组。
2.出现差错:B接受M1时检测出了差错,就丢弃M1,其他什么也不做(不通知A收到有差错的分组),也可能是M1在传输过程中丢失了;这两种情况下B都不会发送任何信息,其设计思路是:A为每一个已发送的分组都设置一个超时计时器,只要在超时计时器到期之前收到了相应的确认就撤销该计时器,如果超过一定时间没有收到确认则重传前面发送过的分组。
为了实现这一机制需要注意一下三点:
①A发送完一个分组后,必须暂时保留已发送的分组的副本
②分组和确认分组必须进行编号,这样才能明确是哪一个发送出去的分组收到了确认
③超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些
3.确认丢失和确认迟到
假设出现了这么一种情况:B发送的对M1的确认丢失了(B收到了M1),那么A会超时重传。B再一次收到M1应该采取什么行动呢?
①丢弃这个重复的分组M1,不向上层交付
②向A发送确认
图(b)也是一种可能出现的情况,即传输过程没有差错,但B对M1的确认迟到了。
上述的可靠传输协议常称为自动重传请求ARQ(Automatic Repeat Request),意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组
信道利用率的计算
以停止等待协议为例子:
信道利用率 ,其中
为A发送分组所需要的时间,等于分组长度除以数据率;
为B确认分组所需要的时间,RTT是往返时间;分子为
是考虑到仅仅在该事件内传送有用的数据
连续ARQ协议
发送窗口:由发送方维持的窗口,位于发送窗口中的分组可连续发送出去,不需要等待对方的确认。
连续ARQ协议规定:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
接收方采用累积确认的方式:即接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组之前的所有分组都已经正确收到了(确认号是下一个需要接收的字节的序号)
累积确认的优点:容易实现,即使确认丢失也不必重传;缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
回退N步:例如发送方发送了前5个分组,而中间的第3个分组丢失了,这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
TCP可靠传输的实现
以字节为单位的滑动窗口
这里只假定数据传输只在一个方向进行,即A发送数据,B给出确认
发送窗口:A可以连续地把发送窗口内的数据发送出去,已经发送过的数据在未收到确认之前都必须暂时保留,以便在超时重传时使用。
发送窗口的后沿不可能向后移动,因为不能撤销掉已收到的确认;前沿通常是不断向前移动,不移动的情况有两种:一是没有收到新的确认,对方通知的窗口大小也不变;二是收到了新的确认但对方通知的窗口缩小了,使得发送窗口前沿正好不动
TCP缓存和窗口的关系
发送缓存与发送窗口:
发送缓存用来暂时存放:
(1) 发送应用程序传送给发送方TCP准备发送的数据
(2) TCP已发送但尚未收到确认的数据
发送窗口通常只是发送缓存的一部分;已被确认的数据应当从发送缓存中删除;发送应用程序必须控制写入缓存的速率,否则发送缓存就会没有存放数据的空间。
接收缓存与接收窗口:
接收缓存用来暂时存放:
(1) 按序到达的、但尚未被接收应用程序读取的数据
(2) 未按序到达的数据
如果收到的分组被检测出有差错,则要丢弃。如果接收应用程序来不及读取收到的数据,接收缓存最终会被填满,使接收窗口减小到零;反之,如果接收应用程序能够及时接收缓存中读取到的数据,接收窗口就可以增大
选择确认SACK(Selective ACK)
讨论这样一种情况:若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?
SACK工作原理:
前后字节不连续的每一个字节块都有两个边界,左边界和右边界,注意左边界指出字节块的第一个字节的序号,右边界减1才是字节块中的最后一个序号。然而TCP的首部没有哪个字段能够提供上述字节块的边界信息,如果要使用选择确认SACK,那么在建立TCP连接时,就要在TCP首部的选项中加上“允许SACK”选项。这样在TCP报文段的首部会增加SACK选项,以报告收到的不连续的字节块的边界……
然而,SACK文档并没有指明发送方应当怎样响应SACK。因此大多数的实现还是重传所有未被确认的数据块。
TCP的流量控制
所谓流量控制(flow control)就是让发送方的发送速率不要太快,让接收方来得及接收。
TCP的流量控制可以用滑动窗口来实现
上图中,接收方的主机B进行了三次流量控制。
第一次把窗口减小到rwnd = 300,第二次又减到rwnd = 100, 最后减到0
考虑这样一种情况:B向A发送了零窗口的报文段后不久,B的接收缓存又有了一些存储空间,于是B向A发送了rwnd = 400的报文段,然而这个报文段在传送过程中丢失了。A一直等待收到B发送的非零窗口通知,而B也一直等待A发送的数据;这就会产生死锁
为了解决这个问题,TCP为每一个连接设有一个持续计时器(persistence timer),只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器设置的时间到期,就发送一个零窗口探测报文段,而对方就在确认这个探测报文段时给出现在的窗口值。
TCP的拥塞控制
在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞(congestion)
拥塞控制是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载,是一个全局性的过程;
流量控制往往是指点对点通信量的控制,其所要做的是抑制发送端发送数据的速率,以便接收端来得及接收
开环控制与闭环控制:
开环控制是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不发生拥塞。
闭环控制基于反馈环路的概念,主要有以下措施:
(1) 监测网络系统以便检测到拥塞在何时、何处发生
(2) 把拥塞发生的信息传送到可采取行动的地方
(3) 调整网络系统的运行以解决出现的问题
基于窗口的拥塞控制:
cwnd(congestion window):发送方维持一个叫做拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程度,并且动态变化,发送方让自己的发送窗口等于拥塞窗口。
TCP进行拥塞控制的算法有四种:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)
1.慢开始:为了防止拥塞窗口cwnd的增长引起网络阻塞,还需要另外一个变量—慢开始门限ssthresh.
i.当cwnd < ssthresh时,使用上述慢开始算法;
ii.当cwnd >ssthresh时,停止使用慢开始算法,改用拥塞避免算法;
iii.当cwnd = ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法
慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置
cwnd = 1, 试探一下网络,然后再逐渐增大cwnd(每轮加倍)
2.拥塞避免:思路是使cwnd缓慢地增大,每经过一个往返时间RTT就把发送方的
cwnd加1,因此有“加法增大”的特点。
3.快重传:快重传可以让发送方尽早知道发生了个别报文段的丢失
快重传算法要求接收方立即发送确认,而不是等自己发送数据时才捎带确认(注意理解这句话)
即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
比如图中确认了M1和M2后,M3没有收到却收到了M4,按照快重传算法,接收方必须立即发送对M2的重复确认,以便让发送方及早知道接收方没有收到报文段M3。发送方接着发送M5和M6,接收方收到后仍然要分别发出对M2的重复确认。这样,发送方共收到了接收方的4个对M2的确认,其中后3个都是重复确认。快重传算法规定,发送方只要一连收到3个重复确认,就应当立即重传(即“快重传”),这样就不会出现超时,发送方也不就不会误认为出现了网络拥塞。
4.快恢复:Reno版本
当发送发连续接收到三个重复确认时,就执行“乘法减小”算法,把慢启动开始门限(ssthresh)和cwnd减半,然后执行拥塞避免算法,使拥塞窗口缓慢增大。
TCP的运输连接管理
运输连接有三个阶段:连接建立、数据传送、连接释放
三次握手、四次挥手……
1.客户端发送SYN报文段请求建立连接;且初始化一个序号seq = x
2.服务器收到连接请求报文段后,如果同意建立连接,则发送一个SYN+ACK报文段;且初始化一个序号seq = y
3.客户端收到服务器的确认后,还需要向服务器发送一个ACK报文段,至此连接已经建立。
请求断开连接的既可以是客户端也可以是服务器,这里假设使客户端请求断开连接
1.客户端发送一个标志位FIN为1的报文段
2.服务器收到后回一个ACK,并检查是否还有数据需要传输
3.服务器没有数据需要传输了,则发送给客户端一个FIN+ACK报文段
4.客户端再回一个ACK,经过2MSL(最长报文段寿命)的等待后才会关闭连接,而服务器只要收到这个ACK就会马上关闭连接;如果未收到则有一个超时重传机制。
第四章 网络层
虚电路服务与数据报服务
虚电路服务与数据报服务主要是围绕网络层是否提供可靠传输这一点来设计的,如今的TCP/IP体系的网络层提供的是数据报服务。
网际协议IP
与IP协议配套的还有三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
本来还有个逆地址解析协议RARP是和ARP协议配合使用的,现已淘汰
ICMP和IGMP画在上部是因为它们要使用IP协议
ARP协议在下部是因为IP要使用ARP协议
将网络互相连接起来需要使用一些中间设备,根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫做转发器(repeater)
(2)数据链路层使用的中间设备叫做网桥或桥接器(bridge)
(3)网络层使用的中间设备叫路由器(router)
(4)在网络层以上使用的中间设备叫做网关(gateway),用网关连接两个不兼容的系统需要在高层进行协议的转换。
当中间设备是转发器或网桥时,仅仅是把一个网络扩大了,从网络层的角度看,仍然是一个网络,一般不称之为网络互连。网关由于比较复杂,目前使用得较少。因此,我们讨论网络互连时,都是指路由器进行网络互连和路由选择。
IP地址分类
IP地址由互联网名字和数字分配机构ICANN进行分配,我国用户可向亚太网络信息中心APNIC申请IP地址(收费)
IP地址的编址方法共经过了三个历史阶段
(1)分类的IP地址。这是最基本的编址方法
(2)子网的划分。这是对最基本的编址方法的改进
(3)构造超网。这是比较新的无分类编址方法
分类的IP地址
将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。所以,一个IP地址在整个互联网范围内是唯一的。
IP地址::= {<网络号>,<主机号> } 这里”::=”表示”定义为”
A类、B类和C类地址的网络号字段分别为1个、2个、3个字节长,在网络号字段的最前面有1~3位的类别位,其数值分别规定为0,10和110
A类、B类、C类地址的主机号字段分别为3个、2个、1个字节长
D类地址用于多播(一对多通信)
E类地址保留为以后用
从IP地址的结构看,IP地址并不仅仅指明一台主机,还指明了主机所连接到的网络。
点分十进制法(dotted decimal nottation)
实际可指派的网络号要-2(主机号不能为全0和全1)
因为IP地址中主机号全0表示“本网络(this)”,是保留地址
网络号127(即01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信用,若主机发送一个目的地址为环回地址的数据报,则该数据报不会发送到任何网络,由本主机进行处理。
IP地址具有以下重要特点:
(1) IP地址都由网络号和主机号两部分组成,IP地址管理机构在分配IP地址时只分配网络号,而主机号由得到该网络号的单位自行分配;路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占用的存储空间以及查找路由表的时间。
(2) 一台主机(或路由器)可以有多个IP地址
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络
子网的划分(subnetting)
为什么要划分子网?
1.IP地址空间的利用率有时很低
2.给每一个物理网络分配一个网络号会使路由表变得太大而使网络性能变化
3.两级IP地址不够灵活,需要一种方法使得一个单位能随时灵活地增加本单位的网络而不必去互联网管理机构申请新的网络号
如何划分子网?
1.一个拥有许多物理网络的单位,可以将所属的物理网络划分为若干个子网,本单位以外的网络看不见这个网络是由多少个子网组成,这个单位对外仍然表现为一个网络
2.从网络的主机号借用若干位作为子网号,于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号、主机号
3.从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机
4.子网掩码
具体可见相关习题
硬件地址(MAC地址)/ 物理地址
物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
注意路由器总是具有两个或两个以上的IP地址,即路由器的每一个接口都有一个不同网络号的IP地址
地址解析协议ARP
ARP协议用于解决这样的问题:已经知道了一个机器的IP地址,需要找出其相应的硬件地址
要点:
1.每台主机都设有一个ARP高速缓存(ARP cache),用于存放一个从IP地址到硬件地址的映射表,并且这个映射表经常动态更新(新增或超时删除),注意这个映射表是本局域网的
2.通过ARP广播知道本局域网上目标IP的MAC地址(在本局域网上的所有主机上运行的ARP进程都能收到此ARP分组),ARP请求分组是广播发送的,但ARP响应分组是单播
3.ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间(例如,10~20分钟),凡超过生存时间的项目就删除。
IP数据报格式
一个IP数据报由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。首部的固定部分后面是一些可选字段,其长度是可变的。
(1) 版本:即IP协议的版本,通信双方使用的IP协议的版本必须一致
(2) 首部长度:占4位,其单位是4字节;首部长度字段的最小值是5(固定长度是20字节),最大值为60字节,当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
(3) 区分服务:一般情况下不使用
(4) 总长度:指首部和数据之和的长度,单位为字节,占16位,因此数据报的最大长度为2^16 – 1 = 65535字节
(5) 标识:当数据报由于长度超过网络的MTU而必须分片时,标识字段的值就被复制到所有的数据报片的标识字段中,相同的标识字段值使分片后的各数据报片最后能正确地重装为原来的数据报
(6) 标志:最低位记为MF(More Fragment),MF = 1表示后面“还有分片”的数据报,MF = 0表示这已经是若干数据报片中的最后一个
中间一位记为DF(Don’t Fragment),意思是“不能分片”,当DF = 0时才允许分片
(7) 片偏移:占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置,即相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍
(8) 生存时间,占8位,生存时间常用的英文缩写是TTL(Time To Live),表明数据报在网络中的寿命。单位为“跳数限制”(最初为秒),路由器在每次转发数据报之前就把TTL值减1,若TTL值减小到零就丢弃这个数据报,不再转发。若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。
(9) 协议:协议字段指出次数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。
(10) 首部检验和,占16位,这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(生存时间、标志、片偏移等可能发生变化)其检验规则如下:
①将IP数据报首部划分为许多16位字的序列,并把检验和字段置零
②用反码算术运算把所有16位字相加,将得到的和的反码写入检验和字段
③接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次,将得到的和取反码,若首部未发生任何变化则此结果必为0,保留这个数据报,否则即认为出差错,丢弃此数据报
IP数据报首部的可变部分用于支持排错、测量以及安全等措施。
路由选择协议
理想的路由算法
注意路由算法与之后要讨论的RIP、OSPR这些因特网中的路由协议不是等价的,这些协议是基于基础的路由算法的。
对路由算法有多种分类方式:
①根据算法是全局式还是分散式分为全局式路由选择算法,也称为链路状态(Link State,LS)算法和分散式路由选择算法,如距离向量(Distance-Vector,DV)算法
②根据算法是静态的还是动态的分为静态路由选择算法和动态路由选择算法
③根据算法是负载敏感的还是负载迟钝的分为负载敏感算法和负载迟钝算法
链路状态路由选择算法的描述
相当于Dijkstra算法
距离向量算法的描述
理解是如何迭代的
依靠邻居路由器发来的信息来更新距离(考虑以这个邻居作为中转路径是否更短来更新)
分层次的路由选择协议:
可以把整个互联网划分为许多较小的自治系统(autonomous system),记为AS。一个AS下的一组路由器使用其内部的路由选择协议和共同的度量,一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
内部网关协议IGP(Interior Gateway Protocol):即在一个自治系统内部使用的路由选择协议,如RIP和OSPF
外部网关协议EGP(External Gateway Protocol):若源主机和目的主机处在不同的自治系统中(这两个AS可能使用不同的内部网关协议),当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是EGP,使用的最多的是BGP-4(BGP的第4个版本)
自治系统之间的路由选择也叫作域间路由选择,而在自治系统内部的路由选择叫做域内路由选择。
RIP(Routing Information Protocol)
RIP是一种分布式的基于距离向量的路由选择协议
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,“距离”的定义如下:从一个路由器到直接连接的网络的距离定义为1;从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1
RIP协议的“距离”也称为“跳数(hop count)”,RIP协议允许一条路径最多只能包含15个路由器,可见RIP协议只适用于小型互联网。
RIP协议和OSPF协议都是分布式路由选择协议,它们的共同特点是每一个路由器都要不断地和其他一些路由器交换路由信息。
理解一个路由选择协议需要记住以下三个要点:
①和那些路由器交换信息?
②交换什么信息?
③在什么时候交换信息?
RIP协议的特点
(1) 仅和相邻路由器交换信息,RIP协议规定,不相邻的路由器不交换信息
(2) 路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表
(3) 按固定的时间间隔交换路由信息,当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由器信息
RIP协议的优缺点:
- RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
- RIP 协议最大的优点就是实现简单,开销较小。
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
OSPF(Open Shortest Path First)
开放最短路径ISP协议,使用分布式的链路状态协议(link state protocol)
OSPF的核心是使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法
OSPF最主要的特征就是使用分布式的链路状态协议,其主要特点:
- 使用洪泛法向本自治系统中所有路由器发送信息。
- 发送的信息是与本路由器相邻的所有路由器的链路状态。
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
虚拟专用网VPN和网络地址转换NAT
VPN(Virtual Private Network)
VPN使机构内部使用的计算机(不需要连接到外部互联网)可以由本机构自行分配其IP地址,而不需要向互联网的管理机构申请全球唯一的IP地址,这样大大节省了全球IP地址资源。
但是任意选择一些IP地址作为本机构内部的本地地址在某些情况下会与互联网中某个IP地址重合,所以指明了一些专用地址(private address),这些地址只能用于一个机构的内部通信,而不能用于互联网上的主机通信。
(1) 10.0.0.0 到 10.255.255.255 (或记 10.0.0.0/8,又称为24位块)
(2) 172.16.0.0到172.31.255.255(或记为172.16.0.0/12,又称为20位块)
(3) 192.168.0.0到192.168.255.255(或记192.168.0.0/16,又称为16位块)
使用VPN的通信流程
如图,假设主机X向主机Y发送IP数据报,源地址为10.1.0.1,目的地址为10.2.0.3
1.这个数据报作为本机构的内部数据报从X发送到与互联网连接的路由器R1
2.路由器R1收到内部数据报后,发现其目的网络必须通过互联网才能到达,就把整个的内部数据报进行加密(保证内部数据报的安全),然后重新加上数据报的首部,封装成在互联网上发送的外部数据报,其源地址是路由器R1的全球地址125.1.2.3,目的地址是R2的全球地址194.4.5.6
3.路由器R2收到数据报后将其数据部分取出进行解密,恢复出原来的内部数据报,交付主机Y
NAT(Natwork Address Translation)
与VPN相对的另一种情况是专用网内部的一些主机本来已经分配到了专用网内使用的专用地址,但现在又想与互联网上的主机通信,因此就有了NAT。
网络地址转换NAT要求在专用网连接到互联网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。
其工作原理如下:
如图,假设从专用网内部的主机A发送数据报到互联网上的主机B
源IP地址:192.168.0.3,目的IP地址:213.18.2.4
NAT路由器将数据报的源IP转换为新的源IP地址(即NAT路由器的全球IP地址)172.38.1.5,然后转发出去,当B收到这个数据报时,其响应的数据报的目的IP是NAT路由器的IP地址;NAT路由器会维护一个地址转换表,当其收到B传回来的数据报时还要进行一次IP地址转换从而将这个数据报送往A
可见,当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n台主机接入到互联网。需要注意的是,通过NAT路由器必须由专用网内的主机发起,这就表明这种专用网内部的主机不能充当服务器用。
为了更有效地利用NAT路由器上的全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上,这样就可以使多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址。使用端口号的NAT叫做网络地址与端口号转换NAPT(Network Address and Prot Translation)
第五章 数据链路层
本章重点:
(1) 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议(PPP协议以及CSMA/CD协议)的特点
(2) 数据链路层的三个基本问题:封装成帧、透明传输和差错检测
(3) 以太网MAC层的硬件地址
(4) 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合
基本概念及术语
(1) 链路(link)与数据链路(data link):
链路是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。数据链路则是另一个概念,当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输,若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
一般使用网络适配器(既有硬件,也包括软件)来实现这些协议,适配器一般都包括了数据链路层和物理层这两层的功能。
(2) 帧:数据链路层的协议数据单元(PDU)
使用点对点信道的数据链路层
点对点信道的数据链路层在进行通信时的主要步骤如下:
(1) 结点A的数据链路层把网络层交下来的IP数据报(或者叫数据报、分组、包)添加首部和尾部封装成帧
(2) 结点A把封装好的帧发送给结点B的数据链路层
(3) 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧
数据链路层不必考虑物理层如何实现比特传输的细节。
三个基本问题
1.封装成帧(framing)
在一个数据的前后分别添加首部和尾部,这样就构成了一个帧。
首部和尾部用于帧定界(确定帧的界限),同时包含必要的控制信息。
MTU:最大传送单元,规定了所能传送的帧的数据部分长度上限
控制字符SOH并不是S,O,H三个字符,SOH的十六进制编码为01,EOT为04;
发送帧时,是从帧首部开始发送的,接收端如果只收到了SOH而没有EOT则会丢弃这个帧。
2.透明传输
如果传输的数据中存在于SOH、EOT一样的比特编码则会出现帧定界错误,所以需要保证在帧的数据部分中的SOH、EOT不会造成传输出错。
解决方案:发送端在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制编码为1B),而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。
这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)
3.差错检测
比特差错:传输过程中1可能变为0,0可能变为1,是传输差错的一种
误码率BER(Bit Error Rate):在一段时间内,传输错误的比特占所传输比特总数的比率
循环冗余检验CRC(Cyclic Redundancy Check):数据链路层广泛使用的检错技术
其原理如下:
假定待传送的数据M = 101001(k = 6),在M后添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k + n)位(即余数作为冗余码拼接到M后面)
这n位冗余码通过如下的方法得出:注意模2运算与四则运算的不同之处在于,其不考虑进位和借位。
模2运算,M(被除数)后添加n个0除以双方事先商定的n+1位长的除数,另外注意和一般的除法不一样没有借位
除数P是事先商定的,R需要比P少1位
接收端会把接收到的数据以帧为单位进行CRC检验(如上面的例子是接收到101001 001):把收到的每一个帧都除以同样的除数P,如果传输过程中无差错,那么经过CRC检验后得出的余数R肯定为0
所以,在接收端对收到的每一帧经过CRC检验后,有以下两种情况:
(1) 若得出的余数R = 0,则判定这个帧没有差错,就接受
(2) 若余数R≠0,则判定这个帧有差错(但无法确定到底是哪一位/几位出了差错),丢弃
点对点协议PPP
互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
PPP协议应满足的需求
(1) 简单:对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制
(2) 封装成帧:PPP协议必须规定特殊的字符作为帧定界符
(3) 透明性:PPP协议必须保证数据传输的透明性(见透明传输)
(4) 多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(如IP、IPX等)的运行
(5) 多种类型链路:必须能够在多种类型的链路上运行,如串行的(一次只发送一个比特)或并行的(一次并行地发送多个比特),同步的或异步的,低速的或高速的,电的或光的点对点链路
(6) 差错检测:必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
(7) 检测连接状态
(8) 最大传送单元
(9) 网络层地址协商
(10) 数据压缩协商
PPP协议的组成
PPP协议由三个部分组成:
(1) 一个将IP数据报封装到串行链路的方法
(2) 一个用来建立、配置和测试数据链路连接的链路控制协议LCP
(3) 一套网络控制协议NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议
PPP协议的帧格式
PPP帧的首部和尾部分别为四个字段和两个字段;
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E(01111110);
首部中的地址字段A规定为0xFF,控制字段C规定为0x03,这两个字段实际上并没有携带PPP帧的信息;
首部的第四个字段是2字节的协议字段。当当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0Xc021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据;
信息字段的长度是可变的,不超过1500字节;
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS
字节填充:当PPP使用异步传输时,使用如下的填充方法
(1) 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)
(2) 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变为2字节序列(0x7D,0x5D)
(3) 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D,0x23)
零比特填充:当PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送),这种情况下PPP协议采用零比特填充方法来实现透明传输
即:在发送端,先扫描整个信息字段,只要发现有5个连续的1,则立即填入一个0(标志字段为0x7E->01111110);接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把这5个连续1后的一个0删除
使用广播信道的数据链路层
局域网使用的就是广播信道,广播信道可以进行一对多的通信。
现在以太网几乎成为了局域网的同义词
静态划分信道:使用之前的频分复用、码分复用等,用户只要分配到了信道就不会和其他用户发生冲突,但这种划分信道的方法代价较高,不适合与局域网
动态媒体接入控制,又称为多点接入(multiple access),其特点是信道并非在用户通信时固定分配给用户,又分为以下两类
(1) 随机接入:特点是所有的用户可随机地发送信息,但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞,即发生了冲突,使得这些用户的发送都失败,因此必须有解决碰撞的网络协议
(2) 受控接入:特点是用户不能随机地发送信息而必须服从一定的控制。典型代表有分散控制的令牌环局域网和集中控制的多点线路探寻(轮询)
适配器的作用
计算机与外界局域网的连接是通过适配器进行的,适配器又称为网络接口卡NIC(Network Interface Card)或简称为“网卡”。计算机的硬件地址存储在适配器的ROM中。而软件地址(IP地址)则在计算机的存储器中。
适配器在接收和发送各种帧时,不使用计算机的CPU。
CSMA/CD协议
总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据,这就是广播通信的方式,在同一时间只能允许一台计算机发送数据。
CSMA/CD协议即载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection),用于处理总线上发送冲突的问题。
- 以太网采用无连接的工作方式,即不必先建立连接就可以直接发送数据
- 以太网发送的数据都使用曼彻斯特编码的信号
CSMA/CD协议的要点:
多点接入:说明这是总线型网络,许多计算机以多点计入的方式连接在一条总线上
载波监听:即检测信道,不管在发送前还是发送中,每个站必须不停地检测信道;如果检测出已经有其他站在发送,则自己就暂时不许发送数据。
碰撞检测:当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会变大(互相叠加),当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站同时在发送数据。
其流程如下:
(1) 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部组成以太网帧,放入适配器的缓存中,但在发送之前,必须先检测信道
(2) 检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧
(3) 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听,这里有两种可能性:
①发送成功,在争用期内一直未检测到碰撞。这个帧肯定能发送成功,发送完成后,回到(1)
②发送失败:在争用期内检测到碰撞。这是立即停止发送数据,并按规定发送人为干扰信号(用于让所有用户知道现在发生了碰撞),适配器接着执行指数退避算法,等待r倍512比特事件后,返回到步骤(2),继续检测信道。若重传16次仍不能成功,则停止重传而向上报错。
以太网每发送完一帧,一定要把已发送的帧暂时保留一下,如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个保留的帧重传一次。
使用集线器的星型拓扑
集线器的特点如下:
(1) 集线器使用电子器件来模拟实际电缆线的工作,使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议
(2) 一个集线器有许多接口,集线器就像一个多接口的转发器
(3) 集线器工作在物理层,它的每个接口仅仅简单地转发比特
(4) 集线器采用了专门的芯片,进行自适应串音回波抵消。
以太网的MAC层
(1) 单播(unicast)帧:一对一,即收到的帧的MAC地址与本站的硬件地址相同
(2) 广播(broadcast)帧:一对全体,即发送给本局域网上的所有站点的帧(全1地址)
(3) 多播(multicast)帧:一对多,即发送给本局域网上一部分站点的帧
MAC帧的格式:
常用的以太网MAC帧格式有两种标准,一种是V2标准,另一种是IEEE的802.3标准
V2标准的MAC帧由五个字段组成:前两个字段分别为6字节长的目的地址和源地址字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。
例如,当类型字段的值是0x0800时,表示上层使用的是IP数据报
第六章 物理层
本章重点:(1)物理层的任务 (2)几种常用的信道复用技术 (3)几种常用的宽带接入技术
基本概念
物理层的作用是尽可能地屏蔽传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,这样就可使数据链路层只需要考虑如何完成本层的协议和服务。
可以将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性,即:
- 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等。平时常见的各种规格的接插件都有严格的标准化规定。
- 电气特性:指明在接口电缆的各条线上出现的电压的范围
- 功能特性:指明某条线上出现的某一电平的电压的意义
- 过程特性:指明对于不同功能的各种可能事件的出现顺序
数据通信的基础知识
一个数据通信系统可划分为三大部分,即源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接收端、接收方)
下面的模型是两个计算机经过普通电话线的连线。再经过公用电话网进行通信
源系统一般包括以下两个部分:
源点(source):源点设备产生要传输的数据,例如,从计算机的键盘输入汉字,计算机产生输出的数字比特流
发送器:通常源点生成的数字比特流要通过发送器编码后才能够在传输系统中进行传输。典型的发送器就是调制器。
目的系统一般也包括以下两个部分:
接收器:接收传输系统传送过来的信号,并把它转换为能够被目的设备处理的信息。典型的接收器就是解调器,它把来自传输线路上的模拟信号进行解调,还原发送端产生的数字比特流。
终点(destination):终点设备从接收器获取传送来的数字比特流,然后把信息输出
在源系统和目的系统之间的传输系统可以是简单的传输线,也可以是连接在源系统和目的系统之间的复杂网络系统。
通信术语
消息(message):通信的目的是传送消息,如话音、文字、图像、视频
数据(data):数据是运送消息的实体,数据是用特定方式表示的信息,通常是有意义的符号序列,这种信息的表示可用计算机或其他机器(或人)处理或产生
信号(signal):数据的电气或电磁的表现
根据信号中代表消息的参数的取值方式不同,信号可分为以下两大类:
(1)模拟信号,或连续信号—代表消息的参数的取值是连续的
(2)数字信号,或离散信号—代表消息的参数的取值是离散的
信道(channel)
信道和电路并不等同,信道一般用于表示向某一个方向传送信息的媒体,因此,一条通信电路往往包含一条发送信道和一条接收信道
(1)单向通信(单工通信):即只能有一个方向的通信而没有反方向的交互,例如无线电广播和电视广播
(2)双向交替通信(半双工通信):通信双方都可以发送消息,但不能同时发送,也不能同时接收
(3)双向同时通信(全双工通信):通信双方可以同时发送和接收消息
传输媒体
传输媒体也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。传输媒体可分为两大类,即导引型传输媒体和非导引型传输媒体。
在导引型传输媒体中,电磁波被导引沿着固定媒体(铜线或光纤)传播
而非导引型传输媒体就是指自由空间,在非导引型传输媒体中电磁波的传输称为无线传输。
导引型传输媒体
1.双绞线
双绞线是最古老但又最常用的传输媒体,把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合(twist)起来就构成了双绞线。模拟传输和数字传输都可以使用双绞线,使用双绞线最多的地方就是电话系统。
屏蔽双绞线(Shielded Twisted Pair,STP)即在双绞线的外面再加上一层用金属丝编织成的屏蔽层,用于提高抗电磁干扰的能力。
2.同轴电缆
由于外导体屏蔽层的作用,同轴电缆具有很好的抗干扰特性,被广泛用于传输较高速率的数据,目前主要用在有线电视网的居民小区中。
3.光缆
光纤通信就是利用光导纤维(简称光纤)传递光脉冲来进行通信。一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽。
光纤通信的优点:
(1) 传输损耗小,中继距离长,对远距离传输特别经济
(2) 抗雷电和电磁干扰性能好
(3) 无串音干扰,保密性好,也不易被窃听或截取数据
(4) 体积小,重量轻
非导引型传输媒体
微波接力通信、红外通信、激光通信、卫星通信
信道复用技术
复用(multiplexing)是通信技术中的基本概念。复用也是需要付出一定代价的:共享信道由于带宽较大因而费用也较高,还需要复用器和分用器,但如果复用的信道数量较大,那么在经济上还是合算的。
- 频分复用FDM (Frequency Division Multiplexing):所有用户在同样的时间占用不同的频率带宽资源。
- 时分复用TDM(Time Division Multiplexing):将时间划分为一段段等长的时分复用帧(TDM 帧),用户在不同的时间占用同样的频带宽度。
- 统计时分复用 STDM(Statistic TDM):改进的时分复用,明显地提高信道的利用率。
- 波分复用 WDM (Wavelength Division Multiplexing):光的频分复用
- 码分复用 CDM (Code Division Multiplexing):常用的名词是码分多址 CDMA(Code Division Multiplexing Access),每一个用户可以在同样的时间使用同样的频带进行通信,由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
作内积 / 8 得到这一个比特,-1发送0, 0无发送, +1发送1
习题及解答
简答题
1.试从多个方面比较电路交换和分组交换的主要优缺点
答:
①从数据传送的特点来比较:电路交换相比分组交换多了连接建立和释放的过程;电路交换适合连续传送大量的数据,分组交换具有较好的灵活性。
②可靠性比较:分组交换具有鲁棒性,可以通过更新路由查找表自动恢复绕开故障线路,但是收敛时间较长。电路交换虽然一处故障会导致整体崩塌。但是通过提前计算备选线路,可以将重启恢复线路的时间降到ms级别。
③适用性比较:分组交换在数据交换量小,低速的网络上具有简单性,而在高密度,高速的网络中,会由于路由器负载过大,导致出现拥塞丢包,排队时延等状况。而电路交换在高速的网络中保持不变的复杂度与可靠性。因此网络核心部分更适合使用分组交换,网络边缘部分适合使用电路交换
2.试描述构建应用程序中的客户机服务器模式(C/S)和P2P模式的区别
答:
C/S模式是一点对多点的,P2P模式是点对点的。前者严格区分客户端和服务器,客户程序必须知道服务器程序的地址,服务器程序不需要知道客户程序的地址;后者每一个对等连接中的主机既是客户又同时是服务器,连接双方都需要知道对方的服务器地址。
3.交换机和路由器都采用存储和转发(store-and-forward)的设计,简述它们构建转发表(forwarding table)的过程有何不同?
答:
以太网交换机用于在数据链路层扩展以太网,其内部的帧交换表(地址表)是通过自学习算法自动逐渐建立起来的。其通过对所有的接口进行广播,只有目的地址正确的接口才会接收从而确定表项。
路由器路由表的构建需要确定一下三个步骤:①和哪些路由器交换信息 ②交换什么信息 ③在什么时候交换信息。其需要与其他路由器交互以获得信息来构建路由表。
可见交换机不需要网络中的全局性信息即可构建自己的转发表,而路由器需要知道网络中的全局性信息。
4.描述并比较CSMA/CD和CSMA/CA机制
答:
CSMA/CD协议是数据链路层的协议,用于用于处理总线上发送冲突的问题
CSMA/CA协议是无线局域网的MAC层协议,用于尽量避免发生碰撞
1.两者的传输介质不同,CSMA/CD用于总线式以太网,CSMA/CA用于无线局域网
2.检测方式不同,CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测、载波检测和能量载波混合检测三种检测信道空闲的方式
CSMA/CD协议的流程
(1) 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部组成以太网帧,放入适配器的缓存中,但在发送之前,必须先检测信道
(2) 检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧
(3) 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听,这里有两种可能性:
①发送成功,在争用期内一直未检测到碰撞。这个帧肯定能发送成功,发送完成后,回到(1)
②发送失败:在争用期内检测到碰撞。这是立即停止发送数据,并按规定发送认为干扰信号,适配器接着执行指数退避算法,等待r倍512比特事件后,返回到步骤(2),继续检测信道。若重传16次仍不能成功,则停止重传而向上报错。
CSMA/CA协议的流程:
(1) 若站点最初有数据要发送(而不是发送不成功后再进行重传),且检测到信道空闲,则在等待时间DIFS后,就发送整个数据帧
(2) 否则,站点执行CSMA/CA协议的退避算法,一旦检测到信道忙,就冻结退避计时器。只要信道空闲,退避计时器就进行倒计时
(3) 当退避计时器时间减少到零时(这时信道只可能是空闲的),站点就发送整个的帧并等待确认
(4) 发送站若收到确认,就知道已发送的帧被目的站正确收到了。这时如果要发送第二个帧,就要从上面的步骤(2)开始,执行CSMA/CA协议的退避算法,随机选定一段退避时间。若源站在规定时间内没有收到确认帧ACK,就必须重传此帧(再次使用CSMA/CA协议争用接入信道),直到收到确认为止,或经过若干次的重传失败后放弃发送。
5.简单文件传送协议TFTP与FTP的主要区别?各用在什么场合?
答:(1) FTP提供文件传送的一些基本服务,使用TCP可靠的运输服务;FTP的主要功能是减少或消除在不同呃操作系统下处理文件的不兼容性;
TFTP是一个小且易于实现的文本传送协议,TFTP使用UDP协议,因此TFTP需要有自己的差错改正措施;
TFTP只支持文件传输而不支持交互
6.易混淆概念:适配器、转发器、集线器……
转发器(Repeater)
转发器又称为中继器或者放大器,用于物理层实现电气信号的“再生”,主要的功能是用来延伸网段和改变传输媒体,从而实现信息位的转发。它本身不执行信号的过滤功能。
由于在数据的传输过程中,存在损耗,在线路上传输的信号会随着传输的距离(或其***扰因素)逐渐减弱,减弱到一定程度甚至会造成信号的失真,中继器就是为了解决这一问题而设计的,它负责在两个节点的物理层上按位传输信息,完成信号的复制,调整或者放大功能,以此来延长网络的长度。
集线器(Hub)
集线器作为一种特殊的转发器,它同样在物理层工作。它的主要功能是对接收到的信号进行再生然后放大,扩大了网络的传输距离。集线器使用于星型网络布线,如果一个工作站出现了问题,不会影响整个网络的正常运行。
集线器可以克服介质单一通路的限制,可以简单理解为将一些机器都连接起来组成一个局域网。它把一个端口接收到的所有信号向其他端口发送出去,不能实现一对一的信号传输,只能实现广播传输。
举个例子可以更好的理解集线器的工作方式:
假如有一个4口的hub,当端口1要向端口4发送数据时,端口1会把数据同时发往其他三个端口,也就是说虽然它的数据要发给4,但是2,3也是能接收到的。2,3接收到以后,校验MAC地址发现不是给自己的,丢掉。4接收以后发现是给自己的,收下并且回应。
正因为集线器的这种工作方式,就造成了它工作效率低。一个数据要送达所有的端口,这就增加了数据的转发时间。此外,如果端口1没有收到4的回应,就会一直发送信号,直到收到为止,这可能会带来传输中的广播风暴。
以太网由总线型演变为星型拓扑,使用更便宜和更灵活的双绞线,在星型的中心增添了一种可靠的设备,就是集线器。所以在物理层扩展以太网时,用到的就是集线器。
适配器(Adapter)
网络中的适配器也俗称为网卡,在局域网中起着重要的作用。
计算机的MAC地址就是固化在适配器中的ROM中,计算机和外界局域网进行连接时,就是通过适配器进行的。在局域网中实现通信使用电缆或者双绞线以串行传输方式进行;在计算机中通过I/0总线以并行传输的方式进行。
适配器中有缓冲存储器,以便存储数据,适配器也具有过滤功能,会检查从网络上收到的MAC帧是否等于本站硬件地址,是则收下,不是就丢弃。
网桥(Bridge)
网桥工作于数据链路层,对它收到的MAC帧根据MAC地址进行过滤和转发,网桥将网络的多个网段在数据链路层连接起来,在数据链路层扩展以太网用到的就是网桥(还有交换机,后面说)。
网桥具有自学功能,每收到一个帧,就暂存到其缓冲中,若此帧没有出现差错,则通过查找站表,将收到的帧转发从对应的端口转发出去,若有差错,则丢弃。
网桥过滤了通信量,扩大了物理范围,提高了可靠性,但也增加了时延,不适用于通信量过大的局域网。
交换机(Switch)
网桥可以说是交换机的前身,这里说的交换机是以太网交换机,又叫交换式集线器。交换机实质上是一个多接口的网桥,通常有十几个或者更多的接口,采用全双工工作方式,具有并行性,可以同时连通多对接口、多对主机进行通信,有自学功能,这种自学功能就使得交换机能即插即用,不需要进行人工配置,非常方便。
路由器(Router)
路由器是实现分组的重要构件,工作于网络层(又叫网际层),它的主要任务就是路由选择和分组转发。
值得一提的是,在路由器前讨论的构件都属于网络接口层面,实现物理层和数据链路层的通信,使用的都是MAC地址,也就是硬件地址,路由器上升到网络层面,使用是IP地址。用ARP实现由IP地址向硬件地址的转换,ARP是解决同一个局域网上的主机或者路由器的IP地址到硬件地址的映射问题。
路由器中有路由表,路由表保存了目的网络和下一跳的地址,下一跳地址也就是实现数据传输要经过的其他节点。
为解决IP地址不够用的问题,又提出了子网划分,IP地址由原来的二级地址(网络号,主机号)变成了三级地址(网络号,子网号,主机号)。由于子网在已分配网络号的基础,从网络的主机号借用若干位做为子网号,这个子网号是单位自行设置的,它把一个局域网又分为几个局域网,有不同的子网号,但是对外界而言并看不到这些子局域网,看到的还是一个整体,为了实现数据由路由器转发过来能到达正确的网络,于是有了子网掩码这个概念,这个时候路由表中的内容也就发生了变化,变成了(目的网络地址,子网掩码,下一跳地址),将目的主机的IP号与子网掩码做与运算,若结果与其对应的目的网络地址一致,则从下一跳地址转发出去,若不一致,则继续查找。
至于路由表是如何得到的,需要了解路由选择算法(路由选择协议)这里就不展开了。还有后期又提出的CIDR无分类地址,和上面所讲的操作方法又有些不同。
网关(Gateway)
不同于上面的介绍,网关并不是一种物理产品,只要连接两个不同的网络的设备都可以实现网关的功能,比如上面提到的路由器就可以,也可以说路由器中包含了多个网关。
7. 为什么在TCP首部中要把TCP端口号放入最开始的4个字节?
答:ICMP的差错报文中要包含IP首部后面的8个字节的内容,而这里面有TCP首部中的源端口和目的端口。当TCP收到ICMP差错报文时需要用这两个端口来确认是哪条连接出了差错。
8.路由协议
RIP使用UDP,OSPF使用IP,而BGP使用TCP,这样做有何优点?为什么RIP周期性地和邻站交换路由器信息而BGP却不这样做?
答:RIP只和邻站交换信息,使用UDP无可靠保障,但开销小,可以满足RIP要求;
OSPF使用可靠的洪泛法,直接使用IP,灵活,开销小
BGP需要交换整个路由表和更新信息,TCP提供可靠交付以减少带宽消耗;
因为RIP使用UDP,因此必须周期性地和邻站交换信息才能使得路由信息及时得到更新,但BGP使用可靠交付的TCP就不需要这么做
9.网络体系结构
网络体系结构为什么要采用分层次的结构?协议与服务的区别与联系?
答:分层的好处:①各层次之间是独立的,某一层可以使用其下一层提供的服务而不需要知道服务是如何实现的。②灵活性好,当某一层发生变化时,只要其接口关系不变,则这层以上或以下的各层均不受影响。③易于实现和维护 ④能促进标准化工作
网络协议:为进行网络中的数据交换而建立的规则、标准或约定,由以下三个要素组成:
(1) 语法:即数据与控制信息的结构或格式
(2) 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应
(3) 同步:即事件实现顺序的详细说明
协议与服务:
①协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见其下面的协议,协议对服务用户是透明的
②协议是“水平的”,即协议是控制两个对等实体进行通信的规则。服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。
10.数据链路与链路有何区别?
数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与“数据链路接通了”的区别何在?
答:数据链路与链路的区别在于,数据链路除了链路外,还必须有一些必要的规程来控制数据的传输,因此数据链路比链路多了实现通信规程所需要的硬件和软件。
“电路接通了”表示链路两端的结点交换机已经开机了,物理连接已经能够传送比特流了,但是数据传输并不可靠,在物理连接基础上,再建立数据链路连接才是“数据链路接通了”,由于数据链路连接具有检测、确认和重传功能,才使不太可靠的物理链路变成可靠的数据链路。
11.数据链路层的三个基本问题
数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?
答:帧定界是分组交换的必然要求,透明传输避免消息符号与帧定界符号相混淆,差错检测防止无效的数据帧浪费后续路由上的传输和处理资源
应用题
1. IP数据报分片
一个UDP用户数据报的数据字段为8192字节,在数据链路层要使用以太网来传送。试问应当划分为几个IP数据报片?说明每一个IP数据报字段长度和片偏移字段的值。
答:链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象(另外注意传输层的首部只出现在第1片数据中)
由此知道:8192字节的数据部分会被划分为1472 + 1480 + 1480 + 1480 + 1480 + 800
片偏移为0、 184、 369、 554、 739、 924
2.CSMA/CD协议中的计算
假设节点A和节点B通过以太网LAN进行连接,且采用CSMA/CD进行通信。节点A和B间的距离是500米。通信信道对应的传输速度是100Mbps,传播速度是200m/usec(米/微秒)。假设在时间0(起始时间),A发送一个512bits的数据包给节点B。2usec之后,B也发送一个512bits的数据包给A,问:
(1) 节点A和B的以上传输会发生冲突吗?为什么?
(2) 如果发生冲突,节点A什么时候可以检测到这个冲突?
答:
(1) 会发生冲突,因为A的第一个比特传送到B需要2.5usec,所以2usec时B检测到信道是空闲的,会发送数据,由此与A发送的数据冲突。
(2) 首先注意传输时延是指从发送第一个比特到最后一个比特的时间,A会在B发生的第一个比特到达A时检测到冲突,即2usec + 500m / 200m/usec = 4.5usec
简单理解:即发射完所有比特之前没有检测到碰撞即可,检测到碰撞的最迟时间就是最A的第一个比特无限趋近与B时B发送了比特,即无限接近单程传播时间的2倍
3.TCP拥塞控制
(1)
(2) 慢开始阶段的时间间隔:[1, 6] [23, 26] (指数上升)
(3) 拥塞避免阶段的时间间隔:[6, 16] [17, 22]
(4) 第16轮次后是收到了三个重复的确认,第22轮次之后是超时检测
(5) 32、 21、 21
(6) 第7轮次
(7) ssthresh和cwnd应设置为收到三次重复确认时cwnd的一半,即4
4.吞吐量和信道利用率的计算
通信信道带宽为1Gb/s,端到端时延为10ms,TCP的发送窗口为65535字节,问:可能达到的最大吞吐量是多少?信道的利用率是多少?
答:在报文段平均往返时延20ms内,发送方最多发送65535 X 8比特,因此,最大吞吐量为 65535×8÷20ms=25.5Mbit/s
其中L为有效传送数据量,C为链路速率(就是这里的通信带宽),D为单程传播时延,分母相当于总传输时间(注意是RTT而不是单程)
信道利用率 = 最大吞吐量 / 带宽 = 25.5M / 1G = 2.55%
(2) 一个TCP连接下面使用256kb/s的链路,其端到端时延为128ms,经测试发现其吞吐量只有120kb/s,试问发送窗口W是多少?
答:跟上题一样的计算方法
设窗口大小为x,注意窗口是以字节为单位
得x=57826bit=7228字节,因此窗口大小为7228字节
5.首部字段
一UDP用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17
试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器的还是反过来?使用UDP的这个服务器程序是什么?
源端口:1586 目的端口:69 ,用户数据报总长度为28字节,数据部分长度为20字节(首部固定为8字节);此UDP用户数据报是从客户发给服务器的,因为目的端口号 < 1023是熟知端口,服务器程序是TFTP(简单文件传输协议)
6.路由更新
答:路由器B更新后的路由表如下
N1 7 A 无新信息,不改变
N2 5 C 相同的下一跳,更新
N3 9 C 新的项目,添加进来
N6 5 C 不同的下一跳,距离更短,更新(注意这里不是4,要+1)
N8 4 E 不同的下一跳,距离一样,不改变
N9 4 F 不同的下一跳,距离更大,不改变
7.电路交换与分组交换
要传送的报文共x(bit),从源站到目的站经过k段链路,每段链路的传播时延为d(s),数据率为b(b/s),在电路交换时电路的建立时间为s(s),在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计,问在怎样的条件下,分组交换的时延比电路交换的要小
答:
由于忽略排队时延,所以电路交换:总时延=连接时延+发送时延+传播时延 = s+k*d+x/b
分组交换:我们设有n个分组
那么在源节点把所有的分组发送到链路上的时延:np/b (p/b是每一个分组的发送时延);
又因为有k段链路,除去源节点以外,还有k-1个节点需要储存转发。
这里关键是注意分组交换发送时延(传输时延)的计算:从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需要的时间
从这里可以看到我们需要计算的是最后一个分组的发送时延,即(x/p)*(p/b) + (k-1)*(p/b)
传输中有(k-1)次存储转发延迟,而不是计算所有分组的存储转发延迟
所以分组交换时延:kd + (x/p) * (p/d) + (k-1) * (p/b)
当s > (k-1) * (p/b)时,电路交换的时延比分组交换大
8.子网划分
一般有两种题型,一种是已知要划分的子网数,求每个子网的主机数;第二种是知道每个子网的主机数,来划分子网。
前者根据要划分的子网数,借相应的主机位即可
后者根据主机数得到需要的子网号位数,如100台电脑需要7位,那么子网掩码就有7个0.
题目:
对每个目的IP地址,用路由表中的掩码与之做按位与运算,得到的结果与路由表中该子网掩码对应的目的网络比较,如果一样则往这个接口
答案: