计算机网络学习笔记



目录

  • 目录
    • 1. 概述
      • 1.1 计算机网络的性能
    • 2. 物理层
      • 2.1. 信道复用技术
      • 2.2. 码分复用(CDM)、码分多址(CDMA)
    • 3. 数据链路层
      • 3.1. 使用点对点信道的数据链路层
      • 3.2. 差错检测
      • 3.3. 点对点协议PPP
      • 3.4. 使用广播信道的数据链路层
      • 3.5. CSMA/CD(载波监听多点接入/碰撞检测)协议
      • 3.6. 以太网的信道利用率
      • 3.7. 以太网的MAC层
    • 4. 网络层
      • 4.1. 网络层提供的两种服务
        • 4.1.1. 面向连接
        • 4.1.2. 无连接
      • 4.2. 网际协议IP
      • 4.3. 虚拟互连网络
      • 4.4. IP地址
      • 4.5. IP地址与硬件地址的区别
      • 4.6. 地址解析协议ARP
      • 4.7. IP数据报的格式
      • 4.8. IP层转发分组的流程
      • 4.9. 划分子网
      • 4.10. 无分类编址CIDR
      • 4.11. 互联网的路由选择协议
      • 4.12. 内部网关协议RIP
      • 4.13. 内部网关协议OSPF
      • 4.14. 外部网关协议BGP
      • 4.15. 路由器的构成
      • 4.16. 虚拟专用网VPN
      • 4.17. 网络地址转换NAT
    • 5. 运输层
      • 5.1. 进程之间的通信
      • 5.2. 用户数据报协议UDP
        • 5.2.1. 特点
        • 5.2.2. UDP用户数据报格式
        • 5.2.3. 计算校验和
        • 5.2.4. UDP基于端口的分用
      • 5.3. 传输控制协议TCP
        • 5.3.1. 特点
        • 5.3.2. TCP的连接
        • 5.3.3. 区别
        • 5.3.4. 适用场景
        • 5.3.5. TCP的运输连接管理
          • 5.3.5.1 三次握手
          • 5.3.5.2. 四次挥手
        • 5.3.6. 可靠传输
          • 5.3.6.1. 停止等待协议
          • 5.3.6.2. 自动重传请求ARQ
          • 5.3.6.3. 【改进】流水线传输
          • 5.3.6.4. 连续ARQ协议
        • 5.3.7. TCP可靠通信的具体实现
          • 5.3.7.1. Karn算法
          • 5.3.7.2. 选择确认SACK
          • 5.3.7.3. TCP报文段格式
          • 5.3.7.4. 拥塞控制
          • 5.3.7.5. TCP的拥塞控制方法
    • 6. 应用层
      • 6.1. 特点
      • 6.2. 域名系统DNS
        • 6.2.1. 域名的解析过程
      • 6.3. 文件传送协议FTP
      • 6.4. 网络文件系统NFS
      • 6.5. 万维网WWW
      • 6.6. 超文本传送协议 HTTP
      • 6.7. 代理服务器
      • 6.8. HTTP报文结构
      • 6.9. Cookie
      • 6.10. 超文本标记语言 HTML (HyperText Markup Language)
      • 6.11. 通用网关接口 CGI
      • 6.12. 电子邮件
      • 6.13. 通用互联网邮件扩充MIME
      • 6.14. 配置协议
        • 6.14.1. 动态主机配置协议 DHCP
    • 7. 网络安全
      • 7.1. 网络安全问题
      • 7.2. 网络通信安全的目标
      • 7.3. 数据加密
        • 7.3.1. 密钥
        • 7.3.2. 加密
        • 7.3.3. 解密
        • 7.3.4. 密码学
      • 7.4. 对称密钥密码体制
        • 7.4.1. 数据加密标准DES
        • 7.4.2. 三重DES
      • 7.5. 公开密钥密码体制
      • 7.6. 数字签名


1. 概述

1.1 计算机网络的性能

  • 在表示速率的单位中,“k”表示十进制1000,而在其他地方都是大写字母,并且表示二进制;
  • 带宽指某信道的最高数据率;
  • 吞吐量指单位时间内通过的实际的数据率;
  • ==发送时延 = 数据帧长度 / 发送速率==;
  • ==传播时延 = 信道长度 / 电磁波在信道上的传播速率(2*10^8m/s)==;
  • ==总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延(后两者经常不计)==;
  • ==时延带宽积 = 传播时延 * 带宽==;
  • ==有效数据率 = 数据长度 / (发送时间 + RRT(往返时间))==;
  • ==D(当前时延) = Do(空闲时延) / (1 - U(利用率)) (0

2. 物理层

  • 物理层考虑的是怎样传输,而不是指具体的传输媒体;
  • 物理层的主要任务为确定与传输媒体接口有关的特性:机械特性、电气特性、功能特性、过程特性;

2.1. 信道复用技术

复用器和分用器成对使用;

频分复用:所有用户在同样的时间占用不同的带宽资源;

时分复用:所有用户在不同的时间占用同样的频带宽度;

集中器使用统计时分复用(STDM)(又称异步时分复用,普通的时分复用称为同步时分复用),使用统计时分复用的集中器也称为智能复用器;

波分复用(WDM):光的频分复用;

  • 光复用器:合波器;
  • 光分用器:分波器;

2.2. 码分复用(CDM)、码分多址(CDMA)

码片:每一个比特时间划分的m个间隔

==特点==

  • 不同站点的码片序列相互正交,即各位相乘之和(称为规格化内积)为零;
  • 任何码片向量与自己内积都为1;
  • 任何码片向量与自己的反码向量内积都为-1;
  • 所以一个站点接受相同站点的码片序列时,结果一定是1或-1;
  • 记得乘积要除以8;

3. 数据链路层

数据链路层使用的信道类型:点对点信道、广播信道;

3.1. 使用点对点信道的数据链路层

链路(物理链路):从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点

数据链路(逻辑链路):物理线路加通信协议

规程 = 协议

:数据链路层的协议数据单元

IP数据报(简称数据报、分组或包):网络层协议数据单元

==数据链路层三个基本问题==:封装成帧透明传输差错检测

最大传送单元MTU):帧的数据部分长度上限

