计算机网络7:网络协议

正文索引 [隐藏]

1. 网际层协议

I. ARP 协议

image-20191203112632749

  • 建立一个 ARP 表,存放 IP-MAC 映射

    image-20191203112742259

  • 目的主机在同一子网,用 IP 在ARP 表中查找

    • 若找到,点对点发送
    • 若未找到,则广播发送,收到回应后更新 ARP 表
  • 若不在同一子网,用默认网关的 IP 在 ARP 表中查找,准备转发

  • ARP 表项有生存期,超时则删除

II. DHCP 协议

image-20191203113357213

  • 动态地址配置协议
  • 基于 UDP 协议
  • DHCP 服务器监听 DHCP 请求,与客户端协商 TCP/IP、设定环境,分配 IP 地址
    • 手动分配
    • 自动分配:一旦租用,永久使用
    • 动态分配:租约到期,释放 IP

III. IPv4 协议

无连接数据报传输、数据报路由、分组分段重组

IP 分组结构

image-20191203142926084

20 B 固定部分 + 40 B 可选部分

  • Version:4 bits,IP 协议版本号

  • 头部长度:分组头长度,单位 4 字节,范围一般为 5 ~ 15(* 32 bits)

  • 服务类型域

    • 优先级位:3
    • 标志位:D(Delay), T(Throughput), R(Reliability)
    • 保留位:2
  • 长度:头 + 文总长度,单位 1 字节,但是除最后一个分组外除去头的长度必须是 8 的倍数(因为 Offset 单位是 8 字节)

  • Ident(标识符)

    • DF,Don't Fragment:所有机器强制接收小于等于 576 bytes 的段
    • MF,More Fragment:除最后一个段外的所有段都要置 MF 位
  • Offset:单位 8 字节

    image-20191203144045848

  • TTL,Time to Live:IP 包每经过一个路由器 TTL 减 1, 为 0 则丢弃,并给源主机发送一个告警包

  • Protocol:标明上层协议

  • Checksum

    • 只对 IP 包头做校验
    • 算法:每 16 位求反,循环相加(进位加在末尾),和再求反
  • Options

  • 填充 Pad

例题

image-20191203150124714

IP 转发

  • 每个分组都包含目的 IP(数据报特色)

  • IP 唯一标识物理网络

  • 每个物理网络至少有一个与之相连的路由器

  • 根据路由表进行转发

    image-20191203153826734

IP 地址

分类

image-20191203150634504

IP地址分为5类:A类、B类、C类、D类和 E类。其中:D类地址仅用于多播组的特殊定义,E 类地址保留备用

image-20191203151625083

特殊地址

  • 主机号全 1:指定网段广播地址
  • 主机号全 0:网络本身
  • 网络号全 1:本网络
  • 主机号、网络号全 1:本网广播
  • 127.0.0.0 网络为回送地址
  • 10.0.0.0 - 10.255.255.255 为 A 类私有地址
  • 172.16.0.0.0 - 172.31.255.255 为 B 类私有地址
  • 192.168.0.0 - 192.168.255.255 为 C 类私有地址

子网划分

在原来 IP 地址结构的基础上增加一级

image-20191203153436266

子网划分后,通过子网掩码识别不同的子网
子网掩码格式:32比特,网络号(包括子网号)部分全为“1”,主机号部分全为“0”

image-20191203153604240

IV. CIDR 协议

将数个网络合并为一个网络,通过掩码进行识别:

  • 地址连续
  • 数量为 2 的幂
  • 其实地址必须被 2 的幂整除

image-20191203155613576

V. IPv6 协议

image-20191203160117177

首部:40 字节

地址类型:单播、多播、任播

地址表示

  • 冒号十六进制记法: 每 16 位的值用 16 进制表示,值之间用冒号分隔: 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
  • 零压缩:连续的 0 可用省略,例:FF05:0:0:0:0:0:0:B3 可以写成:FF05::B3

相比 IPv4 的变化

  • 地址长度:32 位 -> 128 位
  • 扩展的地址层次结构
  • 灵活的首部格式
  • 改进的选项
  • 允许协议继续扩充
  • 支持即插即用(即自动配置)
  • 支持资源的预分配
  • 将 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理
  • 中间路由器不处理扩展首部
    除逐跳选项扩展首部

IPv4 向 IPv6 的过渡方案

双协议栈: 使一部分主机(或路由器)装有两个协议栈,一个IPv4 和一个IPv6

image-20191203160700133

