- 计算机网络和因特网
- 计算机网络
- Internet
- 网络边缘
- 网络核心部分
- Internet 主干/ISP 的结构组成
- 分组交换网络中的延迟、丢失和吞吐量
- 协议层及其服务模型
- 攻击威胁下的网络
- 应用层
- 应用层协议原理
- Web 应用和 HTTP 协议
- FTP
- SMTP、POP3、IMAP
- DNS
- P2P
- CDN
- 传输层
- 传输层服务
- 多路复用和多路分解
- 无连接传输:UDP
- RDT
- GBN
- SR
- TCP
- 网络层
- 引言
- 虚电路和数据报网络
- 路由器的结构
- IP 协议
- IP 数据报格式(IPV4)
- IP 数据报分片和重组
- IP 分类(主机号全 0 网络号,全 1 广播地址)
- 传统分类
- 无分类编址 CIDR 和地址聚合
- DHCP
- NAT
- ICMP
- IPV6
- 路由和选路算法
- 层次选路
- SDN
- 链路层
- 链路层概述
- 差错检测和纠错
- 多路访问链路和协议
- 交换局域网
- 以太网技术
- 大题
- 应用层
- 求时间
- DNS
- 传输层
- 记忆
计算机网络和因特网
计算机网络
- 定义:两台以上具有独立操作系统的计算机通过某些介质连接成的相互共享软硬件资源的集合体。
- 功能
- 连通性
- 共享
Internet
- 具体构成
- 数以亿计的计算互连设备
- 通信链路
- 分组交换机
- 分组交换技术
- 因特网服务提供商
- 提供服务
- 提供网络应用基础架构
- 为分布式应用程序提供的通信服务接口
- 无连接服务
- 面向连接服务
- 协议
- 语法: 报文格式
- 语义: 每个字段的含义
- 同步: 报文传输的先后次序
- 标准

网络边缘
- 网络结构
- 网络边缘
- 主机
- 客户机和服务器(一般位于数据中心内)
- 接入网络,物理介质:
- 有线通信链路
- 无线通信链路
- 网络核心
- 互联的路由器
- 网络组成的网络
- 端系统、客户和服务器
- 端系统 (主机):
- 运行网络应用程序
- 处在网络的边缘
- 传统主机/网络计算机和瘦客户
- 客户/服务器 C/S 模型
- 客户请求,并接收服务器提供的服务
- 端对端模型 peer-peer model
- 极少或不采用专门服务器 • e.g. Gnutella, KaZaA
- 接入网络
- 接入网 (network access)
- 将端系统连接到其边缘路由器的物理链路。是用户连接到网络的基础设施。
- 边缘路由器(edge router)
- 端系统到任何其他远程端系统的路径上的第一台路由器。
- 家庭接入网络:
- 点对点接入
- cable modems(线缆调制解调器)
- FTTH(Fiber To The Home)-光纤到户
- 企业接入网络
- local area networks (LAN)
- WiFi 无线接入网络
- 广域无线接入网络(流量)
- 物理媒体
- 将网络中不同节点(主机和路由器)互相连接起来的物理线路。是进行数据传输的物理通路,通过传播电磁波或光脉冲来发送比特流。 也称为传输媒体、传输介质或传输媒介。
- 双绞线
- 同轴电缆
- 光纤
- 无线电
- 卫星无线电
- 面向连接的服务
- 可靠、顺序、字节流传输:
- 丢失: 确认和重传
- 流量控制:发送者不至于淹没接收者
- 拥塞控制:当网络拥塞时发送者降低发送速率
- 无连接服务
- 不可靠数据传输
- 无流量控制
- 无拥塞控制
网络核心部分
- 电路交换
- 通信双方必须先建立一个专用的连接(电路),一直维持,直到通信结束。
- 频分多路复用 FDM(frequency-division multiplexing) 链路的频谱由跨越链路创建的连接所共享。
- 按频率划分若干频段,每个频段专用于一个连接。
- 带宽 bandwidth:频段的宽度,如 8kHz。
- 效率较低: 静默期(无数据传输)专用电路空闲,网络资源被浪费
- 创建端到端电路及预留端到端带宽的过程复杂
- 时分多路复用 TDM (time-division multiplexing) 时间划分为固定区间的帧,每帧再划分为固定数量的时隙,每一个时隙专用 于一个连接,用于传输数据。
- 分组交换
- 源主机将报文划分为一些列较小的数据块,封装成分组(packet);并将每个分组通过若干链路和分组交换机,传送到目的主机;
- 目的主机拆分分组,提出数据快,并按顺序重新组装成报文。
- 传输过程中采用存储转发传输机制
- 转发分组前,要求收到完整分组
- 排队时延和分组丢失
- 输出缓存 (输出队列):用于保存准备发往某个链路的分组。每条相连的链路都对应有一个。
- 排队时延:分组在输出缓存中等待转发的时间。某条链路上要转发的分组多,需在其输出缓存中等待。排队时延是变化的,与网络中的拥塞有关。
- 分组丢失: 当缓存空间已满时,有分组要被丢弃。
- 转发表和路由选择协议
- 资源竞争
- 资源需求总量可以大于可获得资源的总量
- 拥塞
- 采用分组队列, 等待使用链路
- 存储转发
- 在 1 个链路上传输
- 每经过 1 个节点转发一次
- 转发分组前,要求收到完整分组
- 优点:简单, 不需要建立连接
- 缺点:过渡竞争导致分组延迟与丢失 • 需要可靠数据传输、拥塞控制协议
- 问题: 如何提供电路级的性能? 对于音视频的网络应用需要带宽保障 仍然是 1 个没有解决的问题 (教材 chapter 9)
- 分类:
- 数据报网络
- 虚电路网络(一定是面向连接的)
Internet 主干/ISP 的结构组成
- 一层” ISPs =National Backbone Provider (NBPs) 国家/国际级 ISP(e.g., 电信、联通、AT&T, Verizon,MCI, NTT, Sprint)。
- 第二层 ISP(区域级 ISP) : 较小的(通常是区域级的) ISPs,连接到 1 个或多个 tier-1 ISPs,也可能连接其他 tier-2 ISPs
- Tier-3 ISP(本地 ISP 或接入 ISP)
分组交换网络中的延迟、丢失和吞吐量
- 分组延迟
- 处理时延
- 检查比特级的差错
- 检查分组头部,选择输出链路
- 高速路由器处理延迟-微妙级
- 排队时延
- 等待被发送到输出链路上的时间
- 取决于路由器的拥塞程度
- 排队时延可以是毫秒到微妙级

