计算机网络课程笔记

文章目录

  • 版权声明
  • 1. 计算机网络概述
    • 1.1 基本概念
    • 1.2 网络结构
    • 1.3 网络核心
    • 1.4 网络性能
      • 1.4.1 衡量网络性能的指标
      • 1.4.2 时延
      • 1.4.3 丢包和吞吐量
    • 1.5 计算机网络的体系结构
      • 1.5.1 基本概念
      • 1.5.2 协议层次
      • 1.5.3 网路中各层的功能
    • 1.6 网络安全概述
  • 2. 应用层
    • 2.1 应用层协议原理
      • 2.1.1 网络应用的体系结构
      • 2.1.2 进程通信
    • 2.2 Web 和 HTTP
      • 2.2.1 HTTP 概述
      • 2.2.2 HTTP 报文格式
      • 2.2.3 Cookie 技术
      • 2.2.4 Web 缓存
    • 2.3 FTP
      • 2.3.1 FTP 概述
      • 2.3.2 FTP 报文
    • 2.4 Email
      • 2.4.1 Email 应用概述
      • 2.4.2 SMTP 协议
      • 2.4.3 邮件访问协议
    • 2.5 DNS
      • 2.5.1 DNS 提供的服务
      • 2.5.2 DNS 工作机理
      • 2.5.3 DNS 记录和报文
    • 2.6 P2P 应用
      • 2.6.1 P2P 概述
      • 2.6.2 文件分发
    • 2.7 Socket 编程
      • 2.7.1 Overview
      • 2.7.2 UDP Socket 编程
      • 2.7.3 TCP Socket 编程
  • 3. 运输层
    • 3.1 运输层服务
    • 3.2 多路复用与多路分解
    • 3.3 UDP
    • 3.4 可靠数据传输原理
      • 3.4.1 Overview
      • 3.4.2 构造可靠数据传输协议
      • 3.4.3 流水线可靠数据传输协议
    • 3.5 TCP
      • 3.5.1 Overview
      • 3.5.2 TCP 数据传输原理
      • 3.5.3 流量控制
      • 3.5.4 TCP 连接管理
    • 3.6 TCP 拥塞控制
      • 3.6.1 概念
      • 3.6.2 TCP 拥塞控制
  • 4. 网络层
    • 4.1 Overview
      • 4.1.1 转发和路由选择
      • 4.1.2 网络服务模型
    • 4.2 虚电路网络和数据报网络
      • 4.2.1 Overview
      • 4.2.2 虚电路网络
      • 4.2.3 数据报网络
    • 4.3 路由器工作原理
    • 4.4 IP 协议
      • 4.4.1 Overview
      • 4.4.2 IPv4 数据报格式
      • 4.4.3 IPv4 编址
        • 4.4.3.1 DHCP 协议
        • 4.4.3.2 网络地址转换
      • 4.4.4 ICMP 协议
      • 4.4.5 IPv6
    • 4.5 路由选择协议
      • 4.5.1 Overview
      • 4.5.2 层次路由选择
    • 4.6 因特网中的路由选择协议
      • 4.6.1 RIP
      • 4.6.2 BGP
    • 4.7 广播和多播路由选择
      • 4.7.1 Overview
      • 4.7.2 广播路由选择算法
      • 4.7.3 多播
  • 5. 链路层
    • 5.1 Overview
    • 5.2 差错检测和纠正
    • 5.3 多路访问链路和协议
      • 5.3.1 Overview
      • 5.3.2 信道划分协议
      • 5.3.3 随机接入协议
    • 5.4 交换局域网
      • 5.4.1 链路层寻址和 ARP 协议
      • 5.4.2 以太网
  • 6. 综合性面试题
  • References

版权声明

  • 计算机网络系列学习笔记来源于以下资料:
    • James F. Kurose 和 Keith W. Ross 的著作《计算机网络——自顶向下方法》第6版 [1];
    • 李全龙副教授和聂兰顺副教授在中国大学MOOC网站上所授课程计算机网络 [2];
  • 该系列笔记不以盈利为目的,仅用于个人学习、课后复习及科学研究;
  • 如有侵权,请与本人联系([email protected]),经核实后即刻删除;
  • 本文采用 署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0) 协议发布;

1. 计算机网络概述

1.1 基本概念

  • host/end systems:主机/端系统,通过通信链路和分组交换机实现互联;
    • 客户机;
    • 服务器;
  • ISP:Internet service provider;
  • LAN:Local Area Network,局域网;
  • RFC:Request for Comments,请求评议文档,定义公开协议;

1.2 网络结构

  • 计算机网络结构:
    • 网络边缘:
      • 主机/端系统:每个端系统有一个 IP 地址;
        • client-server 模型;
        • peer-peer (P2P) 模型;
      • 接入网:将端系统连接到边缘路由器的物理链路;
        • 带宽:bandwidth,bps;
        • 共享/独占;
    • 网络核心:分组转发设备;
  • 常见的接入网络:
    • DSL & ADSL:
      • DSL: Digital Subscriber Line,数字用户线,使用 FDM(频分复用),借助已有的电话线连接至中心局;
      • ADSL: Asymmetric Digital Subscriber Line,非对称数字用户线路;
        • 下行传输速率高于上行传输速率;
        • 用户独占接入网络;
    • HFC:Hybrid Fiber Coax,混合光纤同轴电缆网;
      • 下行传输速率高于上行传输速率;
      • 用户共享接入网络;
    • FTTH:光纤到户;
    • 无线接入网络:
      • 无线局域网:LANs,同一建筑物内;
      • 广域无线接入:通过电信运营商,接入范围约为几十公里;

1.3 网络核心

  • 网络核心的功能:路由(routing)、转发;
  • 网络核心解决的基本问题:数据交换,将数据从源主机送达目的主机;
    • 转发表:每台路由器具有一个转发表,将目的地址(或目的地址的一部分)映射为输出链路;
    • 路由选择协议:自动设置转发表;
  • 数据交换的类型:
    • 电路交换:独占频带资源,E.g. 电话网络;
      • 建立连接;
      • 通信;
      • 释放连接;
    • 报文交换:采用存储转发方式;
    • 分组交换:采用存储转发方式,需要拆分、重组报文;
      • 分组:将报文拆分为较小的数据包,并加上头部信息;
  • 分组交换相较于电路交换的优缺点:
    • 优点:
      • 简单可用,无需建立连接、拆除连接;
      • 适用于传输突发数据,共享频带资源,允许更多用户同时使用网络;
    • 缺点:可能产生拥塞,导致分组延迟和丢失,需要协议加以控制;
  • 分组交换相较于报文交换的优势:
    • 分组交换对路由器的缓存要求低;
    • 分组交换中,通信链路上的路由器可以并行转发分组,传输延迟更小;

1.4 网络性能

1.4.1 衡量网络性能的指标

  • 衡量网络性能的指标:
    • 速率;
    • 带宽:在计算机网络中,指数字信道的最高传输速率,单位为 bps;
    • 时延;
    • 时延带宽积;
    • 丢包率;
    • 吞吐量:路由器转发分组的速率;

1.4.2 时延

  • 流量强度: L a R \frac{La}{R} RLa
    • L:分组长度 L 比特;
    • a:分组到达路由器的速率,单位为分组/秒
    • R:传输速率;
  • 时延:
    • 处理时延:通常为微秒数量级;
      • 检查分组首部,确定输出链路;
      • 检查传输错误;
    • 排队时延;
      • 若流量强度趋近于0,则排队时延趋近于0;
      • 若流量强度趋近于1,则排队时延趋近于无穷;
      • 若流量强度趋大于1,则发生丢包;
    • 传输时延: 传 输 延 迟 = 分 组 长 度 链 路 带 宽 传输延迟=\frac{分组长度}{链路带宽} =
    • 传播时延: 传 播 延 迟 = 物 理 链 路 长 度 信 号 传 播 速 度 传播延迟=\frac{物理链路长度}{信号传播速度} =
  • 时延带宽积:
    • 时 延 带 宽 积 ( b i t ) = 传 播 时 延 ( s ) × 带 宽 ( b i t / s ) 时延带宽积(bit)=传播时延(s)\times带宽(bit/s) (bit)=(s)×(bit/s)
    • 含义:当第一个bit的信息到达信宿后,链路中所有信息的比特数,即链路中能容纳的比特数,又称以比特为单位的链路长度;

