因特网五层协议笔记
就是笔记了。主要参考《计算机网络:自顶向下方法》第六版中文版教材,结合计网课程考点总结。
#
概述- 因特网(Internet):又称互联网,指利用TCP/IP通讯协定所创建的世界范围的计算机网络,网络与网络之间所串联成的庞大网络。
- vs 万维网(WWW):后者是基于超文本相互连接而成的全球性网络,是互联网所能提供的服务之一。此外互联网还能提供的服务包括P2P网络、文件共享、IP电话服务等。
- 协议(protocol):一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送/接收一条报文或其他事件所采取的动作。
- 分组(packet):将报文(message)划分成的小的数据块
- 分组交换网中的性能描述:
- 丢包(loss):分组等待队列已满,新分组无法保存
- 时延(delay):节点总时延(total nodal delay) = 结点处理时延(nodal processing delay) + 排队时延(queuing delay) + 传输时延(transmission delay) + 传播时延(propagation delay)
- 传输时延 vs 传播时延:前者是路由器将分组推出所需要的时间(可理解为处理完之后到送上高速公路前这段),后者是一个比特从一台路由器向另一台路由器传播所需要的时间(就是在高速上飞驰到出口这段了)
- 吞吐量(throughput):接收数据的速度
- 分层协议:
- 因特网的分层协议:物理层-链路层-网络层-传输层-应用层
- 七层ISO OSI模型:物理层-链路层-网络层-传输层-会话层-表示层-应用层
- 各层功能:
- 应用层:网络应用程序及其应用层协议存留的地方
- 传输层:在应用程序端点之间传送应用层报文
- 网络层:将数据报从一台主机移动到另一台主机
- 链路层:将链路帧从一个结点(主机或路由器)移动到路径上的下一个结点
- 物理层:将帧中的每个比特从一个结点移动到下一个结点
#
应用层- 数据单位:报文(message)
#
要点- 应用程序体系结构:CS结构/P2P结构
- 进程通信:socket
- 服务分类:可靠数据传输,吞吐量,定时,安全性
- 持续链接和非持续连接
- 使用的运输层协议:TCP vs UDP
- SSL
#
协议和应用#
web 和 HTTP- 带流水线的持续连接
- 关键词:TCP,RTT,80端口,CS结构
- 报文格式
- 关键词:请求行,首部行,实体体
- 常用状态码:200 301 304 400 404 500
- 无状态协议
- cookie
- web缓存
- 代理服务器(web缓存器)
- 条件GET方法:"If-Modified-Since""Last-Modified"首部行
#
DNS:因特网的目录服务- 解决的问题:主机名到IP地址的转换
- 关键字:UDP,53端口,CS结构
- 分布式设计
- 层次:根/顶级域(TLD)/权威/本地DNS服务器
- 递归查询 vs 迭代查询:前者发起查询主体逐步推移,后者同一主题发起查询
- DNS缓存
#
P2P- 文件分发
- 分发时间及下界计算
- C/S结构文件分发时间:$D{cs}\geq max{\frac{NF}{u{s}}, \frac{F}{d_{min}}}$
- P2P结构文件分发时间:$D{p2p}\geq max{\frac{F}{u{s}}, \frac{F}{d{min}}, \frac{NF}{u{s}+\sum{i=1}^{N}u{i}}}$
- 分布式散列表(P2P数据库)(DHT)
- 关键字:散列函数,
- 实现:环形DHT,具有捷径的环形DHT,
- 分发时间及下界计算
#
socket编程教材用的python,自行用NodeJS。注意tcp socket在net库,udp socket在dgram库。
#
传输层- 数据单位:报文段(segment)
- 为运行在不同主机的应用进程之间提供了逻辑通信
- 在端系统中实现而非在路由器
- 报文段格式:源端口号字段、目的端口号字段
#
协议#
TCP- 关键词:可靠数据传输协议,拥塞控制,面向连接
- 多路复用和多路分解
- 多路分解:将运输层报文段中的数据交付到正确的socket
- 多路复用:将不同socket的数据块封装好生成报文段,传播到网络层
- socket标识:四元组(源IP+源端口号+目的IP+目的端口号)
- socket分配:每个连接都建立一个新socket
- 报文段结构
#
可靠数据传输原理- 有限状态机(Finite-State Machine, FSM)
- 自动重传请求(ARQ)协议:差错检测+接收方反馈+重传
- 额外的问题与解决
- ACK/NAK本身受损:添加分组序号
- 丢包:倒计数计时器
- 链路利用率低:流水线技术
- 流水线技术差错恢复:回退N步(GO-Back-N, GBN)、选择重传(Selective Repeat, SR)
- 拥塞控制
#
TCP实现- 连接管理
- 建立连接:三次握手
- 关闭连接
- TCP拥塞算法:加性增、乘性减(Additive-Increase Multiplicative-Decrease, AIMD)
- 参数:cwnd/ssthresh
- 慢启动:
cwnd**2
,直到出现了:- 超时:$ssthresh=cwnd_{t}\div 2, cwnd=1$,然后重新开始慢启动
- $cwnd=ssthreash$:进入拥塞避免模式
- 检测到3个ACK:执行快速重传并进入快速恢复模式$$
- 拥塞避免:
cwnd++
,直到出现了:- 超时:同上
- 3个ACK:$cwnd=cwnd{t}\div 2(+3MSS), ssthresh=cwnd{t}\div 2$
- 快速恢复(非必须):
cwnd++
#
UDP- 关键词:不可靠,无连接
- socket标识:二元组(目的IP地址+目的端口号)
- socket分配:到达同IP和端口的报文段共用同一个socket
- 传输准备:无需准备即可进行数据传输
- 检验和:差错检测功能
#
网络层- 主要功能:
- 转发(单一路由器的出入选择),
- 路由选择(多个路由器间的路径选择),
- 建立连接
- 数据单位:数据报(datagram)
#
路由器工作原理- 转发表:前缀-链路接口,最长前缀匹配规则
- 结构:输入端口(使用转发表),交换结构,输出端口,路由选择处理器
- 分组队列,排队
- 线路前部阻塞(Head-Of-the-Line, HOL)
- 数据报格式
- 因特网网络层的主要组件:IP协议,因特网路由选择协议,因特网控制报文协议(ICMP)
#
IP协议- 关键词:尽力而为交付服务,不可靠服务
- IPv4
- 编址:32比特/4字节
- 子网,子网掩码,
- 无类别域间路由选择(Classless Interdomain Routing, CIDR):a.b.c.d/x
- 动态主机配置协议(Dynamic Host Configuration, DHCP):自动分配新IP地址的过程
- 网络地址转换(Network Address Translation. NAT):管理IP地址的典型方法
- IPv6
- 编址:128比特
- v4迁移到v6:双站,建隧道
#
ICMP- ping:ICMP类型0
#
路由选择算法- 解决问题:从源路由器到目的路由器的路由选择问题
- 分类:
- 全局式路由选择算法/链路状态算法(Link State, LS):
- 网络拓扑和链路费用均已知
- eg:Dijkstra算法
- 分散式路由选择算法/距离向量算法(Distance Vector, DV):
- 迭代、异步、分布式算法
- 原理:Bellman-Ford方程:$d{x}(y)=min{v}{c(x, v)+d{v}(y)}$,其中v是y的邻居之一
- 链路费用发生变化、链路故障引起的距离向量变化过程:”好消息传得快,坏消息传得慢“
- 层次路由选择:自治系统(Autonomous System, AS) + 自治系统内部路由选择协议(intra-autonomous system routing protocol) + 自治系统间路由选择协议(inter-autonomous system routing protocol)
- 因特网中的自治系统内部的路由选择:路由选择信息协议(Routing Information Protocol, RIP),开放最短路优先(Open Shortest Path First, OSPF)
- 自治间的路由选择:边界网关协议(Border Gateway Protocol, BGP) <-- "绝对至关重要的协议!"“将所有的东西粘合在一起了”
- 全局式路由选择算法/链路状态算法(Link State, LS):
#
链路层- 数据单位:帧(frame)
- 基本服务:将数据报通过单一通信链路从一个结点移动到相邻结点
- 成帧
- 链路接入
- 可靠交付
- (比特级)差错检测和纠正
- 奇偶校检/二维奇偶校检(two-dimensional parity),
- 检验和方法(checksum)
- 循环冗余检测(Cyclic Redundancy Check, CRC)
#
协议- 点对点链路(point-to-point link)和协议
- 点对点协议(point-to-point protocol, PPP)
- 高级数据链路控制(high-level data link control, HDLC)
- 广播链路(broadcast link)/多路访问链路和协议(multiple access protocol)
- 信道划分协议(channel partitioning protocol)
- 时分多路复用(TDM)
- 频分多路复用(FDM)
- 码分多址(Code Division Multiple Access, CDMA):每个结点编码,用编码给数据报编码发送
- 随机接入协议(random access protocol)
- 时隙ALOHA:所有节点同步,在每个时隙开始时开始传输
- 纯ALOHA
- 载波侦听多路访问(Carrier Sense Multiple Access, CSMA)和具有碰撞检测的CSMA(CSMA with Collision Detection, CSMA/CD)
- 轮流协议(taking-turns protocol)
- 信道划分协议(channel partitioning protocol)
- 局域网
- MAC地址:链路层地址,设备的网络适配器所有
- 6字节,$2^{6 \times 8}=2^{48}$种可能,16进制表示
- 地址解析协议(Address Resolution Protocol, ARP):IP地址和MAC地址间的转换
- vs DNS:前者只为一个子网下的主机和路由器接口解析IP地址,后者为因特网中任何主机解析主机名
- MAC地址:链路层地址,设备的网络适配器所有
#
交换机工作原理- 过滤,转发:交换机表
- 自学习特性
- 即插即用
- vs 路由器:
- 前者用MAC地址转发分组,后者用IP地址
- 前者在链路层,后者在网络层
#
无线移动网络#
Wifi:802.11无线LAN- 基本构建模块:极本服务集(Basic Service Set, BSS) = 中央基站(Base Station,作为接入点(Access Point, AP)) + 多个无线站点
- MAC协议:带碰撞避免的CSMA(CSMA with collision avoidance, CSMA/CA)