- 传输时延
- R=链路带宽 (bps)
- L=分组长度 (bits)
- 发送分组比特流的时间 = L/R
- 传播时延
- d = 物理链路的长度
- s = 介质的信号传播速度 (~2x108 m/sec)
- 传播延迟 = d/s
- 端到端时延
- the time taken for a packet to be transmitted across a network from source to destination
- 吞吐量
- 接收端接收到数据的比特速率 (bps)
- 瞬时吞吐量: 某一瞬间的吞吐量
- 平均吞吐量: 一段时间内的吞吐量均值
- 例题

协议层及其服务模型
- ISO/OSI 七层参考模型

- 开放系统互连 (OSI)参考模型是由国际标准化组织 (ISO) 于 1984 年提出的分层网络体系结构模型
- 目的是支持异构网络系统的互联互通
- 异构网络系统互连的国际标准
- 理解网络通信的最佳学习工具(理论模型)
- 理论成功,市场失败
- TCP/IP 参考模型

这里的应用层 = 应用层 + 表示层 + 会话层
- 网际协议栈
- 应用层 application: 支持网络应用,报文传送 FTP, SMTP, STTP
- 传输层 transport: 主机进程间数据段传送 TCP, UDP
- 网络层 network: 主机(源目标节点)间分组传送
- 链路层 link: 相邻网络节点间的数据帧传送 PPP, Ethernet …
- 物理层 physical: 物理介质上的比特传送

攻击威胁下的网络
- 分类被动攻击和主动攻击
- 攻击范式
- 植入恶意软件
- 病毒
- 蠕虫
- 僵尸网络:通过各种手段在大量计算机中植入特定的恶意程序,使控制者能够通过相对集中的若干计算机直接向大量计算机发送指令的攻击网络。攻击者通常利用这样大规模的僵尸网络实施各种其他攻击活动。
- 攻击服务器和网络基础设施
- 拒绝服务攻击(DoS)
- 三种类型
- 弱点攻击
- 带宽洪泛
- 连接洪泛
- 嗅探分组
- 记录每个流经的分组拷贝的被动接收机
- 伪装
- 生成具有任意源地址、分组内容和目的地址的分组,然后将这 个人工制作的分组传输到因特网中
- 将具有虚假源地址的分组注入因特网的能力称为 IP 哄骗
- 解决方法采用端点鉴别机制(第 8 章)
- 修改或删除报文
- 中间人攻击(man-in-middle attack)
应用层
应用层协议原理
- 网络应用
- 研发网络应用
- 网络应用程序体系结构
- 客户机/服务器体系结构
- P2P 体系结构
- 客户机/服务器和 P2P 混合体系结构
- 进程通信
- 进程与计算机网络的接口-套接字
- 进程寻址
- 应用层协议
- 应用的要求
Web 应用和 HTTP 协议
- Web
- URL:协议 + 主机名 + 路径名
- HTTP
- 无状态:服务器不维护客户先前的状态信息
- 非持久
- 每个 TCP 连接上只传送一个 对象,下载多个对象需要建立多个 TCP 连接
- HTTP/1.0 使用非持久 HTTP 连接
- 持久
- 一个 TCP 连接上可以传送多个对象
- HTTP/1.1 默认使用持久 HTTP 连接
- 相应时间模型
- 往返时间 RTT = 1 个小分组从客户主机到服务器再到客户主机所花费的时间.
- 响应时间:
- 1 个 RTT 用于建立 TCP 连接
- 1 个 RTT 用于 HTTP 请求/响应消息的交互
- Html 文件传输时间
- 非持久
- 每个对象需要 2 个 RTT
- OS 必须为每个 TCP 连接分配主机资源
- 大量客户的并发 TCP 连接形成服务器的严重负担
- 不带流水线的持久 HTTP 连接
- 客户先前响应消息收到,才发出新的请求消息 每个引用对象经历 1 个 RTT
- 带流水线的持久 HTTP 连接
- 客户遇到 1 个引用对象就发送请求消息
- 所有引用对象只经历 1 个 RTT
- HTTP 报文格式
- URI=Uniform Resource Identifiers
- Cookie
- Web 缓存
FTP
SMTP、POP3、IMAP
- 电子邮件
- 用户代理
- 允许用户阅读,回复,转发,保存,编辑邮件消息
- 发送, 接收邮件消息到/从服务器
- 例如:Outlook, foxmail,Web 客户端等
- 邮件服务器
- 邮箱 mailbox 存放用户接收的邮件消息
- 外出报文队列 outgoing message queue
- 简单邮件传送协议
- Alice 使用用户代理编写邮件消息(给 bob@someschool.edu 的)
- Alice 的用户代理发送邮件消息 到她的邮件服务器;邮件消息存放 在邮件消息队列
- Alice 邮件服务器的 SMTP 客户端发起建立一个到 Bob 的邮件服务器的 SMTP 服务器端的 TCP 连接,经过应用层握手
- SMTP 客户在这个 TCP 连接上发送 Alice 的邮件消息
- Bob 服务器存放邮件消息存到 Bob 的邮箱
- Bob 调用他的用户代理读邮件消息
- 邮件访问协议
- POP3:Post Office Protocol 邮局协议 [RFC 1939] 110 端口号
- 无状态
- POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC 机或 MAC。一旦邮件发送到 PC 机或 MAC 上,邮件服务器上的邮件将会被删除。但 POP3 邮件服务器可以“只下载邮件,服务器端并不删除”,也就是改进的 POP3 协议。
- IMAP:Internet Message Access Protocol [RFC 3501] 143 端口
- 所有邮件消息保存在一个位置: 服务器
- 允许用户利用文件夹组织管理邮件消息
- IMAP 支持跨会话(Session)的用户状态
- 文件夹的名字
- 邮件消息 IDs 和文件夹的映射
- 可以本地和服务器同步
DNS
- 功能
- 主机名到 IP 地址的转换
- 主机别名
- 一个主机可以有一个规范主机名和多个主机别名
- 邮件服务器别名
- 负载分配
- DNS 实现冗余服务器:一个 IP 地址集合可以对应于同一个规范主机名。
- 特点
- 分布式数据库:一个由分层 DNS 服务器实现的分布式数据库
- 应用层协议:DNS 服务器实现域名转换 (域名/地址转换)
- 查询
- 递归查询

