计算机网络复习总结

0x01 前言

本学期最后一科概率论终于考完了 终于闲下来写写自己的博客了。就是闲着太无聊了,计网都考完一周了,我还在这里写总结。不知道明年会不会有学弟学妹来看看我这菜鸡的博客。话不多说,直奔主题!

0x02 CH1-概论

网络协议(network protocol),简称协议是为进行网络中的数据交换而建立的规则、标准或约定。

• 规定–所交换的数据的格式、有关的同步问题

(1)语法:即数据与控制信息的结构或格式。

(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。

(3)同步:即事件实现顺序的详细说明。

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

时延: 发送时延 传播时延 处理时延 排队时延

拓朴结构:边缘部分:由各主机构成,用户直接进行信息处理和信息共享;低速连入核心网。

​ 核心部分:由各路由器连网,负责为边缘部分提供高速远程分组交换。

分组交换:先把较长的报文划分成较短的、固定长度的数据段,每一个数据段前面添加上首部构成分组(首部包含地址信息,分组信息等控制信息。 • 中间结点根据首部的地址信息查表转发。 • 每个中间结点都完成存储转发,分组就能 到达目的节点。)

实现设备–路由器(Router) ➢封装发送数据 ➢动态选择传输路径 ➢进行差错校验 ➢可以进行速率转换。

路由器处理分组的过程 – 存储分组 – 查找路由表 – 转发分组 (独立)

分组交换缺点:➢开销-封装首部➢排队延迟 ➢丢包 ➢开销-解封装 ➢乱序

优点:•迅速-不用建立连接

​ •灵活-分组

​ •高效-动态分配带宽,逐段占用

​ •灵活-独立查找发送

​ •可靠-协议保障

综合 OSI 和 TCP/IP 的优点,采用一种原理体系结构。

各层的主要功能:物理层:物理层的任务就是 透明地传送比特流。物理层还要确定连接电缆插头的定义及连接法。

​ 数据链路层:数据链路层的任务是在两个相邻结点间的线路上无差错地传送以帧(frame)为单位的数据。每一帧包括 数据和必要的控制信息。

​ 网络层:网络层的任务就是要选择合适的路由,使发送站的运输层所传下来的分组能够正确无误地按照地址找到目的站,并交付给目的站的运输层。

​ 运输层:运输层的任务是向上一层的进行通信的两个进程之间提供一个可靠的端到端服务,使它们看不见运输层以下的数据通信的细节。

​ 应用层:应用层直接为用户的应用进程提供服务。

0x03 CH2-物理层

编码:曼彻斯特编码:位周期中心的向上跳变代表0

​ 差分曼彻斯特编码:在每一位的中心处都有跳变 位开始边界又跳变代表0

​ 归零制

​ 不归零制

奈奎斯特(Nyquist) 定理 – W为信道的带宽(以Hz为单位) – L 为信号的离散等级 C=2× W ×log2L

香农(Shannon)定理 – W为信道的带宽(以 Hz 为单位) – S 为信道内所传信号的平均功率 – N 为信道内部的高斯噪声功率 • C = W log2 (1+S/N) b/s

• 信噪比单位:分贝dB=10log10 (S/N ) • 信噪比越大,信息的极限传输速率就越高 • 存在无差错的传输

复用是通信技术中的基本概念,是一种干线技术

频分复用FDM:用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。• 频分复用的所有用户在同样的时间占用不同的带宽资源。波分复用就是光的频分复用

时分复用TDM(Time Division Multiplexing) • 时分复用帧(TDM 帧)• 周期性地出现 •本质:所有用户是在不同的时间占用同样的频带宽度。

码分复用:各用户使用经过特殊挑选的相互正交的不同码型,因此彼此不会造成干扰。这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。占用较大的带宽。

0x04 CH3-链路层

封装成帧 –封装首部尾部 –界定帧的开始和结束 • 透明传输 –解决帧界定符的传输问题 • 差错控制 –检错纠错

帧定界是分组交换的必然要求透明传输避免消息符号与帧定界符号相混淆差错检测防止合差错的无效数据帧浪费后续路由上的传输和处理资源

封装成帧:首部和尾部的作用实现协议功能 •如何让接收方明确帧的界限? 要进行帧定界,需要指出帧开始和帧结束。

透明传输:解决界定符的正常传输 出现了“EOT” 误认为是一个帧

发送端的处理 •从网络层获得数据 •在数据中出现的界定符前面插入一个转义字符“ESC” •转义字符出现数据中,在转义字符前面插入一个转义字符。

接收端的处理 •收到比特流,先根据界定符成帧 •删除帧中插入的转义字符;删除连续两个转义字符前面一个 •数据送往网络层

差错控制:在传输过程中可能会产生比特差错 •误码率 BER (Bit Error Rate):在一段时间内,传输错误的比特占所传输比特总数的比率。 •为了保证数据传输的可靠性,必须采用差错控制措施。

•循环冗余检验 CRC 检错技术 •假设待传送的一组数据 M 在 M 的后面再添加供差错检测用的 n 位冗余码一起发送

仅用CRC 只能做到无差错接受 •凡是接受的帧都能以几近于1的概率认为这些帧在传输过程中没有产生差错。

以太网MAC 帧格式:目的地址字段 6 字节,源地址字段 6 字节,类型/长度字段 2 字节(如果小于等于 1536(0x600),则是数据长度字段(802.3),如果大于 1536,则表示类型(DIX以太网),用来标志 上一层使用的是什么协议, 以便把收到的 MAC 帧的数据上交给上一层的这个协议。),数据字段的最小长度:46字节,FCS 字段 4 字节

无效的 MAC 帧:帧的长度不是整数个字节; •校验有差错; •MAC 帧长小于64字节或大于1518 字节。 对于检查出的无效 MAC 帧——–丢弃

0x05 CH4-网络层

TCP/IP 体系中两个主要的协议之一。 •与IP协议配套使用的还有三个协议: – 地址解析协议 ARP – 网际控制报文协议 ICMP – 网际组管理协议 IGMP

IP 协议:实现网络互连。使参与互连的性能各异的网络从用户看起来好像是一个统一的网络。网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一,与 IP 协议配套使用的还有四个协议。

ARP 协议:是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。

RARP:是解决同一个局域网上的主机或路由器的硬件地址和 IP 地址的映射问题。

ICMP:提供差错报告和询问报文,以提高 IP 数据交付成功的机会 因特网组管理协议

IGMP:用于探寻、转发本局域网内的组成员关系。

ARP:已经知道了一个机器(主机或路由器)的IP地址,需要找出其相应的硬件地址。

数据链路层的帧必须使用硬件地址。 •每一个主机都有一个 ARP 高速缓存(ARP cache) – 映射表–存放局域网上的各主机、路由器的 IP 地址和 硬件地址。 – 减少网络上的通信量 •主机 A 向本网的主机 B 发送 IP 数据报 根据IP地址查找 ARP 高速缓存 – 如有,将硬件地址写入 MAC 帧。 – 如没有,ARP请求广播。

为什么不用硬件地址直接进行通信?

• 不同协议硬件地址不同

• 硬件地址表异常庞大

• 硬件地址与逻辑网络无关

• 调用 ARP对用户是透明的。连接到因特网的主机 都拥有统一的 IP 地址,它们之间的通信就像连接 在同一个网络上那样简单方便。

为什么划分子网:两级的 IP 地址不够灵活。

​ – IP 地址空间的利用率有时很低。

​ – 路由表太大,网络性能差

过程:从其他网络发送给本单位某个主机的 IP 数据报 – 仍然根据 IP 数据报的目的网络号 net-id,先找到连接 在本单位网络上的路由器。 – 单位网路由器收到后,再按目的网络号 net-id 和子网 号 subnet-id 找到目的子网。 – 最后将 IP 数据报直接交付目的主机。

RIP 是内部网关协议中最先得到广泛使用的协议。

• RIP 协议完成网络中的每一个路由器都维护从它自己到每一个目的网络的距离记录。

• RIP 是一种分布式的基于距离向量的路由选择协议。

RIP特点:仅和相邻路由器交换信息。

• 交换的信息是当前本路由器所知道的全部信息, 即自己的路由表。

• 按固定的时间间隔交换路由信息,例如,每隔 30 秒。

RIP工作原理:路由器刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。

• 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

• 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下 一跳路由器的地址。

• RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。

RIP协议让AS中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表, 使得从每一个路由器到每一个目的网络的路由都是最短的

优点 • 通用 • 实现简单 • 开销较小 • 易于维护

缺点 • 占用带宽资源 • 网络规模受限 • 收敛时间较长 • 路由度量单一

RIP允许一条路径最多只能包含15 个路由器。因此当距离为16时相当于网络不可达。

• 可见RIP只适用于小型互联网。

• RIP 认为一个好的路由就是它通过的路由器的数 目少,即“距离短” 。

• RIP不能在两个网络之间同时使用多条路由。RIP选择一个具有最少路由器的路由(即最短路由), 哪怕还存在另一条高速(低时延)但路 由器较多的 路由。

OSPF最主要的特征:是分布式的链路状态协议

OSPF三个要点(工作原理):• 向本自治系统中所有路由器发送信息,这里使用 的方法是洪泛法。

• 发送的信息就是与本路由器相邻的所有路由器的 链路状态,但这只是路由器所知道的部分信息。 – “链路状态”就是说明本路由器都和哪些路由器相邻, 以及该链路的“度量”(metric)。

• 只有当链路状态发生变化时,路由器才用洪泛法 向所有路由器发送此信息。

OSPF特点:OSPF 不用 UDP 而是直接用 IP 数据报传送。 • OSPF 构成的数据报很短,好处包括 – 减少路由信息通信量。 – 可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。

负载平衡如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。 • 支持可变长度的子网划分和无分类编址 CIDR。 • 每一个链路状态都带上一个32位的序号,序号越大状态就越新。

OSPF 的五种分组:

1.问候(Hello)分组:用来发现和维持邻站的可达性

2.数据库描述(Database Description)分组:向邻站给出自己的链路状态数据库中的所以链路状态项目的摘要信息

3.链路状态请求(Link State Request)分组:向对方请求发送某些链路状态项目的详细信息

4.链路状态更新(Link State Update)分组:用洪泛法对全网更新链路状态

5.链路状态确认(Link State Acknowledgment)分组:对链路更新分组的确认。

“转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。 • “路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。

输入:数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。

输出:将交换结构传送来的分组发送到线路 • 当交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。

分组丢弃:若路由器处理分组的速率赶不上分组进入队列的 速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而 只能被丢弃。 • 路由器中的输入或输出队列产生溢出是造成分组 丢失的重要原因。

0x06 CH5-运输层

TCP 面向连接的服务

– TCP要提供可靠的、面向连接的运输服务

– 增加了许多的开销。协议数据单元的首部大,还要占用许多的处理机资源。

– TCP不提供广播或多播服务。

TCP 传送的数据单位协议是 TCP 报文段

TCP 最主要的特点

• TCP 是面向连接的

• 每一条 TCP 连接只能有两个端点 只能是点对点(一对一)。

• TCP 提供可靠交付的服务 无差错,不丢失,不重复,按序到达。

• TCP 提供全双工通信 • TCP 是面向字节流的。

TCP报文段首部格式:源端口和目的端口字段——各占 2 字节。 端口用于识别应用层进程。运输层的复用和分用功能 都要通过端口才能实现。

序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号

确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

数据偏移(即首部长度)——占 4 位,它指出 TCP 报文 段的首部长度。“数据偏移”以 4 字节为计算单位。即首部最大值为60字节。

保留字段——占 6 位,保留为今后使用,但目前 应置为 0。

紧急URG = 1 时,表明紧急指针字 段有效。它告诉系统此报文段中有紧急数据应尽快传送

确认 ACK —— 只有当 ACK = 1 时确认号字段才有效

推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个 缓存都填满了后再向上交付

复位 RST (ReSeT) —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步 SYN SYN = 1 表示这是一个连接请求或连接接受报文

终止 FIN (FINis) —— 用来释放一个连接。 FIN = 1 表明此报文段的发送端的数据已发送完毕, 并要求释放运输连接。

窗口字段 —— 占 2 字节,用来让对方设置发送窗口的 依据,单位为字节。

检验和 —— 占 2 字节。检验和字段检验的范围包括 首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上12 字节 的伪首部。

紧急指针字段 —— 占 16 位,在URG=1才有意义。 指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。 即使窗口值为0也可发送紧急数据。

选项字段 —— 长度可变。TCP 最初只规定了一种选 项,即最大报文段长度 MSS

填充字段 —— 这是为了使整个首部长度是 4 字节的 整数倍。

发送缓存用来暂存: – 应用程序传送给 TCP 准备发送的数据; – TCP 已发送出但尚未收到确认的数据。

接收缓存用来暂存: – 按序到达的、但尚未送达上层应用程序的数据; – 不按序到达的数据。 最大数据率=最大窗口*8/平均往返时间 发送时延=数据长度(8比特)/信道带宽

总时延 = 发送时延 + 传播往返时延 每秒窗口=1/总时延

RTTS = (1 − a) ´ (旧的 RTTS ) + a ´ (新的 RTT 样本) RTO = RTTS + 4 ´ RTTD

RTTD = (1 − b) ´ (旧的RTTD ) + b ´ ½RTTS − 新的 RTT 样本½

• 运输连接就有三个阶段,即:连接建立、 数据传送和连接释放。

连接建立过程中要解决以下三个问题:

– 要使每一方能够确知对方的存在。

– 要允许双方协商一些参数(如最大报文段长度, 最大窗口大小,服务质量等)。

– 能够对运输实体资源(如缓存大小,连接表中 的项目等)进行分配。

连接建立:A 的 TCP 向 B 发出连接请求报文段,其首部中的 同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。

B 的 TCP 收到连接请求报文段后,如同意,则发回确认。 • B 在确认报文段中应使 SYN = 1,使 ACK = 1, 其确认号ack = x + 1,自己选择的序号 seq = y。

A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y + 1。 • A 的 TCP 通知上层应用进程,连接已经建立。

B 的 TCP 收到主机 A 的确认后,也通知其上层 应用进程:TCP 连接已经建立。

连接释放:A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认

B 发出确认,确认号 ack = u + 1, 而这个报文段自己的序号 seq = v。 • TCP 服务器进程通知高层应用进程。 • 从 A 到 B 这个方向的连接就释放了,TCP 连接 处于半关闭状态。B 若发送数据,A 仍要接收。若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。FIN = 1 ACK = 1 seq =w ack = u + 1

A 收到连接释放报文段后,必须发出确认。

在确认报文段中 ACK = 1,确认号 ack = w + 1, 自己的序号 seq = u + 1。

A 必须等待 2MSL 的时间 • 一,为了保证 A 发送的最后一个 ACK 报文 段能够到达 B。 • 二,防止 “已失效的连接请求报文段”出 现在本连接中。

0x07 CH6-应用层

域名–具有一定意义的好记的名称,用来标识互联网上的服务器或网站

域名系统DNS的作用:把域名地址解析为IP地址 三级域名 . 二级域名 . 顶级域名

域名解析过程 : 1. 本地域名服务器采用迭代查询

​ 2.本地域名服务器采用递归查询

递归查询是域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机。迭代查询是能够使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机 地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询。

高速缓存:减轻根域名服务器的负荷,减少网络DNS 查询请求和回答报文的数量。

FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。 FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

FTP工作过程:

• 打开熟知端口(端口号为 21),使客户进程能够 连接上。

• 等待客户进程发出连接请求。

• 启动从属进程来处理客户进程发来的请求。从属 进程对客户进程的请求处理完毕后即终止,但从 属进程在运行期间根据需要还可能创建其他一些 子进程。

• 回到等待状态,继续接受其他客户进程发来的请 求。主进程与从属进程的处理是并发地进行。

控制连接:在整个会话期间一直保持打开,FTP 客 户发出的传送请求通过控制连接发送给服务器端 的控制进程,但控制连接不用来传送文件。 • 用于传输文件的是“数据连接” 。服务器端的控 制进程在接收到 FTP 客户发送来的文件传输请求 后就创建“数据传送进程”和“数据连接” ,用 来连接客户端和服务器端的数据传送进程。

TFTP 是一个很小且易于实现的文件传送协 议。

• TFTP 使用客户服务器方式

• TFTP 使用 UDP 数据报, TFTP 的工作类 似停止等待协议。

• TFTP 只支持文件传输而不支持交互。

• TFTP 没有一个庞大的命令集,没有列目录 的功能,也不能对用户进行身份鉴别。

HTTP工作过程1.建立 TCP 连接 2.HTTP请求报文3. HTTP 响应报文4. 释放 TCP 连接

HTTP 是面向事务的客户服务器协议。

• HTTP 1.0 协议是无状态的(stateless)。

• HTTP 协议本身也是无连接的,虽然它使用了面向连接的TCP向上提供的服务。

HTTP/1.1 协议使用持续连接。

• 万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务 器可以继续在这条连接上传送后续的 HTTP 请求报 文和响应报文。

持续连接的两种工作方式

• 非流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP连接就处于空闲状态,浪费了服务器资源。

• 流水线方式:客户在收到HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接 中的空闲时间减少,提高了下载文档效率。

HTTP 有两类报文:请求报文——从客户向服务器发送请求报文。 响应报文——从服务器到客户的回答。 、

请求报文由三个部分组成,即开始行、首部行和实体主体。 在请求报文中,开始行就是请求行。开始行(方法 URL 版本 )

响应报文的开始行是状态行。 状态行包括三项内容,即 HTTP 的版本,状态码, 以及解释状态码的简单短语。

邮件传送协议:SMTP 所规定的就是在两个相互通信的 SMTP 进程 之间应如何交换信息。 • 由于 SMTP 使用客户服务器方式,因此负责发送 邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮 件的 SMTP 进程就是 SMTP 服务器。

SMTP 通信的三个阶段 1. 连接建立:连接是在发送主机的 SMTP 客户 和接收主机的 SMTP 服务器之间建立的。 SMTP不使用中间的邮件服务器。 2. 邮件传送 3. 连接释放:邮件发送完毕后,SMTP客户应发送QIIT命令,返回信息221,SMTP 释放 TCP 连接。

邮件读取协议:POP也使用客户服务器的工作方式。 • 在接收邮件的用户PC机中必须运行POP客户程序,而在用户所连接的 ISP 的邮件服务器中则运行POP服务器程序。

IMAP 也是按客户服务器方式工作,现在较新的是 版本 4,即 IMAP4。

• 用户在自己的 PC 机上就可以操纵ISP的邮件服务器的邮箱,就像在本地操纵一样。

• 因此 IMAP 是一个联机协议。当用户PC机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户 就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。

• IMAP最大的好处就是用户可以在不同的地方使用 不同的计算机随时上网阅读和处理自己的邮件。

• IMAP 还允许收件人只读取邮件中的某一个部分。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很长的附件。

• 缺点是如果用户没有将邮件复制到自己的 PC 上,则邮件一直是存放在 IMAP 服务器上。因此用户需要经常与 IMAP 服务器建立连接。

DHCP(动态主机配置协议):服务器在数据库查找该计算机配置信息。返回找到信息。找不到从服务器的 IP 地址池中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文