SOH(Start of Header)、EOT(End of Transmission):分别为帧定界符和控制字符,并不是英文字符,而是01和04

透明传输:不管从键盘上输入什么字符都可以放在帧中传输

字节填充(字符填充):在“SOH”或“EOT”前面插入转义字符“ESC”(十六进制为1B),使其不被解释为控制字符


3.2. 差错检测

误码率(BER):传输错误的比特占所传输的比特总数的比率

循环冗余检测(CRC):差错检测技术

帧检验序列(FCS):数据M、M的位数为k、在M后面添加n位冗余码

模2运算(看成==异或==):除数P、余数R的位数比P少一位

计算机网络学习笔记_第1张图片

将M+R发送出去后,经CRC检验后,若余数=0则没有差错,若!=0则有差错

P(X):生成多项式,如P(X)=X^3+X^2+1,表示除数P=1101,在题目中一般根据多项式得出除数P

传输差错:比特差错、帧丢失、帧重复、帧失序

CRC只能保证无比特差错,所以不是可靠传输

3.3. 点对点协议PPP

PPP协议三个组成部分:将IP数据报封装到串行链路的方法、链路控制协议(LCP)、网络控制协议(NCP)

计算机网络学习笔记_第2张图片

PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节

PPP用在==同步==传输链路时,使用==零比特填充==;当PPP用在==异步==传输时,使用==字符填充法==;

零比特填充:5个连续1后面插入0;

PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容

3.4. 使用广播信道的数据链路层

局域网最主要的特点:网络为一个单位所拥有,地理范围和站点数目均有限

局域网拓扑结构有:星形网、总线网、环形网

数据链路层的两个子层:逻辑链路控制(LLC)、媒体接入控制(MAC)

不管采用何种协议的局域网,对LLC子层来说都是透明的

计算机网络学习笔记_第3张图片

网络接口板又称为通信适配器(adapter)或网络接口卡NIC(Network Interface Card),或“网卡”。

适配器的重要功能

  • 进行串行/并行转换
  • 对数据进行缓存
  • 在计算机的操作系统安装设备驱动程序
  • 实现以太网协议
    计算机网络学习笔记_第4张图片

3.5. CSMA/CD(载波监听多点接入/碰撞检测)协议

计算机网络学习笔记_第5张图片

以太网发送的数据都使用曼彻斯特编码

计算机网络学习笔记_第6张图片

当检测到发生碰撞时,立即停止发送。

使用CSMA/CD协议的以太网只能进行==双向交替通信==(半双工)

争用期:又称碰撞窗口,为往返时间2t,具体为51.2us(注意“u”左边是长出来的),经过争用期还没有检测到发生碰撞才能确定这次发送不会发生碰撞

截断二进制指数退避:从整数集合[0,1,…,(2^k-1)]中随机取出一个数r,重传所需时延就为r倍的争用期;k = Min[重传次数,10];当重传次数达16次仍未成功时丢弃该帧,并向高层报告

最短有效帧长:即在争用期内发送的字节数,例如,在10Mbit/s的以太网中,争用期内发送512bit数据,所以64字节就为最短有效帧长

强化碰撞:发生碰撞后,发送人为干扰信号,通知所有用户发生了碰撞

CSMA/CD协议的要点:准备发送 –> 检测信道 –> 检查碰撞;发送成功后返回(1),若不成功,则强化碰撞,执行退避算法,返回(2)


3.6. 以太网的信道利用率

发送一帧的平均时间

计算机网络学习笔记_第7张图片

以太网参数a

计算机网络学习笔记_第8张图片

极限信道利用率

计算机网络学习笔记_第9张图片

可知,参数a越小,极限信道利用率Smax越大

3.7. 以太网的MAC层

硬件地址:又称为物理地址或MAC地址;

IEEE 802标准规定MAC地址字段可采用6字节(48位)或2字节(16位)
计算机网络学习笔记_第10张图片

  • ==注意==:前3个字节为IEEE的注册管理机构RA负责向厂家分配;后3字节为厂家自行指派