1.4.3 丢包和吞吐量

  • 丢包:
    • 路由器缓存容量有限,若分组到达已满队列,则发生丢包;
    • 由前序节点或源节点重发,也可能不重发;
    • 丢 包 率 = 丢 包 数 已 发 分 组 总 数 丢包率=\frac{丢包数}{已发分组总数} =
  • 端到端吞吐量:发送端与接收端之间的传输速率,取决于瓶颈链路;
    • 瞬时吞吐量;
    • 平均吞吐量;

1.5 计算机网络的体系结构

1.5.1 基本概念

  • ISO:International Organization for Standardization,国际标准化组织;
  • OSI:Open System Interconnect,开放系统互连模型,是一种分层网络体系结构模型;
  • PDU:Protocol Data Unit,协议数据单元,OSI 模型中的每一层都将建立协议数据单元,附加到数据中;
  • SAP:Service Access Point,服务访问点,同一系统中相邻层实体间通过接口交换原语,指定服务内容;
  • 协议栈:各层所有协议的总称;
  • 各层中分组的称谓:
    • 报文:message,应用层的信息分组;
    • 报文段:segment,运输层的信息分组;
    • 数据报:datagram,网络层的信息分组;
    • 帧:frame,链路层的分组;
  • 分组中具有两种类型的字段:
    • 首部字段;
    • 有效载荷字段;

1.5.2 协议层次

  • 5层因特网协议栈:
    • 应用层:支持各种网络应用,协议是应用中的一个重要部分;
      • DNS:域名解析;
      • FTP:2个端系统间文件传输;
      • HTTP:Web 文档的请求和传送;
      • SMTP:电子邮件报文传输;
    • 运输层:进程间数据传输,TCP、UDP;
    • 网络层:源主机到目的主机的数据分组路由与转发,IP协议、路由选择协议;
    • 链路层:相邻网络元素(主机、交换机、路由器)的数据传输;
    • 物理层:比特传输;
  • 7层 OSI 模型:
    • 应用层;
    • 表示层:使通信的应用程序能解释交换数据的含义,提供数据压缩、数据加密和数据描述;
    • 会话层:提供数据交换定界和同步功能;
    • 运输层;
    • 网络层;
    • 数据链路层;
    • 物理层;

1.5.3 网路中各层的功能

  • 数据链路层的功能:负责节点间的数据传输;
    • 组帧;
    • 物理寻址;
    • 流量控制;
    • 差错控制;
    • 访问(接入)控制;
  • 网络层的功能:从源主机到目的主机数据分组交付;
    • 逻辑寻址;
    • 路由;
    • 分组转发;
  • 运输层的功能:端到端之间完整的报文传输;
    • 分段与重组;
    • SAP 寻址;
    • 连接控制;
    • 流量控制;
    • 差错控制;
  • 会话层的功能:
    • 对话控制;
    • 同步;
  • 表示层的功能:两个系统间交换信息的语法和语义;
    • 数据表示转换;
    • 加密/解密;
    • 压缩/解压;
  • 应用层的功能:支持用户通过用户代理或网络接口使用网络服务;

1.6 网络安全概述

  • 网络攻击类型:
    • 入侵用户设备;
      • 病毒:需要某种形式的用户交互,方可感染用户设备;
      • 蠕虫:无需明显的用户交互,即可感染用户设备;
    • 攻击服务器和网络基础设施:
      • 僵尸网络:由众多受害设备组成,被用于发起 DDoS;
      • DDoS:分布式拒绝服务攻击;
        • DoS:Denial-of-Service (DoS) attack,拒绝服务攻击;
    • 嗅探分组:
      • 分组嗅探器:一台被动的接收机,用于记录各个分组的副本;
    • 伪装身份:
      • IP 哄骗:将具有虚假源地址的分组注入因特网;
      • 使用端点鉴别技术加以防范;

2. 应用层

2.1 应用层协议原理

2.1.1 网络应用的体系结构

  • 网络应用的体系结构:
    • 客户机/服务器结构:Client-Server (C/S),客户机之间不直接通信;
    • P2P结构:对等体系结构,端系统之间可直接通讯;
      • 优点:不需要庞大的服务器基础设施和服务器带宽;
      • 缺点:不易管理;
    • 混合结构:E.g. 服务器跟踪客户机 IP,客户机之间直接交换报文;

2.1.2 进程通信

  • 进程间通信:
    • 同一主机上不同进程间通信:操作系统提供进程间通信机制;
    • 不同主机上不同进程间通信:报文交换,使用 Socket 发送/接收消息;
  • 进程的标识符:IP 地址 + 端口号;
    • IP 地址:4字节,用于寻址主机;
    • 端口号:16 bits;
      • 为每个 Socket 分配1个端口号;
      • 周知端口号:well-known port number,0-1023,保留给常见的应用层协议使用;
  • 常见端口号:
    • FTP:21;
    • HTTP:80;

2.2 Web 和 HTTP

2.2.1 HTTP 概述

  • Web:World Wide Web,万维网,应用层协议为 HTTP;
    • 网页包含多个对象;
    • 网页间相互链接;
  • HTTP 的实现:
    • 客户程序:Web 浏览器实现 HTTP 的客户端;
    • 服务器程序:Web 服务器实现 HTTP 的服务端;
    • 常见的 Web 服务器:
      • Apache;
      • Microsoft Internet Information Server;
  • Web 页面:由对象组成,一个基本 HTML 文件和若干个引用对象;
    • 对象:E.g. HTML 文件、JPEG 图片、视频片段……
    • 对象寻址:URL (Uniform Resource Locator),统一资源定位器,E.g. http://www.someSchool.edu/someDepartment/picture.gif;
      • 主机名:www.someSchool.edu;
      • 路径名:/someDepartment/picture.gif;
  • HTTP 协议:Hyper Text Transfer Protocol,超文本传输协议;
    • 无状态协议:服务器不保存任何客户信息;
    • 请求/响应交互模式;
  • HTTP 连接的类型:默认使用持续连接,但也可配置为使用非持续连接;
    • 非持续连接:HTTP 1.0 版本;
      • 每个 TCP 连接至多允许传输一个对象;
      • 缺点:若有多个对象需要传输,则需多次建立 TCP 连接,时间开销大;
    • 持续连接:HTTP 1.1 版本,每个 TCP 连接允许传输多个对象;
      • 无流水线机制的持久性连接:
        • 仅当客户端收到前一个响应后,才发送新的请求;
        • 每个被引用对象耗时1 RTT;
      • 流水线机制的持久性连接:
        • 客户端遇到一个引用对象,则立即发出请求;
        • 理想状态下,收到所有引用对象仅耗时1 RTT;
  • 面试题 HTTP 1.0 协议和 HTTP 1.1 协议的区别?
    • 长连接和流水线机制:HTTP 1.1 支持长连接和流水线机制,可在1个 TCP 连接上传送多个 HTTP 请求,减小了频繁建立连接产生的开销;
    • 节省带宽:HTTP 1.1 允许用户传输对象中的部分内容,支持断点续传;
    • host 域:HTTP 1.1 具有 host 域,允许多个虚拟主机共享同一 IP;
    • 错误状态响应吗:HTTP 1.1 增加了24个错误状态响应码;
    • 缓存处理:HTTP 1.1 引入更多缓存策略;
  • 非持续连接的响应时间: 响 应 时 间 = 2 R T T + 文 件 传 输 时 间 响应时间=2RTT+文件传输时间 =2RTT+
    • RTT:Round Trip Time,往返时间,一个短分组在客户机和服务器间往返一次所需时间;
    • 建立 TCP 连接:1 RTT;
    • 客户向服务器发送确认消息并发送 HTTP 请求、接收到 HTTP 响应消息的第一个字节:1 RTT;
    • 响应消息中的文件传输时间;