- 迭代查询

- DNS 缓存和权威 DNS 记录更新
- 一旦名字服务器获得 DNS 映射, 它将缓存该映射到局部内存
- 服务器在一定时间后将丢弃缓存的信息
- 本地 DNS 服务器可以缓存 TLD 服务器的 IP 地址,因此根 DNS 服务器不会被经常访问
- DNS 记录
- 存储资源记录(RR,Resource Records):(name, value, type,ttl)
- type=A(Address)
- name = 主机名
- value = IP 地址
- type=CNAME(canonical)
- name = 主机别名
- value = 真实的规范主机名
- type=NS (name server)
- name = 域名(如 foo.com)
- value = 该域权威名字服务器的主机名
- Type=MX(mail exchange)
- name =邮件服务器的主机别名
- value =邮件服务器的真实规范主机名
P2P
CDN
- 将多份拷贝存储在地理上分散的不同站点来提供服务
- 深入 : 将 CDN 服务器部署在众多的接入网络中
- 邀请做客:在少量(例如 10 个)靠近接入网的关键位置(例如 IXP),建造大集群,邀请到 ISP 做客
传输层
传输层服务
- 在两个不同的主机上运行的应用程序之间提供逻辑通信机制
- 传输层协议运行在端系统
- 发送方: 将应用程序报文分成报文段传递给网络层
- 接受方: 将报文段重新组装成报文传递到应用层
- 传输层可以为应用提供多种协议
- 因特网:
- TCP
- 可靠按序递交 (TCP) 拥塞控制 流量控制 连接建立
- UDP
- 不可靠的无序传递: UDP “尽力传递” IP 的直接扩展
- 两种服务均不保证: 延迟 带宽
多路复用和多路分解
- 接收主机多路分解
- 发送主机多路复用
- 主机收到 IP 数据报 每个数据报有源 IP 地址,目的 IP 地址
- 每个数据报搬运一个报文段
- 每个报文段有源和目的端口号 (回忆: 对于特定应用程序具有周知端口号)
- 主机用 IP 地址和端口号指明报文段属于哪个合适的套接字
- 面向连接的多路分解
- TCP 套接字由 4 部分指定:
- 源 IP 地址
- 源端口号
- 目的 IP 地址
- 目的端口号
- 接收主机使用所有四个值将报文定位到合适的套接字,服务器主机支持很多同时的 TCP 套接字 。三个被送至 IP address: B, dest port: 80 的报文,被多路分解到三个不同的套接字
无连接传输:UDP
- 面向报文
- 特点
- 应用:
- UDP 报文段结构
- 2bytes 源端口、2bytes 目的端口、2bytes 长度(首部 + 数据字节数)、2bytes 校验和
- 伪首部:4bytes 源 IP,4bytes 目的 IP、1byte 全 0、1byte 17,2bytes 长度
RDT
- 考虑几种特殊情况:Receiver 返回 ACK LOSS,Receiver 收到非正常序号 ACK
- Premature ACK :S 发的包的 ACK 回来晚了发新包,但是会收到重发的老包的 ACK。同样 R 也会收到 duplicate ACK
GBN
SR
- 发送方
- 从上层收到数据 :
- 如果下一个可用的序号在发送方窗口内,则将数据打包并发送,启动定时器
- 超时(n):
- 重发分组 n, 重启定时器
- 收到 ACK(n)在[sendbase,sendbase+N-1]内:
- 标记分组 n 被接收
- 如果 n 是最小的未确认分组,则增加窗口基序号到下一个未被确认的序号
- 接收方
- 分组 n 的序号在[rcvbase, rcvbase+N-1]内
- 发送 ACK(n)
- 失序分组: 缓冲
- 有序分组: 交付上层 (包括已经缓冲的有序分组), 提高窗口到下一个没有接收的分组
- 分组 n 在[rcvbase-N,rcvbase-1]内
- 发送 ACK(n)
- 其他:
- 忽略
TCP
- TCP 报文段结构
- 2 bytes 源端口、2 bytes 目的端口
- 4 bytes 序号: 本报文段所发送的数据的第一个字节的序号
- 4 bytes 确认号:期望收到对方的下一个 报文段的数据的第一个字节的序号。
- 4 bits 数据偏移,即首部长度
- 6 bits 保留
- CWE ECE URG ACK PSH RST SYN FIN
- 2 bytes checksum 伪首部:4bytes 源 IP,4bytes 目的 IP、1byte 全 0、1byte 6,2bytes 长度
- 16 bytes 紧急数据长度、
- 可变长度 选项
- 可变长度 填充字段 整个首部长度为 4 字节的倍数
- 时延
- 指数加权移动平均
- EstimatedRTT = (1- 0.125)EstimatedRTT + 0.125SampleRTT
- DevRTT = (1-0.25)DevRTT +0.25 | SampleRTT - EstimatedRTT |
- TimeoutInterval = EstimatedRTT + 4*DevRTT
- 序号和确认
- A:Seq=a+1 Ack=b+1 Len(有效数据)=12
- B:Seq=b+1 Ack=a+1+12 Len=0
- A:Seq=a+1+12 Ack=b+1 Len=24
- B:Seq=b+1 Ack = a+1+12+24
- 握手挥手
- 握手
- SYN = 1 Seq = X
- SYN = 1 Seq = Y ACK = 1 ACK num = x + 1
- Seq = X + 1 ACK = 1 ACK num = y + 1
- 客户发送 TCP SYN 报文段到服务器 -指定初始的序号 -没有数据
- 服务器接收 SYN, 回复 SYN/ACK 报文段 -服务器分配缓冲区 -指定服务器的初始序号
- 客户接收 SYN/ACK, 回复 ACK 报文段, 可能包含数据
- 挥手
- 客户发送 TCP FIN 控制报文段到服务器
- 服务器接收 FIN, 回复 ACK. 进入半关闭连接状态;(可能还有数据要发)
- 服务器发送 FIN 到客户,客户接收 FIN, 回复 ACK, 进入 “time wait”状态 等待结束时释放连接资源
- 服务器接收 ACK. 连接关闭.
- 拥塞控制
- AIMD(增性加、乘性减)
- 慢启动
- 故以指数方式增加速率,直到产生丢失事件,或者 达到某个阈值 ssthresh
- TCP Reno
- 当超时事件发生以后:
- ssthresh= CongWin/2
- CongWin 立即设置为 1 个 MSS;
- 窗口开始指数增长(进入慢启动)
- 收到三个重复的确认时:
- ssthresh= CongWin/2
- CongWin 减半 +3
- 进入线性增长(快速恢复)
- TCP Tahoe
- 按照超时处理
网络层
引言
- 功能
- **转发(forwarding): 将分组从路由器的输入端口转移到正确的路由器输出端口 **
- **路由(routing): 确定分组从发送方传输到接收方(目的主机)所经过的路径(或路由) **
- 从发送方主机传输报文段到接收方主机
- 发送方主机封装报文段(segments)为数 据报(datagrams)
- 接收方主机递交报文段给传输层
- 在每个主机、路由器上都需要运行网络层协议
- 路由器会检查通过它的所有 IP 数据报的头部字段,然后根据目的 IP 地址对数据报进行转发
- 平面
- 数据平面
- 本地的,每个路由器自身的功能
- 决定抵达路由器输入端口的数据包如何转发到输出端口
- 传统的路由算法: 在路由器内实现
- 软件定义网络(software-defined networking, SDN): 在远程服务器上实现
- 控制平面
- 整个网络范围
- 决定数据报在端到端路径上的路由器之间如何路由
虚电路和数据报网络
- 数据报 网络提供网络层的无连接服务
- 虚电路 网络提供网络层的连接服务
- 传输层:面向连接服务在网络边缘的端系统中实现。
- 网络层:面向连接服务在端系统及网络核心的路由器中实现。
- 最长前缀匹配
- 网络层服务模型简单。 端系统功能复杂:高层实现许多功能,如按序传送、可靠数据传输、拥塞 控制与 DNS 名字解析等; 带来的结果 • 因特网服务模型提供的服务保证最少(可能没有!),对网络层的需求 最小,使得互连使用各种不同链路层技术的网络变得更加容易。 许多应用都在位于网络边缘的主机(服务器)上实现。
路由器的结构
- 核心功能
- 运行路由算法/协议
- 将分组从路由器的输入链路传送到正确的输出链路
- 体系结构
- 输入端口
- 线路端接模块:将一条物理链路端接到路由器的物理层;
- 数据链路处理模块:实现路由器的数据链路层功能;
- 查找与转发模块:实现查找与转发功能,以便分组通过路由器交换结构 转发到适当的输出端口;
- 选路处理器计算转发表,给每个输入端口存放一份转发表拷贝。
- 在每个输入端口本地做出交换决策,无须激活中央选路处理器。
- 可避免在路由器中某个单点产生转发处理瓶颈。
- 目的:以线速完成输入端口的处理
- 排队:如果数据报到达输入端口的速度快于输入端口将数据报转发到交 换结构的速度,就会发生排队
- 交换结构
- 内存
- 总线
- 纵横式
- 选路处理器
- 输出端口 取出存放在输出端口内存中的分组,并将其传输到输出链路上
IP 协议
IP 数据报格式(IPV4)
- 4 bits 版本号
- 4 bits 首部长度
- 8 bits 区分服务
- 2 bytes 数据报长度,首部 + 数据 最大 IP 分组的总长度:65535B
- 2 bytes 标识,新增加一
- 3 bits 标识 DF 位,1 表示不允许分片,0 表示运行分片;MF 位,1 表示后面有分片,0 表示这是最后一个分片;保留位,必须为 0
- 13 bits 偏移 指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位,片偏移以 8 个字节为单位
- 8 bits TTL,以跳数为单位
- 8 bits,上层协议
- 16 bits 首部校验和
- 32 bits 源 IP,目的 IP
IP 数据报分片和重组
- 以太网 MTU1500B
- 4000B 分为 1500+1500+1040,OFFSET 为 0、185、370;fragflag 为 1、1、0
IP 分类(主机号全 0 网络号,全 1 广播地址)
- A 组
- 利用 IP 地址的第一个字节作为网络地址,最高位为 0,其余的三个字节作为主机地址。
- 1.0.0.1-127.255.255.254
- B
- 利用 IP 地址的前两个字节作为网络地址,最高位为 10,其余的两个字节作为主机地址
- 128.0.0.1-191.255.255.254
- C
- 利用 IP 地址的前三个字节作为网络地址,最高位为 110,最后一个字节作为主机地址
- 192.0.0.1-223.255.255.254
- D
- 224.0.0.0~239.255.255.255
- 多播地址
- E
- 240.0.0.0~255.255.255.255
- 用于某些实验和将来使用
- 特殊
- 本地回环 127.0.0.1-127.255.255.254
- 私有
传统分类
无分类编址 CIDR 和地址聚合
- 地址聚合找前缀:
DHCP
- DHCP 服务器被动打开 UDP 端口 67, 等待客户端发来的报文。
- DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文(DHCPOFFER)。
- 凡收到 DHCP 发现报文的 DHCP 服务器 都发出 DHCP 提供报文,因此 DHCP 客户可能收到多个 DHCP 提供报文(DHCPOFFER)。
- DHCP 客户从几个 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文(DHCPREQUEST)。
- 被选择的 DHCP 服务器发送确认报文 DHCPACK,客户进入已绑定状态,并可开始使用得到的临时 IP 地址了。
- 租用期过了一半(T1 时间到),DHCP 发送请求报文 DHCPREQUEST 要求更新租用期。
- DHCP 服务器若不同意,则发回否认报文 DHCPNACK。这时 DHCP 客户必须立即停止使用原来的 IP 地址,而必须重新申请 IP 地址(回到步骤 2)
NAT
- 替换:利用(NAT IP 地址,新端口号)替换每个外出 IP 数据报的(源 IP 地址,源端口号)
- 记录 :将每对(NAT IP 地址, 新端口号) 与(源 IP 地址, 源端口号)的替换信息存储到 NAT 转换表
- 替换 :根据 NAT 转换表,利用(源 IP 地址, 源端口号)替换每个进入内网 IP 数据报的(目的 IP 地址,目的端口号),即(NAT IP 地址, 新端口号)
ICMP
- Traceroute
-
- 源端发送一系列的 UDP 分组给目的端
- 第一个分组 TTL =1
- 第二个 TTL=2, 等等
- 当第 n 个分组到达第 n 个路由器时
- 路由器丢弃该分组
- 并给源端发送一个 ICMP 报文 (type 11, code 0)
- 这个报文包含了路由器的名称和 IP 地址
IPV6
路由和选路算法
- 路由算法确定了通过网络的端到端路径
- 转发表确定了在路由器上的本地转发
- 根据给定的网络抽象图,找出从源节点到目的节点间的最低费用路径
- 分类
- 全局路由
- 链路状态路由算法 LS