I/G 位:IEEE规定地址字段的第一字节的最低位为 I/G 位。I/G 表示 Individual / Group

  • 当 I/G位=0 时,地址字段表示一个单站地址。

  • 当 I/G位=1 时,表示组地址,用来进行多播(以前曾译为组播)。此时,IEEE 只分配地址字段前三个字节中的23位。

  • 当 I/G 位分别为 0 和 1 时,一个地址块可分别生成 224 个单个站地址和 224 个组地址。

  • 所有 48 位都为 1 时,为广播地址。只能作为目的地址使用。

G/L位:IEEE 把地址字段第一字节的最低第 2 位规定为 G/L 位,表示 Global / Local。

  • 当 G/L位=0 时,是全球管理(保证在全球没有相同的地址),厂商向IEEE购买的 OUI 都属于全球管理。
  • 当 G/L位=1 时, 是本地管理,这时用户可任意分配网络上的地址。

所有的适配器都能识别单播地址和广播地址,而多播地址需用编程方法;

计算机网络学习笔记_第11张图片

  • 类型字段用来标志上一层使用的是什么协议
  • 数据字段(MAC客户数据字段)最小长度为46字节;

  • 无效的MAC帧(直接丢弃,不重传)

    • 数据字段的长度与长度字段的值不一致;
    • 帧的长度不是整数个字节;
    • 用收到的帧检验序列 FCS 查出有差错;
    • 数据字段的长度不在 46 ~ 1500 字节之间。
    • 有效的 MAC 帧长度为 64 ~ 1518 字节之间

帧间最小间隔:一个站在检测到总线开始空闲后,还要等待 9.6 us 才能再次发送数据,相当于96bit的发送时间,目的是让站点做好接受准备;


4. 网络层

4.1. 网络层提供的两种服务

面向连接无连接

4.1.1. 面向连接

虚电路:逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送;

计算机网络学习笔记_第12张图片

4.1.2. 无连接

设计思路:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务

网络层不提供服务质量的承诺

主机中的运输层负责可靠交付(差错处理、流量控制)

计算机网络学习笔记_第13张图片


4.2. 网际协议IP

  • 与IP协议配套使用的三个协议:
    • 地址解析协议ARP
    • 网际控制报文协议ICMP
    • 网际组管理协议IGMP
      计算机网络学习笔记_第14张图片

4.3. 虚拟互连网络

网络互连需要中间设备(又称中间系统、中继系统)

  • 物理层中继系统:转发器
  • 数据链路层中继系统:网桥或桥接器
  • 网络层中继系统:路由器
  • 网桥和路由器的混合物:桥路器
  • 网络层以上的中继系统:网关

网络互连都是指用路由器进行网络互连和路由选择

计算机网络学习笔记_第15张图片

虚拟互连网:逻辑互连网络,利用IP协议使这些性能各异的网络从用户看起来像是一个统一的网络

IP网:使用IP协议的互连网络

互联网:在覆盖全球的IP网的上层使用TCP协议


4.4. IP地址

IP地址:在全世界是唯一的32位的标识符,由互联网名字和数字分配机构ICANN进行分配

IP地址的编码方法

分类的IP地址:最基本的编址方法

子网的划分:改进

构成超网:新的无分类编址方法

分类IP地址

计算机网络学习笔记_第16张图片
计算机网络学习笔记_第17张图片

各类IP地址的网络号字段和主机号字段

计算机网络学习笔记_第18张图片

==注意==:记住A-D类的类别位(前缀1递增),IP地址不仅指明一台主机,还指明了主机所连接到的网络

点分十进制记法

计算机网络学习笔记_第19张图片

一般不使用的特殊IP地址

计算机网络学习笔记_第20张图片

  • IP地址一些重要的特点:
    • IP地址是一种分等级的地址结构
    • 实际上IP地址是标志一个主机(或路由器)和一条链路的接口
    • 用转发器和网桥连接起来的若干个局域网仍为一个网络
    • 所有分配到网络号net-id的网络,无论是范围很小的局域网,都是平等的

4.5. IP地址与硬件地址的区别

  1. IP地址是逻辑地址,硬件地址是物理地址
  2. IP地址放在IP数据报首部,硬件地址放在MAC帧首部
  3. 在IP层抽象的互联网上只能看到IP数据报
  4. 在局域网的链路层,只能看到MAC帧

4.6. 地址解析协议ARP

从网络层使用的IP地址,解析出在数据链路层使用的硬件地址

每个主机都设有一个ARP高速缓存,里面有所在局域网上的各主机和路由器的IP地址到硬件地址的映射表

CN_ARP_Format

TTL(Time to Live):地址映射有效时间

  • 执行过程

计算机网络学习笔记_第21张图片

  • 要点
    • ARP请求分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址(未知时填0)/目标方IP地址
    • 本地广播 ARP 请求:路由器不转发ARP请求
    • ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
    • ARP 分组封装在物理网络的帧中传输
    • ARP是解决同一个局域网的IP地址和硬件地址的映射问题

ARP高速缓存存放最近获得的IP地址到MAC地址的绑定,以减少ARP广播的数量


4.7. IP数据报的格式

