一、实践课笔记
1. 路由器连接的是两个不同的网络,交换机连接的是同一个网络。路由器负责在不同网段转移数据,交换机看mac地址,路由器看ip地址。
2. 子网掩码可以分离出IP地址中的网络地址和主机地址,同一个网络的网络地址相同,路由器的地址一般为该网络地址xxxx.1
3. 路由器、主机在出厂的时候在网卡里都有固定MAC地址,计算机--ip地址,网卡--mac地址。
4. 数据包与数据帧,
5. osi七层模型(参照https://blog.csdn.net/mestryas/article/details/81629218)
1)应用层:
网络服务与最终用户的一个接口,一般为产生网络流量的程序。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
2)表示层
数据的表示、安全、压缩。(二进制压缩、编码方式规定等)
格式有,JPEG、ASCll、DECOIC、加密格式等
3)会话层
建立、管理、终止会话。session
对应主机进程,指本地主机与远程主机正在进行的会话
4)传输层
定义传输数据的协议端口号,以及流量控制和处理传输差错(如在指定的时间内未收到确认信息,数据将被重发)。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
5)网络层
进行逻辑地址寻址,实现不同网络之间的路径选择。(选择最佳路径,规划ip地址)。人为指定路径(静态路由)
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
6)数据链路层
定义帧的开始和结束,透明传输(类似转义字符)
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)。
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
7)物理层
建立、维护、断开物理连接,物理接口标准等。(由底层网络定义协议)
二、网课笔记
第一周:计算机网络概述(上)
一 网络协议:
1.网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合
2.协议三要素:
二 网络结构:
a.网络边缘:主机 网络应用
主机(端系统):运行网络应用程序如web email等
客户/服务器应用模型(c/s):客户发送请求,接收服务器响应(谁主动发起通信谁是客户,谁被动接收服务请求谁是服务器) 如 web应用,ftp应用。客户客户之间不会进行通信
对等应用模型(p2p):无(或不依赖)专用服务器,通信在对等实体之间直接进行。 如skype,qq等。
b.接入网络,物理介质: 有线或无线通信线路
接入网络:
1)数字用户线路:(DSL)//ADSL为非对称***
2)接入网络:电缆网络:共享的,不同于dsl的独占。
c.网络核心:互联的路由器(或分组转发设备) 网络之网络
网络核心的关键功能:路由+转发
端系统通过接入ISP连接到internet
三:网络核心:
为什么需要数据交换?
1)数据交换的类型
a)电路交换
特点:独占资源:一旦电路建立,通信时所占用的电路资源(如信道资源),不能被第三方共用。
多路复用:一路物理链路的通信能力、网络资源远远大于一路通信所需要的资源,所以要多路复用。
波分复用就是光的频分复用,用不同频率的光去传递不同信道的信息(常用)。
码分多路复用CDM(常用)。
单个用户发送
多个发送
b)报文交换
报文:源(应用)发送信息整体,(报文)源->路由器->目的。
c)分组交换
分组交换的链路共享:统计多路复用
存储-转发工作方式
b)c)交换方式的对比:
注意:延迟时间和路由器缓存
现代计算机网络通信基本都采用分组交换技术。分组交换:并行传输;报文交换:串行传输
上述公式可解释为:整个报文的传输延迟时间 + 最后一个分组在各个路由器转发时的延迟时间
例题1.1
“至少”即跳数最少(经路由器数最少)
分组交换VS电路交换
这并不意味着分组交换绝对优于电路交换 。分组交换适用于Internet(有突发数据传输等特点)
分组交换的优缺点:
第二周:计算机网络概述(下)
一:计算机网络性能
几个名词:
1)速率
2)带宽
3)延迟\时延
四种分组延迟:(一跳的时间延迟,求源到目的的延迟累加即可
上面两个延迟的类比:
排队延迟:
时延带宽积:(当前链路的所有比特和)
分组丢失(丢包):
吞吐量/率(Throughput):
二:计算机网络体系结构
分层网络体系结构基本概念
OSI参考模型:理论上
实线表示数据真正的流动方向,虚线表示在当前层看来数据的流动过程。协议是水平的,数据传输是纵向的。
1)OSI参考模型底层实现(非端到端层)
1)物理层功能:解决了单一比特传输的问题
2)数据链路层功能:以帧为单位在物理链路直接相连的两个相邻节点间传输
3)网络层功能:
2)端到端层
4)传输层功能:解决进程与进程之间的通信 段
5)会话层功能:
6)表示层:
7)应用层:
TCP/IP参考模型:
网络接口层没有定义具体的协议,只需能封装IP分组,能将IP分组传输到目的节点即可。
5层网络模型:最常用的
第三周:网络应用(层)
本讲内容:
2.2)网络应用的基本原理
1)网络应用体系结构
a)C/S
2)P2P
3)hybrid
2)网络应用进程通信
套接字:Socket
寻址进程:
消息交换需要遵循应用层协议:
网络应用遵循应用层协议:
公开协议如HTTP,SMTP等,有RFC定义,允许互操作; 私有协议:多数P2P文件共享应用
应用层协议内容:
3)网络应用的需求与传输层服务:
网络应用对传输服务的需求:
a)数据丢失(data loss)/可靠性(reliability)
b)时间/延迟(delay)
c)带宽(bandwidth)
Internet提供的传输服务:
2.3)Web应用
HTTP协议概述:
HTTP无状态
HTTP连接:
两种类型:
非持久性连接:
响应时间分析与建模:
持久性HTTP:
HTTP消息格式:
HTTP协议有两类消息:
请求消息和响应消息
请求消息:
请求消息通用格式:
实体(消息体)里为向服务器发送的数据。
上传输入的方法:
URL方法(GET):
HTTP方法的类型:
响应消息:
Cookie技术
很多应用需要服务器掌握客户端的状态
某些网站为了辨别用户身份、进行 Session 跟踪而存储在用户本地终端上的数据,(数据通常会经过加密处理)。
HTTP头部行可扩展,
Web缓存\代理服务器技术
功能:在不访问服务器的前提下满足客户端的HTTP请求。
为什么要发明这种技术?性能需求。(Cookie是为了功能需求)
■缩短客户请求的响应时间
■减少机构/组织的流量
■在大范围内(Internet)实现有效的内容分发(CDN)
示例:
如何保证缓存/代理服务器内的数据和原始服务器内的最新数据一致呢?
条件性GET方法:
2.4)Email应用
Email应用是个典型的异步应用。
SMTP协议:(命令/响应模式)
SMTP交互示例:
Email消息格式与POP3协议
POP3协议:从服务器获取邮件;SMTP是用来发送传输邮件。
Email应用使用了不止一个应用层协议。
IMAP协议:
2.5)DNS应用
DNS查询示例:
1)迭代查询:
2)递归查询:
(例题)
DNS记录和消息格式
DNS记录:
DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议?
DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。
1)DNS区域传输的时候使用TCP协议:
辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
TCP是一种可靠连接,保证了数据的准确性。
2)域名解析时使用UDP协议:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
注册域名过程:
2.6)P2P应用
上面讲的都是c/s架构的应用。
1)纯P2P架构
没有服务器
任意端系统之间直接通信
节点阶段性接入Internet
节点可能更换IP地址
例子:
C/S架构:
P2P架构:
直观对比:
文件分发:BitTorrent
例子:
BitTorrent技术对网络性能等有潜在的危害。
P2P引用: 索引技术
索引分类:
1)集中式索引
缺点:
2)洪泛式查询:query flooding
缺点:洪泛式查询会大量消耗网络带宽,导致网络拥塞;网络较复杂。
3)层次式覆盖网络:结合了1)和2)的优点
索引只负责查找所需信息,可能不是直接P2P的;但在查找到后实际是用户/节点对之间直接通信。
2.7)Socket编程
Socket编程-应用编程接口(API)
针对端系统(网络边缘)
网络程序设计接口:
应用进程(上层)和操作系统(下层)之间的交互:API(如Socket)
插座相等于套接字
如何判断与哪一个服务器端的套接字通信?(对外:通过ip+端口)
对内管理套接字:Socket抽象
地址结构:
Socket API 函数 ( WinSock )
WSAStartup(初始化Windows Sockets API)->应用程序->WSACleanup( 释放所使用的WindowsSockets DLL )
应用程序方:
注:UDP调用了connect后本质上也是无连接的。
Socket API函数小结:
---------------------------------------------------------------------------------------------------------
3.传输层
3.1)传输层服务
传输层Vs网络层
Internet传输层协议
3.2)多路复用和多路分用
传输层的必要功能
多路分用:
3.3)UDP (端到端原则)
端到端原则:网络高层次的功能应尽可能的实现在网络边缘(终端设备),网络核心框架只提供最基本的标准的服务。
UDP校验和(checksum)
3.4)可靠数据传输原理
可靠:不错、不丢、不乱
■可靠数据传输对应用层、传输层、链路层都很重要
■网络Top-10问题
■信道的不可靠特性决定了可靠数据传输协议(rdt)的复杂性 下图双箭头:双向的控制消息的流动
分子是条件,分母是动作
Rdt1.0:可靠信道上的可靠数据传输
Rdt2.0:产生位错误的信道(不含其他错误如丢包、时许错误等)
Rdt 2.1和2.2
Rdt3.0 信道既可能发生错误,也可能丢失分组
此时,“校验和+序列号+ACK+重传”就不够用了,解决办法:增加定时器
每次发送数据包时会start_time,每次状态转移时会stop_time
3.5)滑动窗口协议
流水线机制与滑动窗口协议;提高N倍利用率,同时增大了所需缓存
GBN:累计确认的机制 ACK目前已经接收到的顺序的最大的序列号(+1?
GBN接收方无缓存(无窗口),一个窗口一个定时器?
GBN接收方无缓存
SR协议(Selective Repeat):接收方有缓存(相比GBN多了一个接收方窗口
sr协议困境:原因:序列号较小,窗口尺寸较大。序列号个数应大于等于发送方窗口+接收方窗口
回顾可靠数据传输
3.6)面向连接传输协议:TCP
TCP特点:(GBN和SR相结合)
TCP可靠数据传输概述:
TCP在IP层提供的不可靠服务基础上实现可靠数据传输服务
流水线机制 累积确认 TCP使用单一重传定时器
触发重传的事件: 超时 收到重复ACK
渐进式: 暂不考虑重复ACK 暂不考虑流量控制 暂不考虑拥塞控制(这一小节并不完整)
如何合理设置定时器超时时间?
显然要大于RTT,但RTT是变化的,需要估计RTT(timer过短:不必要的重传,过长:对段丢失时间反应慢)
如何估计RTT?
SampleRTT: 测量从段发出去到收到ACK的时间 忽略重传
SampleRTT变化 测量多个SampleRTT,求平均值 ,形成RTT的估计值EstimatedRTT
TCP发送方事件:
TCP发送端程序:(注:因为是累计确认,所以返回的ACK值是接收方当前收到的序列号最大的,按序到达的。
快速重传:
TCP流量控制:
速度匹配机制
TCP连接管理:
连接:Client发起(为什么要三次握手?
3次握手第二步S就分配资源,如果第3步C没有向S发送信息,则S会保留资源一定时间直到超时才撤销资源。当上万个连接请求但没有进行第3步时,就会产生安全问题
关闭:(C/S都可以发起)
3.7)拥塞控制原理(对着书
拥塞(Congestion) 非正式定义:“太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理”
表现: 分组丢失(路由器缓存溢出) 分组延迟过大(在路由器缓存中排队)
拥塞控制 vs. 流量控制:一个是网络拥塞无法处理,一个是接收方无法处理。
3个场景及其特点:
Case1:当分组的到达速率接近链路容量时,分组经历巨大的排队时延
Case2:发送方必须执行重传以补偿因为缓存溢出而丢弃的分组
发送方在遇到大时延时所进行的不必要重传会引起路由器利用其链路带宽转发不必要的副本
Case3:当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量最终被浪费
解决:管制发送方的发送速率。为什么拥塞控制是在传输层做?
拥塞控制的方法:
1)端到端拥塞控制(网络层没有为运输层拥塞控制提供显式支持)
TCP 必须通过这种方法,因为IP 层不会向端系统提供网络拥塞的反馈信息,TCP 报文段的丢失(超时或三次冗余)被认为是网络拥塞的迹象,TCP会减小窗口长度
2)网络辅助的拥塞控制
网络层构件(路由器)显示反馈网络拥塞信息(1bit),再给发送方通知(接受方或路由器) 例子(ATM ABR 拥塞控制|虚电路)P179
3.8)TCP拥塞控制
三个问题:
⚫ TCP发送方如何限制向其连接发送流量的
运行在发送方的TCP拥塞控制机制跟踪拥塞窗口(congestion window) 变量,即 cwnd; LastByteSent-LastByteAcked<=min{ cwnd ,rwnd}
⚫TCP发送方如何感知拥塞:超时或三次冗余 ACK
⚫如何合理调整其速率
additive increase, multiplicative decrease(AIMD 加性增,乘性减)。 三部分:慢启动、拥塞避免、快速恢复
线性增长,慢慢加;快速减
⚫ 慢启动
连接开始时(可用带宽远大于初始速率),最初 cwnd=1 MSS,每过一个 RTT,发送速率翻倍,起始慢;
慢启动阶段指数增长,直到:
1、当出现超时指示的丢包事件,将 cwnd 设为 1 并重新开始慢启动,将 ssthresh(慢启动阈值)设为1/2 loss cwnd
2、cwnd 等于 ssthresh 时结束慢启动转移至拥塞避免模式
3、检测到三个冗余ACK 时进行快速重传并进入快速恢复状态,cwnd设为一半,然后线性增长(Reno)。why?下面:
⚫ 拥塞避免
每个RTT只增加1个MSS
收到新的确认增加 1 个 MSS·(MSS/cwnd)字节
当出现超时时,cwnd 设为 1 个 MSS,ssthresh 更新为 cwnd 的一半;当出现三个冗余 ACK 时,ssthresh 更新为 cwnd 的一半,cwnd 减半,进入快速恢复状态
⚫ 快速恢复
对引起进入快速恢复的缺失报文段,对收到的每个冗余 ACK,cwnd 增加 1 个 MSS,最终当对丢失报文段的一个 ACK 到达时,降低 cwnd 后进入拥 塞避免状态
如果出现超时,cwnd 设为 1 并 ssthresh 更新为 cwnd 的一半,迁移到慢启动状态
一条连接的平均吞吐量:0.75·W/RTT(W:窗口长度;RTT:往返时间)(还有一个公式和TCP具有公平性,具体见P188
4 网络层
➢ 网络层主要功能
⚫ 转发:分组到达路由器输入链路时,路由器要给它选择合适的输出链路(转发表)
⚫ 路由选择:分组从运输层下来,网络层要为它选择合适(最好)的路径。选路算法可以是集中式的--在某个中心点执行,向每台路由器下载下载信息;也可以是分布式的--运行在每台路由器上。
(⚫ 连接建立:在数据报流之前,两台终端主机和中间路由器建立虚拟连接)
➢ 网络层连接和无连接服务与运输层的差异
⚫ 网络层向运输层提供主机到主机的服务;运输层向应用层提供进程到进程的服务(对中间网络设备透明)
⚫ 不能同时提供
⚫ 运输层在位于网络边缘的端系统中实现,网络层在位于网络核心的路由器中实现
➢ 网络服务模型:定义了分组在发送与接收端系统之间的端到端特性 网络层能提供的特定服务包括:
⚫ 确保交付
⚫ 具有时延上界的确保交付
⚫ 有序分组交付
⚫ 确保最小带宽
⚫ 确保最大时延抖动
⚫ 安全性服务
{➢ 虚电路网络(在网络层提供连接服务的计算机网络):运输层的面向连接服务,为系列分组建立连接,确定路径,系列分组传输路径相同,传输结束后拆除连接。
是在端系统之间实现,网络层不仅在端系统之间,还在路由器实现。
虚电路网络里路由器转发表记录了虚电路号(VC 号),对应着入接口和出接口。一条虚电路创建时,虚电路上路由器都在转发表中添加相应信息,一条虚电路在不同路由器对应不同 VC 号,否则号码统一过程太费时;虚电路销毁时相应信息要删除。也就是路由器维持虚电路信息。端系统发送指示虚电路启动与终止的报文叫信令报文。
➢ 数据报网络(在网络层提供无连接服务的计算机网络):不事先确定路径,每个分组独立确定传输路径,不同分组路径可能不同
路由器使用分组的目的地址转发分组;路由器的转发表与目的地址的前缀进行匹配;有多个匹配时遵循最长匹配原则。}
{➢ 路由器(一台主机直接相连的路由器叫它的默认路由器或第一跳路由器)
1、输入端口:许多路由器在此实现查找与转发功能。一般选路处理器计算的 转发表有拷贝到这里。转发表数据庞大,线性搜索不现实,解决方法有:
(1) 转发表存在树形结构中,也就是一个 2^N 空间的二分查找(仍不够快);
(2) 用内容可寻址内存 CAM 以基本常数时间返回转发表内容;
(3) 增加高速缓存。
2、交换结构:
(1) 经内存交换;
(2) 经总线交换:不需要选路处理器干预。 (3) 经互联网络交换。
3、输出端口:
(1) 分组调度程序:选择输出端口排队分组传送。
(2) 随机早期检测:队列平均长度小于一个阈值min就加入排队;处于阈值min和阈值max之间就以一个概率丢弃;大于阈值max就丢弃。
4、路由选择处理器:执行路由选择协议,维护路由选择表及连接的链路状态信息,为路由器计算转发表}
➢ IPv4数据报格式
⚫ 版本号:区分IPv4和IPv6
⚫ 首部长度: IPv4 数据报有可选项,标识数据报中数据从哪开始
⚫ 服务类型:将不同类型的数据报区分
⚫ 数据报长度:IP数据报的总长度
⚫ 标识、片位移、标志。分片:链路层有最大传输单元(MTU),路由器通过转发表决定链路发现该链路 MTU 小于数据报长度,则要分片。标识号相同的片属于一个数据报;标志为 1 表示不是一个数据报的最后一片, 为 0 表示是最后一片;片位移记录该片存储的数据开始于原数据报的哪 个字节,组装片时以此确定片的顺序以及是是否缺少,如果缺少就丢弃, 不给运输层。组装片的任务交给端系统减轻路由器负担。
⚫ 寿命:确保数据报不在网络中永远循环。每经一个路由器,字段减一。
⚫ 协议:决定将报文段交给哪个运输层协议。网络层和运输层粘合剂。
⚫ 首部检验和:只检验首部字段
⚫ 源和目的地IP地址:源地址发送者自己插入;目的地址通过DNS找到
⚫ 选项:允许首部字段扩充
⚫ 数据字段(有效载荷):含有要交付给目的地的运输层报文段;也可承载 ICMP 报文段。
➢ IPv6数据报(不仅有单播、多播,还有任播)
⚫ 版本
⚫ 流量类型:和IPv4服务类型相似
⚫ 流标签
⚫ 有效载荷长度:数据报首部后面的字节数量
⚫ 下一个首部:标识数据报内容交付给哪个协议,和IPv4协议字段等同。选项字段可能出现在这里
⚫ 跳限制:寿命
⚫ 源地址和目的地址
⚫ 数据字段
没有首部检验和,运输层和链路层都做了检验。
没有选项
首部长度 40 字节是固定的,没有首部长度字段 没有标识、片位移、标志。IPv6 不再分片,发现数据报大于 MTU 时丢弃数据 报,往回发送 ICMP 差错报文
➢ IPv4编址(广播地址255.255.255.255,路由器也会有选择向邻近子网发送 广播报文)
⚫ 拥有IP地址的单位(接口):主机或路由器与物理链层的边界。一台主机一个 IP 地址,路由器每个端口一个地址。
⚫ 子网:也称IP网络或网络,IP编址用无类别域间选路(CIDR)为子网分配地址。形式为 a.b.c.d/x。abcd 都是十进制的数。该地址的 x 最高比特位定义了子网地址,经常被称为子网掩码、前缀。
⚫ 获取主机地址(动态主机配置协议:DHCP协议)应用层实现
功能:为主机分配地址,告诉主机子网掩码、第一跳路由器地址、本地 DNS 服务器地址。主机可以自动获取临时地址,也可以网络管理员分配 (以便给某主机每次分配相同地址)
过程:每个子网有一个 DHCP 服务器或知道该网络 DHCP 服务器地址的中 继代理(通常是路由器)。新到的主机发送目的端口号为 67 的广播 UDP 分组(DHCP 发现报文),源地址设置为 0.0.0.0;DHCP 服务器发送 DHCP 提供报文进行广播(因为源主机没有地址),报文里有发现报文的事务 ID、 向客户机推荐的 IP 地址、网络掩码以及 IP 地址租用期;源主机选用一 个地址,发送 DHCP 请求报文;DHCP 服务器发送 DHCP ACK 报文。为了使 客户机能超过租用期使用地址,DHCP 提供允许客户机更新它对 IP 地址 的租用期的机制。
⚫ 网络地址转换(NAT)
NAT 路由器给一定区域的主机分配专用地址(专用地址只能在指定区域 用)。NAT 路由器相当于该区域的大门,它有自己的 IP 地址,有 NAT 转 换表(记录区域内主机专用地址、端口号和发送到外面映射的 IP 地址、 端口号)。所有外界来看,该区域所有主机都是用一个 IP 地址,NAT 使 路由器对外界掩饰了家庭网络的细节。
NAT 路由器从 DHCP 服务器获取 IP 地址,再运行一个 DHCP 服务器,分配专用地址。
➢ ICMP协议
⚫ 典型用途:差错报告。
虽然是IP协议一部分,但是ICMP报文承载在IP分组(数据报)上,就像运输层报文段是 IP 数据报有效载荷被承载一样。确定是哪一层协议是看它主要实现了哪一层的功能,为哪层服务;而不是本身是在哪一层实现的。
⚫ 有一个类型字段和编码字段,并且包含引起差错报文的数据报的首部和前八字节内容。
➢ 路由选择算法
⚫ 链路状态选路算法(全局链路算法):运行此算法,需要知道网络中每条链路的费用。所有每个路由器有整个网络的拓扑。运行 Dijkstra 算法。 如果链路费用取决于链路上承载的负载,会有振荡的情况,为了避免, 让路由器不同时运行 LS(Link-State)算法。
⚫ 距离向量选路算法:用了Bellman-Ford方程思想。这个算法每个路由器 不用知道整个网络的状况,只用从相邻路由器获取相邻路由器到某节点 的最短距离,自己再计算到该节点的最短距离,是迭代的。 缺点在于:会形成环路。一种解决办法是如果 a 到 c 的最短路径是通过 b 的,则 a 告诉 b:a 到 c 最小距离是无穷。但是不能解决两个以上节点的环路。无穷计数:链路费用改变时,好消息传播快;坏消息传播慢。
⚫ 两者比较:LS算法每当有一条链路状态发生改变,要向所有节点发送所 有节点报文。DV 算法只有链路状态改变影响自己选路时才会发送;LS 收 敛速度较快,DV 算法有环路;DV 算法某个节点出错误会扩展到整个网络,而 LS 算法因为有整个网络的拓扑,不会有这个问题,LS 算法有更好的健壮性。
⚫ 层次路由选择:网络太庞大选路算法开销太大,而且不能让自己区域运 行自己的选路算法。所以把网络分成不同的自治系统 AS(Autonomous System)。一个 AS 里的路由器运行相同的自治系统内部选路协议;AS 之 间运行自治系统间选路协议。
➢ 因特网中的路由选择
1自治系统内部选路协议所用的算法:
⚫ RIP协议:一种距离向量协议,RIP路径长度不能超过十五。每30s通过
UDP 发送 RIP 相应报文交换信息,如果一个路由器 180s 没监听到某个邻 居,该邻居认为不可到达。
⚫ OSPF协议:用的是LS算法。路由器周期性(至少每隔三十分钟一次)向自治系统内其它路由器广播链路状态信息(使用序号控制洪泛,分组有 寿命)。OSPF 报文通常承载在 IP 分组中。 优点:在于能按层次结构构造一个自治系统:产生一些区域,每个区域运行自己的链路状态算法。
内部路由器:只执行 AS 内部选路。 区域边界路由器:用于与其它区域路由器交换信息。 主干路由器:执行主干中选路,包含所有区域边界路由器。 边界路由器:与其它自治系统(不是本个运行 OSPF 协议的 AS)路由器交换选路信息。
2自治系统间选路协议: BGP(边界网关协议)
⚫ 自治系统间信息交流:路由器对使用半永久BGPTCP相连。eBGP用于不同 AS 间路由器会话,iBGP 用于相同 AS 路由器间会话。路由器收集整理 所在 AS 的子网前缀代表所能到达的子网,网关路由器通过 eBGP 通知其 它 AS 的网关路由器,其它 AS 网关路由器通过 iBGP 通知它的 AS 内其它 路由器。
⚫ 自治系统号(ASN):一个自治系统有其全局唯一的自治系统号。
⚫ 桩自治系统:仅承载目的或源地址为本AS的流量。
⚫ BGP属性:BGP会话通告一个前缀时附带的属性。前缀+属性=路由。下面是两个主要属性
I AS-PATH:包含了该通告已经通告哪些 AS。如果收到的通告 AS-PATH 属性里有自己的 ASN,就不接收。接收的通告里加上自己的 ASN。
II NEXT-HOP:开始某 AS-PATH 的路由器接口。假如 AS1 有子网 x,通过 eBGP 发送通告 AS2 它能到 x,并用 NEXT-HOP 属性传递 AS1 到 AS2 网关路由 器接口 I。AS2 的路由器增加转发表(x,I)。
⚫ 路由:路由器通告BGP会话通告前缀时,带着属性的前缀称为一条路由。
⚫ BGP路由选择:
I 先根据设置的偏好选。
II 其次根据距离向量算法选择,距离测度为 AS 跳数。
III 再其次选 NEXT-HOP 路由器(和源地址在一个 AS 的网关路由器)最靠近源地址的路由(热土豆)
{{3 广播(被用于因特网应用层和网络层)
应用层的 Gnutella 协议和网络层 OSPF 协议用有寿命的序号控制洪泛广播。 4多播:距离向量多播选路协议(DVMRP)用了基于源的树:反向路径转发和剪枝算法。
➢ 广播:N次单播效率太低。
⚫ 无控制洪泛:如果途中有环,广播分组中一个或多个分组拷贝将无休止 循环。
⚫ 受控制洪泛
I 序号控制洪泛:源节点将其地址和广播序号(唯一标识一个广播)放入广播分组。广播过程遇到的节点将会记录它已经广播的分组的源地址和广播序号。如果它发现接收的分组已经广播过就不再广播。
II 反向路径转发 RPF(Reverse Path Forwarding):仅当分组传入的接口在路由器到源地址的最短单播路径上时,路由器才会向除了传入接口以外所有接口传播分组。
⚫ 生成树广播:序号控制洪泛和反向路径转发不能避免冗余传播——一个节点会收到很多次相同的广播分组,除了第一次都丢弃。
I 最小生成树:树里面的链路费用之和最小。
II 建立生成树:选择一个中心节点,其它节点向中心节点单播加入树报文,直到遇到树上的节点(可能是中心节点也可能是其它已经加入树的节点)。
➢ 多播:多播数据报使用间接地址(称为D类地址,用于标识一组接收方,发给 D 类地址的分组会发歌给该组所有成员)
⚫ IGMP协议:运行在一台主机和与它直接相连的路由器上。IGMP让主机通知与它相连的路由器:主机的某个进程要加入特定的多播组。IGMP 报文 和 ICMP 报文一样承载在 IP 数据报中。路由器向主机发送 membership_query 分组确认主机已加入的所有多播集合;主机发送 membership_report 回应,如果没有回应说明主机不在相应多播集合中。 主机也可自己发送 membership_report 告诉路由器加入某个多播集合。
⚫ 多播选路:
(1) 使用一棵组共享树:像广播的最小生成树算法一样,一个加入报文使
用单播选路朝着中心转发,直到多播树的节点。该加入报文所经过的路由器 将向发送加入报文的节点转发多播分组。
(2) 使用一棵基于源的树:为多播组每个源使用 RPF 算法构建一棵多播选路树。为了解决冗余传播,一台连接的主机没有加入该组的路由器收到多 播分组,向上游路由器发送剪枝报文。如果一台路由器从它的每台下游路由 器收到剪枝报文,就向上游发送剪枝报文。}}
5 数据链路层
➢ 分类:
⚫ 广播型信道:通常用局域网、无线LAN(WIFI)、卫星网和混合光纤电缆。 ⚫ 点对点通信链路
➢ 服务:
⚫ 成帧:把数据报用链路层帧封装起来。
⚫ 可靠交付:常用于易产生差错的链路,比如无线链路。而对于不易产生差错的链路这是不必要的开销。
⚫ 流量控制:链路层协议提供流量控制。
⚫ 差错检测与修正:循环冗余检测(CRC);TCP和UDP用检验和方法;奇偶校验思想(二维奇偶校验)。
⚫ 链路接入(要解决多路访问问题):通常碰撞(两个以上的节点同时传帧)使接收点都不能获得有效的传输帧。解决办法:
⚫ 半双工和全双工:采用全双工传输时,链路两端节点可以同时传输分组;采用半双工时,一个节点不可以同时传输和接收分组。
➢ 差错检验和纠错技术:奇偶校验;检验和方法;循环冗余检测(CRC)
➢ 多路访问协议:
⚫ 信道划分协议:时分多路复用、频分多路复用以及码分多址(给每个节 点分配不同 编码,实现不同节点能同时传输,不会相互干扰) 缺点:传输速率只能是 R/M;即使只有一个节点要传输,它也只能占用自己的信道。
⚫ 随机接入协议:发生碰撞后等一段时间(随机值)重传。
ALOHA 和时隙 ALOHA:后者把时间划分为一段段时隙,所有传输都得开始于时隙开始;前者的帧首次到达时立即传输,后者需要等待到最近的时隙开始。后者效率更高(前是后的一半);实现如果只有一个信道传输帧可以全速传输
⚫ 载波侦听多路访问(CSMA):载波侦听:侦听信道,如果信道被占用就等待。碰撞检测:检测到碰撞立即停止。
CSMA/CD:因为有传播时延,所以发送时仍在监听,如果监听到了其他的,则中止传输。
Lmin/R = RTTmax; (L/R >= 2d/v) d:距离;v:速度;R带宽;L数据帧长度。
⚫ 轮流协议:同一条广播链路上的节点以传递令牌的形式轮流获得传输的权利。如果得到令牌的节点没有东西要传,迅速传给下一个。
轮询协议:一个主节点一次把令牌发下去,询问其它节点,并给出最大数量帧(防止一个节点占用时间过长)。缺点是有轮询延迟:即使只有一个节点在传输,不能全速传输,因为主节点要在其传输完最大数量帧后轮询,轮询开销;而且一旦主节点出问题,整个信道不能用。
令牌传递协议:没有主节点,令牌互相传。缺点:一旦某个节点出了问 题,信道将不能用
➢ MAC地址:
⚫ 原因:保持隔层独立,而且链路层并不是只为IP协议服务的
⚫ MAC地址详情:它是扁平结构而不是IP地址那样的层次结构;带有以太
网网卡的便携机总有相同 MAC 地址,无论在哪里;
⚫ 发送过程:发送适配器将目的适配器的MAC地址放到目的地址字段中,
将该帧发到局域网上。如果局域网是广播局域网,则该广播局域网所有 适配器接收:如果目的 MAC 地址是自己,就接受,否则丢弃。也有广播 MAC 地址:FFFFFFFFFFFF。局域网的每个适配器都会接收。
⚫ 地址解析协议(ARP):
相同子网:
ARP 表:每个主机或路由器的 ARP 模块,有 ARP 表记录 IP 地址、MAC 地址和时间。不用记录所有子网上的节点。传帧的时候查 ARP表,如果里面有映射就发到相应的 MAC 地址。
ARP表里没有目的地 MAC 地址: 发送 ARP 分组(进行广播,广播帧--目的MAC地址为全1,IP地址为源和目的),目的地适配器会返回一个响应 ARP 分组(标准帧)。然后发送适配器更新 ARP 表。ARP表是即插即用的,即自动建立,不需人为插入。
如果通过路由器发到别的子网,在此过程中目源IP地址不会变(NAT除外),ARP 表里存储的是目的IP地址和路由器接口适配器(默认网关)MAC地址(路由器每个接口都有 IP 地址、适配器、MAC 地址!),帧会传到路由器,然后路由器会查自己的路由转发表确定下一跳(这时会更新源MAC地址),最后路由器根据帧的目的IP地址(另一个子网),查自己的ARP表,找到目的地的MAC地址进行传输。
➢ 链路层交换机:任务是接收入链路层帧并把它们转发到出链路。
交换机是透明的(传输时主机感受不到交换机的存在);交换机输出接口有缓存。
⚫ 转发和过滤:
借助交换机表(记录了某局域网上某些节点而不一定是全部节点的 MAC 地址和到达该节点的交换机接口以及时间)。
如果交换机表中没有目的地址,广播。如果收到的帧目的地址和源地址网段相同(连在同一个接口),说明两个主机可以直达,过滤。
⚫ 交换机表自学习(即插即用,不需要人为配置):
每收到一个帧,都会存储它的源地址、接口和时间。过了一定时间没收到该地址的帧就会删除。
⚫ 交换机优点:
(1) 消除碰撞:交换机缓存帧且不会同时传输多于一帧。
(2) 异质链路:交换机将链路彼此隔离,所以不同链路能以不同速率运行而且可以在不同媒体运行,设备可以混用。
(3) 管理:如果一个适配器异常发送,交换机会将它短开;如果一个节点断开了,交换机会收集数据供分析。
⚫ 和路由器比较:
交换机是第二层的,交换机表存储地址为 MAC 地址;路由器是第三层的,转发表存储IP地址。
两者都是分组交换机。
交换机即插即用,且效率较高。
路由器对第二层广播风暴提供防火墙保护,安全性更高。
几百个主机组成的小网络通常有几个局域网网段,这种小网络用交换机;几千台主机组成的大网络用路由器。
➢ 以太网
⚫ 以太网帧:数据字段(46-1500),目的地址(6),源地址(6),类型字段(2),CRC(4),前同步码(8)
⚫ 多路访问协议:载波侦听协议(没有时隙)。
⚫ 指数后退:
碰撞检测过程中检测出碰撞会发送阻塞信号,受到n次碰撞后随机等待 (0~ 2 ^ m - 1) * 512(m = min(10,n))比特时间重传
⚫ 以太网使用链路交换机
⚫ 以太网链路层差错检验发现错误立即丢弃,发送方不会知道。全靠运输层保障。