- 分布式路由算法
- 距离向量路由算法 DV
- 静态路由算法
- 最短路径路由选择 B.扩散法 D.基于流量的路由选择
- 动态路由算法
层次选路
- 层次选路概述
- 一个区域内的路由器组成集合 “自治系统” (AS,autonomous system )
- 同一个自治系统的路由器运行相同的 路由协议——区域内路由协议
- 不同自治系统内的路由器可以运行不同的区域内路由协议
- 和其他自治系统内的路由器直接相连的路由器
- 运行域间路由协议,与其他网关路由器交互
- 同自治系统内的所有其他路由器一样也运行域内路由协议
- 域内路由选择
- RIP: 路由信息协议(Routing Information Protocol)
- 距离衡量: 跳数 (max = 15 hops,16 hops=∞),每段链路 1 个跳步
- 每隔 30 秒, 邻居间交换一次距离向量 (也被称为 RIP 通告, advertisement)
- 每个通告:最多 25 个 AS 内的目的子网(IP 地址形式)
- OSPF: 开放式最短路径优先 (Open Shortest Path First)
- 用链路状态算法
- 分发 LS 分组(通告)
- 每个路由器构造完整的网络(AS)拓扑图
- 路由器本地运行 Dijkstra 算法
- 每个 router 都广播 OSPF 通告,OSPF 通告里为每个邻居路由器设一个表项(记录每个邻居的链路特征和费用)。
- 通告会散布到整个自治系统 (通过洪泛法)
- OSPF 报文直接封装到 IP 数据报中 (不是 TCP 或 UDP)
- 优点
- 安全: 所有 OSPF 消息需要认证 (防止恶意入侵)
- 允许多个相同开销的路径 (在 RIP 中只有一条路径)
- 对于每个链路, 有多个消费尺度用于不同的服务类型 TOS (例如在尽力转发时卫星链路代价设置为 “低” ,而对实时应用设置为高)
- 单播和多播综合支持:
- 多播 OSPF (MOSPF) 使用和 OSPF 同样的链路数据库
- lOSPF 支持对大规模 AS 分层
- IGRP: 内部网关路由协议 (Interior Gateway Routing Protocol,Cisco 私有)
- 域间选路
- Internet 域间选路: BGP
- eBGP:从相邻 AS 获取子网可达信息
- iBGP:向该 AS 内部的所有路由器传播这些子网的可达信息
SDN
- 基于流的转发:基于首部字段值进行转发
- 数据平面与控制平面分离:数据平面网络交换机组成,控制平面由服务器和管理流表软件构成。
- 网络控制功能:位于数据平面交换机外部,包括 SDN 控制器和若干网络控制程序。
- 可编程的网络:调用 API 定义和控制网络设备的数据平面。
链路层
链路层概述
- 术语
- 主机和路由器: 节点(nodes)
- 连接相邻节点的通信信道:链路(links)
- 有线链路(wired links)
- 无线链路(wireless links)
- 局域网(LANs)
- 第二层的分组: 数据帧(frame), 它是封装了的数据报
- 服务
- 组帧 (framing):
- 封装数据报为数据帧,增加头部(e.g.,地址信息),尾部信息(e.g.,差错编码信息) •
- 帧同步(e.g.,帧定界符)
- 链路接入( link access)
- 如果是共享链路,需要解决信道接入(channel access)
- 在数据帧头部中,用 MAC 地址来标识源和目的
- 不同于 IP 地址
- 在相邻节点之间可靠传输数据帧(某些链路可能未实现)
- 在比特错误率很低的链路(光纤、双绞线)很少使用
- 无线链路:高比特错误率,需要可靠交付
- 流量控制(flow control): 用于控制发送节点向直接相连的接收节点发送数据帧的频率
- 差错检查(error detection)
- 差错可能由信号衰减、噪声引入
- 接收方检测是否出现错误
- 通知发送方重传或丢弃数据帧
- 错误纠正(error correction)
- 接收方直接纠正比特错误,而不需要请求重传
- 半双工和全双工(half-duplex and full-duplex)
- 在半双工:链路的两个节点交替双向传输,但是不能同时发送
- 全双工:链路两个节点同时双向传输
- 实现位置
- 在主机和网络设备(路由器)上实现
- 链路层的主体部分是在网络适配器 (称为网卡)或者一个芯片组上实现
- 以太网卡、802.11 卡、以太网 芯片组
- 实现链路层和物理层的功能
- 链路主机的系统总线
- 硬件、软件与固件的组成
差错检测和纠错
- 实现
- 发送节点
- 将数据 D 附加若干差错检测和纠错位 EDC, 一起发送到链路。
- 数据 D 包括网络层传来的数据报,以及链路级寻址信息、序列号和其他字段。
- 保护范围包括数据 D 的所有字段。
- 接收节点
- 接收比特序列 D’和 EDC’。
- 如果发生传输比特错误, D’和 EDC’可能与发送的 D 和 EDC 不同。
- 接收方根据 D’和 EDC’,判断 D’是否和初始 的 D 相同(D 的传输是否正确)。
- 技术
- 奇偶校验:最基本的方法。
- 发送方: 在要发送的信息 D(d 位)后面附加一个奇偶校验位
- 使“1”的个数是奇数(奇校验)或偶数(偶校验) 一起传输发送(d+1 位)。
- 接收方: • 检测收到的信息(d+1 位)中“1”的个数。
- 偶校验:发现奇数个“1”,至少有一个比特发生差错(奇数个比特差错)。 •
- 奇校验:发现偶数个“1”,至少有一个比特发生差错。
- 可以查出任意奇数个错误,但不能发现偶数个错误。
- 若比特差错概率很小,差错独立发生,一比特奇偶校验可满足要求。
- 若差错集中一起“突发”(突发差错),一帧中未检测到的差错的概率达到 50%。
- 二维就校验
- 可以检测并纠正单个比特差错(数据或校验位中)。
- 能够检测(但不能纠正)分组中任意两个比特的差错。
- Internet 校验和:常用于运输层。
- 循环冗余检测:常用于链路层
- 可检测出所有奇数位错;
- 可检测出所有双比特的错;
- 可检测出所有小于、等于校验位长度的突发错
多路访问链路和协议
- 点对点链路:链路两端各一个节点。一个发送和一个接收。
- 拨号接入 PPP。
- 以太网交换机与主机间的点对点链路
- 广播链路(共享介质): 多个节点连接到一个共享的广播信道。
- 广播:任何一个节点传输一帧时,信号在信道上广播,其他节点都可以收到一个拷贝。常用于局域网 LAN 中,如早期的以太网和无线局域网。
- 多路访问问题: 如何协调多个发送和接收节点对共享广播信道的访问
- 多路访问协议
- 目的:协调多个节点在共享广播信道上的传输, 避免多个节点同时使用信道,发生冲突(碰撞),产生互相干扰。 冲突是指两个以上的节点同时传输帧,使接收方收不到正确的帧
- 分类
- 信道划分协议
- TDMA 时分多路访问
- FDMA 频分多路访问
- CDMA 码分多路访问
- 随机访问协议
- ALOHA 协议(纯 ALOHA,时隙 ALOHA)
- 载波监听多路访问 CSMA 协议
- 某个节点在发送之前,先监听信道。
- 信道忙:有其他节点正往信道发送帧,该节点随机等待(回退)一段时间, 然后再侦听信道
- 带冲突检测的载波监听多路访问 CSMA/CD
- 基本原理:传送前侦听 • 信道忙:延迟传送 • 信道闲:传送整个帧 •
- 发送同时进行冲突检测:一旦检测到冲突就立即停止传输, 尽快重发。
- 目的:缩短无效传送时间,提高信道的利用率。
- 冲突检测: • 有线局域网易于实现:测量信号强度,比较发射信号与接收信号 • 无线局域网很难实现:接收信号强度淹没在本地发射信号强度下
- 公式
$$数据帧最小长度为L_{min} \space bits,带宽为R \space bps,传播速度为Vm/s。\frac{L_{min}}{R} = \frac{2d_{max}}{V}$$
- 带冲突避免的载波监听多路访问 CSMA/CA
- 轮流协议
交换局域网
- 数据链路层分为
- 逻辑链路控制子层 LLC
- 链路层寻址
- 每个接口有网络层地址和链路层地址。
- 网络层地址: 节点在互连网络中分配的一个唯一地址(IP 地址)。
- 链路层地址:MAC 地址( 6 字节 )。 用于把数据帧从一个节点传送到另一个节点(同一网络中)。
- ARP
- 介质访问控制子层 MAC
以太网技术
- 媒体访问控制(MAC)子层