2.2.2 HTTP 报文格式

  • HTTP 报文:
    • 请求报文;
    • 响应报文;
  • HTTP 请求报文格式:
    • 请求行:HTTP 请求报文的第一行;
      • 面试题 HTTP 请求报文中方法字段取值:
        • PUT:增,将对象上传到 Web 服务器;
        • DELETE:删,将对象从 Web 服务器上删除;
        • POST:改,用户提交表单,E.g. 使用搜索引擎搜索关键词;
        • GET:查,大部分 HTTP 请求报文使用 GET 方法,也可对 HTML 表单使用 GET 方法,输入数据包含在 URL 中;
        • HEAD:测试,类似于 GET 方法,服务器使用一个 HTTP 报文响应,但不返回请求对象,便于开发者调试;
      • URL 字段:请求对象的标识;
      • HTTP 版本字段;
      • entity body:使用 POST 方法时,entity body 中存放表单中的值;
    • 首部行:header line;
  • 面试题 GET 和 POST 的区别:
    • GET:
      • 参数放在 URL 中,在一个 TCP 数据包中发送 HTTP header 和数据;
      • 只能进行 URL 编码;
      • 参数被完整保留到浏览器历史记录里;
      • 在 URL 中传递的参数长度有限,只接受 ASCII 字符;
      • GET 的参数暴露在 URL 中,不能传递敏感信息;
    • POST:
      • 参数放在请求体中,产生两个 TCP 数据包,浏览器先发送 header,收到响应后再发送数据;
      • 支持多种编码方式;
      • 参数不会被保留;
      • 参数的长度和数据类型无限制;
  • HTTP 响应报文格式:
    • 状态行;
      • 协议版本;
      • 状态码;
      • 状态信息;
    • 首部行;
    • entity body:被请求的对象内容;
  • HTTP 响应状态代码:
    • 面试题 解释 HTTP 请求中状态码304的含义?
状态码 相应短语 含义
200 OK
301 Moved Permanently 请求的对象已被永久转移,新的 URL 定义在响应报文的Location:首部行中
304 Not Modified 自上次请求后,文件未被修改
400 Bad Request 服务器无法理解该请求
404 Not Found
505 HTTP Version Not Supported
  • 面试题 HTTP 和 HTTPS 之间的差别?
    • 两者的连接方式和所用端口号不同;
    • HTTP 运行在 TCP 上,明文传输,HTTPS 运行在 SSL 上,加密传输;
    • HTTPS 需要向 CA 申请证书(付费);
    • HTTPS 可防止运营商劫持;

2.2.3 Cookie 技术

  • Cookie 技术:用于辨别用户身份,将数据加密后存储在用户本地;
  • Cookie 组件:
    • HTTP 响应消息的 Cookie 首部行;
    • HTTP 请求消息的 Cookie 首部行;
    • 保存在客户机上的 Cookie 文件,由浏览器管理;
    • Web 服务器的后端数据库;

2.2.4 Web 缓存

  • Web 缓存器/代理服务器:架设在 origin server 和 client 之间,既充当客户端,又充当服务器;
    • 缩短响应时间;
    • 减少接入链路到因特网的通信量,从而降低费用;
  • CDN:Content Distribution Network,内容分发网络;
    • 由多个地理上分散的缓存器组成;
    • 实现大量流量本地化;
  • 条件 GET 方法:Web 缓存器向初始服务器发送条件 GET 方法,判断对象自指定日期后是否被修改;

2.3 FTP

2.3.1 FTP 概述

  • FTP:File Transfer Protocol,文件传输协议;
    • 运输层协议:TCP;
    • 使用2个并行的 TCP 连接:
      • 控制连接:传输控制信息,持续连接;
      • 数据连接:传输数据信息,非持续连接;
  • 带外传送和带内传送:out-of-band,in-band;
    • 带外传送:控制信息和数据信息通过不同 TCP 连接传输,E.g. FTP;
    • 带内传送:控制信息和数据信息通过同一个 TCP 连接传输,E.g. HTTP;
  • FTP 和 HTTP 的异同:
    • 相同点:均为文件传输协议;
    • 不同点:
      • FTP: 使用2个并行的 TCP 连接;
      • HTTP:使用1个 TCP 连接;

2.3.2 FTP 报文

  • FTP 协议命令:
    • retrieve:vt. 检索,取回;
    • store:vt. 储存;n.商店,仓库;
命令 含义
USER username: 向服务器发送用户标识
PASS password: 向服务器发送用户口令
LIST: 请求服务器返回当前目录中的文件列表
RETR filename: 在当前目录中检索并返回该文件
STOR filename: 在当前目录中上传该文件
  • FTP 状态码:
状态码 相应短语
331 Username OK, Password required
125 Data connection already open; transfer starting
425 Can’t open data connection
452 Error writing file

2.4 Email

2.4.1 Email 应用概述

  • Email 应用的构成组件:
    • 邮件客户端:;
    • 邮件服务器;
    • SMTP 协议:Simple Mail Transfer Protocol,简单邮件传输协议;

2.4.2 SMTP 协议

  • SMTP 协议:;
    • 传输层协议:TCP,持续连接;
    • 传输的阶段:握手、消息传输、关闭;
    • 命令/响应交互模式;
    • 邮件报文仅能用7位 ASCII 码表示,如需传送多媒体数据,则应将二进制多媒体数据编码为 ASCII 码;
    • SMTP 一般不使用中间邮件服务器发送邮件,TCP 连接直接将收发双方的邮件服务器相连;
  • SMTP 和 HTTP 的区别:
    • 协议类型:
      • SMTP:是一个推协议(push protocol);
      • HTTP:是一个拉协议(pull protocol);
    • 编码格式:
      • SMTP:报文使用7位 ASCII 编码;
      • HTTP:无该要求;
    • 报文格式:
      • SMTP:将所有对象放在一个报文中;
      • HTTP:将每个对象放在对应的响应报文中;

2.4.3 邮件访问协议

  • 为什么需要邮件访问协议:
    • SMTP:
      • 将邮件从发送方的用户代理传送到发送方的邮件服务器;
      • 将邮件从发送方的邮件服务器传送到接收方的邮件服务器;
      • 接收方不能使用 SMTP 协议取回报文,因为取报文是一个拉操作,而SMTP 是一个推协议;
    • 邮件访问协议:接收方的用户代理从邮件服务器中获取邮件;
      • POP3:Post Office Protocol-Version 3;
      • IMAP:Internet Mail Access Protocol;
      • 基于 Web 的电子邮件;
SMTP
SMTP
Mail Access Protocol
sender
Sender mail server
Recipient mail server
Recipient
  • POP3:
    • 授权阶段:用户代理以明文形式向用户邮件服务器发送用户名和密码;
    • 事务处理阶段;
    • 更新阶段;
  • POP3 的用户代理可选配置:
    • 下载并删除邮件,将邮件存储在本地主机上的邮件文件夹中;
    • 下载并保存邮件;
  • IMAP:
    • 在远程服务器上建立邮件文件夹,并保存邮件;
    • 维护用户状态信息;
    • 允许用户代理获取报文组件,E.g. 仅读取报文首部;
  • 基于 Web 的电子邮件:
    • 用户代理为浏览器;
    • 邮件访问协议为 HTTP;
    • 浏览器(发送方的用户代理)至发送方的邮件服务器亦使用 HTTP;

