计算机网络复习
用于概念和非计算题的复习和扫盲,参考书籍为《computer networking: top down approaches》
应用层 Application layer
-
HTTP/HTTPS
- 报文构成:初始状态行(status line)6个首部行(header line)然后是实体体(entire body)
- 各种代码:200OK,301对象永久转移 400请求不能被服务器理解 404Not Found 505不支持Http协议版本
-
CDN(Cotent distribution network):常用于视频网站,SMTP 常用于E-mail传输协议、
-
Web缓存
- 最近请求过的对象保存,方便再次访问
-
DNS Domain name server
- 就像互联网的目录,映射ip地址 到有意义的字符 如政府 国家后缀的网址
-
- 分层的DNS服务器
- 递归查询和迭代查询:从请求host 到local DNS的查询是递归的,其余都是迭代的
-
- 一个使得主机能够查询到这个数据库的协议
- p96 p2p 的计算
-
DHCP (Dynamic Host Configuration
Protocol)动态主机配置协议- 是一种动态的向终端提供IP地址、网关、DNS等配置参数的协议
- How does this work?
- 发现阶段:客户端广播发送报文
- server offer 报文
- 客户端发送request 报文
- server ACK
运输层Transport layer
- TCP/IP 网络最基础的协议
- ICMP Internet 控制报文协议
- TCP/IP的子协议
- 用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息
- UDP 套接字
- 与TCP 面向连接,UDP主打无连接传输,做能传输的最少的工作
- 也有校验和的功能,开头32bit为源端口号 和目的端口号(TCP一样) 紧跟着长度和校验和
- TCP堵塞处理
- 处理丢失,损坏和延时
- SR 选择重传 和GBN 回退N步
- 回退N步时使用 N=window size
- SR 选择重传 和GBN 回退N步
- 处理丢失,损坏和延时
- TCP sequence number:表示的是我方(发送方)这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置
- ack number:表示的是期望的对方(接收方)的下一次sequence number是多少
- TCP 三次握手
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hUgG1uEL-1672983956415)(tcp.png)] - RTT:某报文段从发出到被确认的时间;超时时间必须大于它,否则将没有意义
- 使用指数加权移动平均来估计 RTT的估计和RTT的偏差可以用来估计重传超时的间隔
- T i m e o u t I n t e r v a l = E s t R T T + 4 D e v R T T TimeoutInterval=EstRTT+4DevRTT TimeoutInterval=EstRTT+4DevRTT
- 判断IP 在不在一个局域网内部
- 可以看出多少位是网络号,多少位是主机号
- ICMP Internet 控制报文协议
- 广播地址
- 在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机
- FSM 有限状态机,在该书中常被用于记录接受的状态
网络层 Network layer:数据平面
- IPv4 / IPv6
- IPv6 解决v4地址不够用(2^32 太少) 位数很多因此用hex表示
- 扩大地址容量
- 简化高效的40字节首部
- 流标签
- 数据报分片
- MTU(Maximum Transmission Unit)最大传输单元 常用1500字节
- 超过就要被分片,在接收端重新组合
- 子网掩码
- 子网:互联主机接口的设备和路由器接口的网络形成一个子网
- 为解决IPv4地址资源紧缺的背景下为了解决lP地址分配而产生的虚拟lP技术,IP地址哪些标识的是主机所在的子网,哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用
- 常见的255.255.255.0: 11111111 11111111 11111111 00000000 表示为24位
- 和ip地址进行AND(&)运算
- IPv6 解决v4地址不够用(2^32 太少) 位数很多因此用hex表示
- NAT: 网络地址转换
- 私网IP转换为公网的IP 比如192.168.0.1 转换到公网(LAN to WAN) NAT 路由器上有一张转换表
- NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机
- NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad
网络层 Network layer:控制平面
-
SDN 软件定义网络
- 核心思想:转发 控制 分离
- 通信层
- 网络范围状态管理层
- 对于网络控制应用程序的接口
-
OpenFlow:网络通信协议 应用于SDN架构控制器和转发器之间的通信
- 6653默认端口号
-
网际协议IP是TCP/IP体系中两个最重要的协议之一,也是最重要的因特网标准协议之一。与IP协议配套是用的四个协议:
- 地址解析协议ARP:是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
- 逆地址解析协议RARP:是解决同一个局域网上的主机或路由器的硬件地址和IP地址的映射问题。
- 网际控制报文协议ICMP:提供差错报告和询问报文,以提高IP数据交付成功的机会
- 网际组管理协议IGMP:用于探寻、转发本局域网内的组成员关系。
路由器选择
-
Bellman-Fold最短路径算法
-
- 初始化:将除源点外的所有顶点的最短距离估计值 d i s t [ v ] ← + ∞ dist[v] \larr +\infty dist[v]←+∞, d i s t [ s ] ← 0 dist[s] \larr 0 dist[s]←0;
- 迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V中的每个顶点v的最短距离估计值逐步逼近其最短距离;(运行|v|-1次)
- 检验负权回路:判断边集E中的每一条边的两个端点是否收敛。如果存在未收敛的顶点,则算法返回false,表明问题无解;否则算法返回true,并且从源点可达的顶点v的最短距离保存在 dist[v]中
- 与Dijstra相比,复杂度更高,但是可以处理负权边
-
-
forwarding-转发
-
AS: autonomous system 自治系统
-
BGP 边界网关协议
- 决定位于相同AS中的路由器转发表
- 让子网知道其他子网的存在
- 因此它完成任务的手段为:
- 从邻居获得前缀
- 确定到该前缀的“最好的”路由
-
OSPF 开放最短路优先
- 优点:安全,多条相同的开销路径,对单播与多播的综合支持
- 一台路由器构建整个AS的拓扑图,每台路由器本地运行一个Dijkstra 算法,并选择最短的
- Dijstra 算法:经典的贪心最短路径算法,先贪心的找到一条,然后对每个结点松弛,检验是否有跨越两个节点更短的方法
- Dijstra 算法:经典的贪心最短路径算法,先贪心的找到一条,然后对每个结点松弛,检验是否有跨越两个节点更短的方法
-
分组交换 packet switchings
- 分组交换的概率问题, 如果用户活跃5%的时间,意味着在一个时间片内,每个用户有5% 的概率激活,此时再算多少个用户激活的概率就很简单了
链路层
链路层提供
- 差错检测和纠正
- 成帧
- 链路接入
- 可靠交付
- 比特级别差错检测和纠正
- 奇偶校验parity bit
- 二维行列同时校验,出错可定位行号列号,一维类似uart
- CRC 循环冗余检测
- polynomial code
- 公式 D ∗ 2 r X O R R = n G D*2^r XOR\ R =nG D∗2rXOR R=nG (详见计算题)
- 计算方法为按位异或XOR, 加不进位,减不错位
随机接入协议
-
ALOHA协议
- 时隙ALOHA
- 时间被划分为L/R s 的时隙,类似时钟周期,只在时隙开始时传输
- 节点都是同步的,意为每个节点都共用一个时钟
- 若有碰撞,则节点在时隙的结束之前检测到,该节点以概率p在后续的时隙中重传它的帧,即为二项分布
- lim N → ∞ N p ∗ ( 1 − p ∗ ) N − 1 \lim_{N\rarr \infin} Np^*(1-p^*)^{N-1} limN→∞Np∗(1−p∗)N−1可得最大效率为 1 / e 1/e 1/e
- 普通ALOHA
- 当帧第一次到达就直接丢出去,节点在等待一个帧的传输时间后,就直接以p的概率传输该帧
- 如果出现碰撞,一样是以p 的概率立刻重传
- lim N → ∞ p ∗ ( 1 − p ) 2 ( N − 1 ) \lim_{N\rarr \infin} p^*(1-p)^{2(N-1)} limN→∞p∗(1−p)2(N−1)最大效率为 1 / 2 e 1/2e 1/2e
- 时隙ALOHA
-
载波侦听多路访问/冲突检测 CSMA/CD
- 效率 E = 1 1 + 5 d p r o p / d t r a n s E=\frac{1}{1+5d_{prop}/d_{trans}} E=1+5dprop/dtrans1
- d p r o p d_{prop} dprop信号在任意两个适配器中传播的最大时间
- d t r a n s d_{trans} dtrans 传输一个最大长度的以太网帧需要的时间
-
轮流协议 taking-turns protocol
计网 计算题 复习
- TCP 校验和
-
- 把校验和字段置为0;
- 对IP头部中的每16bit进行二进制求和;
- 如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值;
- 将该16bit的值取反,存入校验和字段。
- 1的补码
- 将所有数据相加,然后高8位低8位相加 取反
- TCP的校验和是必需的,而UDP的校验和是可选的
- DNS 查询时延 发送和返回
-
- 1Mb=10^6 bits=150,000 bytes
- 1MiB= 2^20 1MB=10^6
- CSMA/CD争用期
51.2
μ
s
51.2 \mu s
51.2μs
- 重传失败次数 n
- r = m i n ( n , 10 ) r=min(n,10) r=min(n,10)
- 选择随机一个数在数集 $K=[0,…,2^r-1] $
- 设u为发送512bits的时间
- 等待时间为 K ∗ u K*u K∗u
- P2P 计算题 需要注意的细节
- 单节点 acess 取最小时间 delay是直接加吗?
- 分清楚 下载速率和服务器上传速率
- 有buffer 的情况,即为只要下载一个到buffer钟,然后
Q & A
- Q: 为啥ARP 要在广播帧之中发送?
- A: 查询前是不知道目的主机具体的mac地址,通过广播的方式,让局域网所有主机收到这个以太网帧,而只有目的主机会从接收的帧中解出ip数据报并知道了源主机的ip地址,然后发送一个arp响应的时候就只需要单播就能找到源主机了,同时更新arp表
- Q:为啥应用常用udp? 为啥语音通话中常用tcp?
- A:因为应用往往涉及进程间通信,udp比较简单易用,并且可以节省计算机资源 语音视频对于丢包问题要求较为严格,tcp 自带的协议可以很好的纠正丢包,而udp则对于丢包是交由上层处理
- Q:How does traditional internet address-based forwarding differ from the more modern concept of ‘match-plus-action’?
- A:In traditional internet, allocation of address space was based on a class system, A, B, C where the number of addresses allocated depended on the class. Modern allocation of address space is indicated by the subnet mask (/n), e.g. /30 will allocate 4 address.
- Q:Describe how packet loss can occur at output ports. Can this loss be prevented by increasing the switch fabric speed? 输出端口的丢包可以被加速解决吗?
- A: