2016计算机网络复习

转载自博客http://blog.csdn.net/bit_line/article/details/51760601#附1-2015年考试要点


2016计算机网络复习

\Huge \mathrm{PDF版下载}


Author E-Mail
Qyetfu zhengdongjian@tju.edu.cn
  • 更新日志
编号 时间 说明
#0 201606241913 初始化文章结构
#1 201606252121 更新前4章内容
#2 201606260856 P2P中最后一步计算应为max max
#3 201606261222 更新第5章内容
#4 201606261539 全文
#5 201606261730 添加网络层选路各算法小总结,IPv4 ABCDE类地址描述
#6 201606261809 第8章鉴别协议AP部分
#7 201606262007 TCP Reno一种实现是3个冗余ACK后阈值减半,窗口长度设置为阈值+3
#8 201606262124 AP4.0无失败情形
  • 考试内容:《计算机网络:自顶向下方法》前八章。重在理解

目录


1.计算机网络和因特网


  • [x] 什么是因特网 
       能大概解释和描述以下基本概念
  • 主机/端系统
  • 通信链路 
    • 电缆
    • 铜线
    • 光线
    • 无线电频谱
  • 分组交换机 
    • 路由器
    • 链路交换机
  • 分组
  • 因特网服务提供商(ISP) 
    • 信网中心
    • 中国移动铁通
  • 协议:一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和/或接受或其他事件方面所采取的动作
  • 请求评论(RFC)

  • P.S. 这个网络啊,它可以分为网络边缘和网路核心。前者包括端系统、接入网络(如无线接入)和物理媒体(如双绞铜线、同轴电缆、光缆和卫星无线电等等),后者则包括电路(circuit)交换/分组(packet)交换、ISP和因特网主干。从拓扑结构上来看,前者一般位于图的边缘顶点,后者则是图的内部顶点


  • [x] 网络边缘
  • 客户机和服务器程序
  • 接入网 
    • 住宅接入
    • 公司接入
    • 无线接入
  • 物理媒体

  • [x] 网络核心 
    • 电路交换 
      • 频分复用
      • 时分复用
    • 分组交换 
      • 统计多路复用(基于统计学/概率学)

  • [x] 分组交换网中的时延、丢包和吞吐量
  • 时延  dnodal=dproc+dqueue+dtrans+dprop

    • 处理时延:如检查比特及差错产生的时延,发生在分组交换机上,一般非常短
    • 排队时延:队列为空时为0,发生在分组交换机
    • 传输时延:仅当已到达的分组(被传输)的所有比特都到达后才能传输当前分组,该过程产生的时延成为传输时延
    • 传播时延:在链路上传播花费的时间
  • 流量强度( let: LaR<1 )

  • 丢包:排队容量有限,排队溢出时发生 :)
  • 吞吐量(throughput)   min{Rs,Rc}

  • [x] 协议层次及其服务模型
五层因特网协议栈 功能 传输单位 举例
应用层 系统和用户接口 - POP3, DNS, FTP
运输层 进程间通信,可靠传输服务端到端流量控制、差错控制 报文段(TCP),用户报文段(UDP) TCP, UDP
网络层 路由器上完成,报文段封装,路由选择拥塞控制 数据报 ARP, IP, ICMP
链路层 交换机、网桥上完成,差错检测 PPP, ARQ
物理层 集线器、中继站上完成,比特流传输 比特 -

  • [ ] 课后习题( P72 )
  • P6:主机  A   B  ,带宽  R bps ,间隔  m  米,传播速度  s m/s ,且现在要发送一个大小为  L bits 的分组 
    • a. 传播时延  dprop=m/s (s)
    • b. 传输时延  dtrans=L/R (s)
    • c. 忽略处理时延和排队时延,端到端时延  d=dprop+dtrans=ms+LR=mR+sLsR (s)
    • d. 在  A  通向  B  的链路起始处
    • e. 在  A  通向  B  的链路中间,距离  A    sLR m 
    • f. 已经到达  B  主机处
    • g. 令  ms=LR  即得  sLR536 (km)
  • P8:链路  3 Mbps ,每个用户传送需要占用  150 kbps ,只有  10%  的时间会传送数据 
    • a. 使用电路交换,则需要实电路资瓷,至多支持  3 Mbps150 kbps=20  名用户
    • b. 使用分组交换,一个用户在任意时刻正在传输数据的概率为  10%
    • c.  CN120(110)N(910)120N
    • d.  120N=21(CN120(110)N(910)120N)
  • P10 
    • dprop=3i=1disi, dtrans=3i=3LRi, dproc=3dproc
    • d=3×dproc+3i=3LRi+3i=1disi
  • P18:略
  • P25 
    • a.  160000
    • b.  min{800000,160000}=160000
    • c. 在链路全忙碌的情况下,链路上传输的最多可同时存在的比特数量
    • d. 125m, 是啊
    • e.  mRs