2.5 DNS

2.5.1 DNS 提供的服务

  • 主机的标识方法:

    • 主机名;
    • IP 地址;
  • DNS:Domain Name System,域名系统;

    • DNS:应用层协议;
    • 运输层协议:UDP;
    • DNS 功能:
      • 域名解析:实现域名和 IP 地址之间的映射;
      • 主机别名:一台主机可以有一个规范主机名和若干个别名;
      • 邮件服务器别名;
      • 负载分配:繁忙的站点被冗余分布在多个不同的端系统上,DNS 将主机名依次映射到各个 IP 上;

2.5.2 DNS 工作机理

  • 集中式 DNS 的缺陷:
    • 单点故障;
    • 通信容量;
    • 用户时延(远距离的集中式数据库):若查询用户距离 DNS 服务器较远,则时延较长;
    • 不易维护、扩展;
  • DNS 层次结构:
    • 根服务器:本地 DNS 服务器无法解析域名时,则访问根服务器;
    • 顶级域名服务器:E.g. com、org、edu;
    • 权威域名服务器;
  • 本地 DNS 服务器:严格意义上不属于 DNS 层次结构;
    • 每个 ISP 均有一个本地 DNS 服务器;
    • 主机需先向本地 DNS 服务器发送查询报文,再由本地 DNS 服务器依次向 DNS 层次结构中的各服务器发送查询报文;
    • DNS 缓存:缓存主机名和 IP 地址之间的映射关系;

2.5.3 DNS 记录和报文

  • RR:Resource Record,资源记录,即主机名到 IP 地址的映射;
    • 实现 DNS 分布式数据库的所有 DNS 服务器存储了 RR;
    • RR 以4元组的形式表示:(Name, Value, Type, TTL);
      • TTL:RR 应从缓存中删除的时间;
      • 不同的 Type 值对应不同类型的记录,参见 [1] 中 Page 94第3-17行;
  • DNS 报文格式:参见 [1] 中 Page 94-95;

2.6 P2P 应用

2.6.1 P2P 概述

  • 基于 P2P 体系结构的应用:
    • 文件分发;
    • 分布式散列表:一种基于 P2P 结构的数据库;
      • 使用散列函数将各对等方的原始名称转换为标识符;
      • 各对等方均存储若干个键值对;
  • P2P 索引技术:
    • 集中式索引:单点失效、瓶颈问题;
    • 泛洪查询:大量消耗网络带宽,导致网络拥塞;
      • 分布式架构,每个节点仅对该节点共享的文件进行索引;
      • 查询消息通过已有的 TCP 连接发送给相邻节点;
    • 层次式覆盖网络:介于集中式索引和泛洪查询之间;
      • 节点和超级节点之间存在 TCP 连接;
      • 超级节点之间存在 TCP 连接;
      • 超级节点跟踪子节点的内容,并为子节点提供索引;

2.6.2 文件分发

  • BitTorrent:一种流行的应用于文件分发的 P2P 协议;
    • torrent,n. 激流,洪流;
    • torrent:参与一个特定文件传输的所有对等方组成的集合;
    • 每个 torrent 具有一个 tracker(追踪器),用于跟踪正在参与 torrent 的所有对等方;
    • 所有对等方之间上传、下载等长度的文件块;
    • 最稀缺优先:rarest first,优先下载、上传最稀缺的文件块;

2.7 Socket 编程

2.7.1 Overview

  • Socket API:套接字接口;
    • socket,n. 插座;
    • 介于应用层和传输层之间;
    • 源地址和目的地址:
      • IP 地址:区分主机;
      • 端口号:每个进程可能有一个或多个 Socket,每个 Socket 都会被分配一个端口号;

2.7.2 UDP Socket 编程

  • 相关要求及源代码参见 [1] 中的2.7.1;

2.7.3 TCP Socket 编程

  • TCP 连接过程:
    • serverSocket:欢迎套接字,客户通过3次握手,通过欢迎套接字与服务器交互,服务器新生成一个连接套接字,供某个客户专用;
    • connection Socket:客户机和服务器之间通过连接套接字收发数据;
  • 相关要求及源代码参见 [1] 中的2.7.2;

3. 运输层

3.1 运输层服务

  • 运输层和网络层提供的服务:
    • 运输层:提供不同主机上进程之间的逻辑通信机制;
      • 多路复用、多路分用;
      • 运输层协议仅运行在端系统上,中间路由器上不实现运输层协议,不识别、不处理运输层加在应用层报文上的信息;
      • 运输层提供的部分服务内容受到网络层限制:E.g. 时延保障、带宽保障;
      • 运输层可提供一些网络层不提供的服务:E.g. 可靠数据传输、数据加密;
    • 网络层:提供主机之间的逻辑通信机制;
  • 运输层协议提供的服务:
    • 面向连接的服务:进程通信前有握手过程;
      • 客户机-服务器进程间需要建立连接;
      • TCP 连接是全双工的连接;
    • 可靠数据传输:防数据丢失;
    • 流量控制:发送方的发送速度不超过接收方的处理能力;
      • 带宽敏感的应用:对吞吐量需求有下限;
      • 弹性应用:根据当前情况利用吞吐量;
    • 拥塞控制:
      • 当网络负载过重时,限制发送方的速度;
      • 限制每个 TCP 连接,使其公平共享带宽;
    • 时延;
    • 安全性:加密、数据完整性校验、端点鉴别;
      • TCP、UDP 均无数据加密机制;
      • SSL:Secure Socket Layer,安全套接字层,作为 TCP 的加强版本,提供进程间安全性服务,包括加密、数据完整性校验、端点鉴别;
  • TCP 和 UDP:
    • TCP:按发送的顺序交付数据;
    • UDP:报文段可能乱序到达;
    • UDP 提供的最低限度的服务:
      • 数据交付;
      • 差错检查;
传输服务 TCP UDP
面向连接的服务 T F
可靠数据传输 T F
流量控制 T F
拥塞控制 T F
时延保障 F F
最小带宽保障 F F
  • 常见应用的运输层协议:
应用 应用层协议 运输层协议
电子邮件 SMTP TCP
Web HTTP TCP
文件传输 FTP TCP
远程终端访问 Telnet TCP
域名解析 DNS UDP
流式多媒体 常使用专用协议 UDP/TCP
因特网电话 常使用专用协议 UDP/TCP

3.2 多路复用与多路分解

  • 多路复用、多路分解:主机间交付扩展到进程间交付;
    • 多路复用:运输层从多个 Socket 接收数据,为数据块封装上首部信息,生成报文段,交给网络层;
    • 多路分用:运输层根据首部信息,将接收到的 Segment 定向到对应的 Socket;
  • Socket 标识:
    • UDP:无连接的分用;
      • 使用二元组识别套接字:(目的IP地址,目的端口号)
      • 若两个报文段的源 IP 地址和源端口号不同,但目的IP地址和目的端口号相同,将被定向到相同的 Socket;
    • TCP:面向连接的分用;
      • 使用四元组识别套接字:(源IP地址,源端口号,目的IP地址,目的端口号)
      • 若两个报文段的源 IP 地址和源端口号不同,但目的IP地址和目的端口号相同,将被定向到不同的 Socket,因为 TCP 提供面向连接的服务,所建立的连接仅供2个特定的 Socket 交互;

