目录
用户数据报协议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)数据传送进程:实际用于传输文件的连接是“数据连接”