2. 应用层

  • [x] 应用层协议原理

    • 应用体系结构 
      • C/S体系结构
      • P2P体系结构(Peer to Peer, 对等体系结构)
  • 进程通信

    • 客户机和服务器进程:发起服务的为客户端,提供服务的为服务端
    • 进程和计算机网络之间的接口:套接字(socket)
    • 应用程序要求服务的分类:(按)可靠数据传输、吞吐量、定时和安全性
  • 因特网提供的运输服务

    • TCP服务:面向连接服务 & 可靠数据传输服务 
      • 面向连接服务:在正式传输数据报文之前,先进行一个握手过程,握手完成后便建立了TCP连接(全双工,双方都可在该连接上同时收发报文)。
      • 可靠数据传输服务:无差错按顺序交付
      • 拥塞控制
    • UDP服务:不提供不必要服务的轻量级运输层协议,仅提供最小服务。 
      • 无连接服务
      • 不可靠传输服务
      • 没有拥塞机制
  • 不提供的运输服务 
    • 吞吐量保证
    • 定时保证

  • [x] web应用和HTTP协议

  • 使用的运输层协议:TCP

    • RTT:单次往返时间, Round-Trip Time
  • 非持久连接

    • 每个对象一个连接。每次传输耗费时间: RTT×2+Ttransfer
  • 持久连接

    • 第一次传输后,连接不关闭,后续请求的资源仍可使用该连接传输
  • 请求报文格式

    • 第一行称为请求行,后面的行为首部行
    • GET: 内容放在URL上
    • POST: 内容放在实体主体中,位于请求报文的最后
    • PUT: 客户端上传对象
    • HEAD: 服务器收到后回复响应,但不返回请求对象
    • DELETE: 客户端删除服务器上的对象
<code class="hljs http has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-request" style="color: rgb(0, 0, 136); box-sizing: border-box;">GET <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">/</span> HTTP/1.1</span>
<span class="hljs-attribute" style="box-sizing: border-box;">Host</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">zhengdongjian.xyz</span>
<span class="hljs-attribute" style="box-sizing: border-box;">Connection</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">close</span>
<span class="hljs-attribute" style="box-sizing: border-box;">User-agent</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">MOzilla/4.0</span>
<span class="hljs-attribute" style="box-sizing: border-box;">Accept-language</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">en</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
  • 响应报文格式 
    • 第一行为初始状态行,6个首部行,然后是实体-
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">HTTP/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span> OK
Connection:close
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">Date</span>: Thu, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">03</span> Jul <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2003</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">00</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">15</span> GMT
Server: Apache/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.3</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span> (Unix)
Last<span class="hljs-attribute" style="box-sizing: border-box;">-Modified</span>: Sun, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span> May <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2007</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">09</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">23</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">24</span> GMT
Content<span class="hljs-attribute" style="box-sizing: border-box;">-Length</span>: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6821</span>
Content<span class="hljs-attribute" style="box-sizing: border-box;">-Type</span>: text/html