计算机网络学习笔记_第22张图片

  • 首部的固定部分共20字节

    • 版本:4位,指IP协议的版本

    • 首部长度:4位,可表示的最大数值为15个单位(一个单位4个字节),即首部最长为60字节

    • 区分服务:8位,

    • 总长度:16位,数据报最大长度为65535字节,总长度不能超过MTU;

    • 标识:16位,计数器,用于产生IP数据报的标识

    • 标志(flag):3位

    • 最低位MF:MF=1,表示后面还有分片;MF=0表示最后一个分片

    • 中间位DF:DF=0,允许分片

    • 片偏移:13位,指出较长的分组在分片后某片在原分组的相对位置,偏移单位为8字节

    计算机网络学习笔记_第23张图片

    计算机网络学习笔记_第24张图片

生存时间:8位,记为TTL(Time To Live),指示数据报在网络中可通过的路由器数的最大值

协议:8位,指出此数据报携带的数据使用何种协议

首部检验和:16位,只检验数据报的首部,采用16位二进制反码求和算法

源地址目的地址:各占4字节


4.8. IP层转发分组的流程

路由表:目的网络地址+下一跳地址

CN_RoutingChart

默认路由:减少路由表所占用的空间和搜索路由表所用的时间

计算机网络学习笔记_第25张图片


4.9. 划分子网

划分子网:在IP地址中增加一个“子网号字段”,使两级的IP地址变成为三级的IP地址

方法

  • 固定长度子网
  • 变长子网
    计算机网络学习笔记_第26张图片
    CN_IPAddressV3_Definition

子网掩码:是一个网络或一个子网的重要属性

【规则】

  • 子网掩码长度=32位
  • 某位 = 1:IP地址中对应位为网络号和子网号
  • 某位 = 0:IP地址中对应位为主机号
    计算机网络学习笔记_第27张图片

划分子网情况下路由器分组转发

计算机网络学习笔记_第28张图片

路由器将收到的IP地址与子网掩码相与,然后再匹配对应的目的网络地址进行转发

4.10. 无分类编址CIDR

变长子网掩码VLSM(Variable Length Subnet Mask)

无分类域间路由选择CIDR(Classless Inter-Domain Routing)

计算机网络学习笔记_第29张图片
CN_CIDR_Definition

“斜线记法”(又称为 CIDR 记法):即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24(CIDR地址块)

另一形式:0000101.00*,星号之前为网络前缀,星号表示主机号

==注意==:全0和全1的主机号地址一般不使用

路由聚合(也称为“构成超网”):一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合

最长前缀匹配(“最长匹配”, “最佳匹配”):在查找路由表时可能会得到不止一个匹配结果,应选择网络前缀最长的匹配结果,因为地址块越小,路由就越具体。


4.11. 互联网的路由选择协议

路由选择策略

  • 静态路由选择策略
    • 即非自适应路由选择
    • 【特点】简单、开销小,但不能及时适应网络状态的变化
  • 动态路由选择策略
    • 即自适应路由选择策略
    • 较好适应网络状态的变化,但实现复杂、开销大

互联网采用分层次的路由选择协议

内部网关协议IGP:在一个自治系统(AS)内部使用的路由选择协议,如RIP、OSPF协议。

外部网关协议EGP:将路由选择信息传递到另一个自治系统的协议,如BGP-4。

自治系统之间的路由选择也叫作域间路由选择 (interdomain routing),在自治系统内部的路由选择叫作域内路由选择 (intradomain routing)。


4.12. 内部网关协议RIP

RIP:是一种分布式的、基于距离向量的路由选择协议,它要求网络中每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,直接连接的网络距离(也称为“跳数”)定义为1,每经过一个路由+1,RIP允许一条路径最多只能包含15个路由器,当大于15时即相当于不可达,RIP不能在两个网络之间同时使用多条路由。它选择最短距离的路径

  • 【特点】

    • 仅和相邻路由器交换信息
    • 交换的信息是当前本路由器所知道的全部信息,即路由表
    • 按固定时间间隔交换路由信息

距离向量算法

计算机网络学习笔记_第30张图片

RIP2协议报文

计算机网络学习笔记_第31张图片

==注意==:一个RIP报文最多可包括25个路由,若超过必须再用一个RIP报文来传送

RIP2具有简单的鉴别功能

【缺点】网络出故障的传播时间较长


4.13. 内部网关协议OSPF

使用分布式的链路状态协议

三个要点

  1. 洪泛法:向本自治系统中所有路由器发送信息
  2. 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
    • 链路状态:与哪些路由器相连,以及该链路的“度量”(费用、距离、时延等)
  3. 只有链路状态发生变化时,才使用洪泛法发送此信息

链路状态数据库:全网的拓扑结构图

链路数据库的同步:拓扑结构图在全网的一致性

【优点】OSPF的更新过程收敛得快

区域:OSPF将一个自治系统再划分为若干个更小的范围

层次结构的区域划分

主干区域:在上层的区域。作用:连通下层区域

OSPF直接用IP数据报传送

计算机网络学习笔记_第32张图片

五种分组类型

  1. 类型1,问候 (Hello) 分组
  2. 类型2,数据库描述 (Database Description) 分组
  3. 类型3,链路状态请求 (Link State Request) 分组
  4. 类型4,链路状态更新 (Link State Update) 分组, 用洪泛法对全网更新链路状态
  5. 类型5,链路状态确认 (Link State Acknowledgment)分组

4.14. 外部网关协议BGP

BGP:选择路径向量路由选择协议

BGP发言人:每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”