3.3 UDP

  • UDP:User Datagram Protocol,用户数据报协议;
    • 网络层协议:IP 协议;
    • 校验和:checksum,提供简单的错误校验,但无法恢复错误;
    • 可在应用层加入部分 UDP 不提供的服务:增加可靠性机制,实现可靠数据传输;
  • UDP 的优点:适用于对速度要求高,但对数据丢失不明感的应用;
    • UDP 首部开销小;
    • 无拥塞控制机制,便于应用控制发送时间和速率;
    • 无连接的服务,没有建立连接产生的时间开销,延时少;
    • 无连接的服务,无需维护连接状态,可支持更多用户;

3.4 可靠数据传输原理

3.4.1 Overview

  • FSM:Finite-State Machine,有限状态机;
  • rdt:Reliable Data Transfer,可靠数据传输;
  • udt:Unreliable Data Transfer,不可靠数据传输;

3.4.2 构造可靠数据传输协议

  • rdt1.0:经完全可靠信道的可靠数据传输;
    • 假定分组按发送顺序交付;
  • rdt2.0:经具有比特差错信道的可靠数据传输;
    • 假定分组按发送顺序交付;
    • rdt2.0是一个停-等协议:stop-and-wait:
      • ACK:肯定确认;
      • NAK:否定确认;
      • 发送端在接收到反馈信息之前,处于等待状态,期间不会发送新的数据;
  • ARQ:Automatic Repeat reQuest,自动重传请求;
    • 差错检测;
    • 接收方反馈;
    • 重传;
    • 注意:若反馈信号无法准确传递至发送方,则发送方重新发送该数据报,为避免出现冗余的数据报,需要在各个数据报中加入序号;
  • rdt3.0:经具有比特差错的丢包信道的可靠数据传输;
    • 超出设定时间范围后,发送方重传数据报;

3.4.3 流水线可靠数据传输协议

  • 为什么引入流水线可靠数据传输协议:rdt3.0是一个停等协议,发送方大部分时间处于等待状态,效率低下;
  • 流水线协议中的差错恢复方法:
    • 回退N步:GBN,Go-Back-N,亦称滑动窗口协议;
      • 累计确认:若发送方收到序号为 n 的 datagram 对应的 ACK,则表明序号小于或等于 n 的 datagram 均已被接收方正确接收;
      • 接收方丢弃所有失序 datagram,发送方重传;
    • 选择重传:SR,Selective Repeat;
      • 若滑动窗的窗口过大,则无法判断一个 datagram 是新的 datagram 还是重传的 datagram;
      • 窗口长度必须小于或等于序号空间大小的二分之一;

3.5 TCP

3.5.1 Overview

  • TCP:Transmission Control protocol,传输控制协议;
    • TCP 连接提供全双工服务;
    • TCP 连接为单播通信;
  • MTU:Maximum Transmission Unit,最大传输单元,即最大链路层帧长度;
  • MSS:Maximum Segment Size,最大报文段长度,除运输层协议首部之外的长度,即封装在 Segment 中应用层数据的长度;
    • MSS 受到 MTU 的限制;
  • 报文段的序号:
    • 将报文按字节编号,按 MSS 分割报文,取 Segment 中第一个字节的编号作为报文段的序号;
    • 注意:不是按照报文段的排列编号;

3.5.2 TCP 数据传输原理

  • 超时/重传机制:rdt、TCP 均使用该机制处理 Segment 丢失;
  • TCP 协议可视为 GBN 和 SR 的混合体;

3.5.3 流量控制

  • 流量控制和拥塞控制的区别:
    • 流量控制:限制发送方的发送速率,使其与接收方的读取速率匹配,避免接收方的缓存溢出;
    • 拥塞控制:限制发送方的发送速率,避免 IP 网络拥塞;
  • 流量控制的实现方式:发送方维护一个名为接收窗口的变量,记录接收方缓存的可用空间大小;

3.5.4 TCP 连接管理

  • TCP 报文中的部分标志字段:
    • ACK;
    • SYN:Synchronize Sequence Numbers,同步序列编号;
    • FIN:用于关闭 TCP 连接;
    • RST:Reset,重置;
  • 面试题 三次握手:即建立 TCP 连接,前两个 Segment 中不含有效载荷(即不含应用层数据),第三个报文段中可包含有效载荷;
    • Step 1:客户端向服务器端发送一个 Segment,不含有效载荷;
      • 首部标志位 SYN=1,因此该 Segment 被称为 SYN Segment;
      • 序号字段:客户端随机选择一个初始序号;
    • Step 2:服务器端向客户端发送一个 Segment,不含有效载荷;
      • 首部标志位 SYN=1、ACK=1,因此该 Segment 被称为 SYN ACK Segment;
      • 序号字段:由服务器端选择;
      • 确认号字段:将 SYN Segment 中的序号字段加一;
    • Step 3:客户端向服务器端发送一个 Segment,可携带有效载荷;
      • 首部标志位 SYN=0、ACK=1;
      • 确认号字段:将 SYN ACK 的序号字段加一;
  • 面试题 四次挥手:客户机和服务器均可选择关闭 TCP 连接;
    • Step 1:客户端向服务器发送1个 Segment;
      • FIN=1;
      • 序号字段;
    • Step 2:服务器向客户端发送1个确认 Segment;
      • ACK=1;
      • 序号字段;
      • 确认号字段:
      • 注意:此时客户端不再向服务器发送数据,但仍可接收来自服务器的数据;
    • Step 3:服务器向客户端发送1个 Segment;
      • FIN=1;
      • 序号字段;
      • 确认号字段;
    • Step 4:客户端向服务器发送1个确认 Segment;
      • ACK=1;
      • 序号字段;
      • 确认号字段:
    • 客户端等待 2 MSL (Maximum Segment Lifetime)后,关闭 TCP 连接,释放所有相关资源;
      • 该步骤用于防止 Step4 中的 ACK Segment 丢失;
      • 若 Step4 中的 ACK Segment 丢失,则服务器将向客户端重新发送 Step 3 中的 Segment,此时客户端向服务器重新发送 Step 4 中的 Segment;
  • 面试题 简要说明 SSL 4次握手?
    • Step 1:客户端向服务器发送报文,包括客户端生成的1个随机数(Client random)、客户端支持的加密方法;
    • Step 2:服务器向客户端发送报文,包括服务器生成的1个随机数(Server random)、1种被服务器选择的加密方法、服务器证书、非对称加密公钥(便于客户端加密 Premaster secret);
    • Step 3:确认服务器证书合法后,客户端向服务器发送报文,客户端生成第3个随机数(Premaster secret),使用 Step 2 中服务器的公钥和约定的加密方法对报文加密;
    • Step 4:服务器使用私钥将报文解密后,可得第3个随机数,根据3个随机数(Client random、Server ransom、Premaster secret),可求得对称加密密钥,服务器向客户端发送报文,告知客户端此后的 HTTP 报文使用该密钥和约定的加密方法加密数据;
  • 面试题 若建立连接后,客户端发生故障,应如何处理?
    • TCP 连接中,服务器维护1个定时器,每当服务器收到来自客户端的报文,则重置该定时器;
    • 若定时器溢出后,服务器仍未收到来自客户端的报文,则向客户端发送探测报文段;
    • 若发送多个探测报文段均无响应,服务器将关闭 TCP 连接;
  • 面试题 能否使用2次握手取代3次握手?
    • 不能;
    • 3次握手可以让双方均确认连接已建立;
    • 若使用2次握手,则可能发生死锁;
      • 客户端向服务器请求建立连接;
      • 服务器向客户端发送确认报文段,假设该报文段丢失;
      • 服务器将认为连接已建立,可向客户端发送报文;
      • 客户端无法判断连接是否已建立,拒不接收来自服务器的报文;
      • 服务器发送报文后,无法收到对应的确认报文,引发超时重传,从而形成死锁;
  • 面试题 为什么建立 TCP 连接需要3次握手,而关闭 TCP 连接需要4次握手?
    • 建立 TCP 连接过程中,第2次握手时,将 SYN 和 ACK 放在1个报文段中发送;
      • ACK:用于确认客户端的请求;
      • SYN:用于同步序列编号;
    • 关闭 TCP 连接过程中,服务器的 ACK、FIN 不得不使用2个 Segment 发送;
      • ACK:确认已收到来自客户端的 Segment,但服务器可能仍有部分数据处于发送状态,无法立即关闭连接;
      • FIN:服务器中的 Segment 均已发送完成,将关闭连接;
  • 若接收到的 Segment 中包含的端口号或源 IP 地址,在服务器上无对应的 Socket,则不同的运输层协议给出不同的回应;
    • TCP:服务器向客户端发送1个重置 Segment,其中 RST 标志位被置为1;
    • UDP:服务器向客户端发送1个 ICMP Segment;
  • 面试题 为什么 TCP 能实现可靠数据传输?
    • 三次握手、四次挥手;
    • 超时重传;
    • 借助滑动窗口实现流量控制;
    • 拥塞控制;

