1、学习自 哈工大课程(李全龙老师、聂兰顺老师授课)
2、配套书籍《计算机网络 自顶向下方法》 ,百度盘提取码:zuom
3、本篇是老师课件+部分笔记
计算机网络
计算机网络 = 通信技术+计算机技术
什么是Internet?(组成细节角度)
什么是Internet?(服务角度)
计算机网络协议
协议是计算机网络有序运行的重要保证
任何通信或信息交换过程都需要规则
什么是网络协议?
协议的三要素
协议是计算机网络的重要内容
计算机网络结构
网络边缘
接入网络
接入网络:数字用户线路(DSL)
接入网络:电缆网络
典型家庭网络的接入
机构(企业)接入网络(Ethernet)
无线接入网络
网络核心
Internet 结构
Internet结构:网络之网络
Q:数以百万计的接入ISP是如何互联在一起的呢?
A:可选方案1:每个接入ISP直接彼此互联?[直接互联不适用于大规模网络,O(N²)连接问题]
数据交换—电路交换
网络核心
为什么需要数据交换?
交换
数据交换的类型
电路交换的特点
电路交换网络的链路共享?
多路复用
多路复用分:频分多路复用、时分多路复用、波分多路复用、码分多路复用。
频分多路复用 FDM
时分多路复用 TDM
波分多路复用 WDM
码分多路复用 CDM
码分多路复用编/解码举例
数据交换—报文交换、分组交换
报文交换(message switching)
分组交换(package switching)
分组交换:统计多路复用(Statistical Multiplexing)
存储-转发(store-and-forward)
分组交换:传输延迟
报文交换 VS 分组交换
缓存至少是7.5M,需要存到了,才转发。
分组交换,该例子理论上缓存1.5M就可以了。
报文交换是串行,分组交换是并行(大部分时间是并行),分组交换在目前的计算机网络中以及大部分数据网络中广泛使用。
分组交换的报文交付时间
例题
分组交换 VS 电路交换
计算机网络性能
速率
带宽
延时(时延)
四种分组延迟
类比:车队
排队延迟
时延带宽积
分组丢失(丢包)
吞吐量(吞吐率)(Throughput)
吞吐量:Internet场景
计算机网络体系结构
为什么需要计算机网络体系结构?
复杂系统的分层结构
计算机网络的体系结构
为什么采用分层结构?
分层网络体系结构基本概念
OSI参考模型
OSI 参考模型
OSI 参考模型的解释通信过程
OSI参考模型数据封装与通信过程
为什么需要数据封装?
物理层
单工,只能单一的功能,电视和卫星,电视就是只能收信号。
半双工,发和收是交替进行的,不能同时,比如对讲机,讲话就不能听,听就不能说话。
数据链路层
网络层
传输层
会话层
表示层
应用层
TCP/IP 参考模型
5层参考模型
5层模型的数据封装
计算机网络与Internet发展历史
计算机网络应用体系
计算机网络应用
网络应用有哪些特点?
网络应用的体系结构
客户机/服务器结构
纯P2P结构
混合结构
网络应用进程通信
网络应用的基础:进程间通信
套接字:Socket
如何寻址进程?
应用层协议
应用层协议的内容
网络应用的需求与传输层服务
网络应用对传输服务的需求
典型网络应用对传输服务的需求
Internet提供的传输服务
典型网络应用所使用的传输层服务
Web应用
Web与HTTP
HTTP协议概述
HTTP连接
HTTP连接的两种类型
非持久性连接
响应时间分析与建模
持久性HTTP
HTTP消息格式
HTTP请求消息的通用格式
上传输入的方法
方法的类型
HTTP响应消息
HTTP响应状态代码
体验一下HTTP
Cookie技术
为什么需要Cookie?
Cookie技术
Cookie的作用
Web缓存
Web缓存/代理服务器技术
Web缓存示例
条件性Get方法
email应用
Email应用的构成
SMTP协议:RFC 2821
Email应用示例
SMTP交互示例
尝试SMTP交互
SMTP协议
Email消息格式与POP3协议
Email消息格式
Email消息格式 :多媒体扩展
邮件访问协议
POP协议
IMAP协议
DNS
DNS: Domain Name System
DNS
分布式层次数据库
DNS根域名服务器
TLD 和权威域名解析服务器
本地域名解析服务器
DNS 查询示例
迭代查询
递归查询
例题
DNS 记录缓存和更新
DNS记录和消息格式
DNS记录
DNS协议与消息
如何注册域名?
P2P应用-原理与文件分发
纯P2P架构
文件分发:客户机/服务器 vs.P2P
文件分发:客户机/服务器
文件分发:P2P
客户机/服务器 vs. P2P :例子
文件分发: BitTorrent
所有的节点都是动态的加入或者动态的离开。
BitTorrent:Tit-for-tat
P2P应用-索引技术
P2P :搜索信息
集中式索引
集中式索引的问题
洪泛式查询:Query flooding
层次式覆盖网络
P2P案例应用:Skype
Socket编程-应用接口编程(API)
网络程序设计接口
应用程序接口API
几种典型的应用编程接口
Socket编程 - Socket API 概述
Socket API
Socket抽象
地址结构
Socket编程 - Socket API 函数
Socket API函数(WinSock)
Socket API函数
Socket面向TCP/IP的服务类型
Socket API 函数
Socket API 函数小结
关于网络字节顺序
网络应用的Socket API(TCP)调用基本流程
Socket编程 - 客户端软件设计
解析服务器IP地址
解析服务器(熟知)端口号
解析协议号
TCP客户端软件流程
UPD客户端软件流程
这里设计客户端软件的方法不是唯一的,可以按照自己的思路自己设计。
客户端软件的实现——connectsock()
客户端软件的实现——UDP客户端
客户端软件的实现——TCP客户端
客户端软件的实现——异常处理
示例:访问DAYTIME服务器的客户端(TCP)
示例:访问DAYTIME服务器的客户端(UDP)
Socket编程 - 服务器软件设计
4种类型基本服务器
循环无连接服务器基本流程
数据发送
获取客户端点地址
循环面向连接服务器基本流程
并发无连接服务器基本流程
并发面向连接服务器基本流程
服务器的设计这个只是其中的一种设计,不代表服务器只能这么设计。
服务器的实现
服务器的实现——passivesock()
服务器的实现——passiveUDP()
服务器的实现——passiveTCP()
示例:无连接循环DAYTIME服务器
示例:面向连接并发DAYTIME服务器
传输层概述
传输层
传输层服务和协议
传输层 VS 网络层
Internet传输层协议
复用和解复用(多路复用和多路分用)
多路复用/分用
分用如何工作?
无连接分用
面向连接的分用
面向连接的分用:多线程Web服务器
UDP协议
UDP:User Datagram Protocol [RFC 768]
UDP 校验和(Checksum)
校验和计算示例
可靠数据传输概述
可靠数据传输原理
可靠数据传输协议基本结构:接口
可靠数据传输协议
Rdt 1.0:可靠信道上的可靠数据传输
Rdt 2.0
(Rdt 2.0 开始研究不可信信道的数据传输,现实生活里的通信也是存在数据丢失等情况,这个会更真实。)
Rdt 2.0 : 产生位错误的信道
Rdt 2.0 :FSM规约
Rdt 2.0 无错误场景
Rdt 2.0 有错误场景
Rdt 2.1 和 Rdt 2.2
Rdt 2.0 有什么缺陷
Rdt 2.1 发送方,应对ACK/NAK破坏
Rdt 2.1 接收方,应对ACK/NAK破坏
Rdt 2.1 VS Rdt 2.0
Rdt 2.2 无NAK消息协议
Rdt 2.2 FSM 片段
Rdt 3.0
Rdt 3.0 FSM 片段
Rdt 3.0 示例1
Rdt 3.0 示例2
Rdt 3.0性能分析
Rdt 3.0 停等操作
流水线机制与滑动窗口协议
流水线机制提高资源利用率
流水线协议
滑动窗口协议
Go-Back-N协议(GBN协议)
GBN协议发送方
GBN 发送方扩展FSM
GBN 接收方扩展FSM
GBN示例
思考练习题:
Selective Repeat 协议 (SR协议)
Selective Repeat :发送方/接收方窗口
SR 协议
SR协议示例
SR 协议困境
可靠数据传输原理与协议(回顾)
TCP协议
TCP 概述:RFCs-793,1122,1323,2018,2581
TCP段结构
TCP :序列号和ACK
TCP可靠数据传输
TCP可靠数据传输概述
TCP RTT 和超时
TCP 发送方事件
TCP 发送端程序
(部分伪代码)
TCP 重传示例
TCP ACK生成:RFC 1122,RFC 2581
快速重传机制
快速重传算法
TCP流量控制
TCP连接管理
TCP连接管理:建立
TCP连接管理:关闭
TCP连接管理
拥塞控制原理
拥塞的成因和代价(场景1)
拥塞的成因和代价(场景2)
拥塞的成因和代价(场景3)
拥塞控制的方法
案例:ATM ABR 拥塞控制
TCP 拥塞控制
TCP 拥塞控制的基本原理
加性增——乘性减:AIMD
TCP慢启动 :SS
Threshold变量
Loss事件的处理
TCP:拥塞控制总结
TCP拥塞控制
TCP拥塞控制算法
练习思考题:
TCP的性能分析
TCP throughput (吞吐率)
未来的TCP
TCP的公平性
TCP 具有公平性吗?
传输层小结(回顾)
网络层
网络层核心功能——转发与路由
网络层核心功能——连接建立
网络层服务模型
虚电路网络
连接服务与无连接服务
虚电路(virtual circuits)
VC的具体实现
VC转发表
虚电路信令协议(signaling protocols)
数据报网络
数据报转发表
40多亿个IP存到那里不现实,转换为存储一个范围的地址。
最长前缀匹配优先
数据报网络 OR 虚电路网络?
IP数据报
Internet网络层
IP数据报(分组)格式
IP分片
最大传输单元(MTU)
IP分片与重组
IP分片过程
IP编址
IP编址(addressing)
IP子网(subnets)
(可以把图上的网络层设备剔除,看看有多少哥网络孤岛,就有多少个子网。如上面把路由器拿开,PC拿开,保留IP地址及接口,很容易看到有6个IP子网。)
有类IP地址
有类编址
特殊IP地址
私有IP地址
子网与子网划分
子网掩码
子网掩码的应用
案例:一个C类网络划分子网
CIDR与路由聚合
CIDR
CIDR与路由聚合
路由聚合
DHCP协议
DHCP是工作在应用层的协议。
如何获得一个IP地址
动态主机配置协议(DHCP)
DHCP工作过程示例
网络地址转换(NAT)
NAT 穿透问题
互联网控制报文协议(ICMP)
ICMP 报文
例外情况
ICMP报文的格式
ICMP差错报告报文数据封装
ICMP的应用举例:Traceroute
IPv6
动机
IPv6数据报格式
其他改变 VS IPv4
IPv6地址表示形式
同一个IP中,一个IP地址只可以使用一次双冒号。
IPv6基本地址类型
IPv4 向 IPv6 过渡
隧道(tunneling)
例题
路由算法
路由转发
网络抽象:图
图抽象:费用(costs)
路由算法分类
链路状态路由算法
网络抽象:图
链路状态路由算法
Dijkstra 算法
Dijkstra 算法:例1
Dijkstra 算法:例2
Dijkstra 算法:讨论
震荡,有的地方也把它叫做摆动。
距离向量路由算法
距离向量(Distance Vector)路由算法
Bellman-Ford 举例
距离向量路由算法
距离向量路由算法 :举例
距离向量DV:链路费用变化
距离向量DV:无穷计数问题
层次路由
互联的AS
自治系统间(Inter-AS)路由任务
例:路由器1d的转发表设置
例:在多AS间选择
RIP协议
AS内部路由
RIP
RIP协议:链路失效、恢复
RIP路由表的处理
OSPF协议
Open Shortest Path First(开放最短路径优先)
OSPF优点(RIP不具备)
分层的OSPF
BGP协议
Internet AS 间路由协议:BGP
BGP基础
BGP基础:分发路径信息
路径属性与BGP路由(route)
BGP路由选择
BGP路由选择策略
为什么采用不同的AS内与AS间路由协议?
数据链路层
概述
(上图中,红色的都可以说是链路。)
链路层服务
链路层的具体实现
网卡间通信
差错编码
差错检测:差错编码
差错编码的检错能力
奇偶校验码
Internet 校验和(checksum)
循环冗余校验码(CRC)
CRC 举例
多路访问控制协议(MAC)
理想MAC协议
MAC协议分类
信道划分MAC协议:TDMA
信道划分MAC协议:FDMA
随机访问MAC协议
时隙ALOHA协议
ALOHA协议
CSMA协议
CSMA/CD 协议
例题
CSMA/CD 效率
轮转访问MAC协议
小结
ARP协议
MAC地址
IP地址是网络层的地址,MAC地址是数据链路层的。
ARP : 地址解析协议
ARP协议:同一局域网中
寻址:从一个LAN路由到至另一个LAN
以太网
以太网 (Ethernet)
以太网:物理拓扑
以太网:不可靠、无连接服务
以太网CSMA/CD 算法
NIC:network interface card
(第五步有说课本是n = Min(m,10),该截图老师的课件写的是取最大值,后面回顾课本及查找其他资料再看看。)
以太网帧结构
802.3 以太网标准:链路与物理层
交换机
以太网交换机(switch)
交换机:多端口间同时传输
交换机转发表:交换表
交换机:自学习
交换机:帧过滤/转发
自学习与转发过程(举例)
1、交换表是空的,开始A不知道A’的地址,使用泛洪的方式给所有的主机发送数据;
2、BB’CC’不是目的地址,不会接收,A’回复A;
3、回复,所以知道A的MAC地址,选择性转发;
4、交换机并且自学习到了AA’的MAC地址接口。
交换机互联
多交换机自学习(举例)
组织机构(Institutional)网络
交换机 VS 路由器
网络设备对比
集线器是物理层设备。
虚拟局域网(VLAN)
VLANs:动机
VLANs
基于端口的VLAN
跨越多交换机的VLAN
802.1Q VLAN 帧格式
PPP协议
面向点对点的协议。
点对点数据链路控制
PPP设计需求[RFC 1557]
PPP 无需支持的功能
PPP数据帧
字节填充(Byte Stuffing)
PPP数据控制协议
无线局域网
IEEE 802.11 无线局域网
IEEE 802.11 体系结构
802.11 信道与AP关联
802.11 AP关联:被动扫描与主动扫描
802.11 多路访问控制
IEEE 802.11 MAC协议:CSMA/CA
冲突避免(CA):RTS-CTS交换
IEEE 802.11 MAC帧
IEEE 802.11 数据帧地址
网络安全
我国互联网基本状况
互联网网络安全一组数据(2014年)
网络安全?
什么是网络安全?
网络安全基本属性
网络安全的基本特征
网络安全
网络安全拟人模型
拟人场景:Alice、Bob、Trudy
网络中的Bob、Alice?
网络中的Trudy?
网络安全威胁
“坏蛋”们可能做什么?
Internet 安全威胁
映射(扫描)
嗅探
IP欺骗
拒绝服务DOS
SYN cookie
密码学基础(加密技术)
密码学(cryptography)术语
对称密钥加密
公开密钥加密
破解加密方法
传统加密方法
现代加密技术
流密码
流密码工作流程
分组密码
Feistel分组密码结构
数据加密标准:DES
DES 算法结构
初始置换IP(Initial Permutation)
一轮DES加密过程
DES:f 函数结构
f 函数的基本操作
逆初始置换(Inverse Initial Permutation)
每轮子密钥的生成
DES 的安全性
DES的改进
高级加密标准AES
Rijindael加密算法
公钥密码学
公钥加密算法
前提条件:模运算
RSA:预备知识
RSA:生成公钥/私钥对
RSA:加密、解密
RSA举例
RSA 的理论依据?
RSA:另一个重要性质
RSA为什么安全?
RSA的实际应用
身份认证
身份认证(Authentication)
4.0也有缺陷:Alice和Bob之间在之前必须先达成加密的密钥。
ap5.0安全漏洞
报文完整性
报文完整性?
密码散列函数
Internet校验和是优秀的密码散列函数吗?
散列函数算法
报文摘要(Message digests)
报文认证
还是存在缺陷,解决它的方法,使用数字签名。
数字签名
签名报文摘要
密钥分发中心
回顾身份认证协议ap4.0
对称密钥问题?
密钥分发中心(KDC)
认证中心(CA)
回顾身份认证协议ap5.0
比萨恶作剧
公钥问题?
认证中心
公钥证书主要内容
安全电子邮件基本原理
电子邮件安全威胁
电子邮件安全需求
安全电子邮件基本原理
安全电子邮件标准
PEM 标准
PGP 标准
PGP 功能框架
PGP 报文的格式
PGP 密钥
S/MIME 标准
安全套接字(SSL)
Web安全威胁
基于应用层实现Web安全
基于传输层实现Web安全
基于网络层实现Web安全
SSL:Secure Sockets Layer (安全套接字层)
SSL 和 TCP/IP
可以想PGP那样实现某些安全功能
简化的(Toy)SSL:一个简单的安全信道
简化的SSL:一个简单的握手过程
简化的SSL: 密钥派生
简化的SSL:数据记录
简化的SSL:序列号
简化的SSL:控制信息
简化的SSL:总结
简化的SSL不完整
SSL协议栈
SSL 密码组(cipher suite)
SSL 更改密码规格协议
SSL 警告协议
SSL 握手协议
SSL 记录协议
SSL 握手过程
SSL 握手协议
SSL 握手协议工作过程
SSL 记录协议
SSL 记录格式
实际的SSL连接
密钥派生
虚拟专用网(VPN)
专用网(PN)
虚拟专用网
典型VPN应用
VPN的功能
VPN关键技术
隧道技术
隧道协议
典型VPN实现技术
IP安全(IPsec)
IPsec体系结构
IPsec服务
IPsec的传输(transport)模式
IPsec的隧道(tunneling)模式
两个IPsec协议
IPsec模式与协议的4种组合
安全关联(SA)
SA举例
安全关联数据库(SAD)
安全策略数据库(SPD)
IPsec数据报
IPsec的传输模式
IPsec的隧道模式
数据报处理过程
R1:将原IP数据报转换为IPsec数据报
R2:解封IPsec数据报
在enchilada内部
IPsec序列号
SA的建立和密钥管理
Internet密钥交换(IKE)
IKE 和IPsec
IKE:PSK与PKI
IKE的阶段
IPsec总结
无线局域网的安全
WEP的设计目标
回顾:对称流密码
流密码与分组独立性
WEP加密
WEP 解密概述
利用一次性随机数进行端点认证
WEP的身份认证
破解802.11 WEP加密
802.11i:改进的安全
802.11i:运行的4个阶段
EAP :扩展认证协议
防火墙
为什么需要防火墙?
无状态分组过滤
无状态分组过滤:举例
(更多例子)
访问控制列表
有状态分组过滤