BGP发言人要交换路由信息要先建立TCP连接,在此连接上交换BGP报文以建立BGP会话。

使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站或对等站。、

【特点】

  1. BGP协议交换路由器信息的结点数量级是自治系统数的量级
  2. BGP发言人数量少,路由选择不复杂
  3. 支持CIDR
  4. BGP刚运行时,邻站交换整个路由表。但以后只需更新有变化的部分,节省带宽和开销

BGP报文格式

计算机网络学习笔记_第33张图片

BGP-4有四种报文

  1. 打开 (OPEN) 报文:用来与相邻的另一个BGP发言人建立关系
  2. 更新 (UPDATE) 报文:用来发送某一路由的信息,以及列出要撤消的多条路由
  3. 保活 (KEEPALIVE) 报文:用来确认打开报文和周期性地证实邻站关系
  4. 通知 (NOTIFICATION) 报文:用来发送检测到的差错

4.15. 路由器的构成

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组

典型的路由器结构

计算机网络学习笔记_第34张图片

整个路由器结构可划分为两大部分

  1. 路由选择部分
    • 也叫控制部分,其核心部件是路由选择处理机
    • 【任务】根据所选定的协议构造出路由表,并更新和维护路由表
  2. 分组转发部分
    • 交换结构:又称为交换组织,根据转发表对分组进行处理。实现交换的方法:通过存储器、通过总线、通过纵横交换结构
    • 一组输入端口:输入端口中的查找和转发功能在路由器的交换功能中是最重要的
    • 一组输出端口

【区别】路由表是根据路由选择算法得出的。而转发表是从路由表得出的

路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因


4.16. 虚拟专用网VPN

本地地址:仅在机构内部使用的IP地址,由本机构自行分配

全球地址:全球唯一的IP地址,须向互联网的管理机构申请

在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发,专用地址只能用作本地地址

专用网:也称专用互联网或本地互联网,采用专用IP地址(也叫作可重用地址)的互连网络

虚拟专用网VPN:利用公用的互联网作为本机构各专用网之间的通信载体,数据必须加密,采用隧道技术。

内联网VPN:同一机构内的不同内部网络构成的VPN

外联网VPN:一个机构与某些外部机构共同建立的VPN

远程接入VPN:通过拨号接入互联网


4.17. 网络地址转换NAT

解决在专用网上使用专用地址的主机与互联网上的主机通信

NAT路由器:装有NAT软件的路由器,它至少有一个有效的外部全球IP地址,所有使用本地地址的主机在和外界通信时,都要做NAT路由器上将其本地地址转换成全球IP地址(记录在NAT地址转换表中),才能和互联网连接

在NAT路由器上发生了两次地址转换:

  1. 离开专用网时:替换源地址,将内部地址替换为全球地址

  2. 进入专用网时:替换目的地址,将全球地址替换为内部地址

【注意】

  1. 当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多同时有 n 台主机接入到互联网
  2. 通过 NAT 路由器的通信必须由专用网内的主机发起。专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务
  3. 网络地址与端口号转换NAPT:使用端口号的NAT(不使用端口号的NAT叫做传统NAT)
    • NAT转换表把运输层的端口号也利用上,使多个拥有本地地址的主机共用一个NAT路由器上的全球IP地址,因而可以同时和互联网上的不同主机进行通信

5. 运输层

5.1. 进程之间的通信

  • 运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层
  • 只有位于网络边缘部分的主机的协议栈才有运输层
  • 通信的真正端点并不是主机而是主机中的进程
  • 运输层为应用进程之间提供端到端的逻辑通信
  • 运输层的重要功能
    • 复用
    • 分用
  • 运输协议数据单元TPDU(Trransport Protocol Data Unit):两个对等运输实体在通信时传送的数据单位
  • 两种协议
    • 传输控制协议TCP
    • 提供面向连接的服务
    • TCP传送的数据单位称为TCP报文段
    • 不提供广播或多播服务
    • 可靠
    • 用户数据报协议UDP
    • 提供无连接服务
    • 在传送数据之前不需要先建立连接
    • UDP传送的数据单位称为UDP报文或用户数据报
    • 对方的运输层在收到UDP报文后,不需要给出任何确认
    • 不可靠交付
  • 协议端口号:简称端口,统一标志应用进程
    • 16位
    • 只具有本地意义,只是为了标志本计算机应用层中的各进程
  • 两大类端口
    • 服务器端
    • 熟知端口:0~1023
    • 登记端口号:1024~49151,为没有熟知端口号的应用程序使用
    • 客户端(又称“短暂端口号”)
    • 49152~65535,留给客户进程选择暂时使用
  • 【区别】
    • 软件端口:在协议栈层间的抽象的协议端口
    • 硬件端口:路由器或交换机上的端口

5.2. 用户数据报协议UDP

5.2.1. 特点

  • UDP是==无连接==的
  • UDP使用==尽最大努力交付==
  • UDP是==面向报文==的
    • UDP对应用层交下来的报文,既不合并,也不拆分
    • 一次发送一个报文(上至下)
    • 一次交付一个完整的报文(下至上)
    • 应用程序必须选择合适大小的报文
  • UDP没有拥塞控制
  • UDP支持一对一、一对多、多对一、多对多的交互通信
  • UDP的首部开销小,只有8字节,TCP的20字节