3.6 TCP 拥塞控制

3.6.1 概念

  • cwdn:Congestion window,拥塞窗口,发送方在每个 RTT 内,向接收方发送 cwdn 个字节的数据;
  • ssthresh:Slow start threshold,慢启动阈值;
    • 当发生丢包时,将当前拥塞窗口值的一半作为慢启动阈值;
  • AIMD:Additive-Increase,Multiplicative-Decrease,加性增,乘性减;
    • 每个 RTT 内,拥塞窗口的大小增加1MSS;
    • 发生拥塞后,拥塞窗口大小减半;
  • 2种类型的拥塞控制方法:TCP 使用端到端拥塞控制;
    • 端到端拥塞控制:网络层不为运输层的拥塞控制提供显式支持,端系统通过观察网络行为(E.g. 分组丢失、时延)来判断拥塞状态;
    • 网络辅助的拥塞控制:
      • 路由器向发送方提供拥塞状态信息;
      • 路由器对途经该路由器的分组做标记,接收方收到被标记的分组后,向发送方发送拥塞信息;

3.6.2 TCP 拥塞控制

  • TCP 感知网络拥塞的方式:即感知丢包的方式;

    • 某个特定的 Segment 对应的 ACK 超时;
    • 收到3个冗余的 ACK(即一个初始 ACK 和3个冗余 ACK);
      • 若收到2个冗余的 ACK,则可能是报文乱序;
      • 若收到3个冗余的 ACK,则可能是 Segment 丢失;
      • 若收到4个冗余的 ACK,则更可能是 Segment 丢失;
      • 因此在收到3个冗余的 ACK 后,可初步判定为 Segment 丢失,即发生网络拥塞;
    • 注意:
      • 超时:表明网络拥塞程度较重;
      • 收到3个冗余 ACK:表明网络还能传输部分 Segment;
  • TCP 调节传输速率的方式:

    • 调整拥塞窗口的大小,加性增,乘性减;
    • 慢启动;
  • TCP 拥塞控制算法的组成部分:

    • 慢启动;
    • 拥塞避免;
    • 快速恢复(可选);
  • 慢启动:

    • cwdn 的初始值设置为1个 MSS;
    • 发送方每收到一个 Segment 的 ACK,即将 cwdn 增加1个 MSS,E.g. 1、2、4、8……;
    • 慢启动阶段,发送速率以指数增长;
  • 超时重传和快速重传:

    • 超时重传:若定时器溢出,则判定某个 Segment 丢失,重传该 Segment;
    • 快速重传:若发送方接收到3个冗余的 ACK,则判定某个 Segment 丢失,无需等待定时器溢出,重传该 Segment;
  • 快速恢复:

    • 收到3个冗余的 ACK 后,将慢启动阈值设置为当前拥塞窗口的一半;
    • 将拥塞窗口值加3,重传丢失的 Segment;
      • 收到3个冗余的 ACK,表明有3个 Segment 已到达接收方的缓存中,不再占用网络资源,因此可将拥塞窗口加3个 MSS;
    • 若发送方继续收到冗余的 ACK,则每收到一个冗余的 ACK,即将拥塞窗口加1个 MSS;
    • 当发送方接收到新 Segment 对应的 ACK 时,发送端将拥塞窗口降低为步骤一中的值,此后进入拥塞避免状态;
  • 面试题 简述拥塞控制模式?

    • 若拥塞窗口小于慢启动阈值,则处于慢启动状态,拥塞窗口指数增长;

    • 若拥塞窗口大于慢启动阈值,则处于拥塞避免状态,拥塞窗口线性增长;

    • 若收到3个冗余 ACK,

      • 则将慢启动阈值设置为当前拥塞窗口大小的一半;

      • 拥塞窗口值减半;

      • 每个 RTT 内,拥塞窗口加1 MSS(拥塞窗口大小线性增长);

    • 若发生超时:

      • 立即将慢启动阈值设置为当前拥塞窗口大小的一半;
      • 令拥塞窗口大小为1 MSS;
      • 发送方每收到一个 Segment 的 ACK,即将拥塞窗口增加1个 MSS(拥塞窗口大小指数增长);
      • 当拥塞窗口大小达到慢启动阈值后,再线性增长;

4. 网络层

4.1 Overview

4.1.1 转发和路由选择

  • 网络层的功能:
    • 转发:在单一路由器中,从一条入链路到一条出链路的传送;
    • 路由选择:决定从发送方到接收方的最优路径;
    • 建立连接;
  • 转发表:每台路由器具有1个转发表,存储 datagram 首部值和输出链路之间的对应关系;
    • 即 VC 号和输入输出链路之间的对应关系;
  • 分组交换机:
    • 链路层交换机:
      • 常用于接入网;
      • 实现2个层次:物理层和链路层;
      • 不能识别 IP 地址,但能识别以太网地址;
      • 基于链路层 frame 首部转发;
    • 路由器:
      • 常用于网络核心;
      • 实现3个层次:物理层、链路层和网络层;
      • 基于网络层 datagram 首部转发;

4.1.2 网络服务模型

  • 网络层提供的服务:
    • 确保交付;
    • 具有时延上界的确保交付;
    • 有序分组交付;
    • 带宽保障:确保最小带宽,若发送速率低于最小带宽,则 datagram 不丢失;
    • 确保最大时延抖动:相邻 datagram 之间的时间间隔,在传输过程中的变化不超过某个阈值;
    • 安全保障:数据加密、数据完整性校验、源鉴别;
  • 不同的网络体系结构:
    • 因特网;
    • CBR ATM:Constant Bit Rate,恒定比特率 ATM 网络服务;
    • ABR ATM:Available Bit Rate,可用比特率 ATM 网络服务;
      • 若网络中有空闲资源,则发送方可使用比最小速率更高的速率发送数据;
      • ABR ATM 为发送方提供反馈信息(拥塞指示),以便发送方调整发送速率;
网络体系结构 服务模型 带宽保障 不丢包 有序 定时 拥塞指示
因特网 尽力而为 F F F F
ATM CBR 保证恒定速率 T T T 不会出现拥塞
ATM ABR 保证最小速率 F T F T

4.2 虚电路网络和数据报网络

4.2.1 Overview

  • 运输层和网络层提供的服务:
    • 运输层:提供不同主机上进程之间的逻辑通信机制;
      • 多路复用、多路分用;
      • 运输层协议仅运行在端系统上,中间路由器上不实现运输层协议,不识别、不处理运输层加在应用层报文上的信息;
    • 网络层:提供不同主机之间的逻辑通信机制;
      • 虚电路网络:Virtual-Circuit,VC;
        • 在网络层提供连接服务,E.g. ATM、帧中继;
        • 因此网络层连接亦称为虚电路;
      • 数据报网络:在网络层提供无连接服务,E.g. 因特网;
  • 网络层组件:
    • IP 协议;
    • 路由选择协议:决定从发送方到接收方的最优路径,更新转发表;
    • ICMP 协议;