隧道技术:将 IPv6 的分组封装在 IPv4 的分组中

image-20191203160720619

VI. ICMP 协议

用于发送差错报告和控制信息

image-20191203155726928
image-20191203155752594

VII. NAT 协议

通过将每部 IP 转换为出口 IP 地址提供公网可达性和上层协议的连接能力

image-20191203155922784
image-20191203155943857

2. 路由协议

RIP 协议

距离向量算法的应用

image-20191203162357246

距离参数:跳数(最大 16 跳)

交换内容:完整距离表

工作模式:

  • active:向其他路由器通告路由表
  • passive:被动接收路由表

OSPF 协议

链路状态算法的应用

image-20191203162822948

OSPF 将链路状态广播数据包 LSA 分成 5 类:

  • 所有 OSPF 路由器都产生的包,描述路由器连接到某一区域的链路或某一端口的状态信息
  • 指派路由器产生,描述该网段上所有路由器的状态信息
  • 区域边界路由器产生,描述到区域外部的信息
  • AS 边界路由器产生,描述到区域外部的信息
  • AS 边界路由器产生,描述 AS 外的目的地路由信息

工作过程:

  • 建立路由器邻接关系
  • 发现路由器
  • 选择适当的路由器
  • 维护路由信息

BGP 协议

Border Gateway Protocol,用于不同 AS 之间的路由器进行路由信息交换

image-20191203163445062

  • 通过 TCP 连接传送路由信息

  • 采用路径向量算法

    • 与距离向量法非常类似
    • 每个边界网关向邻居路由器广播到目的节点的完整路径
    • 例如
    • 网关 X 发送到节点 Z 的路径为image-20191203163635681
    • 网关 W 接收网关 X 发来的路径,则image-20191203163802229
  • 消息类型

    • OPEN:确定邻居关系
    • UPDATE:更新路由信息
    • NOTIFICATION:报告差错
    • KEEPALIVE:验证连接可用性

3. 传输层协议

I. UDP 协议

特点:无连接、短报头、无拥塞控制

image-20191203165431908

UDP 伪报头:位于 UDP 报头之前,用于验证UDP 数据报是否被送到正确的节点

image-20191203165649253

多路分解:通过端口号实现

image-20191203165852082

II. TCP 协议

  • 为了使TCP具有独立于特定网络,TCP传送的数据报长度一定小于64K字节
  • TCP 是面向字节流的协议

image-20191203170016636

TCP 报文结构

image-20191203170107364

  • 序号(发送序号):32 位,本报文的序号
  • 确认序号(接收序号):32位,想要接收的下一个的报文序号(循环编址)
  • 数据偏移:单位 4 字节,占 4 位,指明报头的长度(TCP 报头最长为 60 字节),从而定位数据从哪一位开始
  • 保留:占 6 位
  • 标志位:6 位
    • URG:紧急指针字段有效
    • ACK:确认字段有效
    • PSH:请求 push
    • RST:reset,要求重建传输连接
    • SYN:表示要求建立连接
    • FIN:要求释放连接
  • 窗口:16 位,单位为字节,控制对方发送的数据(流量控制)
  • 校验和:16 位
  • 紧急指针:16 位指出窗口中紧急数据未知,有限传输
  • 选项:目前正是使用的只有最大报文长度(MSS),只能在连接建立的时候使用
  • 填充:保证 TCP 报头的长度为 32 位的整数倍

TCP 连接管理

建立连接

image-20191203172142182

不传数据的情况下,SYN 占据一个序号

连接释放

image-20191203173342288

有时候 ACK 和 FIN 在同一个包中发送

TCP 流量控制

image-20191203173542316

  • 窗口大小为 0 时,以下情况仍能发报文:
    • 紧急数据
    • 为防止死锁,发送 1 B 的 TCP 段,以便让接收方重新声明确认好和窗口大小

TCP 拥塞控制

拥塞情况:快网络小缓存、慢网络大缓存

方法一

  • 在连接建立时声明最大可接收段长度
  • 利用可变滑动窗口协议防止出现拥塞

方法二

  • 发送方维护两个窗口:可变发送窗口 + 拥塞窗口,按照两个窗口的最小值发送

  • 拥塞窗口按照慢启动算法和拥塞避免算法变化

    image-20191203175347086

  • 慢启动算法

    • 拥塞窗口初值为该连接允许的一个最大段长,设立阈值
    • 发出一个拥塞窗口大小的的 TCP 段,若正确确认,拥塞窗口 *= 2
    • 重复上述过程,直到出现丢包或达到阈值
  • 拥塞避免算法

    • 若拥塞窗口大于阈值,拥塞窗口开始线性增长,直到发生丢包超时
    • 发生超时后,阈值设为当前拥塞窗口的一般,拥塞窗口重新为该连接允许最大段长
    • 执行慢启动算法

