目录
4.2 具有比特差错信道上的可靠数据传输(rdt2.0、rdt2.1、rdt2.2)
4.3 具有比特差错的丢包信道上的可靠数据传输(rdt3.0)
第一章 计算机网络和因特
端系统通过通信链路和分组交换机连接到一起,组成网络。网络和网络之间通过路由器相连,组成了因特网。因此,因特网是“网络的网络”
1.ISP(因特网服务提供商)
端系统通过ISP接入因特网。每个ISP是一个由多个分组交换机和多段通信链路组成的网络。不同的ISP为端系统提供了各种不同类型的网络接入
为了允许因特网用户之间互相通信,允许用户访问世界范围的因特网内容,这些低层ISP通过国家的、国际的高层ISP互联起来。高层ISP是由通过高速光纤链路互联的高速路由器组成。每个ISP都是独立管理的,运行IP协议,遵从一定的命名和地址习惯
- 第一层ISP(主干ISP)
- 覆盖国际区域(十几个)
- 与其它低层次的ISP构成“客户-提供商”的关系
- 不向任何人付费,可以向区域ISP和接入ISP出售因特网接入
- (第一层外)的其它ISP
- 可以与两个或更多ISP连接,因此,即使它的ISP之一故障,它仍能继续发送和接收分组
- 相同等级结构层次的邻近一对ISP能够对等,对等ISP不向其对等付费,对等ISP之间的流量直接连接
- IXP(因特网交换点)
- 汇合点,多个ISP能够在此共同对等
2.速率相关性能指标
2.1 速率
定义:连接在计算机网络上的主机在数字信道上传送数据位数的速率
单位:b/s,Kb/s,Mb/s,Tb/s,
如果用字节表示,则是B/s,KB/s,MB/s,TB/s
1Byte=8Bit
2.2 带宽
在计算机网络中,指的是网络设备所支持的最高速度,单位同速率,是理想条件下最高速率
2.3 吞吐量
指的是单位时间内通过某个网络的数据总量
速率就是实际网速,带宽是理论网速(长城宽带警告),吞吐量是一个或多个设备的综合速率,比如说1000m宽带的路由器连着三部手机,每部手机都是10mb/s看电影,那么速率就是10mb/s,带宽是宽带的1000m,路由器吞吐量是30mb/s,即三者之和
3.时延
3.1时延
- 处理时延:检查分组首部,决定将分组导向何处所需的时延
- 排队时延:分组在链路上等待传输时,经受的排队时间
- 传输时延:将分组的所有比特推向链路所需的时间
- 传播时延:分组在链路中传播所需的时间
名称 | 描述 | 计算公式 |
---|---|---|
发送时延 | 数据从主机到信道上所用的时间 | 发送的数据长度/发送速率 |
传播时延 | 数据在信道上传播所花费的时间 | 信道长度/电磁波在信道上传播的速率 |
排队时延 | 数据在路由器前等待前面数据处理的时间 | 无计算方式 |
处理时延 | 数据在路由器中处理需求的时间 | 无计算方式 |
使用高速链路(提高网速),只能减小发送时延,无法减少其他三个时延
3.2时延带宽积
公式:时延带宽积=传播时延x带宽
意思是链路上有多少比特的数据
3.3往返时延RTT
发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延
RTT=传播时延x2+处理时间(有时可能直接忽略)
3.4 利用率
1.信道利用率
信道利用率=有数据通过时间/有+无数据通过时间
2.网络利用率
网络利用率=所有信道利用率加权求平均值
3.时延和利用率的关系图
利用率越高,延迟越大
4.协议层次和服务模型
- 五层因特网协议栈
- 应用层:任务是通过应用进程间的交互来完成特定网络应用
- 运输层:负责向两台主机中进程之间的通信提供数据传输服务
- 网络层:负责为分组交换网上的不同主机提供通信服务、选择合适的路由
- 链路层:将网络层的数据报封装成帧,使用链路层协议在相邻节点间的链路上传输帧
- 物理层:将帧中一个个比特从一个节点移动到下一个节点
- 七层OSI参考模型
- 表示层:使通信的应用程序能够解释交换数据的含义,提供数据压缩、数据加密等服务
- 会话层:提供了数据交换的定界和同步功能,包括建立检查点和恢复方案的方法
4.1为什么要分层,分层要做什么
(1)发起通信的计算机必须将数据通信的通路进行激活。
(2)要告诉网络如何识别目的主机。
(3)发起通信的计算机要查明目的主机是否开机,并且与网络连接正常。
(4)发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作。
(5)确保差错和意外可以解决。
4.2正式认识分层结构
4.3五层参考模型传输过程
第一章章节检测
1【单选题】下图描述的网络协议要素是
- A、
语法
- B、
语义
- C、
时序
- D、
格式
我的答案:C
2【单选题】在下图所示的采用“存储-转发”方式的数据报网络中,所有链路的数据传输速率为100 Mbps,分组大小为1 000 B,其中分组头大小为20 B。若主机H1向主机H2发送一个大小为980 000 B的文件,则在不考虑分组拆装时间和传播延迟的情况下,从H1发送开始到H2接收完为止,需要的时间至少是
- A、80ms
- B、80.08ms
- C、80.16ms
- D、80.24ms
我的答案:C
3【单选题】与大多数其他接入网络相比,拨号接入网络通常具有较高时延的是【 】。
- A、排队时延
- B、传播时延
- C、传输时延
- D、处理时延
我的答案:
4【单选题】与大多数其他接入网络相比,卫星接入网络通常具有高时延是【 】?
- A、排队时延
- B、传播时延
- C、传输时延
- D、处理时延
我的答案:
5【单选题】以下哪项通常不是电路交换的特征?
- A、呼叫设置
- B、资源预留
- C、存储转发
- D、资源闲置
我的答案:C
6【单选题】下列选项中,不属于协议要素的是
- A、层次
- B、语法
- C、语义
- D、时序
我的答案:A
7【单选题】
在分组交换网络中,主要取决于网络拥塞程度的时间延迟是
- A、 排队延迟
- B、节点处理延迟
- C、传输延迟
- D、传播延迟
我的答案:A
8【单选题】在一个CDMA网络中,某站点正接收另一码序列为(-1,1,1,-1,-1,-1,1,-1)的站点发送的数据,若该站点收到(-111-1-1-11-1 1-1-1111-11 1-1-1111-11 -111-1-1-11-1),则该站点收到的数据是
- A、1001
- B、0001
- C、0110
- D、1000
我的答案:A
9【单选题】在下图所示的采用“存储-转发”方式的分组交换网络中,所有链路的数据传输速率为100 Mbps,分组大小为1 000 B,其中分组头大小为20 B。若主机H1向主机H2发送一个大小为980 000 B的文件,则在不考虑分组拆装时间和传播延迟的情况下,从H1发送开始到H2接收完为止,需要的时间至少是
- A、 80.24 ms
- B、80 ms
- C、80.08 ms
- D、80.16 ms
我的答案:D
10【多选题】各用户可以使用相同频率载波发送信息的多路复用技术是
- A、TDM
- B、CDM
- C、FDM
- D、WDM
我的答案:AB
11【填空题】实现网络互连的传输媒介(如光纤、双绞线、微波等)称为_____
12【填空题】约定计算机网络通信实体间如何通信的是 协议
13【填空题】计算机网络向用户可以提供那些服务?
14【填空题】因特网的协议栈自上向下5个层次依次为: 应用层、运输层、网络层、链路层、物理层。
15【填空题】应用层的信息分组称为报文(message); 传输层 的分组称为报文段(segment);网络层的分组称为数据报(datagram);链路层分组称为 帧。
16【填空题】 路由器 处理网络、链路和物理层(第1层到第3层)。链路层交换机处理链路层和物理层(第1层到第2层)。主机处理所有五个层协议。
17【填空题】因特网的协议栈自上向下5个层次依次为:应用层、运输层、网络层、链路层、物理层。
18【填空题】传输层 的分组名字是报文段,数据链路层的分组名字是 帧 。网络层分组的名字是 数据报 。
19【判断题】“主机”和“端系统”没有区别。√
20【判断题】电路交换更适合实时数据流传输。√
21【判断题】FDM和TDM是电路交换网络中常用的资源分配机制。√
22【判断题】分组交换网络更容易出现拥塞和排队延迟。√
23【判断题】电路交换网络具有统计复用的优势。√
24【判断题】分组交换网络更容易出现拥塞和排队延迟。√
25【判断题】电路交换技术更适合突发数据传输的网络。×
26【判断题】采用10Mbps的HFC接入Internet可能比2Mbps的ADSL接入还慢。×
第二章 应用层
1.应用程序体系结构
- 客户机/服务器(C/S)体系结构
- P2P体系结构
网络健壮性指的是P2P模型不容易坏掉,即使一个节点坏了也没问题,可以有其他节点代替
2.因特网提供的运输服务
当创建一个新的因特网应用时,首先要做出的决定是选择UDP还是TCP,它们能为应用程序提供下列服务:
- TCP
- 面向连接的服务
- 可靠数据传输服务
- UDP
- 无连接的服务
- 不可靠数据传输服务(不保证到达,也不保证有序到达)
除此之外,TCP具有拥塞控制机制,拥塞控制不一定能为应用程序带来直接好处,但能对整个网络带来好处。UDP没有拥塞控制
3.应用层协议
3.1 HTTP(超文本传输协议)
使用TCP作为运输层协议
无状态协议:服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。假如某个特定的客户机在短短的几秒钟内两次请求同一个对象,服务器并不会因为刚刚为该用户提供了该对象就不再做出反应,而是重新发送该对象
- HTTP客户机:web浏览器
- HTTP服务器:web服务器,包含web对象(HTML文件、JPEG文件、java小程序、视频片段等)
连接类型:
- 非持久连接:每个请求/响应对是经一个单独的TCP连接发送
- 持久连接:所有请求/响应对使用同一个TCP连接发送
如果使用非持久连接,将TCP握手第三步与一个HTTP请求报文结合起来发送,服务器接收请求后响应一个对象。因此,传输一个对象消耗2个RTT。(可以同时建立多个连接并行传输)但是,由于TCP连接会分配缓冲区和变量,大量使用非持久连接会给服务器造成压力
如果使用持久连接,则客户机接收到请求对象后服务器不会发送一个TCP连接关闭请求。这个连接服务于所有web对象的传输(流水线发送),如果经过一个时间间隔仍未被使用,则HTTP服务器关闭连接
- http1.0使用非持久连接
- http1.1使用持久连接
1)HTTP报文格式(请求报文)
“Host”:请求的目标主机
“Connection:close”:浏览器告诉服务器不希望麻烦地使用持久连接,而是要求服务器在发送完请求后关闭连接
“User-agent”:用户代理,即向服务器发送请求的浏览器的类型(服务器可以正确地为不同类型的用户代理发送相同对象的不同版本)
“Accept-language”:用户想得到该对象的语法版本
方法字段:
- GET:绝大部分HTTP请求报文使用GET方法
- POST:用户提交表单时(如向搜索引擎提供关键字),但提交表单不一定要用POST方法
- HEAD:类似于GET,区别在于服务器返回的响应报文中不包含请求对象(常用于故障跟踪)
- PUT:用于向服务器上传对象
- DELETE:用于删除服务器上的对象
GET与POST的区别与联系:
2)HTTP报文格式(响应报文)
“Connection:close”:告诉客户机在报文发送完后关闭了TCP连接
“Date”:报文生成、发送时的日期
“Last-Modified”:web对象最后修改的日期
状态信息:
- 200 OK:请求成功,信息包含在返回的响应报文中
- 301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location首部中。客户机软件自动用新的URL获取对象
- 304 Not Modified:条件GET的响应报文中的状态码,web服务器告诉web缓存相应对象未被修改
- 400 Bad Request:请求不能被服务器理解
- 403 Forbidden:服务器收到请求,但是拒绝提供服务。服务器通常会在响应报文中给出不提供服务的原因
- 404 Not Found:被请求的文档不在服务器上
- 505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本
Telnet:HTTP响应报文查看工具
3)cookie
用于识别用户,可能出于下列意图:
- 服务器想限制用户的访问
- 服务器想把内容与用户身份关联起来
cookie包含4个组成部分:
- 在HTTP响应报文中有一个Set-cookie首部行
- 在HTTP请求报文中有一个Cookie首部行
- 在用户端系统中保留有一个cookie文件,由用户的浏览器管理
- 在web站点有一个后端数据库
4)web缓存
web缓存器也叫代理服务器,用于缓存web对象。用户可以配置其浏览器,使得所有HTTP请求首先指向web缓存器
如果web缓存器没有请求的对象,会与初始服务器直接建立一条TCP连接,web缓存器进一步发送HTTP请求,获取对象,当接收到对象后,首先在本地缓存,然后生成一个HTTP响应报文,发送给客户机(因此,web缓存器既是客户机,又是服务器)
web缓存器类似于内存与处理器之间的cache,它能从整体上大大降低因特网上的web流量,从而改善所有应用的性能
条件GET:web缓存器使用条件GET向web服务器确认某个对象是否已经被修改(不是最新的对象)。如果1)请求报文使用GET方法,2)并且包含一个If-modified-since:首部行,那么这个HTTP请求报文就是一个条件GET
如果相应对象未被修改,web服务器返回一个实体为空的响应报文(也就是说并没有包含请求对象),状态码为“304 Not Modified”
3.2 FTP(文件传输协议)
FTP使用两个并行的TCP连接来传输文件:
- 控制连接(持久):传输控制信息,如用户标识、口令、改变远程目录命令、文件获取上传的命令
- 数据连接(非持久):传输实际文件
FTP客户机发起向FTP服务器的控制连接,然后在该连接上发送用户标识和口令、改变远程目录的命令。FTP服务器收到命令后,发起一个到客户机的数据连接,在该连接上准确地传送一个文件并关闭连接
有状态的协议:FTP服务器在整个会话期间保留用户的状态信息。服务器必须把特定的用户账号和控制连接联系起来
3.3 电子邮件协议
电子邮件系统有3个主要组成部分:用户代理、邮件服务器、简单邮件传输协议(SMTP)
- 每个用户在邮件服务器上有一个邮箱,保存该用户发送和接收的邮件
- 如果邮件未发送成功,会保存在邮件服务器上,通常30分钟左右再进行尝试,几天后仍不成功则删除,并以邮件形式通知发送方
- SMTP传输邮件之前,需要将报文主体编码为ASCII码,传输后需要解码(HTTP传输不需要)
- SMTP一般不使用中间邮件服务器发送邮件,即使两个邮件服务器位于地球的两端
- SMTP会把邮件中所有对象封装在一个报文中,而HTTP则是每个报文封装一个web对象
1)多用途因特网邮件扩展(MIME)
普通的邮件报文主体为ASCII编码的数据,报文首部适合于发送普通的ASCII文本,但是不能充分满足多媒体报文或携带非ASCII文本格式(非英文字符)的报文需求。需要额外的首部行提供对发送这些文件的支持
MIME中包含2个支持发送上述文件的首部:
- Content-Transfer-Encoding:指出所用编码类型,接收方可以根据这个字段还原
- Content-Type:文件类型,接收方可以根据这个首部采取一些适当动作(如解压)
2)接收方邮件拉取
SMTP是一个”推协议“,不能用于接收方代理从邮件服务器上拉取邮件,拉取邮件需要使用POP3(第三版的邮局协议)、IMAP(因特网邮件访问协议)或HTTP
POP3(第三版的邮局协议):当用户打开一个到邮件服务器端口110上的TCP连接后,POP3就开始工作了,包含3个阶段
- 特许:用户发送用户名和口令鉴别身份
- 事务处理:用户代理取回报文(还能标记报文、获取邮件统计信息)
- 更新:客户机发出了quit命令后,结束了POP3会话,邮件服务器会删除被标记为删除的报文
使用POP3拉取时,可以设置为”拉取并删除“或”拉取并保留“
IMAP(因特网邮件访问协议):POP3不能提供远程文件夹功能,IMAP可以,IMAP服务器把每个报文与一个文件夹联系起来,IMAP为用户提供了创建文件夹以及在文件夹之间移动邮件的命令。除此之外,还提供在远程文件夹中查询邮件、按指定条件查询匹配文件的命令。与POP3不同,IMAP服务器维护了IMAP会话的用户状态信息
基于web的电子邮件:当使用web浏览器发送接收邮件时,推送到邮件服务器和从邮件服务器拉取邮件使用的是HTTP协议
3.4 DNS(域名系统)
DNS运行于UDP之上,使用53号端口,它提供下列服务:
- 主机名到IP地址的转换(主要)
- 主机别名:有着复杂主机名的主机可以拥有一个或多个别名,应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址
- 邮件服务器别名:qq.com与foxmail.com,DNS可以解析邮件服务器别名获得规范名和IP地址
- 负载分配:繁忙的站点被冗余分布在多台服务器上,这些服务器有不同IP地址,IP地址集合对应于一个规范主机名,当客户机通过主机名获取IP地址时,DNS服务器用包含全部这些地址的报文进行回答,但在每个回答中选择这些地址排放的顺序,从而将负载分配到不同服务器
1)DNS服务器
集中设计(单一DNS服务器)具有下列问题:
- 单点故障
- 通信容量:单个DNS服务器承受所有查询负载
- 远距离的集中式数据库:单个DNS服务器不可能”邻近“所有查询客户机
所以DNS服务器使用分布式设计方案:
- 根DNS服务器:因特网上有13个根DNS服务器(标号A到M),大部分位于北美洲
- 顶级域(TLD)DNS服务器
- 权威DNS服务器
除此之外,DNS服务器还有本地DNS服务器。严格来说,本地DNS服务器不属于DNS服务器的层次结构,但对DNS层次结构很重要。一台主机具有一台或多台本地DNS服务器的IP地址,本地DNS服务器起着代理的作用,将请求转发到DNS服务器层次结构中
2)DNS查询步骤
递归查询:靠别人 根服务器,顶级服务器,权限服务器一样忙
在上图中
主机先是想本地域名服务器发送请求,如果查不到的话,
本地域名服务器向根域名服务器发送请求(找别人),如果还是查不到的话,
根域名域名服务器向顶级域名服务器发送请求(找别人),如果还是查不到的话,
顶级域名服务器向权限域名服务器发送请求(找别人)
可以看到每一次向下一个查询的服务器都变了,不是本地域名系统一个个去问,而是服务器自己一个个问下去迭代查询:靠自己 本地服务器最忙
在上图中
主机先是想本地域名服务器发送请求,如果查不到的话,
本地域名服务器去向根域名服务器发送请求,如果还是查不到的话,
根域名域名服务器去向对应的顶级域名服务器发送请求(本地服务器去找,根域名给目标顶级域名服务器的IP地址),如果还是查不到的话,
顶级域名服务器让主机去向权限域名服务器发送请求(本地服务器去找,顶级域名给目标权限域名服务器的IP地址)
可以看到这里是根系统服务器一个个挨个问的地址
DNS缓存:在查询链中,当一个DNS服务器接收到一个DNS回答时,DNS服务器能将回答中的信息缓存在本地存储,以便加速后序可能的相同查询。由于主机IP和主机名之间的映射不是永久的,DNS服务器会在一段时间后丢弃缓存(本地DNS服务器可以缓存TLD服务器的IP地址,因而允许直接绕过查询链中的根DNS服务器)
3)DNS记录和报文
所有DNS服务器共同存储着资源记录,资源记录格式如下:
(Name,Value,Type,TTL)
- Type=A:此时Name是主机名,Value是对应IP地址
- Type=NS:Name是域(如foo.com),Value是知道如何获取该域中主机IP地址的权威DNS服务器的主机名
- Type=CNAME:Value是别名为Name的主机对应的规范主机名
- Type=MX:Value是别名为Name的邮件服务器的规范主机名
如果一台DNS服务器是某个特定主机名的权威DNS服务器,那么会有一条包含该主机名的类型A记录(不是权威服务器,也可能在缓存中包含A记录)
如果DNS服务器不是某个主机名的权威DNS服务器,那么会包含一条类型NS记录,还将包含一条类型A记录,提供了在NS记录的Value字段中DNS服务器的IP地址
DNS报文(查询和响应报文格式相同)
nslookup:从主机直接向某些DNS服务器发送DNS查询报文
注册域名
因特网名字和地址分配机构(ICANN)向各种注册登记机构授权,可以向这些机构申请注册域名:
- 提供基本权威DNS服务器和辅助权威服务器的域名和IP
- 注册登记机构会将NS和A类型的记录输入TLD服务器
- 确保自身在提供的权威DNS服务器中输入了相应类型的记录
4)DDos带宽洪泛攻击
如,攻击者向每个DNS根服务器连续不断地发送大量的分组,从而使得大多数合法的DNS请求得不到回答
DNS根服务器配置分组过滤器可以拦截这些分组,本地DNS服务器缓存了顶级域名服务器的IP地址,也能绕过DNS根服务器,防止攻击
3.5 P2P应用
不同于C/S架构,P2P架构中,每个主机既是客户机也是服务器,称作对等方,由于文件分布存储在多个对等方中,因此文件分发速度更快
u
:上传速率d
:下载速率F
:文件(比特)大小
假设服务器需要将文件发送到N
个对等方:
1)如果使用C/S架构:
- 服务器总共需要上传
NF
比特数据,那么至少需要NF/us
的时间 - 设
dmin
为下载速率最小的对等方,那么该对等方不可能在F/dmin
内获得文件
那么有:Dcs ≥ max{NF/us,F/dmin}
,服务器调度传输可使下届作为实际分发时间,即:Dcs = max{NF/us,F/dmin}
。当N足够大时,分发时间取决于NF/us
,随对等方数量线性增加
2) 如果使用P2P架构:
- 刚开始只有服务器拥有文件,为了将文件的所有比特传至网络,需要
F/us
- 设
dmin
为下载速率最小的对等方,那么该对等方不可能在F/dmin
内获得文件 - 设
utotal = us + u1 + ... + un
表示系统总上传速率。由于最终每个对等方会有一个文件,那么总共需要上传NF
比特,那么所有数据的上传时间不可能小于NF/utotal
因此又:Dp2p ≥ max{F/us,F/dmin,NF/utotal}
,如果每个对等方接收到一个比特就重新分发一个比特,可使下届作为实际分发时间,即:Dp2p = max{F/us,F/dmin,NF/utotal}
。实际上,重新分发的是文件块而不是一个个比特
下图展示了在两种架构下分发时间与对等方数量的关系,可以看出使用P2P进行文件分发速度快,具有自我扩展性:
P2P中文件的搜索方式
- 集中式索引:使用一个集中式索引服务器存储索引,是一种P2P和C/S混合的体系结构,文件分发是P2P的,搜索是C/S的
- 查询洪泛:建立在Gnutella协议基础上,索引全面分布在对等方区域中,对等方向相邻对等方发出文件查询请求,相邻对等方进一步转发查询请求
- 层次覆盖:结合以上两种,与因特网高速连接并具有高可用性的对等方被指派为超级对等方,新的对等方与超级对等方之一建立TCP连接,将其可供共享的所有文件告诉超级对等方,超级对等方维护着一个索引,超级对等方之间通过TCP连接,可以转发查询
第二章章节检测
1【单选题】在电子邮件系统中,邮件服务器之间进行邮件发送使用的协议是【 】。
- A、HTTP
- B、SMTP
- C、IMAP
- D、POP3
我的答案:B
2【单选题】在Socket套接字编程中,仅在TCP服务端程序中需要调用的Socket API函数是【 】。
- A、socket()
- B、bind()
- C、connect()
- D、accept()
我的答案:D
3【单选题】在电子邮件系统中,邮件服务器之间进行邮件发送使用的协议是【 】。
- A、HTTP
- B、SMTP
- C、IMAP
- D、POP3
我的答案:B
4【单选题】在Socket套接字编程中,仅在TCP服务端程序中需要调用的Socket API函数是【 】。
- A、socket()
- B、bind()
- C、connect()
- D、accept()
我的答案:D
5【单选题】假设某公司申请到netutopia.com域名,除其创建和配置对应的权威域名服务器外,还须将其权威域名服务器信息在DNS系统中的哪些服务器上进行设置【 】。
- A、某个根域名服务器
- B、所有的顶级域名服务器
- C、某个权威域名服务器
- D、仅.com顶级域名服务器
我的答案:D
6【单选题】在Socket套接字编程中,无论是服务端、客服端,还是TCP、UDP中,都会调用的Socket API函数是【 】。
- A、socket()
- B、bind()
- C、accept()
- D、connect()
我的答案:A
7【单选题】在OSI参考模型中,完成路由选择功能的层次是
- A、网络层
- B、传输层
- C、数据链路层
- D、物理层
我的答案:A
8【单选题】假设在存储-转发的分组交换网络中,主机A到达主机B的路径上有4段链路,其速率分别是R1=500kbps,R2=2Mbps,R3=1Mbps,R4=100kbps,则主机A向主机B发送信息的理想吞吐量是
- A、100kbps
- B、 500kbps
- C、1Mbps
- D、 2Mbps
我的答案:A
9【单选题】如果域名服务器无缓存,当采用迭代(iterative)方法解析另一网络某主机域名时,最后一个被查询的域名服务器是
- A、权威域名服务器
- B、根域名服务器
- C、顶级域名服务器
- D、本地域名服务器
我的答案:A
10【单选题】假设网络无差错、无数据丢失,基于HTTP 1.0,传输一个引用10个JPEG图像的Web页需要的时间为
- A、22个RTT
- B、11个RTT
- C、12个RTT
- D、21个RTT
我的答案:A
11【单选题】一个DNS资源记录(RR)为(hi.edu.cn, ml.hi.edu.cn, MX, 250),则hi.edu.cn是
- A、邮件服务器的别名
- B、邮件服务器的域名
- C、本地域名服务器的域名(
- D、权威域名服务器的域名
我的答案:A
12【单选题】服务器端套接字绑定的IP地址是
- A、INADDR_ANY
- B、PF_INET
- C、AF_INET
- D、SOCK_STREAM
我的答案:A
13【单选题】通告SMTP服务器端开始发送邮件内容的SMTP命令是
- A、DATA
- B、HELO
- C、MAIL FROM
- D、RCPT TO
我的答案:A
14【多选题】若用户1与用户2之间发送和接收电子邮件的过程如下图所示,则1、2、3阶段分别使用的应用层协议可以是
- A、HTTP、SMTP、POP3
- B、HTTP、SMTP、HTTP
- C、SMTP、SMTP、POP3
- D、SMTP、SMTP、HTTP
- E、SMTP、SMTP、SMTP
- F、HTTP、HTTP、POP3
- G、SMTP、HTTP、HTTP
我的答案:CD
15【多选题】下列Socket API函数中,可以在TCP服务器端调用的是
- A、socket()
- B、bind()
- C、listen()
- D、accept()
- E、sendto()
- F、connect()
我的答案:ABCD
16【填空题】对于两个进行网络通信进程,发起通信的进程是__________;等待连接的进程是服务器端。
我的答案:第一空: 客户端
17【判断题】假设用户请求由一些文本和3幅图像组成的Web页面。对于这个页面,客户将发送1个HTTP请求报文并接收4个HTTP响应报文。
我的答案:×
18【判断题】两个不同的Web页面(例如,www.mit.edu/research.html及www.mit.edu/students.html)可以通过同一个持续连接发送。
我的答案:√
19【判断题】HTTP响应报文决不会具有空的报文体。
我的答案:×
20【判断题】在浏览器和初始服务器之间使用非持续连接的话,一个TCP报文段是可能携带两个不同的HTTP服务请求报文的。
我的答案:×
21【判断题】在HTTP响应报文中的Date:首部指出了该响应中对象最后一次修改的时间。
我的答案:×
22【判断题】客户端的UDP套接字不能使用connect()函数。
我的答案:×
23【判断题】P2P方式实现文件分发比C/S方式快。
我的答案:√
第三章 传输层
1.端口号与套接字
1.1 端口号
通常在一台主机上能够运行许多网络应用程序。IP地址可以标识一台主机,端口号则是用来标识这台主机上的特定进程
端口号是一个16bit的数字,大小在0~65535之间,0~1023范围的端口号称为周知端口号,保留给周知的应用层协议
应用层协议 | 端口号 | 运输层协议 |
---|---|---|
DNS | 53 | UDP |
FTP | 21(控制连接),20(数据连接) | TCP |
TELNET | 23 | TCP |
DHCP | 67(服务器),68(客户端) | UDP |
HTTP | 80 | TCP |
HTTPS | 443 | TCP |
SMTP | 25 | TCP |
POP3 | 110 | TCP |
IMAP | 143 | TCP |
1.2 套接字
网络应用由成对进程组成,进程通过一个称为套接字的软件接口在网络上发生和接收报文
套接字是同一台主机内应用层与运输层之间的接口,也可称为应用程序和网络之间的应用程序编程接口
TCP套接字:(源IP,源端口,目的IP,目的端口)
UDP套接字:(目的IP,目的端口)
2.多路复用与多路分解
- 多路分解:将运输层报文段中的数据交付到正确的套接字的过程(通过报文段的端口号字段)
- 多路复用:从源主机不同套接字收集数据,并为数据封装上首部信息从而生成报文段,传递到网络的过程
3.UDP
出于下列原因可能使用UDP:
- 应用层能更好地控制要发送的数据和发送时间(TCP拥塞时会遏制发送方发送)
- 无需建立连接
- 无连接状态(TCP需要维护连接状态,包括接收和发送缓存、拥塞控制参数、序号与确认号的参数)
- 分组首部开销小(每个TCP报文段有20字节的首部开销,而UDP仅有8字节的开销)
可以在应用程序自身中构建可靠性机制来实现UDP应用的可靠数据传输
UDP能提供运输层最低限度的两个服务:差错检测、数据交付
3.1 UDP报文段结构
UDP首部只有4个字段,每个字段2个字节,一共8个字节大小的首部
校验和:对报文段中的所有16比特字(包括数据部分,不包括校验和本身)的和相加(如有溢出会卷回)的结果取反就是校验和。在接收方,会将所有16比特字的和相加,如果分组无差错,这个和会是“1111-1111-1111-1111”(为了方便阅读,使用'-'分隔)
许多链路层协议提供了差错检测,UDP还需提供校验和的原因在于,不能确保所有链路都提供了差错检测。此外,即使报文段经链路正确地传输,当其存储在某台路由器的内存中时,也可能引入比特差错。既未确保逐段链路的可靠性,也未确保内存中的差错检测,因此UDP必须在端到端基础上在运输层提供差错检测
校验和方法需要相对小的分组开销。例如,TCP和UDP中的校验和只用了16比特。然而与常用于链路层的CRC(循环冗余检测)相比,他们提供相对弱的差错保护。运输层使用校验和而链路层使用CRC的原因是:运输层通常在主机中作为用户操作系统的一部分并用软件实现,因此采用简单而快速(如校验和)的差错检测方案是重要的。另一方面,链路层的差错检测在适配器中用专业硬件实现,它能快速地执行更复杂的CRC操作
4.可靠数据传输原理
- rdt:可靠数据传输
- udt:不可靠数据传输
4.1 完全可靠信道上的可靠数据传输(rdt1.0)
假设底层信道是完全可靠的
4.2 具有比特差错信道上的可靠数据传输(rdt2.0、rdt2.1、rdt2.2)
更现实的底层信道模型是分组中的比特可能受损
引入了自动重传请求(ARQ)协议,ARQ还需要另外3种协议来处理存在的比特差错:
- 差错检测
- 接收方反馈:肯定确认(ACK)和否定确认(NAK)
- 重传:接收方收到有差错的分组时,发送方重传
对于发送方,在等待ACK或NAK状态时,不能发送更多分组。类似于rdt2.0这种行为的协议被称为停等协议
rdt2.0的问题在于没有考虑到ACK和NAK分组可能受损的情况
处理受损ACK或NAK的办法是,如果收到受损的ACK或NAK,则重传一次分组,但是这样又无法确认是一次新的分组还是重传的分组。解决办法是在分组中添加一个序号字段,接收方只需检查序号即可确定收到的分组是否是一次重传。对于rdt2.0,只需1比特序号即可,从而得到rdt2.1
如果收到受损的分组,接收方也可以发送一个对上次正确接收分组的ACK,也能实现与NAK一样的效果,也就是rdt2.2
4.3 具有比特差错的丢包信道上的可靠数据传输(rdt3.0)
现在假定除了比特受损外,底层信道还会丢包,因此需要引入时间机制决定何时重传分组
4.4 流水线可靠数据传输
rdt3.0功能正确,但由于是一个停等协议,所以性能很差。如果能在收到确认之前发送多个分组,可以大大提升性能
1)回退N步(GBN)
也被称为滑动窗口协议
- 发送方
- 超时重传所有已发送但未确认的分组
- 接收方
- 每接收到一个有序分组交付到上层,丢弃无序分组
- 累积确认收到的有序分组
丢弃无序分组的优点在于接收方缓存简单,需要维护的唯一信息就是下一个按序接收的分组的序号;缺点是对于丢弃的分组,随后重传也许会丢失或出错,因此甚至需要更多的重传
下图为窗口长度为4个分组的GBN运行情况:
2)选择重传(SR)
一个单个分组的差错就可能引起GBN重传大量分组,许多分组根本没有必要重传。随着信道差错率的增加,流水线可能被这些没有必要重传的分组填满
- 发送方
- 如果收到的ACK对应一个窗口内的分组,则标记为已接收,序号等于send_base则移动窗口至具有最小序号的未确认分组处
- 如果窗口移动了,并且有序号落在窗口内的未发送分组,则发送这些分组
- 如果发生超时,只能发送1个分组
- 接收方
- 确认(ACK)一个正确接收到的分组(收到滑动窗口前的分组也要再次确认,因为这种情况通常意味着这个分组的前一次确认未被发送方收到)
- 失序分组会被缓存直到所有丢失分组都被收到,此时将一批分组按序交付给上层
一个SR运行的例子:
对于SR而言,接收方窗口长度必须小于等于序号空间大小的一半,否则可能无法确认一个分组是重传还是初次传送