4.2.2 虚电路网络

  • 1条虚电路的组成部分:
    • 源主机和目的主机之间的通信链路和路由器;
      • 路由器维护连接状态信息;
    • 每条通信链路上的 VC 号;
      • datagram 首部含有1个 VC 号;
      • datagram 每经过1个路由器,需根据路由器中的转发表更新 VC 号;
    • 路径上每台路由器的转发表;
      • 创建一条虚电路,则为转发表新增表项;
      • 删除一条虚电路,则为转发表删除对应表项;
  • 建立1条虚电路的步骤:
    • 虚电路建立;
    • 数据传送;
    • 虚电路拆除;
  • 运输层中建立 TCP 连接和网络层中建立虚电路连接的区别:
    • 运输层中的连接服务:建立连接仅涉及2个端系统,路径中的路由器不关注该问题;
    • 网络层中的连接服务:2个端系统、路径中的所有路由器均参与虚电路建立,且每台路由器均能感知经过该路由器的所有虚电路;

4.2.3 数据报网络

  • 数据报网络中的 datagram 传递:
    • 端系统为 datagram 的首部加上目的地址;
    • 路由器中的转发表将目的地址映射到对应的路由器输出链路;
    • 路由器不维护连接状态信息;
  • 为什么数据报网络中的 datagram 传递是无序的?
    • 虚电路网络:
      • 在建立、拆除虚电路时更新路由器转发表;
      • 所有 datagram 在发送过程中途经相同的路径,因此 datagram 有序传递;
    • 数据报网络:
      • 路由选择算法修改转发表;
      • 所有 datagram 在发送过程中途经不同的路径,因此 datagram 无序传递;

4.3 路由器工作原理

  • 路由器的4个组成部分:
    • 输入端口;
    • 交换结构;
    • 输出端口;
    • 路由选择处理器;

4.4 IP 协议

4.4.1 Overview

  • IP :Internet protocol,网际协议,定义路由器和端系统间收发分组的格式,提供不可靠服务,因特网中的转发和编址;
    • IP 协议的版本:
      • IPv4;
      • IPv6;
    • 不确保报文段的交付;
    • 不确保报文段按序交付;
    • 不保证数据完整性;

4.4.2 IPv4 数据报格式

  • 为什么需要将 IP datagram 分片?
    • 不同的链路层协议中,MTU 的大小不同;
    • 在端系统中,网络层将属于同一 datagram 的所有分片重组;
    • 注意:
      • 分片、重组增加了时间开销,且使得系统易被攻击;
      • IPv6:分片在端系统上完成,若因 datagram 过大,使得路由器无法转发,则路由器将丢弃该 datagram,并向发送方发送一个“数据报太大”的 ICMP 差错报文;
  • IP datagram 中的部分字段:
    • 标识:每个 datagram 的标识号递增,判断哪些分片属于同一个 datagram;
    • 标志:最后1个分片被设置为0,其余分片被设置为1;
    • 片偏移字段:用于判断同一 datagram 中不同分片的先后顺序;

4.4.3 IPv4 编址

4.4.3.1 DHCP 协议

  • IPv4 地址:4字节,32 bit;
    • 主机、路由器上的每个接口均具有唯一 IP 地址;
    • IP 广播地址:255.255.255.255;
    • IP 源地址:0.0.0.0;
  • 子网掩码:同一子网中所有设备具有相同的子网地址,E.g. 223.1.1.0/x;
    • 网络地址:IP 地址中的前 x 比特;
  • 默认网关:与主机相连的第一跳路由器地址;
  • 编址方案:
    • 分类编址:
      • A 类网络:网络地址长度为1字节;
      • B 类网络:网络地址长度为2字节;
      • C 类网络:网络地址长度为3字节;
    • CIDR:Classless Interdomain Routing,无类别域间路由选择;
      • 网络地址为 IP 地址中的前 x 比特;
  • DHCP:Dynamic Host Configuration Protocol,动态主机配置协议;
    • 允许主机自动获取(被分配)1个 IP 地址;
    • 允许主机获取默认网关;
    • 允许主机获取本地 DNS 服务器地址;
  • DHCP 协议的4个步骤:
    • Step 1:DHCP 服务器发现;
      • DHCP 客户发送 DHCP 发现报文,使用 IP 广播地址;
    • Step 2:DHCP 服务器提供:
      • DHCP 服务器发送 DHCP 提供报文,使用 IP 广播地址;
    • Step 3:DHCP 请求:
      • 客户从一个或多个 DHCP 服务器报文中选择一个,并向对应的 DHCP 服务器发送 DHCP 请求报文
    • Step 4:DHCP ACK:服务器向客户发送 DHCP 响应报文

4.4.3.2 网络地址转换

  • NAT:Network Address Translation,网络地址转换;
    • NAT 转换表:路由器查询该转换表,将来自广域网的分组转发给对应的内部主机;
  • 10.0.0.0/8:为家庭网络等专用网络保留;

4.4.4 ICMP 协议

  • 面试题 简述 ICMP 协议:Internet Control Message Protocol,互联网控制报文协议;
    • 功能:
      • 差错报告;
      • 响应请求;
    • 应用:
      • Ping:测试2台主机间的连通性;
      • Traceroute:跟踪1个分组从源主机到目的主机之间的传输路径;
  • ICMP 报文是 IP datagram 有效载荷中的一部分;

4.4.5 IPv6

  • IPv6 地址长度:16字节,128 bits;
  • ICMPv6:新版的 ICMP,用于 IPv6;

4.5 路由选择协议

4.5.1 Overview

  • 默认路由器:与主机相连的第一跳路由器;
    • 源路由器:源主机的默认路由器;
    • 目的路由器:目的主机的默认路由器;
  • 路由选择算法:
    • 全局式路由选择算法:亦称链路状态算法(Link State,LS),算法需以网络中所有链路的通信代价为输入;
      • 将网络抽象为1幅无向图,使用 Dijkstra 算法;
    • 分散式路由选择算法:
      • 每个节点仅需获取与其相邻链路的通信代价作为输入;
      • E.g. 距离向量算法(Distance-Vector,DV);

4.5.2 层次路由选择

  • 自治系统:AS(Autonomous System),内部的路由器运行相同的路由选择协议;
    • 自治系统内部路由选择协议:亦称内部网关协议;
      • RIP:Routing Information Protocol,路由选择信息协议;
        • 常用于下层 ISP 和企业网;
        • 算法本质:距离向量算法;
      • OSPF:Open Shortest Path First,开放最短路优先;
        • 常用于上层 ISP 中;
        • 算法本质:链路状态算法;
    • 自治系统间路由选择协议:2个通信的自治系统必须运行相同的自治系统间路由选择协议;
      • BGP:Broder Gateway Protoco,边界网关协议;
  • 网关路由器:自治系统中连接其它自治系统的路由器;

4.6 因特网中的路由选择协议

4.6.1 RIP

  • 跳:从源路由器至目的子网(包含目的子网)的最短路径经过的子网数量;
  • RIP:一个运行在 UDP 上的应用层协议,来实现网络层功能(路由选择);
    • RIP 请求报文:请求相邻路由器到目的地的费用;
    • RIP 通告:亦称 RIP 响应报文,相邻路由器间交换路由选择信息;

4.6.2 BGP

  • BGP 会话:发送 BGP 报文的 TCP 连接;
    • eBGP:external BGP session,外部 BGP 会话,2个自治系统间的 BGP 会话;
    • iBGP:internal BGP session,内部 BGP 会话,同一个自治系统中2台路由器间的 BGP 会话;
  • BGP 的功能:
    • 从相邻自治系统中获取子网可达性信息;
    • 向本自治系统中的所有路由器传播可达性信息;
    • 基于可达性信息和自治系统策略,决定通向某个子网的最佳路径;