(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">data</span><span class="hljs-attribute" style="box-sizing: border-box;">...</span>)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>
  • 缓存服务器 
    • 好用,可以大大减少重复请求响应,节省干路带宽资源,校园网必备昂= =
    • 条件GET

  • [ ] 文件传输协议(FTP)
  • 使用的运输层协议:TCP;22号端口
  • 控制连接

    • 用户标识
    • 口令
    • 改变远程目录
    • put
    • get
  • 数据连接

    • 实际传输文件使用
  • 特性

    • FTP使用一个分离的控制连接,因此称FTP的控制信息是带外(out-of-band)的 
      • HTTP可以称为带内(in-band)的
    • 会话期间保留用户的状态 
      • HTTP是无状态

  • [ ] 电子邮件

  • 组成:用户代理(user agent),邮件服务器,简单邮件传输协议

  • 使用的传输层协议:TCP;25号端口

  • [ ] DNS

  • 简单定义

    • 一个由分层的DNS服务器实现的分布式数据库
    • 一个允许主机查询分布式数据库的应用层协议
  • 使用的运输层协议:UDP;53号端口
  • 提供的服务 
    • 域名解析:将用户提供的主机名解析为IP地址
    • 主机别名:对应CNAME记录
    • 邮件服务器别名(mail server aliasing):对应MX记录
    • 负载分配:就像百度的DNS解析结果,DNS服务器对每个结果旋转列表的顺序
  • 为啥要搞成分布式的? 
    • 集中式的单点故障代价昂贵:整个系统都会崩掉
    • 集中式的通信容量受限
    • 集中式的会有不可避免的远距离限制
    • 集中式的维护很困难,中央数据库巨大无比
  • 分布式数据库 
    • 根DNS服务器
    • 顶级域(TLD)服务器
    • 权威DNS服务器
    • 本地DNS服务器
  • 递归查询迭代查询

    • 题外话:课文中描述了一个样例(2-21),务必注意其只有第一步(本机到本机直接连接的那个DNS服务器)查询叫递归查找,其它为迭代查找。要严格区分二者
  • DNS缓存

  • DNS报文

    (Name, Value, Type, TTL)

Type oops e.g.
A Name=主机名, Value=IP (relay1.bar.foo.com, 145.27.93.126, A)
NS Name=域名, Value=权威DNS server (foo.com, dns.foo.com, NS)
CNAME Name=别名, Value=规范主机名 (foo.com, relay1.bar.foo.com, CNAME)
MX Name=别名, Value=对应邮件服务器的规范主机名 (foo.com, mail.bar.foo.com, MX)

  • [ ] P2P应用
  • 最小分发时间的计算 
    • 文件大小  F
    • 共有  1  个服务器, N  个对等方
    • 服务器的上传速率  us
    •  i  对等方的上传速率  ui ,下载速率  di
    • 若文件只由服务器发出,则总分发时间
       Dcsmax{NFus,Fdmin}
      但是P2P中每个对等方都可以向其他对等方发送数据,考虑到系统内部的流量,总共需要交付  NF  比特,且总可用上传带宽为各节点的上传带宽之和
       us+i=1Nui
      如此便有
       DP2Pmax{Fus,Fdmin,NFus+Ni=1ui}
    • 如何设计方法取得上界? 
      • 假定下载带宽远大于上传带宽
      • 每个对等方接收到一个比特便立即上传
      • 则相当于任意时刻网络核心的链路部分都有比特“残留”供需要的对等方下载,我们再次无脑假设服务器只负责第一份文件的分发,剩余文件可以“智能”地选择互联的对等发
      • 因此总时间的上界应该是
        DP2Pmax{Fus,Fdmin,NFus+Ni=1ui+max{Fd1,Fd2,,FdN}}=max{Fus,Fdmin,NFus+Ni=1ui}

  • [ ] 作业( P173 )
  • P8
  • P15
  • P18
  • P23
  • P29

3. 运输层


  • [ ] 概述和运输层服务
  • 运输层功能 
    • 为运行在不同主机上的应用进程之间提供逻辑通信 
      • 运输层    不同主机的进程间的逻辑通信
      • 网络层    不同主机之间的逻辑通信
    • 端系统中实现(不是路由器中)
  • TCP提供的服务 
    • 可靠数据传输(RDT)
    • 拥塞控制
  • 多路分解:接收端,分离运输层报文段
  • 多路复用:发送端,为数据块封装首部生成报文段
  • 多路分解和多路复用的关键是运输层报文段中会封入通信进程双方的socket**端口号**
  • 应用层选用的TCP和UDP
应用 应用层协议 运输层协议
电子邮件 SMTP TCP
远程终端访问 Telnet TCP
Web HTTP TCP
文件传输 FTP TCP
远程文件服务器 NFS 通常UDP
流媒体 - UDP or TCP
域名转换 DNS UDP

  • [ ] 无连接运输:UDP

  • 功能

    • 多路复用/多路分解
    • 部分轻量级的差错检测
    • 无连接,即连接双方没有握手过程
  • 优点(为何不用TCP而用UDP?)

    • 应用层可以更好地控制要发送的数据和发送时间:比如,DNS使用的是UDP,如果数据丢失了,应用层可以等待超时后重发即可,不需要可靠数据传输,避免后者为了保证功能付出的时间代价(如握手建立连接消耗的时间)
    • 无需连接建立
    • 无连接状态
    • 分组首部开销小
  • UDP报文段(RFC768)(8B

<code class="hljs brainfuck has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">_______________________</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">源端口号</span>  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">目的端口号</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">长度</span>   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">校验和</span>   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>       <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">应用数据</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">|</span>
<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>

  • [ ] 可靠数据传输原理

  • 1.0:假设底层的通信是可靠的 rdt1.0

  • 2.0:底层的通信中,分组的比特可能受损,但是依然可以按序交付

    • 添加ACKNAK标识,如果接收方检测分组受损(corrupt)则回复NAK rdt2.0
  • 2.1:2.0版本存在的一个关键问题是,ACK/NAK分组本身也是可能受损的

    • 可以对分组编号来解决上述问题。于是假设发送方没有收到某个编号分组对应的ACK/NAK,就可以认为对面没有正确接收该分组。当然如果是ACK分组丢失导致重传,则接收方有可能接收到冗余的分组,后面将讨论这个问题。rdt2.1_send rdt2.1_recv
  • 2.2:可以去除2.1版本中的NAK,接收方需要发送NAK时发一个上次正确接收的分组的ACK,效果相同 rdt2.2_send rdt2.2_recv

  • 3.0:2.x的版本解决了分组比特受损的问题,但假定不会发生丢包。具体地说,2.x的版本在发送方发出的某个数据包丢失的时候,接收方会持续地等待,因为它并不知道发送方是不是真的“还木有发”。因此发送方可以加入一个定时器,在发送一个分组并进入等待该分组的ACK时开始计时,如果超时则重传之前的分组。当然,接收方用2.2的版本就够了,3.0只是在发送方里加了一个定时器 rdt3.0_send

  • 停等(stop and wait)协议

    • 从rdt3.0的状态机可以看出,发送方发送某个分组后,需要等待直到接收到该分组的ACK或者发生了超时,这对中长距离的通信是灾难级的性能丢失!
  • 流水线技术:解决停等带来的性能丢失问题

    • 允许发送方发送多个分组而无需确认
    • 要求:发送方和接收方增加缓冲区,缓冲多个分组。发送方至少应当缓冲发送了但还没收到确认的那些分组。
    • 回退N步(GBN)协议:流水线中未确认的分组的最大数量  N  称为窗口长度 
      • 累积确认:对序号为  n  的分组的确认表示接收方已正确收到序号  n   n  之前的所有分组。
      • 超时:重传所有已发送但未确认(即窗口中下一个序号之前的)的所有分组
    • 选择重传(SR) 
      • 有选择地重传认为有可能丢失的分组,而不是像回退N步协议中那样一股脑地发送所有没有被确认的分组
      • 问题:接收方窗口长度过大时,会出现接收方无法分辨新分组和重传分组的情形。容易证明,窗口长度  N  应满足  NL2 ,其中  L  为分组的最大编号(序号空间)

  • [ ] 面向连接的运输:TCP
  • 全双工服务(full-duplex service)
  • 报文段:最大报文段长一般根据最初确定的最大链路层帧长度来设置,即根据MTU来设置。假设链路中的MTU均为  1500B ,IP首部为  20B ,那么  MSS  可以设置为  1500B(MTU)20B(IP)20B(TCP)=1460B ,当然上面也假定TCP首部为20B了,又或者  1500B(MTU)20B(IP)8B(UDP)=1472B  等等
  • 报文段结构(一般为20B,可变),主要部分:

    • 32bit的源端口号和目的端口号(4B, 2B[0,65535]*2)
    • 32bit的序号(4B),隐式对数据进行字节编号,每个TCP报文段中的序号便是数据字段第一个字节对应所传输数据的字节编号
    • 32bit的确认号(4B),提供的是GBN中使用的累积确认
    • 首部长度+保留+6bit标志字段+16bit接收窗口字段,共32bit(4B)
    • 16bit互联网校验和+16bit紧急数据指针,共32bit(4B)
    • 选项字段,略去。
  • 往返时间估算

    • 初始化  EstimatedRTT ,考虑心跳时间,一般设置为  2.52.5+G  s,其中  G  为时间粒度/时间片长度
    • 收到一个样本  SampleRTT  后,校正
      EstimatedRTT=(1α)EstimatedRTT+αSampleRTT
  • 重传时间:设置为

     RTO=EstimatedRTT+4DevRTT
    其中:
     DevRTT=(1β)DevRTT+β|SampleRTTEstimatedRTT|
    一般初始化:
     DevRTT1.0

  • 快速重传:收到3个冗余ACK,则就不再等待定时器超时,而是直接重传该分组。

  • 流量控制:在接收方给发送方中报文段接收窗口中放入可用缓冲长度。为  0  时,发送方继续发送只有一个字节数据的报文段,以避免阻塞。

  • 连接管理

    • 第一次握手设置标志位中的  SYN=1 ,报文段中不包含应用层数据
    • 第二次握手,发送方回应一个  SYN  报文段 
      • ACK=client_isn+1
    • 第三次握手, SYN=0 ,并夹带了应用层数据
    • 终止时,任一方先发一个  FIN=1  的报文段,然后另一方面回应一个  ACK  后再回应一个  FIN  报文段,这一方收到  FIN  后再次回应  ACK ,最后等待一段时间(一般可为  30  秒)后正式关闭,释放资源

  • [ ] 拥塞控制原理

  • 端到端拥塞控制:网络层不为运输层拥塞控制提供显示支持。

  • 网络辅助的拥塞控制:网络层中间件(路由交换器)向发送发提供关于网络中拥塞状态的显示反馈信息。


  • [ ] TCP拥塞控制

  • 加性增、乘性减:发生丢包就把拥塞窗口大小减为一半,收到确认增加1(慢启动过程不是,慢启动时是指数上升)

  • 慢启动:初始1MSS,然后指数上升到一定程度后加性增
  • 超时反应:拥塞窗口设置为1MSS,然后指数增

  • Tahoe算法

    • 慢启动
    • 达阀值后加性增,丢包后减少为1,阀值减小为此时的一半
  • Reno算法(多数TCP实现采用的算法) 
    • 慢启动
    • 达阀值后加性增,丢包后阀值减半,同时窗口长度从阀值+3开始,加性增

  • [ ] 作业( P289 )
  • P8
  • P9
  • P21
  • P22
  • P32
  • P40
  • P46

4. 网络层


  • [ ] 概述
  • 功能:提供转发选路以及连接建立(尽力而为服务)

    • 转发:当一个分组到达某路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路      转发表
    • 选路:当分组从发送发流向接收方时,网络层必须决定这些分组所采用的路由或路径,计算这些路径的算法称为选路算法
    • 连接建立:某些网络层体系结构(e.g. ATM)要求从源到目的地沿着所选择的路径彼此握手,以便在网络层数据分组能够开始流动之前,给定的源到目的地沿着所选择的路径彼此握手
  • 提供的服务

    • 确保交付
    • 具有时延上界的确保交付
    • 有序分组交付
    • 确保最小带宽
    • 确保最大时延抖动
    • 安全性服务
网络体系结构 服务模型 带宽保证 丢失保证 排序 定时 拥塞指示
因特网 尽力而为 任意
ATM CBR 恒定速率 有序 维持 不出现拥塞
ATM ABR 最小速率 有序

  • [ ] 虚电路和数据报网络 
    • 虚电路网络:仅在网络层提供连接服务的计算机网络
    • 数据报网络:仅在网络层提供无连接服务的计算机网络-
  • 虚电路网络

    • 虚电路建立:网络层决定发送方和接收方之间的路径,给路径上的每条链路确定一个VC号,最后网络层在沿着路径的每台路由器的转发表中增加一项。
    • 数据传送
    • 虚电路拆除
  • 数据报网络

    • 转发表:最长前缀匹配规则
前缀匹配 链路接口
11001000 00010111 00010 0
11001000 00010111 00011000 1
11001000 00010111 00011 2

  • [ ] 网际协议:因特网中的转发和编址

    • 因特网的网络层组件: 
      • IP协议:包括编址规则、数据报格式、分组处理规则
      • 选路协议:RIP,OSPF,BGP等
      • 差错报告/请求响应设施(ICMP协议):差错报告、路由器信令
  • 数据报格式

    • 说明略
    • IP分片:当IP数据报从一个MTU较大的链路进入一个MTU较小的链路时需要分片,片偏移只有13位,因此除了最后一片,前面都按8的倍数分割,最后的片地址为  8offset
<code class="hljs  has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">版本号(4b) 首部长度(4b) 服务类型(8b) 数据报长度(16b)
              标识(16b)              标志(3b) 片偏移(13b)
        寿命(8b)       上层协议(8b)  首部检验和(16b)
                   源IP地址(32b)
                  目的IP地址(32b)
                      选项(op)
                       数据</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>
  • IPv4编址 
    • 无类别域间选路(CIDR):子网 + 子网掩码,a.b.c.d/x 
      • 分类编址:8b/16b/24b => A/B/C类地址,分别以0.../810.../16110.../241110.../411110.../5等前缀开始。参考《IPV4 地址分类 A B C D E
    • 注意主机地址全0和全1不采用 
      • 全0用于表示本机地址
      • 全1用于表示广播地址

  • [ ] 动态主机配置协议(DHCP协议),协议分4个步骤: 
    • DHCP服务器发现:主机在67号UDP端口发送DHCP发现报文,其中源地址为0.0.0.0,表示本机;目的地址为255.255.255.255,表示广播地址;链路层将对应帧广播到该子网
    • DHCP服务器提供:DHCP服务器收到DHCP发现报文后,响应一个DHCP提供报文,目的地址依然为255.255.255.255,并包含向客户机推荐的IP地址、事务ID、网络掩码以及IP地址租用期
    • DHCP请求:新到达的客户机从一个或多个服务器中选择一个,并对选中的服务器响应DHCP请求报文,回显配置参数
    • DHCP ACK:服务器用DHCP ACK报文对DHCP请求报文进行响应
    • 总过程:DHCP发现报文    DHCP提供报文    DHCP请求报文    DHCP ACK报文

  • [ ] 网络地址转换(NAT) 
    • 3类私有地址 
      • 10/8
      • 172.16/12
      • 192.168/16
    • NAT路由器维护一张NAT转换表,包含端口号和IP地址 
      • 当内部某进程向外发数据,NAT记录其源地址和端口,将其修改为自己的IP和新分配的一个端口,然后向外发出
      • NAT收到外部来的数据报,类似地做逆转换

  • [ ] ICMP:互联网控制报文协议
  • 用于主机和路由器彼此交互网络层信息 
    • 典型应用:差错报告(但不仅限于)
  • ICMP报文组成 
    • 类型字段
    • 编码字段
    • 引起该ICMP报文首次生成的IP数据报
  • Traceroute

    • 依次发送  TTL   1,2,,n,  的普通IP数据报,使用UDP报文段。第  n  台路由器恰好丢弃该数据报,并回送一个  ICMP  告警报文给源主机(类型 11 ,编码 0 )
  • 部分报文含义

ICMP类型 编码 描述
0 0 回显应答(应答ping)
3 3 目的端口不可达
11 0 TTL过期(traceroute)

  • [ ] 选路算法

    • 默认路由器(第一跳路由器)
    • 源路由器
    • 目的路由器
    • 选路问题:源路由器    目的路由器
  • 分类

    • 第一种分类:全局选路算法+分布式选路算法
    • 第二种分类:静态选路算法+动态选路算法
    • 第三种分类:负载敏感算法+负载迟钝(RIP,OSPF,BGP)算法

  • 链路状态选路算法(LS) 
    • Dijkstra算法
N D(v),p(v) D(w),p(w) D(x),p(x) D(y),p(y) D(z),p(z)
0 u 2,u 5,u 1,u
1 ux 2,u 2,u 4,x 4,x   2,x 2,x \infty
2 2 uxy uxy 2,u 2,u 3,y 3,y     4,y 4,y
3 3 uxyv uxyv   3,y 3,y     4,y 4,y
4 4 uxyvw uxyvw         4,y 4,y
5 5 uxyvwz uxyvwz          
  • 距离向量选路算法(DV) 
    • 特性:自终结、异步、迭代、分布式
    • Bellman-Ford方程:D_x(y) = {min}_v\{c(x,v) + d_v(y)\}
      Dx(y)=minv{c(x,v)+dv(y)}
    • 使用BF方程,可以让所有举例~D_x(y)~  Dx(y)  都收敛到~d_x(y)  dx(y)
    • 选路环路 
      • 避免:毒性逆转

  • [ ] 自治系统(AS) 
    • 热土豆
  • 因特网中的自治系统内部选路:选路信息协议RIP,开放最短路径优先OSPF
  • RIP

    • 用跳数做测度
    • 一条路径的最大费用限制为15,因此使用RIP的网络直径不应大于15
    目的子网 吓一跳 到目的地的跳数
    w w A A 2 2
    y y B B 2 2
    z z B B 7 7
    x x - 1 1
    \dots \dots \dots
    • RIP~ RIP  是个应用层协议,使用UDP运输层

  • [ ] AS内部选路:链路状态协议OSPF,使用IP数据报传输 
    • 核心就是一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法
  • 优点 
    • 安全
    • 可以存在多条相同费用的路径
    • 对单播选路与多播选路的综合支持
    • 支持在单个选路域内的层次结构
  • 路由器 
    • 内部路由器
    • 区域边界路由器
    • 主干路由器
    • 边界路由器

  • [ ] 自治系统间的选路:BGP
  • BGP对等方
  • BGP会话
  • 外部BGP(eBGP)会话:跨越两个AS的BGP会话
  • 内部GBP(iBGP)会话:同一个AS内的两台路由器之间的BGP会话
  • BGP使用半永久TCP连接

算法/协议 说明
链路状态LS 最典型的是Dijkstra
距离向量DV 如Bellman-ford
RIP 类似DV的一个简化版本,距离用跳数来度量
OSPF 核心为LS
BGP 差不多

  • [ ] 习题(P_{417} P417 )
  • P4
  • P13
  • P17
  • P22
  • P26
  • P27
  • P31
  • P34
  • P37
  • P38

5. 链路层和局域网

  • 概述 
    • 数据单元叫
    • 链路层协议定义了在链路两段的节点之间交互的分组格式,以及当发送和接收分组时这些节点采取的动作
    • 成帧:几乎所有的链路层协议都在经链路传送之前,将每个网络层数据报用链路层帧封装起来
    • 链路接入
    • 媒体访问控制协议:MAC协议
    • 可靠交付:链路层通常是通过确认和重传取得的
    • 流量控制
    • 差错检测
    • 差错纠正
    • 半双工和全双工
    • 注意:运输层协议在端到端的基础上为两个进程之间提供可靠交付,可靠链路层协议在由单一链路相连的两个节点之间提供可靠交付服务。
    • 连接的双方 
      • 运输层:两进程端到端
      • 网络层:两主机端到端
      • 链路层:单链路的两节点间传输
      • 提供端到端的最高层(应用层最高,物理层最低)是运输层
    • 实现在网络适配器上,即网络接口卡

  • [ ] 多路访问协议
  • 信道划分协议:思想精髓是大家均分信道 
    • 时分多路复用(TDM):把时间划分为时间帧,时间帧进一步划分为时隙。优点公平无碰撞,缺点:在只有少量节点发数据时单节点带宽也很小
    • 频分多路复用(FDM):把信道划分为多个频段,每个节点一段。优缺点和TDM一样
    • 码分多址(CDMA):每个节点一种编码。忽略
  • 随机接入协议(感觉..必考):思想精髓是每个人都占全部信道,但随机发送减少冲突 
    • 时隙ALOHA:等待下一个时隙开始发送帧,如果碰撞假设在该时隙内就能检测到,然后以概率~p~  p  在下一时隙发送,以此类推。效率~Np{(1-p)}^{N-1}  Np(1p)N1
    • ALOHA:立即发送帧,碰撞则以概率~p~  p  立即重传,否则等待一个帧传输时间重传,以此类推。效率~Np{(1-p)}^{2(N-1)}  Np(1p)2(N1)
    • CSMA(载波侦听多路访问):(ALOHA讲话前不管别人,而CSMA则是先“听”再讲,从而有效避免冲撞)传输前先侦听链路上是否有其它传输,如果有则等待一段随机的时间,否则直接传送。注意这依然可能发生碰撞。
  • 轮流协议 
    • 轮询协议:指定一个主节点,然后循环询问每个其它节点,并告诉它可以传多少个帧
    • 令牌传递协议(token-passing):维护一个令牌,在节点间轮流传递
随机接入协议 效率
ALOHA Np{(1-p)}^{2(N-1)} Np(1p)2(N1)
Slot ALOHA Np{(1-p)}^{N-1} Np(1p)N1

  • [ ] 链路层编址

  • MAC地址(LAN地址,物理地址):每个适配器分配一个MAC地址(而不是节点,具体地说,一台电脑可以有两张网卡,甚至还可有虚拟网卡),6B48位,如1A-23-F9-CD-06-9B

    • 00-00-00-00-00-00表示本机
    • FF-FF-FF-FF-FF-FF表示广播地址,帧中的目的地址为该值时,帧会被同一局域网下所有的适配器接收和处理
    • Q:有了IP地址为啥还要MAC地址? 
      • 分层:LAN不仅仅是为IP和因特网而生得,它得为其他的网络层协议(IPX,etc)提供资瓷
      • 分层:(老湿说)灵活和方便,因为IP地址是很容易改变的,啪啦啪啦。。。
      • 请参阅知乎:《有了IP地址,为什么还要用MAC地址?
  • 地址解析协议ARP:用于在网络层地址(如IP)和链路层地址(MAC地址)之间转换

    • 为同一子网中的节点解析IP地址(给个IP返回对应的MAC)
    • ARP表
    IP地址 MAC地址 TTL
    222.222.222.221 88-B2-2F-54-1A-0F 13:45:00
    222.222.222.223 5C-66-AB-90-75-B1 13:52:00
    • 同一子网内通信:先广播一个ARP查询分组,目的IP对应的适配器响应一个标准帧(ARP响应分组),即可取得对应MAC
    • 不同子网内通信:发给网关(路由器),然后路由器再往外发。

  • [ ] 以太网 
    • 集线器:放大每一个比特
    • 交换机
<code class="hljs r has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">前同步码(8B) | 目的地址(MAC,6B) | 源地址(MAC,6B) | 类型(2B) | 数据 | <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span> | CRC(4B) |</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
  • 以太网帧

    • 数据字段:IP数据报,最大(MTU)1500B
    • 由于~8+6+6+2+4=26  8+6+6+2+4=26 ,并且规定数据字段的长度至少为~46\mathrm{B}  46B ,不足则由设备驱动程序填充至~46\mathrm{B}  46B ,于是帧长至少为~26+46=72(\mathrm{B})  26+46=72(B) ,最多为~26+1500 = 1526(\mathrm{B})  26+1500=1526(B)

      • 抓包时,网卡会先剥去前导码,于是最少只剩~64\mathrm{B}  64B ,并且如果抓包在校验后进行,则~CRC~  CRC  码也去除了,只剩~60\mathrm{B}  60B
    • 不可靠,无连接:不握手,CRC校验失败直接丢掉,不确认也不否认

  • CSMA/CD:以太网的多路访问协议

    • 载波侦听+碰撞检测。空闲判定:96b时间内无信号能量。碰撞后进入指数后退,即随机地从~\{0,1,2,\dots,2^{m}-1\}~  {0,1,2,,2m1}  中随机选择一个值~K  K ,其中~m = min(n,10)~  m=min(n,10)  ,然后等待~K\cdot512~  K512  比特时间
    • 效率\alpha = \frac{1}{1 + 5d_{prop}/d_{trans}}
      α=11+5dprop/dtrans

  • [ ] 链路层交换机:转发和过滤~\to plug\mathrm{-}and\mathrm{-}play  plugandplay

  • 路由器和交换机对比

    • 注意二者都可称为存储转发交换机
  路由器 交换机
转发地址依据 网络层地址(如IP) MAC地址
即插即用 否(接入的设备需要配置IP地址等) 是(因为设备MAC地址出厂即确定,保存在固件中,而不像IP需要保存在内存中)
优化选路

  • [ ] 作业
  • P8
  • P12
  • p17
  • p18
  • p21
  • p31

6. 无线网络和移动网络


  • [x] 概述
  • 主机位于基站覆盖范围内;主机通过基站中继其与更大网络的数据
  • 如:蜂窝塔(移动电话基站),AP(access point, 无线路由的接入点,可以理解为一根无线路由器的天线,注意某些路由器它是有两根天线的= =)

  • [x] 无线链路和网络特征
  • 隐藏终端问题:A和C之间的连接被遮挡,即AC互相不可见,若A和C同时连接B,则这两者的冲突难以检测~\to~    A和C都不知道自己和别人冲突了

  • [ ] WiFi:802.11无线LAN 
    • 信道划分:2.4G WiFi下,频段~2.4\sim 2.485~GHz~  2.42.485 GHz  划分为11个信道
    • SSID:服务集标识符,如tjuwlan
    • WiFi丛林:可以收到多个AP的信号的任意物理位置
    • 关联:无线设备(书中称无线主机)与某AP之间创建了一条虚拟线路,则称它们关联
    • 信标帧:802.11标准要求每个AP周期性地发送信标帧,每个信标帧包括该AP的SSID和MAC地址。 
      • 点击手机WLAN功能中的刷新扫描等,其将扫描11个信道(2.4G而言),找出各信标帧
      • 某些路由器关闭路由广播,其实质应该就是停止发送信标帧,而已经连接过的无线终端则由于已经记录过其信道和SSID,是可以继续连接上的
    • 被动扫描:扫描信道和监听信标帧的过程
    • 主动扫描:无线设备向范围内的所有AP广播探测帧(AP会回应一个探测响应帧)
    • 802.11使用CSMA/CA,并且不使用碰撞检测(CSMA/CD中使用),一旦开始发送一个帧,就要完全地发送它
  • 链路层确认机制:802.11 MAC使用链路层确认,目的地收到一个通过CRC校验的帧后,等待一个短帧间间隔(SIFS),然后发回一个确认帧
  • 帧发送过程

    • 如果监听到信道空闲,则等待一个分布式帧间间隔(DIFS)然后发送帧
    • 否则,选择一个随机回退值,并在侦听到信道空闲时递减,信道忙时该值不变 
      • 这么做的理由是:802.11不检测碰撞,一旦发生代价很大,因此如果两个人都要发,则如果随机到不同的值,值更小的会先发,发送时会使信道忙碌,此时根据这条规则,另一个人的计时会停止,从而达到一个抑制效果。简单滴说,就是计时会抑制传输
    • 计数值为0时,发送帧并等待确认
    • 如果得到确认,则完毕;否则从更大范围内选择随机值,重复上述步骤

    • 请求发送控制帧RTS:发送DATA帧前,向AP发送一个RTS,指明其传输DATA帧和确认帧需要的总时间,AP再广播一个CTS

    • 允许发送控制帧CTS:AP收到RTS后广播CTS,告诉它可以发货了,并且告诉其他人在约定时间内不要打扰

    • 因此空闲时,总的过程是

      • 等待DIFS~\to~    (发RTS)~\to~    等待SIFS~\to~    (发CTS)~\to~    等待SIFS~\to~    (发DATA)~\to~    等待SIFS~\to~    (发ACK)
      • 总时间花费:1\cdot DIFS+3\cdot SIFS + T_{\small\text{ACK+RTS+CTS+DATA}} 1DIFS+3SIFS+TACK+RTS+CTS+DATA
      • 事实上,DIFS = SIFS + 2*\mathrm{Slot Time} DIFS=SIFS+2SlotTime
  • 802.11帧:32字节

标准\OPT SIFS(\mu s) SIFS(μs) DIFS(\mu s) DIFS(μs) Slot\ Time Slot Time
802.11a 16 16 34 34 9 9
802.11b 10 10 50 50 20 20
802.11g 10 10 28~ 28  or~50  50 9~ 9  or~20  20

  • [ ] 作业
  • p5
  • p7

7. 多媒体网络

  • [ ] 时延抖动:因为路由器的排队时延是随机的,因此接收到的分组间间隔会发生抖动。
  • 编号:为每个块(如音频)编号
  • 时间戳:给每个块盖一个时间戳
  • 延迟播放:接收方只在接收了足够多的块后才开始播放jitter

8. 计算机网络中的安全

  • [ ] RSA加密算法
  • 选择两个大素数~p~  p  ~q  q ,令N = p\times q
    N=p×q
  • 根据欧拉函数~\varphi(x)~  φ(x)  的积性(即~\varphi(xy) = \varphi(x)\times\varphi(y)  φ(xy)=φ(x)×φ(y) ),有\begin{align}r &= \varphi(N)\\ &= \varphi(p)\times \varphi(q)\\ &= (p - 1)\times (q - 1)\\ &=N-(p+q)+1\end{align}
    r=φ(N)=φ(p)×φ(q)=(p1)×(q1)=N(p+q)+1
  • 选择~e<r~  e<r  且与~r~  r  互质,计算模~r~  r  ~e~  e  的逆元~d=e^{-1}  d=e1 ,即求得~d~  d  使得ed\equiv 1(\mathrm{mod}\ r)

    ed1(mod r)
    不妨设~k\times r + 1 = (ed)  k×r+1=(ed) ,根据欧拉定理,则对~\forall \,m\in N~  mN  (m^e)^d\equiv\left(m^r\right)^k\cdot m\ \equiv 1^k\cdot m\equiv m\ \mathrm{mod}\ N= m
    (me)d(mr)km 1kmm mod N=m

    • 注意到,如果我们将~N~  N  ~d~  d  公开,私有~e~  e  ,则别人可以任意使用m' = m^d\ \mathrm{mod}\ N
      m=md mod N
      来加密信息~m  m ,然后窝们拿到消息后再计算m=(m')^e\ \mathrm{mod}\ N
      m=(m)e mod N
      即可得到原文
    • 事实基础:只要~N~  N  足够大(平时的ssh之类默认使用2048位长度),居心不良者没有办法在有限时间(如10年)内对~N~  N  进行因式分解

  • [ ] 鉴别协议APx.0
AP版本 特点 破解(协议失败)情形
1.0 明文 hacker说一样的话就好了- -
2.0 明文,鉴别IP地址 hacker带上Alice的地址
3.0 使用口令 hacker破解(或截获)口令,冒充
3.1 加密口令 hacker截获并发送加密后的口令就行了呀
4.0 使用不重数, 共享对称密钥加解密之以鉴别
5.0 使用不重数,公私钥加解密 中间人攻击

附1. 2015年考试要点



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值