- 帧结构

- 链路层交换机
- 自学习
- 交换方式
- 三层交换机
- 发送站点 A 在开始发送时,把自己的 IP 地址与 B 站的 IP 地址比较,判断 B 站是否与 自己在同一子网内。
- 若目的站 B 与发送站 A 在同一子网内,则进行二层的转发。
- 若两个站点不在同一子网内,则发送站 A 要向“缺省网关”发出 ARP 请求,请求获得 B 的 MAC 地址。
- 如果三层交换机知道 B 的 MAC 地址,则向 A 回复 B 的 MAC 地址。否则三层交换机根 据路由信息向 B 站广播一个 ARP 请求,B 站得到此 ARP 请求后向三层交换机回复其 MAC 地址,三层交换机将 B 站的 MAC 地址保存到二层交换引擎的 MAC 地址表中, 并回复给发送站 A。
- A 直接用 B 的 MAC 地址封装数据帧,三层交换机接收到数据后直接进行二层交换。
- VLAN
- 利用支持 VLAN 的交换机,可以在一个实际的物理局域网内,定义多个虚拟的局域网
- 基于端口的 VLAN
- 利用交换机内置 的管理软件,将端口分组,使得 一个单独的交换机
- 流量隔离:从 1-8 号端口进/出的帧,只能访 问 1-8 号端口
- 动态成员:端口可以在 VLAN 之间动态调整
- VLAN 间转发:通过路由完成(就像独立的交换机之间)
- 在实际中,厂商会将路由功能和交换功能都整合在一台设备
- 干线端口( trunk port )承载定义在多个物理交换机之上的 VLAN 间的流量
大题
应用层
求时间