方法二优化

为解决等待重传计时器超时而引起的信道空闲,在方法二的基础上,又引入了快速重传快速恢复两个拥塞控制算法

首先当一个次序紊乱的数据报文到达接收方时,接收方立即发送一个 ACK 要求获取正常的报文,如果仍收到错误报文,仍会重复通过 ACK 向发送方索要,基于探测 ACK 重复包,可探测拥塞:

image-20191203193111037

  • 快速重传算法 + 快速恢复算法
    • 连续收到 3 个重复到达的 ACK( 一共 4 个完全一样的 ACK,期间没有任何其他 ACK 到达),算法开始
    • 将阈值 ssthresh 设为当前拥塞窗口的一半
    • 重传丢失的数据段,将窗口大小设为阈值大小(或阈值大小 +3)

4. 应用层协议

网络应用模式

  1. 客户服务器模式
  2. 浏览器/服务器模式
  3. P2P 模式:网络种红的任何节点都可以作为服务器或者客户端

I. DNS 协议

域名的结构

image-20191203193742181

DNS 解析过程

主机 surf.eurecom.fr 要查询 gaia.cs.umass.edu 的 IP 地址,且主机没有缓存过该地址映射

  • 递归查询过程

    image-20191203194059793

  • 迭代查询过程:减小根域名服务器负担

    image-20191203194232119

DNS 资源记录

DNS 信息都存储在存储资源记录(RR)的分布式数据库中

image-20191203194622132

协议报文

image-20191203194712284

II. SMTP & POP3 协议

image-20191203194902189

电子邮件的格式

RFC822

  • From:表示邮件发送者,包括邮件地址,还可能包括发送方的“真实姓名”
  • Received:接收邮件的路径、日期、时间以及邮件传输代理程序的版本号。
  • Date:发信时间。
  • Message-ID:由传输代理分配给该邮件的唯一标识。
  • To:收件人的电子邮件地址。
  • Subject:邮件主题,是发件人写的,告诉收件人发送该邮件的目的。
  • Content-type:邮件正文的类型,是文本还是MIME格式。
  • Content-length:邮件正文的长度。
  • Cc:表示抄送,它是“Carbon copy”的缩写,意为“复写副本”,它用来指定那些将收到该邮件副本的人的邮件地
  • Reply-To:表示对方回信时用的地址。该地址可能和发送方发信时用的地址不一致。

MIME

image-20191203195310124
image-20191203195349383

实例

image-20191203195454912

SMTP 协议

发送/存储协议

  • 客户端和服务器建立 TCP 连接

  • 客户端发送 HELO

  • 服务器回复 HELO

  • 客户首先发出邮件的发信人地址

  • 其次发出收信人地址

  • 服务器确认收信人存在后,发出可以继续发送的只是

  • 客户发送数据

  • 服务器开始发送邮件到目的客户(过程同上)

  • 发送完毕,断开 TCP 连接

POP 协议

访问协议

  • 认证 (agent <-->server) 和下载
  • 用户代理和邮箱不在同一机器上,用户代理使用此协议将邮箱中的信件取回本地

image-20191203203430845

IMAP 协议

  • 更多功能(更为复杂)
  • 收信人使用多个用户代理访问同一邮箱,邮件始终保持在邮箱中。
  • 在服务器中操作存储在那里的报文

III. HTTP 协议

www 服务:Web 服务器 + 客户端 + 通讯协议

image-20191203204043199

其它已详细学习,不做再次总结

IV. FTP 协议

用于完成 Internet 上进行远程文件的操作

image-20191203204327980
image-20191203204437826

  • 两个并行的TCP被打开
    • 控制: 在服务器和客户间交换命令和响应.
    • 数据: 服务器与客户间数据传输
  • 文件服务器管理维护“状态”: 当前目录, 授权等

V. SNMP 协议

网络管理协议

image-20191203210404461

  • MIB:管理信息库,采用树形结构,通过 OID(对象标识符)唯一标识了对象,比如变量 IP 就可以标识为:.1.3.6.1.2.1.4

    image-20191203210605126

  • SMI:管理信息结构,使用 ASN.1 进行语法描述

  • SNMP:管理协议

    image-20191203210956205