5.2.2. UDP用户数据报格式

计算机网络学习笔记_第35张图片

伪首部:仅仅是为了计算检验和

5.2.3. 计算校验和

计算机网络学习笔记_第36张图片

5.2.4. UDP基于端口的分用

计算机网络学习笔记_第37张图片

当运输层从 IP 层收到 UDP 数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点——应用进程

5.3. 传输控制协议TCP

5.3.1. 特点

  • ==面向连接==
  • 每一条TCP连接只能有两个端点,一对一
  • 提供==可靠交付==
  • 提供全双工通信
  • 面向字节流

    • TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流
    • 不保证接受和发送双方数据块具有对应大小的关系,但该字节流必须完全一样
    • 对连续的字节流进行分段,形成TCP报文段
  • 【注意】

    • TCP连接是一条虚连接
    • TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少字节(UDP发送的报文长度是应用进程给出的)

5.3.2. TCP的连接

TCP把连接作为最基本的抽象,TCP连接的端点叫做套接字(socket)或插口

端口号拼接到IP地址即构成了套接字

  • 套接字的定义
    CN_SOCKET_DEFINITION.png
  • TCP连接的定义
    CN_TCPLINK_DEFINITION.png

5.3.3. 区别

特点 TCP UDP
连接性 面向连接 面向非连接
可靠性 可靠 不可靠
传输效率

5.3.4. 适用场景

  • TCP:文件传输、重要的状态更新、接发邮件、远程登录等;
  • UDP:视频传输、实时通信等;

5.3.5. TCP的运输连接管理

5.3.5.1 三次握手

计算机网络学习笔记_第38张图片

Question:为什么不是两次或四次

Answer:

  1. 两次握手服务器无法确认客户端是否正确接收同步信号;
  2. 四次握手降低了连接的速度与效率。

5.3.5.2. 四次挥手

计算机网络学习笔记_第39张图片

客户端之所以要等待2MSL才关闭服务,一是因为要确认服务器收到ACK报文,二是因为等待本次连接的所有报文在网络中消失。


5.3.6. 可靠传输

  • 理想传输条件

    1. 传输信道不产生差错
    2. 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
5.3.6.1. 停止等待协议

每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。缺点为信道利用率低。

全双工通信的双方既是发送方也是接收方

  • 无差错情况

计算机网络学习笔记_第40张图片

  • 出现出错

计算机网络学习笔记_第41张图片

若A收到B的确认,则继续发送下一分组;

若A在超时计时器到期前未能收到确认,则重传该分组

B收到重传的分组后,或丢弃,或向A发送确认

  • 确认丢失和确认迟到

计算机网络学习笔记_第42张图片

  • ==【注意】==
    • 发送完一个分组后,须暂时保留已发送的分组的副本,以备重发
    • 分组和确认分组都必须进行编号
    • 超时计时器的重传时间应比平均往返时间长一些

5.3.6.2. 自动重传请求ARQ

ARQ:使用确认和重传机制,在不可靠传输网络上实现可靠的通信的协议

计算机网络学习笔记_第43张图片

RRT:往返时延。

5.3.6.3. 【改进】流水线传输

(使用连续ARQ协议和滑动窗口协议)

计算机网络学习笔记_第44张图片

发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认
5.3.6.4. 连续ARQ协议

发送窗口:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认

发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置

接收方采用累积确认的方式,只对按序到达的最后一个分组发送确认
计算机网络学习笔记_第45张图片

Go-back-N(回退N):若在中间分组发生丢失,则需从该分组开始重传


5.3.7. TCP可靠通信的具体实现

  1. TCP连接的每一端都必须设有两个窗口——发送窗口和接收窗口
    1. 滑动窗口以字节为单位
    2. 发送窗口随着收到确认而向前推进,若发送窗口已满,但未收到确认,则停止发送
    3. 发送方的应用进程把字节流写入TCP的发送缓存,发送窗口通常只是发送缓存的一部分
    4. 接受方的应用进程从TCP的接受缓存中读取字节流
  2. 可靠传输机制用字节的序号进行控制
  3. 每个字节流的都编有一个序号
  4. 窗口处于动态变化
  5. 窗口前沿动态推进

RTT不是固定不变的,估算合理的重传时间

加权平均往返时间RTTs

计算机网络学习笔记_第46张图片

超时重传时间RTO

计算机网络学习笔记_第47张图片

5.3.7.1. Karn算法
  • 【内容】在计算平均往返时间 RTT 时,只要报文段重传了,就不采用其往返时间样本
  • 【问题】不考虑重传的报文段的往返时间样本时,RTO无法更新
  • 【修正】
    计算机网络学习笔记_第48张图片
5.3.7.2. 选择确认SACK

【解决】接受方收到了和前面字节流不连续的两个字节块,如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据

5.3.7.3. TCP报文段格式