4.7 广播和多播路由选择

4.7.1 Overview

  • 单播、多播和广播:
    • 单播:点对点通信;
    • 多播:1个源节点将数据发送给多个目的节点;
    • 广播:1个源节点将数据发送给网络中所有其它节点;

4.7.2 广播路由选择算法

  • 广播路由选择的实现方法:
    • 无控制洪泛:可能导致广播风暴,无休止地转发同一个分组;
    • 受控洪泛:避免广播风暴,但仍可能接收到冗余分组;
      • 序号控制洪泛;
      • 反向路径转发:当前节点仅接收距离源节点最短路径上传来的分组;
    • 生成树广播:避免路由器接收到冗余分组;
      • 最小生成树算法;

4.7.3 多播

  • 如何标识接收方的地址?
    • 单播:报文中含有目的主机的 IP;
    • 广播:无需目的主机的 IP;
    • 多播:使用 D 类多播地址;
  • 多播组:与1个 D 类多播地址关联的目的主机的集合;
  • 因特网中网络层多播的2个组件:
    • IGMP:因特网组管理协议;
    • 多播路由选择协议;

5. 链路层

5.1 Overview

  • 链路层信道:
    • 广播链路;
    • 点对点链路:
      • 点对点协议:point-to-point protocol,PPP;
      • 高级数据链路控制协议:HDLC,high-level data link control;
  • MAC:Medium Access Control,媒体访问控制协议;
    • 功能:规定帧在链路上的传输规则;
  • 链路层提供的服务:
    • 成帧;
    • 链路接入:MAC 协议;
    • 可靠数据传输:通过确认、重传实现;
      • 常用于高差错率的链路,E.g. 无线链路;
      • 低比特差错的链路上一般不提供可靠数据传输服务;
    • 差错检测、纠正;
  • 链路层的实现:大部分在硬件中实现,小部分在软件中实现;
    • 路由器:在线路卡中实现链路层;
      • 路由器可有多个接口;
      • 每个接口含有各自的 IP 地址、适配器、ARP 模块;
    • 主机:在网络适配器中实现;
      • 网络适配器:亦称网络接口卡,即 PCI 卡槽中的插入卡,现已被集成至主板中;
      • 每台主机仅有1个 IP 地址和1个适配器;
      • 每个适配器具有1个 MAC 地址;

5.2 差错检测和纠正

  • EDC:Error-Detection and Correction,差错检测与纠正比特,该比特值用于差错检测和纠正错误比特;
  • 3种差错检测方法:
    • 奇偶校验;
    • 校验和:常用于运输层,E.g. TCP、UDP 报文中;
      • 优点:实现简单,分组开销小;
      • 缺点:差错保护较弱;
    • 循环冗余检测:CRC,Cyclic Redundancy Check,常用于链路层;
  • 奇偶校验:增加1 bit 奇偶校验位;
    • 奇校验:数据比特和校验比特中1的个数为奇数;
    • 偶校验;
    • 二维奇偶校验:
      • 奇偶校验无法检测偶数个错误 bit;
      • 将数据比特划分为 i 行 j 列,对每行每列求得 i+j+1个错误纠正比特;
      • 二维奇偶校验可检测多个错误 bit;

5.3 多路访问链路和协议

5.3.1 Overview

  • 多路访问:多个节点共享同一广播信道,可相互广播;
  • 多路访问协议:规范节点在共享广播信道上的行为;
    • 信道划分协议;
    • 随机接入协议;
    • 轮流协议;
      • 轮询协议;
      • 令牌传递协议;
  • 碰撞:多个节点同时传输帧,在接收方处发生碰撞,涉及碰撞的帧全部丢失;

5.3.2 信道划分协议

  • 信道划分协议:即多路复用方法:
    • FDM:频分复用;
    • TDM:时分复用;
    • WDM:波分复用,在光通信中,根据光的波长不同实现信道复用,本质上是 FDM;
    • CDMA:Code Division Multiple Access,码分多址,各用户的码片序列正交;
  • 信道划分协议的缺点:若传输速率 R bps 的信道支持 N 个节点,则在仅有1个节点发送数据的情况下,大量信道资源被闲置;

5.3.3 随机接入协议

  • 常见的随机接入协议:
    • ALOHA 协议;
    • CSMA 协议:载波侦听多路访问协议,E.g. 以太网;
    • CSMA/CD:CSMA with Collision Detection,具有碰撞检测的 CSMA;
      • 载波侦听:节点在发送数据前,先检测信道中是否有数据正在传输;
      • 碰撞检测:若当前节点检测到信道中其它节点正在传输数据,则当前节点停止数据传输;
  • Q:既然已有载波侦听,则应该不出现碰撞,为什么还需要碰撞检测?
    • A:由于信道传播时延,其它节点可能正在发送数据,而当前节点载波侦听时未检测到信道中有数据传输,此时可能出现碰撞;
  • ALOHA 协议:
    • 将1个帧(不同于链路层中的分组 frame)划分为若干时隙;
    • 某节点将在1个时隙中发送数据,若发生碰撞,则以概率 p 在接下来的每个时隙中重传该帧;
    • 优点:相较于信道划分协议,若在仅有1个节点发送数据的情况下,能充分利用信道资源;

5.4 交换局域网

5.4.1 链路层寻址和 ARP 协议

  • 交换机运行在链路层,交换链路层帧,而非网络层数据报,寻址过程使用链路层地址而非 IP 地址;
    • 链路层地址:亦称 LAN 地址、物理地址、MAC 地址;
      • 主机和路由器不具有链路层地址;
      • 主机和路由器的适配器(即网络接口)具有链路层地址;
    • 网络层地址:IP 地址;
  • ARP:Address Resolution Protocol,地址解析协议,仅对同一子网内的主机、路由器接口,将网络层地址转换为链路层地址;
    • 每台主机或路由器维护一张 ARP 表,其中包含 IP 地址和 MAC 地址的映射关系;
    • 若 ARP 表中含有目的主机的 IP 地址,则使用对应的 MAC 地址发送 frame;
    • 若 ARP 表中不含目的主机的 IP 地址,则源主机使用 MAC 广播地址发送 ARP 查询分组,对应的目的主机返回带有所需 MAC 地址的报文;
  • MAC 地址:
    • 6字节;
    • 常将每个字节表示为2个16进制数;
    • MAC 广播地址:FF-FF-FF-FF-FF-FF;

5.4.2 以太网

  • 以太网:ethernet,一种目前应用最广泛的局域网技术;
    • 向网络层提供不可靠服务;
  • 面试题 路由器和交换机的区别?
    • 路由器:
      • 运行在网络层;
      • 基于 IP 地址转发分组;
      • 可划分广播域;
    • 交换机:
      • 运行在链路层;
      • 基于 MAC 地址转发分组;
      • 不可划分广播域(连接至同一交换机的主机属于同一局域网);

6. 综合性面试题

  • 面试题 常见端口及服务:

    服务 端口号
    FTP 21
    SMTP 25
    HTTP 80
    MySQL 3306
  • 面试题 简述从浏览器中输入网址,至最终展示页面,需经过哪些过程?

    • DNS 解析;
    • 建立 TCP 连接;
    • HTTP 请求;
    • 服务器处理 HTTP 请求,并发回 HTTP 响应报文;
    • 浏览器解析渲染页面;

References

[1] Kurose, F. J, Ross, K. W. 计算机网络自顶向下方法[M]. 北京: 机械工业出版社, 2014.
[2] https://www.icourse163.org/learn/HIT-154005?tid=1206679208#/learn/announce.

你可能感兴趣的:(基础课程笔记)