计算机网络:自顶向下方法
第一章 计算机网络和因特网
1.1 什么是互联网
1. 从具体构成角度
网络:由节点和边组成
计算机网络:节点:主机及其上的应用程序,称为主机节点,□表示;路由器、交换机等网络交换设备,称为交换节点,⚪表示。边:通信链路(分为接入网和主干链路)。
互联网:以TCP/IP为主的协议,支撑的计算机网络。
注:接入网链路:主机连接到互联网的链路;主干链路:路由器间的链路。
计算机网络是网络的网络。
名词中英文:
计算机网络:computer network
主机:host
端系统:end system
通信链路:communication link
分组:packet
分组交换机:packet switch
链路层交换机:link-layer switch
路由器:router
传输速率:transmission rate
比特/秒:bit per second ,bps
因特网服务提供商ISP: internet service provider
数字用户线DSL:digital subscriber line
因特网工程任务组IETF: internet engineering task force(研发互联网标准)
请求评论RFC:request for comment(IETF互联网协议的标准文档)
2. 从服务的角度
互联网:为应用程序提供服务的基础设施。
互联网络 = 能够为应用提供通信服务的通信架构 + 使用通信服务相互配合工作的分布式应用
协议(protocol):对等层实体在通信过程中所遵循的规则的集合,定义了交换报文的格式、次序以及报文发送、发送或其他事件所采取的动作。
1.2 网络边缘
网络结构 = 网络边缘(应用、主机)+ 网络核心(路由器)+ 接入网络和通信链路
主机 = 端系统
网络边缘:运行应用的端系统
C/S模式:客户端服务器模式,客户端向服务器发出请求,服务器响应,提供服务,集中式的服务,客户端之间相互之间不直接通信,且服务器有固定的周知的IP地址。
对等模式P2P:很少有专门的服务器,任何主机都可以作为服务器或者客户端,是分布式的服务,具有自扩展性和成本效率。
面向连接的服务TCP,无连接的服务UDP
1.3 网络核心
网络核心:路由器的网状网络
主要功能:实现数据交换
数据交换方式及比较:
分组交换:(统计多路复用)
将要传输的数据分为一个个分组,将分组从一个路由器传送到另一个路由器,最终到达目标,在每段链路上都使用链路的最大传输能力,路由器上使用存储转发。
存储转发传输(store and forward transmission):接收分组,存储分组,处理,转发。有存储转发时延,总的时延称为端到端时延。
有虚电路网络和数据报网络
电路交换(线路交换):两台主机通信时,会在主机间创建一条名副其实的连接,路径上的交换机都将为该连接维护连接状态,资源不同享。
特点:
分组交换:性能不可靠,资源共享,无创建时间,适用于突发传输
电路交换:性能可靠,资源不共享,有创建时间,不适用于突发传输,可能有资源浪费。
1.4 接入网
接入网:将端系统连接到边缘路由器的链路或网络
边缘路由器:端系统到任何一个远程端系统路径上的第一台路由器
住宅接入:ADSL,HFC,,,,
1.5 互联网络结构与ISP
网络的网络
多层等级结构:接入ISP,区域ISP,第一层ISP
对等:同一层相互连接,降低成本
IXP:提供多个ISP的对等 internet exchange point
内容提供商网络(content provider network):在全球部署数据中心DC,与多处的较低层ISP相连,尝试绕过叫高层,部署DC之间的专网,用户接入后通过离用户最近的DC为之服务。
因特网内容提供商ICP(internet content provider)
1.6 分组交换网络中的延迟与丢失
1.延迟:(delay)
节点处理时延:(nodal processing delay)检查分组首部,决定出链路等,高速路由器大约花费不到微秒。
排队时延:(queuing delay)毫秒到微秒
传输时延:(transmission delay)发射分组的时间
传播时延:(propagation delay)与距离有关
d
n
o
d
a
l
=
d
p
r
o
c
+
d
q
u
e
u
e
+
d
t
r
a
n
s
+
d
p
r
o
p
d_{nodal} = d_{proc} + d_{queue} + d_{trans} +d_{prop}
dnodal=dproc+dqueue+dtrans+dprop
2.排队时延与丢包
排队时延:取决于入、出流量以及流量的性质(时间上的分布)
流量强度(traffic intensity):
L
a
/
R
La/R
La/R 注:a为每秒到达分组个数 L为每个分组的比特数,R为链路带宽
流量强度与**dqueue**有关
丢包:分组到达链路的速率超过了链路的输出能力,超过排队缓冲区容量,到达的分组被丢弃。
节点性能:时延,丢包率
吞吐量:在源和端之间传输的速率,有瞬间吞吐量和平均吞吐量。取决于源和目的地之间路径上的最小传输速率。端到端路径尚限制端到端吞吐的链路称为瓶颈链路
1.7协议层次与服务模型
分层原因:网络比较复杂,分层实现比较容易设计。概念化、结构化,易于维护和升级。
分层:指将复杂的网络功能划分成功能明确的层次,上层利用下层提供的服务来实现本层的协议,从而为更上层提供更复杂的服务。
术语和概念:
服务:底层实体向上层实体提供它们之间通信的能力
服务访问点SAP:services access point 上层使用下层提供的服务通过层间的接口
原语(primitive):上层使用下层服务的形式
面向连接与无连接的服务:(connection oriented service)(connectionless service)面向连接:建立连接,通信,拆除连接。在通信前双方先建立连接。无连接:通信前无需建立连接,不预留资源,不需要双方都活跃。
协议:对等层实体之间在相互通信的过程需要遵循的规则的集合
服务与协议之间的关系:
区别:服务是下层对上层提供它们之间通信的能力,协议是对等层实体通信的规则集合
联系:本层协议的实现要靠下层提供的服务;本层实体通过协议为上层提供更高级的服务。
数据单元DU:(data unit)
协议数据单元PDU:(protocol data unit)
分层模型与每层的功能:
应用层:为人类或其他应用进程提供网络应用服务 协议数据单元名称 报文message
传输层:主机之间的数据传输 报文段 segment
网络层:为数据报从源到目的选择路由 分组 packet
链路层:相邻网络节点间的数据传输 帧 frame
物理层:线路上传送bit 位 bit
封装与解封装:向下逐层增加首部信息,向上逐层减少首部信息,路由器在三层,链路层交换机在二层。
第二章 应用层
2.1网络应用原理
应用架构:C/S模式 对等模式 混合体
C/S模式:客户端服务器模式,客户端向服务器发出请求,服务器提供服务,是集中式的服务,客户端相互之间不直接通信,且服务器有固定的周知的IP地址,可扩展性差。
对等模式P2P:很少有专门的服务器,任何主机都可以作为服务器或者客户端,是分布式的服务,具有自扩展性和成本效率。
进程间通信:
同主机:操作系统定义的通信方式
不同主机:利用网络提供的架构交换报文
1. 标识进程:IP + TCP或UDP端口号
2. 传输层提供的服务:在服务访问点SAP提供服务,形式是应用程序接口API
对应的是SOCKET和SOCKET API
SOCKET的作用是减少需要通过层间的信息
TCP SOCKET包括 源IP,源端口,目标IP,目标端口。每次传输报文时,告知传输层套接字即可,下层可以利用套接字查表获取端口号和IP用于报文段或数据报的封装。
UDP SOCKET包括 源IP,源端口。每次传输报文时,告知传输层套接字和目标的IP和端口号,接收报文时,传输层上传对方的IP和端口号。
3. 定义应用层协议的报文格式,解释,时序等。
应用层协议:定义了运行在不同端系统上的应用进程如何交换报文,规定了报文的类型语法语义规则等。
传输层提供的服务性能:数据丢失率,吞吐量,延迟,安全性
UDP存在的必要性:
虽然没有加强IP提供的通信的性能,但是能够区分不同的进程;
相比TCP,省去了连接建立时间;
不做可靠性的工作,省时,适用于实时性要求高于正确性要求的应用;
没有拥塞控制与流量控制,能按照设定的速度发送数据。
安全的TCP
SSL:(secure sockets layer 安全套接字层)运行在应用层,提供加密的TCP连接
需要该应用程序的客户端和服务端都包含SSL代码。
2.2WEB和HTTP
1. WEB页面:
由对象组成,对象可以是HTML文件,JPEG图像,java小程序等
WEB页包含一个基本的HTML文件,该基本的HTML文件又包含若干对象的引用
通过URL对每个对象进行引用
HTML (hypertext markup language)超文本标记语言
URL(uniform resource locater)统一资源定位地址 :主机名+对象的路径名
HTTP(hypertext transfer protocol)超文本传输协议
采用C/S模式,HTTP定义了客户端和服务端之间通信的报文的格式,解释和时序
获取页面过程:建立TCP连接,服务器端口号80;浏览器与服务器交换HTTP报文;TCP连接关闭。
无状态协议(stateless protocol):服务器响应客户的请求而不存储任何有关客户的状态信息。
2. HTTP连接类型:
非持续连接(non-persistent connection):每个响应/请求对都是经一个单独的TCP连接发送。
1个HTML基本文件和10个其他对象,则每次都建立TCP连接、请求响应,共11次。
并行非持续:同上的WEB页面,首先建立连接、请求响应,之后并行10个建立连接、请求响应。
缺点:多个TCP连接,占用资源
持续连接(persistent connection):所有请求及响应都是经相同的TCP连接发送
同上的WEB页面,首先建立连接、请求响应,之后进行10次请求响应。
(默认)带流水线的持续:同上的WEB页面,首先建立连接、请求响应,之后按流水线的方式发送10次请求,得到10个响应,几乎在1个RTT内得到10个对象的响应报文。
RTT(round-trip time)往返时间:一个短分组从源到目标再返回源的总延时。(无传输时延)
一次请求响应总时间 ≈ RTT + 传输延时
3. HTTP报文:
格式:ASCII
请求报文:
请求行:方法 URL HTTP版本 cr lf
多个首部行:首部名:值 cr lf
cr lf
实体体:
方法:GET POST HEAD PUT DELETE
注:GET方法实体体位空,可以通过URL字段提交表单。POST方法实体体可用于提交表单,同时仍可以请求一个页面。首部行中的Host对Web缓存很重要。
响应报文:
状态行:版本 状态码 短语 cr lf
多个首部行:首部名 值 cr lf
cr lf
实体体:
状态码 短语:200 OK 301 Moved Permenently 404 Not Found
注:首部行Date表示发送报文的时间,与Last-Modified不同。首部行中的Last-Modified对web缓存很重要。条件GET的响应报文的实体体可为空。
4. COOKIE:
cookie的作用是弥补HTTP的无状态特点,让服务器能够限制用户的访问或者把内容与用户身份联系起来。
4个组成部分:第一次响应的Set-cookie首部行,请求中的cookie首部行,用户端由浏览器管理的cookie文件(包含服务器主机名和识别码),web服务器后端数据库中存储的表项。
5. Web缓存(web cache)(代理服务器 proxy server):
在存储空间保存最近请求过的对象的副本,无需访问原始服务器,就可以满足客户的请求。
作用:大大减少对客户请求的响应时间;大大减少一个机构的接入链路到因特网的通信量,无需增加带宽。
使用方法:配置浏览器,对某对象的访问首先定向到web缓存器。
内容分发网络CDN(content distribution network):CDN公司在因特网上安装了许多地理上分散的缓存器,使大量流量实现了本地化。
条件GET方法:GET方法 + 首部行If-Modified-Since。解决了缓存中副本的陈旧问题。如果请求内容有修改过,则原始服务器发送最新的版本。
2.3 EMAIL
异步通信媒介
因特网电子邮件系统:用户代理、邮件服务器、SMTP
简单邮件传输协议SMTP(simple mail transfer protocol)
基于TCP(Port:25),邮件报文的体部分只能采用7比特ASCII,使用持续连接。
过程:TCP连接建立->(SMTP)->HELO->指示收发双方的邮件地址->发送报文->QUIT(或者指示新的收发双方,发送第二个报文)->TCP连接关闭
邮件内容结束标志:cr lf . cr lf
SMTP对比HTTP:
相同:用于传送文件,可以采用持续连接
不同:HTTP为拉协议,SMTP为推协议;SMTP报文首部和主体都必须为7位ASCII,HTTP的数据部分无编码限制;HTTP一个对象一个报文,SMTP多个对象一个报文。
邮件报文格式:
指SMTP命令中DATA后面发送的内容的格式。
MIME多媒体邮件扩展:解决7位ASCII的限制问题,将不符合要求的数据编码成7位。
邮件访问协议:
用户代理- SMTP -发送方邮件服务器- SMTP -接收方邮件服务器- POP3/IMAP/HTTP -用户代理
POP3:post office protocol -version 3 第三版的邮局协议
IMAP:internet mail access protocol 因特网邮件访问协议
2.4 DNS
DNS:Domain Name System
必要性:IP地址不好记忆,且数字没有实际意义
分层命名,分布式数据库完成名字到地址的转换,运行在UDP 53号端口的应用层协议。
层次化命名:
TLD:top lever domains 顶级域
命名:…子域.子域.顶级域
DNS服务器:
根DNS服务器:13个不同组织管理。提供TLD服务器的IP地址。
顶级域DNS服务器:(TLD服务器)对应顶级域,提供其下的权威服务器的IP地址。
权威DNS服务器:对应子域,提供主机名对应的地址。
本地DNS服务器:代替主机向其他DNS服务器进行查询。由ISP管理,通过ISP接入时,ISP会提供一个DNS服务器。
资源记录与DNS报文:
RR:resource records资源记录
TTL:time to live 生存时间(单位:s)
RR格式:name Value Type ttl class (对于internet Class为IN,下面不考虑)
- 主机名 IP地址 A
- 别名 规范名 CNAME
- 别名 规范名 MX
- 域 某DNS服务器主机名 NS
注:邮件服务器别名与主机别名可以相同,查询时在查询报文中的type不同。
DNS报文:首部(标识符、标志位、4个数量)、问题、回答、权威、附加
DNS解析:
过程:应用调用解析器,解析器通过UDP段向本地DNS服务器查询,再将IP地址返回给该应用。
例如访问Web页面的协议使用顺序: (调用解析器)DNS查询 UDP发送 UDP接收 得到DNS响应 (浏览器)TCP建立 HTTP请求
查询分类:递归查询(根服务器负担过重),迭代查询。
DNS缓存:
作用:改善时延性能,减少因特网上传输的DNS报文数量。由于本地服务器可以缓存TLD服务器的地址,所以多数时候,根服务器被绕过了。
原理:当一个DNS服务器接收到一个回答报文时,它会将其缓存在本地存储器,并设置一个TTL(默认2天)
2.5 P2P(了解概念和优势)
P2P:几乎没有一直运行的服务器,任何端系统都可以作为服务器或者客户端,提供分布式的服务,扩展性好,传输速率快。P2P网络是peer构成的应用层面的逻辑网络。
DHT:distributed hash table 分布式散列表
2.6 视频流与内容分发网络CDN(了解)
DASH:Dynamic Adaptive Streaming over HTTP 基于HTTP的动态自适应流
客户获取视频的过程:客户获取告示文件(包含不同质量视频的URL);客户按照情况请求不同质量的内容块。
CDN:content distribution network内容分发网络
ICP(互联网内容提供商)在各个地区部署缓存节点,用户通过域名重定向向最近缓存节点请求内容。
2.7 TCP的SOCKET编程
2.8 UDP的SOCKET编程
第三章 传输层
3.1 传输层服务
传输层服务:为运行在不同主机上的应用进程提供逻辑通信。发送方将应用层报文分成报文段,再传递给网络层,接收方反之。
传输层与网络层的区别:传输层实现的是进程之间的逻辑通信,网络层实现的是主机之间;传输层对网络层的服务进行了加强。
UDP:user datagram protocol 用户数据报协议
TCP:transmission control protocol 传输控制协议
网络层:尽力而为的交付服务(best-effort delivery service)
TCP:可靠、保序、多路复用解复用、拥塞控制、流量控制、面向连接
UDP:多路复用解复用
都不提供的服务:延时保证、带宽保证
3.2 多路复用与解复用
指的是TCP、UDP在网络层之上实现的进程到进程之间的通信
复用:传输层协议根据套接字中包含的端口信息封装传输层分组,将分组交给网络层。
解复用:传输层协议根据网络层交付的分组中的传输层首部,得到端口号,并查到套接字,将应用层数据交给套接字。
UDP套接字:2元组
TCP套接字:4元组
具体过程…
3.3 UDP
UDP的必要性:
UDP相比于IP,提供了区分主机上不同进程的服务;
相比于TCP,UDP没有连接建立时间;
不做可靠性的工作,适用于对实时性要求高于正确性的应用;
没有流量控制和拥塞控制,可以按照设定的速度发送分组。
UDP报文首部(4*2Bytes):源端口号、目的端口号、包括首部的长度、校验和
UDP检验和:按每16bits将所有内容求和取反。求和时,溢出要回卷。
检验通过:检验范围(要回卷)+检验和=全1 (通过检验不一定没有差错)
3.4 可靠数据传输原理
rdt:reliable data transfer 可靠数据传输
FSM:finite-state machine有限状态机
rdt1.0:下层信道可靠
rdt2.0:下层信道可能出现比特差错。增加差错控制编码ACK、NAK,出错重传。
rdt2.1:ACK、NAK可能出错。一旦出错,接收方无法区分来的分组是出错重传的还是新的分组。增加序号进行区分。
rdt2.2:省去NAK。
rdt3.0:下层信道可能出现比特差错以及丢包。增加定时器,超时重传。定时器过早超时,会使传输效率减小。
流水线:利用率计算、需要增加序号范围、需要设置缓存
流水线的差错恢复方法:
序号空间:用来区分分组的所有序号,k比特
窗口长度:能同时等待确认的序号数,N
GBN:Go-Back-N 回退N步 (又称为滑动窗口协议)
累积确认,单个时钟,重传未ACK的全部分组;乱序不接收,ACK最后一个正确分组,无接收缓存。
SR:selective repeat 选择重传
单个确认,独立时钟,选择重传;乱序缓存,对应每个分组给出ACK。
最大窗口长度计算:考虑序号从0开始的一次传输的全部ACK都丢失时,接收方窗口包含的最后一个序号应小于发送方窗口包含的最前面的序号。
GBN:N≤2^k-1 得 N≤2^k-1
SR:2N-1≤2^k-1 得 N≤2^(k-1)
3.5 TCP
TCP:transmission control protocol 传输控制协议
全双工服务,TCP将应用层传递的数据看作字节流。
MSS:maximum segment size 最大报文段长度
MTU:maximum transmission unit 最大传输单元(最大链路层帧长度)
注:MSS取决于MTU,一般以太网MTU为1500字节,除去TCP、IP头部共40字节后,MSS为1460字节。
TCP报文段结构:
一般为20字节头部,包括:源端口号、目的端口号、序号、确认号、接收窗口、首部长度、标志字段、检验和。
TCP实现的服务:可靠数据传输、流量控制、拥塞控制
可靠数据传输:
序号:报文段首字节在字节流中的编号
确认号:期望下一次收到的字节的序号
注:TCP接收方如何处理乱序的分组,与具体程序有关
往返延时估计与超时定时器设置:
延时估计:
每隔一段时间测量某个分组的RTT(如果该分组是重传的,则不计入)得到SampleRTT。按照公式更新:EstimatedRTT = (1-a) EstimatedRTT + a SampleRTT (推荐a=0.128)
上面的平均方式称为指数加权移动平均。
偏差:DevRTT = (1-b) DevRTT + b |SampleRTT - EstimatedRTT|
定时器设置:
TimeoutInterval = EstimatedRTT + 4 DevRTT
快速重传:在没有超时的情况下,如果收到对方对于某一段的3个冗余ACK,则立即重传(包括非冗余的ACK,共4个相同的ACK)
流量控制:
作用:消除发送方使接收方缓存溢出的可能性。
考虑A给B发送数据:
RcvBuffer:主机B的接收缓存区大小
rwnd:主机B的空闲接收缓存。B在给A的ACK中会同时告知A当前的rwnd。
LastByteSent - LastByteAcked:主机A已发送但未确认的字节数
流量控制要求主机A:LastByteSent – LastByteAcked ≤ rwnd
注:当A收到rwnd=0时,必须继续发送只有1个字节数据的报文段。B在rwnd=0时,收到了A的小报文段会回复A它当前的rwnd,直到rwnd非0,传输得到恢复。
TCP连接管理:
1 SYN 初始序号
2 SYNACK 初始序号 确认序号
3 ACK 确认序号
3.6 拥塞控制
作用:防止过多的数据传输导致网络拥塞
检测拥塞:超时,3个冗余ACK。
速率控制:LastByteSent – LastByteAcked ≤ min{ rwnd,cwnd }
cwnd: congestion window 拥塞窗口
策略:目标:不拥塞且充分利用带宽
超时或3个冗余ACK,则cwnd减小
ACK,则cwnd增大
不断试探上限
慢启动:(slow start)
cwnd从1个MSS开始,每次收到确认就增加1个MSS(相当于每过一个RTT,MSS翻倍)。直到出现超时事件,设置一个变量ssthresh = cwnd/2 (慢启动阈值)再次开始慢启动。cwnd等于ssthresh时进入拥塞避免。
拥塞避免:
每个RTT只将cwnd增加1个MSS。出现超时,则ssthresh = cwnd/2 cwnd=1 进入慢启动;出现3个冗余ACK,则ssthresh = cwnd/2 cwnd=cwnd/2+3MSS 进入拥塞避免。
TCP的公平性:
加性增,乘性减,最终趋于平等的共享带宽
第四章 网络层:数据平面
数据平面:决定到达路由器的输入链路的数据报如何转发到该路由器的输出链路。(转发)
控制平面:控制数据报从源到目的主机的端到端路径中路由器的路由方式。(路由选择)
SDN:software defined network 软件定义网络
转发表:路由器检查到达分组首部的字段,查转发表找到该分组应该被转发到的输出链路。
4.1 网络层
服务:向传输层提供主机到主机的段传输服务
控制平面:
传统的方法:每台路由器中的路由选择算法与其他路由器中的路由选择算法通信,计算出它的转发表的值
SDN方法:远程控制器计算和分发转发表以供每台路由器使用。
网络服务模型:尽力而为 best-effort service
4.2 路由器
结构:输入端口,交换结构,输出端口,路由选择处理器(控制平面)
2大功能:路由协议生成路由表、转发分组
基于目标的转发:仅仅依赖于IP数据报的目标IP地址(传统方法)
通用转发:基于头部字段的任意集合(不只是IP)进行转发
注:转发表:基于目的转发;流表:通用转发
输入端口:
结构: 线路端接—数据链路层处理—查表转发排队
最长前缀匹配:(基于目标的转发)
设计方法:保证匹配了某一项的IP不会匹配其他比它更长的项。画出IP的树状图,保证任何IP都能被匹配。
输入端口缓存:交换机构速率低于输入端口汇聚速率时,到达的分组存入输入缓存。
交换结构:将分组冲输入缓冲区传输到合适的输出端口。经内存交换、经总线交换、经互联网络交换。
输出端口:当数据报从交换结构到达的速率比传输速率快时,需要输出端口缓存。
调度规则:FIFO、优先权调度、RR(Round Robin)轮询、WFQ(Weighted Fair Queuing)加权公平排队
丢弃:输入或输出缓存溢出时。
4.3 网际协议IP
IP:Internet Protocol 网际协议
IP数据报格式:版本、首部长度、数据报总长度、首部检验和、源目的IP等等
首部检验和:仅对首部进行,每2个字节作为一个整体,求和回卷取反。
网络层与传输层都检验:IP的检验和仅检验了IP首部;IP和TCP不是必须同时使用的,各层可以使用其他协议。
IPv4数据报分片:
分片原因:并不是所有链路层协议都能承载相同长度的网络层分组。
MTU:maximum transmission unit 最大传输单元
标识、片偏移(单位:8字节)、标志
不同的数据报,标识不同,每发送一个则+1。
一个数据报分片后:相同的标识,不同的偏移量、最后一个的标志记为0。
IPv4编址:
IP地址:32位,写成点分十进制。高位为子网部分,低位为主机部分。
接口:主机或路由器与物理链路连接处。一个IP地址与一个接口相关联。
子网(subnet):一个子网内的节点的IP地址高位部分相同;子网内各主机可以在物理上相互直接到达,无需路由器。
表示子网:223.1.1.0/24
子网掩码(subnet mask):/24表示的子网掩码为 11…1 11…1 11…1 00…0 点分十进制为255.255.255.0
IP地址分类(分类编址):
A 0子网 主机 主机 主机 128-2=126
B 10子网 子网 主机 主机 16384-2=16382
C 110 子网 子网 子网 主机
D 1110 多播地址
E 11110 保留地址
特殊IP地址:
1.规定:
本网络:子网部分全为0
本主机:主机部分全为0
2.
子网地址:子网,全0
直接广播地址:子网,全1 (向某一子网内所有主机发送报文)
受限广播地址:全1 (不知道所属子网时使用,路由器不转发该分组,因此仍然只是发送给子网内的所有主机,对应的MAC为全f)
本机地址(环回地址):127,任意
子网掩码与CIDR:
CIDR:classless interdomain routing 无类别域间路由选择(结合后面的BGP来理解名称)
子网部分可以在任意的位置,a.b.c.d/x 。其中x为地址中子网号的长度,也可以写成子网掩码。
DHCP:Dynamic Host Configuration Protocol 动态主机配置协议
目标:允许主机加入网络时动态地从服务器获取IP地址,并且一段时间内可以使用。
DHCP返回信息:IP地址,子网掩码(可得到子网号),网关地址(第一跳路由器),本地DNS服务器域名和IP地址。
过程:发现报文 提供报文 请求报文 ACK报文
路由聚集:
层次编址下,连续的子网前缀的子网可达信息(一个转发表上有大量连续子网)可以做聚集,减少路由计算的负担。与此对应的是最长前缀匹配的措施。
IPv6:
源地址、目的地址:128bits 每个16字节
数据报传输过程中,不允许分片。
隧道:IPv6的数据报在IPv4的路由器中作为数据部分通过IPv4的数据报传输。
4.4 通用转发与SDN
SDN方式控制平面和数据平面分离的优点:
集中在控制器上实现控制逻辑,网络可编程,可以实现复杂网络功能,方便管理;
形成开发生态;
SDN分组交换机仅按照流表进行分组交换,通用、便于升级。
分组交换机工作原理:
匹配流表+动作
第五章 网络层:控制平面
5.1 概述
构建控制平面的方法:
每个路由器控制功能实现
逻辑集中式控制功能实现(SDN)(控制代理CA)
5.2 路由选择算法
路由协议:确定一条从发送发到接收方的较好的路径。
网络的图模型:G = ( N, E )
代价:c(x, y )
路径:节点集合
路由选择算法分类:
集中式(全局):每个节点都具有全局的连通性和链路开销信息。LS算法
分散式(分布式):每个节点仅有到其直接相连节点的开销信息。DV算法
LS算法:(link state 链路状态算法)
链路状态广播算法->实现每个节点的全局信息获取(不属于该算法,是具体协议)
使用Dijkstra算法找到最短路径
DV算法:(distance-vector 距离矢量算法)
Bellman-Ford 方程: Dx(y)=min v { c(x,v) + Dv(y) }
层次路由:
原因:仅将所有路由器看作同质路由器集合,无法解决超大规模路由问题,而且难以管理,无法满足各个ISP的意愿。
具体方法:分成AS(Autonomous System)。AS内部之间的节点路由有 内部网关协议 解决;AS之间的路由,分层解决,先路由到AS网关,再到目标的AS网关,最后到目标。
5.3 互联网络的路由协议
内部网关协议IGP:(AS内部)
RIP:routing information protocol 路由选择信息协议
使用了DV算法。
RIP通告:包含这个路由器到最多25个目标子网的跳数信息。
邻居间每30s交换通告报文;改变路由时发送通告报文;对方请求下,发送通告报文。
链路失效和恢复:180s内未收到通告信息等等。。
OSPF:open shortest path first 开放最短路径优先
使用了LS算法。
相比于RIP的高级特性:安全性;允许多个相同代价路径存在;支持层次化OSPF。
外部网关协议EGP:(AS之间、ISP之间)
边界网关协议BGP:border gateway protocol
基本的路由单位:不是IP地址,而是CIDR化的前缀(即子网之间的路由)
BGP实现的功能:让所有AS知道某AS中某子网的存在;确定到某子网的最优路径。
通告BGP路由信息:
网关路由器参与AS内部路由计算,收集AS内部子网可达信息;
网关路由器通过AS间路由,向其他AS网关通告子网可达信息;
网关路由器转发其他AS网关通告的子网可达信息;(前三个为网关路由器之间的沟通)
网关路由器通过i-BGP向内部路由节点通告收集到的子网可达信息。(最后网关路由器向内部传递消息)
例如:子网x的通告信息由其AS的网关路由器发出,标记上AS3 x。经过AS2的网关路由器传递,标记上AS2 AS3 x,之后以此类推。
i-BGP:内部BGP
e-BGP:外部BGP
确定最好的路由:
BGP属性:AS-PATH NEXT-HOP
AS-PATH:关于某一子网的通告,一路传递过来的AS路径。例如:AS2 -AS3- x
NEXT-HOP:AS-PATH中起始路由器的某个接口的IP地址。例如:AS2中某路由器与AS1连接链路的接口IP地址。
注:若某路由器发现传递来的通告路径中包含自身所在AS,则它不进行转发。(避免回路)
热土豆路由选择:hot potato routing
选择通告中到NEXT-HOP最低开销的路径(使用了AS内的路由选择信息)。具有自私性。
BGP路由选择:
优先顺序:另一个BGP属性,本地偏好 -> 最小AS-PATH跳数 -> 热土豆 -> BGP标识符
5.4 ICMP协议
ICMP:internet control message protocol 因特网控制报文协议
由主机、路由器、网关用于传达网络层控制信息,如:主机、协议不可到达,TTL过期等。
Traceroute的原理:设置TTL,接收ICMP报文。
第六章 数据链路层与局域网
子网内网络节点的连接方式:点到点连接,多点连接(共享型介质、交换机)
广域网WAN(wide area network):多采用点到点。
局域网LAN(local area network):多采用多点连接。(存在冲突问题)
6.1 概述
数据报在不同的链路上以不同的链路协议传输。
不同的链路协议,提供不同的服务。
链路层服务:
可靠数据传输:低出错率时不使用(光纤、双绞线);高出错率使用(无线链路)。
差错检测与纠错:
链路层功能在网络适配器上实现(网卡)
6.2 检错与纠错
EDC:Error-Detection and Correction 差错检测和纠正 比特
指 如检验和等冗余数据。
通过EDC,增强数据D(包括数据链路层头部以及网络层传递下来的数据)。
奇偶校验:(检错纠错基本思想)
二维奇偶校验可对1bit差错纠正,对2bit差错能检测但无法纠正。
检验和:(多用于传输层)
循环冗余检测:(用于适配器中的链路层)
CRC:Cyclic Redundancy Check 循环冗余检测
CRC编码又称多项式编码。
过程如下:
发送方:
待传输:d比特数据D
发送发与接收方协商一个r+1比特模式(r次方),称为生成多项式G;
发送方选择r个附加比特R(R就是CRC),附加到D上; (传输D, R )
对上面r个比特的要求是:D, R的二进制数能被G整除;
接收方:
用G去除接收到的d+r比特,如果余数非零,则出现了差错。
注:CRC计算中采用模2算数,加减法等价于按位异或。乘法和除法代表左移和右移。
6.3 多路访问协议
点对点链路协议:PPP (Point to point protocol)
多路访问协议:MAC (media access control 介质访问控制)
必要性:共享型介质中,多个节点能同时发送分组,可能导致碰撞,使得信道上大量带宽被浪费。因此,需要一个协议来协调活跃节点的传输。
MAC 媒体访问控制协议:
分为下面几类:
信道划分:
TDMA:time division multiple access 时分多路复用。每个站点在每个周期内由固定的时隙。
FDMA:frequency division multiple access 频分多路复用。每个站点分配固定的频段
随机访问协议:
RAP:random access protocol 随机访问协议
每个节点总是以信道全部速率传输分组。
slotted ALOHA:时隙ALOHA
时间被划分为时隙。每个节点有新帧要传输时,在下一个时隙发出。如果帧的传输中没有遇到碰撞,则传输成功;否则在之后每个时隙都以p的概率重传,直到传输成功。
ALOHA:
无时隙。每个节点有新帧要传输时,立刻传输。如果无碰撞,则成功;否则等待一个帧的传输时间,之后以概率p传输,概率1-p继续等待一个帧时间。
CSMA:carrier sense multiple access 载波侦听多路访问
CS:载波侦听。如果来自另一个节点的帧正在信道上发送,则节点等待,直到检测到小段时间没有传输才开始传输。
CD:collision detection碰撞检测。如果传输过程中检测到干扰帧,则停止传输,并且停止一段时间后再进行侦听。碰撞检测需要一小段时间来完成。
CSMA/CD:具有碰撞检测的载波侦听多路访问协议
形成帧 侦听 发送 (碰撞检测) 碰撞 二进制指数后退
二进制指数后退:如果帧经历了连续n次碰撞,则随机等待(0,1,…,2^n - 1)512bit的时间。(1次碰撞则在 0 1之间选择)(最大取值1023)
效率近似公式:1 / ( 1 + 5d prop/d trans)
轮流协议:不要求
6.4 链路层寻址与ARP
MAC地址(48bit):又称链路层地址、LAN地址、物理地址
不是主机或路由器,而是适配器具有MAC地址。链路层交换机不具有MAC地址,它对节点是透明的。
同时使用MAC地址与IP地址:
局域网为任意网络层协议设计,而不是仅用于IP和因特网;
IP在设备移动时需要重新配置;
如果仅使用IP,并让网络层来匹配每个收到的帧,则主机会被每个帧中断。
ARP:address resolution protocol 地址解析协议
ARP只为同一子网上的主机和路由器接口解析IP地址。
主机或路由器中存储有ARP表,表项具有TTL。
ARP查询分组在广播帧中发送(全f),ARP响应分组在标准帧中发送。
ARP是跨越网络层和链路层的协议。
路由到其他的局域网:
A向B数据报,假设A知道B的IP地址,有一个中间路由器R。
IP MAC
1 A B A R
2 A B R B
6.5 以太网Ethernet
IEEE802.3标准
共享以太网:总线拓扑、星形拓扑(集线器hub)
交换以太网:以太网交换机(无碰撞)(存储转发)
以太网帧结构:
无连接不可靠。
以太网CSMA/CD算法:额外增加一个强化冲突的功能,能让所有站点都知道冲突发生了。
6.6 HUB与交换机
HUB本质上是物理的中继器,作用于bit而不是帧。
交换机的自学习:
交换机的转发表:(MAC地址,接口)
自学习:对每个到达的帧,记录其MAC地址,以及到达的接口,并设置一个TTL。
选择性转发、流量隔离、专用接入。
路由器与交换机的区别:
交换机:维护交换表,按照MAC地址进行转发;即插即用;具有自学习功能;是链路层的设备。
路由器:维护路由表,执行路由算法;对广播分组做限制;需要配置网络地址;网络层设备,速率低。