计算机网络学习笔记_第49张图片

    • 源端口和目的端口:各占2字节
    • ==序号==:4字节。TCP连接中数据流每个字节都编有一个序号,该字段指本报文段所发送的数据的第一个字节的序号
    • 确认号:4字节,期望收到对方的下一个报文段的数据的第一个字节的序号
    • ==数据偏移==:4位,即首部长度,单位为4字节
    • 保留:6位,置0
    • 紧急URG:URG=1时,表示此报文段有紧急数据,应尽快传送(相当于高优先级)
    • ==确认ACK==:ACK=1时,确认号字段才有效;ACK=0时,确认号无效
    • 推送PSH:PSH=1时,尽快交付接收应用进程
    • 复位RST:RST=1时,表明连接中出现严重差错,释放连接,重新建立
    • 同步SYN:SYN=1时,表示连接请求或连接接受
    • 终止FIN:FIN=1时,表示发送完毕,释放连接
    • 窗口:2字节,用来让对方设置发送窗口的依据,单位为字节
    • 校验和:2字节,计算检验和时,要在报文段前面加上12字节的伪首部
    • 紧急指针:16位,指出本报文段紧急数据共有多少字节(紧急数据放在本报文段数据的最前面)
    • 选项:长度可变。最大报文段长度MSS
5.3.7.4. 拥塞控制
  • 【原因】
    CN_TCP_Jam_Reason.png
  • 【前提】网络能够承受现在的网络负荷
    • 当发生死锁时,吞吐量为0
  • 【方法】
    • 开环控制
    • 闭环控制
5.3.7.5. TCP的拥塞控制方法

采用基于窗口的方法

发送方维持一个拥塞窗口CWND,窗口大小取决于网络拥塞程度,动态变化

CN_TCP_Jam_Resolve.png

拥塞判断:重传定时器超时、收到三个相同(重复)的ACK

TCP拥塞控制算法:慢开始、拥塞避免、快重传、快恢复


6. 应用层

6.1. 特点

  1. 应用层的许多协议都是基于客户服务器方式
  2. 客户和服务器都是指通信中所涉及的两个应用进程
  3. 客户是服务请求方,服务器是服务提供方

6.2. 域名系统DNS

顶级域名TLD

  • 国家顶级域名nTLD
  • 通用顶级域名gTLD
  • 基础结构域名,arpa

区:一个服务器所负责管辖的范围

权限域名服务器:每个区设置相应的权限域名服务器来保存该区中所有主机的域名到IP地址的映射

四种类型域名服务器

  • 根域名服务器
  • 顶级域名服务器
  • 权限域名服务器
  • 本地域名服务器

每个域名服务器都维护一个高数缓存,存放最近用过的名字以及从何处获得名字映射信息的记录

6.2.1. 域名的解析过程

  • 主机向本地域名服务器的查询一般都是采用递归查询
  • 本地域名服务器向根域名服务器的查询通常是采用迭代查询

6.3. 文件传送协议FTP

Fiel Transfer Protocol:提供==交互式==访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。使用==TCP==可靠的运输服务。主要功能是减少或消除在不同操作系统下处理文件的不兼容性

使用客户服务器方式

  • ==一个主进程==,负责接受新的请求
  • ==若干个从属进程==,负责处理单个请求

两个连接(TCP连接)

  • 控制连接熟知端口21):在整个会话期间一直保持打开,发送传送请求
  • 数据连接熟知端口20):用于传输文件

6.4. 网络文件系统NFS

简单文件传送协议 TFTP (Trivial File Transfer Protocol):不支持交互

数据PDU也称为文件块,每个块从1开始按序编号


6.5. 万维网WWW

万维网是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充。

链接:访问方式

一个超文本由多个信息源链接成

超媒体与超文本的区别是文档内容不同

工作方式:客户-服务器

统一资源定位符 URL (Uniform Resource Locator):标志万维网上的各种文档,每一个文档在整个互联网的范围内具有唯一的标识符 URL 。

CN_URL_From.png

  • 协议
    • ftp:文件传送协议 FTP
    • http:超文本传送协议 HTTP
    • News:USENET新闻
  • 主机:存放资源的主机在互联网中的域名

6.6. 超文本传送协议 HTTP

HyperText Transfer Protocol:面向事务的应用层协议,使用 TCP 连接进行可靠的传送。它是无状态的

  • HTTP/1.1 协议使用持续连接
    • 非流水线工作方式
    • 流水线工作方式

6.7. 代理服务器

又称为万维网高速缓存。万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中,当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源,可减少访问互联网服务器的时延。


6.8. HTTP报文结构

  • 请求报文
    计算机网络学习笔记_第50张图片
  • 响应报文
    计算机网络学习笔记_第51张图片
  • 状态码
    • 1xx:表示通知信息
    • 2xx:表示成功
    • 3xx:表示重定向
    • 4xx:表示客户差错
    • 5xx:表示服务器差错

用途:跟踪用户。Cookie表示在 HTTP 服务器和客户之间传递的状态信息,使用Cookie的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。


6.10. 超文本标记语言 HTML (HyperText Markup Language)

HTML:是用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来

远程链接:超链的终点是其他网点上的页面

本地链接:超链指向本计算机中的某个文件


6.11. 通用网关接口 CGI

Common Gateway Interface:是一种标准,定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。


6.12. 电子邮件

组成

  • 信封
  • 内容
    • 首部:”To”、“Subject”、“Cc”、“From”、“Reply-To”
    • 主体:自定义

地址格式:==收件人邮箱名@邮箱所在主机的域名==

发送邮件协议:SMTP