The time to transmit an object of size L over a link or rate R is L/R. The average time is the average size of the object divided by R:
= (850,000 bits)/(15,000,000 bits/sec) = .0567 sec
The traffic intensity on the link is given by =(16 requests/sec)(.0567 sec/request) = 0.907. Thus, the average access delay is (.0567 sec)/(1 - .907) = .6 seconds. The total average response time is therefore .6 sec + 3 sec = 3.6 sec.
b) The traffic intensity on the access link is reduced by 60% since the 60% of the requests are satisfied within the institutional network. Thus the average access delay is (.0567 sec)/[1 – (.4)(.907)] = .089 seconds. The response time is approximately zero if the request is satisfied by the cache (which happens with probability .6); the average response time is .089 sec + 3 sec = 3.089 sec for cache misses (which happens 40% of the time). So the average response time is (.6)(0 sec) + (.4)(3.089 sec) = 1.24 seconds. Thus the average response time is reduced from 3.6 sec to 1.24 sec.
DNS
思考:网站主机名是 www.foo.com, 真实的规范主机名是 servereast.backup1.foo.com,IP 地址:112.147.11.30。邮件主机名 mail.foo.com,真实的规范主机名 servereast.backup2.foo.com,IP 地址:112.147.11.40。在权威服务器中需要的 RR?
(www.network.com, servereast.backup1.foo.com, CNAME)
(servereast.backup1.foo.com ,12.147.11.30, A )
(mail.network.com, servereast.backup2.foo.com, MX )
(servereast.backup2.foo.com, 112.147.11.40, A)
例子:刚刚创建一个“网络乌托邦”公司
在域名管理机构(如 Network Solutions)注册域名 networkutopia.com
需要提供你自己的基本权威 DNS 服务器的名字和 IP 地址
该注册登记机构将下列两条资源记录插入注册机构的 DNS 系统中:
(network.com, dns1.network.com, NS)
(dns1.network.com, 212.212.212.1, A)
在权威域名解析服务器中为 www.networkuptopia.com(真实机器名 web1. networkuptopia.com, IP 地址 212.212.212.2)加入 Type A 记录,为 mail.networkutopia.com(真实机器名 mx1.mxmail. networkuptopia.com,IP 地址 212.212.212.3)加入 Type MX 记录
( www.network.com, web1.netword.com,CNAME)
(web1.netword.com,212.212.212.2, A)
( mail.network.com, mx1.mxmail. network.com, MX)
(mx1.mxmail. network.com,212.212.212.3,A)
传输层
1.滑动窗口解决的是发送方和接收方接收数据速率不一致的问题,通过设置滑动窗口(可以通俗的理解为接收方的缓存)可以缓解这一个问题。具体的操作是接收方会向发送方通知自己可以接受数据的大小,而发送方会根据这个数值,发送数据。
2.拥塞窗口用控制全局网络的拥塞情况。通过控制发送方每次发送的流量的多少,用来逐渐试探整体网络的拥塞程度。如果没有拥塞控制,发送方每次发送的数据大小为滑动窗口,在只有 2 台主机的时候确实是没有问题的,但是如果放到现实的网络大环境中来说是行不通的。因为如果每台主机都发送的窗口大小的数据,那么整个网络系统必然会瘫痪。所以通过在发送方设置拥塞窗口,可以有效缓解网络压力。
swnd = min(cwnd, rwnd)
192.0.0.0 到 223.255.255.255
172.16.0.0 到 172.31.255.255
10.0.0.0 到 10.255.255.255
每一域名服务器都至少知道根服务器的 IP 地址及其它结点服务器的 IP 地址
Socket
bind
listen
accept
read
write
close
Socket connect write read close
OSPF IP
RIP UDP
记忆
计算机网络两大功能:连通性,共享
计算机网络组成部分:计算互连设备、通信链路、分组交换设备
提供服务:网络应用基础架构、无连接服务和面向连接服务(套接字)
Internet 标准的几个阶段:因特网草案、建议标准、草案标准、因特网标准
因特网组成部分(网络边缘、接入网、网络核心)
边缘部分:由各主机构成,用户直接进行信息处理和信息共享;低速连入核心网。核心部分:由 各路由器连网,负责为边缘部分提供高速远程分组交换。
- 语法: 报文格式
- 语义: 每个字段的含义
- 同步: 报文传输的先后次序
分层的好处
- 结构清晰,有利于识别复杂系统的部件及其关系
- 模块化使得系统的升级、维护
- 有利于标准化
开放网络体系结构的系统设计原则:
- 最简单化,自治原则 – 网络独立运作,与其他网络互连时无须进行内部改动
- 尽力服务原则– 提供尽最大努力的端到端服务
- 无状态路由器 – 路由器无须维护连接状态信息
- 分散式控制
TCP UDP 服务
- TCP 服务:面向连接、可靠数据传输、流量控制、拥塞控制;无时延和带宽保证
- UDP 服务:不提供建立连接,可靠性,流量控制,拥塞控制,时延和带宽保证
HTTP 请求报文:
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0 //该代理类型的对象版本
Connection: Close //不使用持久连接
Accept-language:zh-cn //中文版本
HTTP 相应消息
HTTP/1.1 200 OK
Connection:close
Date: Sat, 06 Aug 2011 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Thu, 22 Jun 2011 …...
Content-Length: 6821
Content-Type: text/html
data data data data data ...
链路层:封装成帧、透明传输、差错检测
需要注意的是,以长帧长度限制是 1518 字节。减去 18 字节的以太网帧长度,所以 ip 层的报文长度限制为 1500。
- 二维就校验
- 可以检测并纠正单个比特差错(数据或校验位中)。
- 能够检测(但不能纠正)分组中任意两个比特的差错。
- Internet 校验和:常用于运输层。
- 循环冗余检测:常用于链路层
- 可检测出所有奇数位错;
- 可检测出所有双比特的错;
- 可检测出所有小于、等于校验位长度的突发错