1 绪论
时延
传输和传播
传输是和带宽有关系,把数据上传到链路的时间
传播是和距离以及导体性质有关系
需要掌握这些时延的计算方法
RTT(Round-Trip Time),往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。 往返延时(RTT)由三个部分决定:即链路的传播时间、末端系统的处理时间以及路由器的缓存中的排队和处理时间。其中,前面两个部分的值作为一个TCP连接相对固定,路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。
分组复用和电路复用,虚电路算是二者的结合,对每一条链路分配vc号,然后对应的路由器交换机基于端口+vc号,判断出口和出口要刷新的新的VC号
OSI七层理论体系:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
表示层是使得通信的应用程序能够解释交换数据的含义
会话层:数据交换定界和同步功能,包括了建立检查点和恢复方案的方法
TCP/IP真实的理论模型:物理层,链路层,网络层,传输层,应用层
应用层:应用程序和对应的协议:Http,Ftp等等,包括DNS的功能。Message报文
传输层:TCP/UDP所在,提供流量控制,拥塞控制,切割报文。这里segment报文段
流量控制指的是发送方和接受方直接的速度匹配
拥塞控制指的是网络拥塞的时候控制发送的速度
网络层:数据报(datagram)所有有网络层的都要运行ip协议(只有这一个)。决定路由选择协议
链路层:帧(frame)
速度估算 LittleLaw:A到达速率,w是平均包在队列里的等待时间,L是在队列里等待的包的平均数 L=A*W
2 链路层
分帧,媒介访问控制(多个链接共享一条链路)
- 分帧
- 多路访问
- 流量控制
- 差错检测和纠正
交换机和路由器
交换机更多的是管理端口的发送,扩容网络的传输(多线传输不互相干扰)
交换机的工作场所更多的是在一个局域网里
在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。集线器是采用共享工作模式的代表,如果把集线器比作一个邮递员,那么这个邮递员是个不认识字的“傻瓜”—要他去送信,他不知道直接根据信件上的地址将信件送给收信人,只会拿着信分发给所有的人,然后让接收的人根据地址信息来判断是不是自己的!而交换机则是一个“聪明”的邮递员—交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表中。由于交换机能够智能化地根据地址信息将数据快速送到目的地,因此它不会像集线器那样在传输数据时“打扰”那些非收信人。这样一来,交换机在同一时刻可进行多个端口组之间的数据传输。并且每个端口都可视为是独立的网段,相互通信的双方独自享有全部的带宽,无须同其他设备竞争使用。比如说,当A主机向D主机发送数据时,B主机可同时向C主机发送数据,而且这两个传输都享有网络的全部带宽—假设此时它们使用的是10Mb的交换机,那么该交换机此时的总流通量就等于2×10Mb=20Mb。
路由器工作在局域网之间,做路由,拥塞控制等
既然是局域网,万一分别处于不同 VLAN的主机需要互相通信时该怎么办呢?这时候就得通过路由器(Router,转发者)来帮忙了。路由器可以将处于不同子网、网段、VLAN的电脑连接起来,让它们自由通信。 1.IP数据报的转发,包括数据报的寻径和传送; 2.子网隔离,抑制广播风暴; 3.维护路由表,并与其他路由器交换路由信息,这是IP报文转发的基础。 4.IP数据报的差错处理及简单的拥塞控制; 5.实现对IP数据报的过滤和记帐
第二层交换机和路由器的区别 传统交换机从网桥发展而来,属于OSI第二层即数据链路层设备。它根据MAC地址寻址,通过站表选择路由,站表的建立和维护由交换机自动进行。路由器属于 OSI第三层即网络层设备,它根据IP地址进行寻址,通过路由表路由协议产生。交换机最大的好处是快速,由于交换机只须识别帧中MAC地址,直接根据 MAC地址产生选择转发端口算法简单,便于ASIC实现,因此转发速度极高。但交换机的工作机制也带来一些问题。 1.回路:根据交换机地址学习和站表建立算法,交换机之间不允许存在回路。一旦存在回路,必须启动生成树算法,阻塞掉产生回路的端口。而路由器的路由协议没有这个问题,路由器之间可以有多条通路来平衡负载,提高可靠性。 2.负载集中:交换机之间只能有一条通路,使得信息集中在一条通信链路上,不能进行动态分配,以平衡负载。而路由器的路由协议算法可以避免这一点,OSPF路由协议算法不但能产生多条路由,而且能为不同的网络应用选择各自不同的最佳路由。 3.广播控制:交换机只能缩小冲突域,而不能缩小广播域。整个交换式网络就是一个大的广播域,广播报文散到整个交换式网络。而路由器可以隔离广播域,广播报文不能通过路由器继续进行广播。 4.子网划分:交换机只能识别MAC地址。MAC地址是物理地址,而且采用平坦的地址结构,因此不能根据MAC地址来划分子网。而路由器识别IP地址,IP地址由网络管理员分配,是逻辑地址且IP地址具有层次结构,被划分成网络号和主机号,可以非常方便地用于划分子网,路由器的主要功能就是用于连接不同的网络。 5.保密问题:虽说交换机也可以根据帧的源MAC地址、目的MAC地址和其他帧中内容对帧实施过滤,但路由器根据报文的源IP地址、目的IP地址、TCP端口地址等内容对报文实施过滤,更加直观方便。 6.介质相关:交换机作为桥接设备也能完成不同链路层和物理层之间的转换,但这种转换过程比较复杂,不适合ASIC实现,势必降低交换机的转发速度。因此目前交换机主要完成相同或相似物理介质和链路协议的网络互连,而不会用来在物理介质和链路层协议相差甚元的网络之间进行互连。而路由器则不同,它主要用于不同网络之间互连,因此能连接不同物理介质、链路层协议和网络层协议的网络。路由器在功能上虽然占据了优势,但价格昂贵,报文转发速度低。
路由机制
地址学习:从哪里来的就学习到转发表里
生成树算法:机制如下
这里也说明了局域网的缺点:不能有环,限制了路径的生成
令牌环
环形
收到包之后在包的上面做一个修改标志自己收到了
所以释放令牌就是等到自己发完了同时收到了发出的包
以太网
CSMA
冲突检测的方法
一旦空闲马上发送(全双工,边发边听,冲突检测的技术基础)
如果发现冲突进行退避:二进制指数退避算法
为了保证冲突可以被发现,帧的大小有限制(最小帧长)
无线局域网
基本概念和网络体系结构
CSMA/CA
无线网络是半双工的,无法做冲突检测,重点在碰撞避免上
点协调
分布式协调
网络媒介利用率分析
Point2Point link
Ring
ALOHA,Slotted ALOHA
普通的ALOHA没有时钟同步,也没有分出时隙,而是直接发,以有无Ack作为成功的标准
CSMA/CD p-persistent
CSMA:先听后传,空则传,反之则推迟:不能够避免所有的碰撞
非持续的CSMA:空则传,反之等随机时间再看是不是空
1持续的CSMA:空则传,反之听到空,马上传
p持续的CSMA:空有p的概率传,(1-p)再等一个时隙。不空则等到空了再开始空的时候讨论。
以上的都是发现碰撞等一定的随机时间
CSMA/CD
空则传,否则等到空的时候马上传,如果检测到碰撞,发送jam信号并放弃,jam之后等随机时间
由于检测碰撞的独特机制导致对帧的大小有所限制,不能够太小,传输时间应该大于两倍的传播时间
IEEE802.2 退避的时间使用1持续加上指数退避
3 网络层
路由:找路径
- 要求有正确找路径的能力
- 要求最小代价的路径查找
- 需要避免Death end—-无路可走
- 需要避免Loop—-环路
路由算法(必考)
Bellman-Ford
Dijkstra Algorithm
需要得到整个网络的整体的信息
通过Flooding的方法保证所有节点对于整个网络的信息一致
最后收敛的时候整个网络的信息一致并建立好了转发表
问题在于收敛的速度以及不一致导致一些错误
自治系统和路由方式
自治域希望:1自由选择路由(允许经过或者经过)2.隐私,网络结构保密。3,自由选择路由算法
IRP(IGP)和ERP(EGP)
eBGP是AS之间的边界路由器交流会话
iBGP是AS边界路由器和内部路由器交流会话
IGP自治域内部的路由协议OSPF,RIP
内部路由协议
距离向量RIP和链路状态协议OSPF
距离向量:每一个节点只知道自己到邻居的代价以及邻居的距离向量,然后广播,用Bellman-Ford进行计算
BGP
BGP功能
BGP做的事情就是AS公布自己的最佳路由方案,然后其他的AS进行选择
AS就好像是之前的一个节点
这个过程和距离向量的过程类似
- 没有全局的信息共享,只在邻居之间
- 遍历迭代达到收敛
不同之处
- BGP根据其他的标准选择路径而不仅仅是最短
- BGP发送的是当前的全部路径,距离向量发送的是向量矩阵,直接就可以避免Loop了
- 对于选择的时候,某个中间节点AS可以选择不转发矩阵(不想运输这个人的数据)则物理链接不保证了BGp下可以被链接在一起
-
基本报文类型和工作方式
报文包含了IP和AS的一些属性
路径
- 本地的偏爱倾向
- 多条接入的附加上目的地对链路的距离
- IGP代价,选择一个最近的出口
BGP收到消息处理:应用import政策,选择最好的路由,修改最好的路由表(IP转发表),应用export政策
- 可达性:物理链接不代表实际链接,不保证
- 安全性:即便没有这个链路也可以假装自己有,也可能不从自己声明的路线发送
- 收敛性:不能保证(如果全都遵循”Gao-Rexford” rules可以收敛)
IP协议
数据的格式和对应的含义
地址的分类和划分
CIDR方法
前缀和掩码的形成和应用,可以精准的标记网络位有多少位。
传统的地址分配就是用:地址分类为A,B,C三类。分别对应的是8,16,24位的网络前缀位。浪费较大。子网划分
子网掩码IPV4和IPV6比较
其他协议
NAT,ARP,DHCP,ICMP
ICMP:IP层的控制信息ping
traceroute
Path MTU
尝试的发送以探测出路径允许的最大包的大小IP组播
IGMP(简单的根据书本复习一下)
IP组播就是有一定需要收到一样包的用户,可以编做一组,然后发出者只需要发出一份,然后在快要到目的地的时候,路由器会复制若干份然后对应的发,这种方法相对高效一些,不重复占用网络占用。
IP和Ethernet区别
4 传输层
分块切分后给网络层
- 传输层对接应用层,网络层只管送到端系统
- 网络层尽力而为的服务不保证质量
可靠传输协议
- 数据包损坏
- 数据包丢失
- 按序交付(序列号作为区分)
- 传输效率:流水线协议
Sliding Window
确认机制
一个一个确认或者是直接累计确认
累计确认就是发送想要接受的那个序列号,收了1,2就发3重传机制
GoBackN
发送端最多发N个没有确认的报文
接收端只会接受有序的报文,丢弃无序的。使用累计确认(发送已接受的下一个报文序列号)
发送者设置一个计时器,超时之后重发N个报文Selective Repeat
选择重发
如果K丢了但是K+1收到了,则K触发超时被重发
高效但是比较复杂,需要对每一个包进行计时协议
UDP
用户数据报协议 (User Datagram Protocol, UDP) 是一种 不可靠、无连接 的数据传输协议
- 不可靠:数据有可能会丢失,而且多个数据到达目的地时可能是没有顺序的
- 无连接:发送方和接收方之间无需建立连接,每个发出的数据段都是独立的
UDP 只是负责把数据丢到网络,交给下层进行传输,至于数据能不能到达、到达后顺序有没有错,它都一律不管
既然 UDP 这么不可靠,那我们为什么还要使用 UDP?一个字,快
相比于 TCP 使用一整套复杂的控制流程保证传输可靠,UDP 牺牲可靠性提高数据的传输速度
UDP 数据段格式
我们可以看到,传输层数据段其实是对应用层消息的封装,而在 UDP 协议就是加上四个头部字段而已
- source port number:发送方的端口号
- destination port number:接收方的端口号
- length:数据段的长度,包括头部字段,以 byte 为单位
- checksum:校验和,用于检查数据是否正确
udp checksum使用wraparoud,左边进位加到右边,checksum等于sum取反
TCP(重点)
数据的格式
多路复用 (Multiplexing) 和多路分解 (Demultiplexing) 和上面的两个过程类似,但侧重点有所不同
- 多路复用:在发送方,接收来自不同套接字的消息,并添加上头部字段(用于多路分解)
- 多路分解:在接收方,解析头部字段,将信息分发给对应的套接字
套接字的唯一标识,是在套接字建立的时候,根据发送方和接收方的状态确定的,这里分为两种情况
- 如果发送方和接收方是无连接的(UDP),那此时套接字的标识是一个二元组
(destination IP address, destination port number)
- 如果发送方和接收方是有连接的(TCP),那此时套接字的标识是一个四元组
(source IP address, destination IP address, source port number, destination port number)
如果超时了重新传窗口的第一个包,那么超时的时间怎么设置,过长导致低效,过短导致过于频繁的发包
想要尽力让超时的时间相等于一个RTT
流量控制(滑动窗口)
链接维护
链接建立:三次握手
链接结束:四次握手
拥塞控制
时延RTT估算算法
RTO超时重传的阈值
超时重传可能直接初始值是预计值,然后每一次超时就直接翻倍,如果有新包或者是Ack就回到预计值
使用直接翻倍的思路,和之前的以太网里的指数级退避的思路是相似的
jacobson reno算法
发送的速率是
- 慢启动
初始化窗口的大小是1,然后每一个Ack大小加一,一个RTT有窗口大小个Ack,也就是一个RTT翻倍
- 拥塞避免(AIMD)
-
快回复
这里的是之前已经发送了10个包,同时由于101的丢失导致在sender的窗口左端一直不能够移动,于是就只能指望着窗口的右端移动使得可以尽早的让sender继续工作,而不是一直卡在101的位置路由器加入拥塞控制
抑制分组:每个丢掉的包,发一个ICMP回去告知
- 反压:一跳一跳的发挥Choke包,需要每一跳都控制传输
- 警告位:被阻塞的路由器设置
- 随机早期丢弃(RED)(重点)不加控制可能会导致尾部丢弃,尾部的丢弃可能会影响到很多的TCP链接,进而导致全局的带宽一下子下降,随后又会有突然的上升(全局同步),可以提前就开始随机的指定丢弃
- 公平队列
网络服务质量
DASH对一份数据保存了不同码率的数据,然后用户可以定期的测量带宽,然后请求自己合适的服务质量
RTCP还会有定时的会发一个report供源端进行调整
- 弹性流量和非弹性流量
- 综和服务体系ISA
- 区分服务(DS)(SLA的概念)
- 流量调度算法,漏桶令牌桶机制
ISA:综和服务体系(有点复杂导致代价太高,每一个流都需要预留资源,都需要维护一个软状态)
综合服务体系:把每一个流区分出,然后对每一个提供服务
路由算法:更新,根据QOS参数
修改缓存队列的调度算法:优先级高的直接进入优先队列优先处理,对于普通的就只是使用传统的尽力而为的服务
丢包的时候也是按照优先级选择丢包
资源预留:RSVP,对整链路发送要求预留一定的资源,每一个路由器进行反馈可不可以,如果可以的话会建立一个softstate,来记录一下预留资源的一些状态
允许控制:对请求进行审核,有可能会被拒绝,如资源不足
DS:区分服务机制
使用IP包头的一个域来区分包的优先级别,服务质量保障只能在一个域里
流量整形:对数据的平均峰值等进行管理
5 网络安全
被动攻击和主动攻击
主动攻击更多的是伪装修改和重放攻击
被动攻击更多的就是监听和分析,更加难以被发现
对称加密
经典算法
需要有密钥的分发
凯撒密码
选择明文攻击
唯密文攻击
已知明文攻击
现代算法(块加密)
把数据分块,然后对块使用映射的加密算法进行加密
可能会由于多个块是一样的而被猜出,如下做出了改进
这个就需要传输两倍的数据
所以又考虑改进
非对称加密算法(RSA)(重点)
密钥生成过程
RSA加密解密过程
由于RSA的计算量比较大,所以对于大数据一般把RSA和对称密钥结合起来使用
报文鉴别和散列函数
使用一个良好的散列函数,发送原文和散列的结果,如果中途有篡改,那么散列结果和原文匹配不上
中间的伪装者还是可以伪装直接发送自己的包和哈希结果,所以需要鉴别密钥区分发送者
公钥系统
组成元素
加密和数字签名
考虑直接使用RSA加密整个文档,那么如果可以匹配的上,那就证明了这个数据的发出者
问题就是数据太大,所以可以考虑先用散列函数缩小数据规模
Diffie-Hellman密钥交换过程
数字证书CA
安全电子邮件系统设计
网络安全的各层协议
对于TCP使用SSL进行加密,对数据进行分块为record,然后在尾部加上MAC,由于害怕数据类型伪造,所以加上了类型,以及序列号(重发攻击)计算
考试信息
参考
考试的话大家把握重点就好,就比如全考大题,传输层肯定是拥塞控制啊,再分一些小题。可能涉及到一些其他知识点,也都是重点。细节不会为难大家不用死扣书本细节。其他章节也都是大题考重点(6月期末和以前届的期末都是差不多的题目,或者说基本上每年期末考卷都一样所以才不给你们以前的卷子。。