通信的三个阶段

  • 连接建立
  • 邮件传送
  • 连接释放

读取邮件协议:POP3和IMAP


6.13. 通用互联网邮件扩充MIME

不改动SMTP

==新增==

  • 首部字段
    • MIME-Version
    • Content-Description
    • Content-Id
    • Content-Transfer-Encoding
    • Content-Type
  • 内容格式
  • 定义传送编码

用户代理UA:是用户与电子邮件系统的接口,是电子邮件客户端软件。功能:撰写、显示、处理和通信


6.14. 配置协议

为了将软件协议做成通用的和便于移植,协议软件的编写者把协议软件参数化

协议配置:在协议软件中给这些参数赋值

需要配置的项目:P 地址、子网掩码、默认路由器的 IP 地址、域名服务器的 IP 地址

6.14.1. 动态主机配置协议 DHCP

提供了即插即用连网 (plug-and-play networking) 的机制,允许一台计算机加入新的网络和获取IP 地址而不用手工参与

工作方式:客户-服务器方式

需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户(UDP端口68)

DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器(UDP端口67)的回答报文叫做提供报文(DHCPOFFER)

每个网络至少有一个 DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息

当 DHCP 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机

租用期:DHCP 服务器分配给 DHCP 客户的 IP 地址的使用期限

  • 到达租用期的超时时间(一般为0.5T或0.875T),DHCP客户需发送请求报文,要求更新租用期
  • 若DHCP服务器同意,则发回确认报文,重置计时器
  • 若不同意,DHCP客户需重新申请新的IP地址
  • 若超时,客户重新发送请求报文

服务器可随时终止租用期


7. 网络安全

7.1. 网络安全问题

  • 两大威胁
    • 被动攻击
    • 截获:窃听他人通信内容
    • 流量分析:观察和分析某个协议的数据单元PDU,不干扰信息流
    • 主动攻击
    • 篡改:更改报文流
    • 恶意程序
    • 拒绝服务:不停发送大量分组,导致服务器瘫痪
      • 分布式拒绝服务DDoS:又称“网络带宽攻击”或“连通性攻击”,集中攻击一个网站

7.2. 网络通信安全的目标

  • 防止析出报文内容和流量分析
  • 防止恶意程序
  • 检测更改报文流和拒绝服务
  • 对付被动攻击可采用各种数据加密技术。对付主动攻击则需将加密技术与适当的鉴别技术相结合。
  • 一个安全的计算机网络应达到四个目标:

    1. 保密性
  • 网络安全通信的最基本内容

  • 使用密码技术

    1. 端点鉴别
  • 鉴别信息的发送方和接收方的真实身份

    1. 信息的完整性
  • 信息的内容未被篡改过

    1. 运行的安全性
  • 访问控制


7.3. 数据加密

计算机网络学习笔记_第52张图片


7.3.1. 密钥

密钥是一串秘密的字符串,用于加密和解密,通常是由密钥中心提供。

7.3.2. 加密

计算机网络学习笔记_第53张图片

7.3.3. 解密

计算机网络学习笔记_第54张图片

==【注意】==

  • 加密密钥和解密密钥不一定一样
  • 任何加密方法的安全性取决于密钥的长度,以及攻破密文所需的计算量

7.3.4. 密码学

  • 密码编码学:密码体制的设计学
  • 密码分析学:在未知密钥的情况下从密文推演出明文或密钥的技术

如果不论截取者获得了多少密文,但在密文中都没有足够的信息来唯一地确定出对应的明文,则这一密码体制称为无条件安全的,或称为理论上是不可破的
如果密码体制中的密码不能被可使用的计算资源破译,则这一密码体制称为在计算上是安全的


7.4. 对称密钥密码体制

对称密钥密码体制:加密密钥与解密密钥是相同的密码体制

7.4.1. 数据加密标准DES

DES属于对称密钥密码体制,是一种分组密码。其原理为分组加密,经过16轮加密计算,密钥为64位(实际长度56位+8位奇偶校验)。其算法是公开的,所以保密性取决于对密钥的保密。

7.4.2. 三重DES

使用两个56位的密钥

用一个密钥加密,再用另一个密钥解密,再用第一个密钥加密
CN_DataEncryption_DES.png


7.5. 公开密钥密码体制

公开密钥密码体制:用不同的加密密钥与解密密钥,==加密密钥(即公钥)PK是公开信息,解密密钥(即私钥)SK是保密的==,加密和解密算法也是公开的 。

计算机网络学习笔记_第55张图片

加密密钥不能用来解密

CN_DataEncryption_PK_NoPermit.png

加密和解密运算可以对调,即加密与解密是互逆的

CN_DataEncryption_PK_Exchange.png

  • ==【区别】==

    • 使用对称密钥时,进行一对一的双向保密通信
    • 使用公开密钥时,进行多对一的单向保密通信
    • 用私钥加密,公钥解密,是实现数字签名的方法

7.6. 数字签名

数字签名用于证明真实性,可以保证报文鉴别(证明来源)报文的完整性(防否认)不可否认(防伪造)

采用公钥算法更容易实现
计算机网络学习笔记_第56张图片

计算机网络学习笔记_第57张图片

计算机网络学习笔记_第58张图片

你可能感兴趣的:(计网)