图解TCP_IP 第5版
- 1.7.1 面向有连接型与面向无连接型
- 1.7.2 电路交换与分组交换
- 1.7.3 单播、广播、多播和任播
- 1.9.1 通信媒介
- 1.9.1 传输速率、带宽和吞吐量
- 1.9.2 网卡
- 1.9.3 中继器与集线器
- 1.9.4 网桥/2 层交换机
- 1.9.5 路由器/3层交换机
- 1.9.6 4~7 层交换机
- 1.9.7 网关
- 2.2.1 TCP/IP 的具体含义
- 2.5.1 数据包首部
- 包、帧、数据报、段、消息
- 2.5.2 发送数据包
- 3.1 数据链路层的作用
- 3.1 数据链路层的段
- 3.1 网路拓扑
- 3.2.1 MAC 地址
- 3.2.2 共享介质型网络
- 介质访问控制方式——争用方式
- 介质访问控制方式——令牌传递方式
- 3.2.3 非共享介质网路
- 3.2.3 全双工与半双工
- 3.2.4 以太网交换机的转发方式
- 总线以太网到星型以太网
- 3.2.5 以太网交换机环路
- 3.2.5 生成树协议
- 3.2.6 虚拟局域网 VLAN
- 3.3.1 以太网介绍
- 扩展的以太网
- 3.3.2 以太网分类
- 3.3.2 以太网传输速度单位
- 3.3.4 以太网帧格式
- 以太网帧前导码
- ASCALL 码文本文件的帧定界
- 非 ASCALL 码文本文件的帧定界
- 以太网帧本体
- FCS 作用
- 3.3.4 数据链路的介质访问控制层和逻辑链路控制层
- 3.4.1 无线通信的种类
- 3.4.6 使用无线 LAN 时的注意事项
- 3.5.1 数据链路层——点对点协议 PPP
- 数据链路层的可靠传输服务和不可靠传输服务
- 点对点协议 PPP
- PPP 协议应满足的需求
- PPP 协议的组成——LCP 和 NCP
- PPP 帧格式
- 各字段的意义
- 字节填充
- 零比特填充
- 3.7.1 公共网络——模拟电话线路
- 4.1.1 网络层的作用
- 4.1.1 主机与节点
- 4.1.2 网络层和数据链路层的关系
- 4.2.1 IP 地址的作用
- 4.2.2 路由控制
- 路由控制表
- 4.2.3 数据链路的抽象化
- 不同数据链路的 MTU
- 4.2.4 IP 为面向无连接型
- 4.3.1 IP 地址的定义
- 4.3.2 IP 地址的组成——网络号和主机号
- IP 地址的特点
- IP 地址与硬件地址的区别
- 4.3.3 IP 地址的分类
- 相关习题
- 4.3.6 子网掩码
- 划分子网
- 子网掩码
- 4.3.7 无分类编址 CIDR(构造超网)
- 4.4.2 路由控制表的聚合
- 练习题
- 4.3.8 全局 IP 地址与私有 IP 地址
- 虚拟专用网 VPN
- 4.3.9 全局地址的管理
- 互联网服务提供者 ISP
- WHOIS
- 4.7 IPv4 数据报格式
- 版本 (Version)
- 首部长度(IHL: Internet Header Length)
- 区分服务(TOS: Type of Service)
- 总长度(Total Length)
- 标识(ID: Identification)
- 标志 (Flags)
- 片偏移(FO: Fragment Offset)
- 生存时间(TTL: Time To Live)
- 协议(Protocol)
- 首部校验和(Header Checksum)
- 源地址(Source Address)
- 目标地址(Destination Address)
- 可选项(Options)
- 填充(Padding)
- 数据(Data)
- 4.6 IPv6
- IPv6 必要性和特点
- IPv6 中 IP 地址的表示方法
- IPv6 地址的分类
- 全局单播地址
- 链路本地单播地址
- 唯一本地地址
- 4.8 IPv6 首部格式
- 版本(Version)
- 通信量类(Traffic Class)
- 流标号(Flow Label)
- 有效载荷长度(Payload Length)
- 下一个首部(Next Header)
- 跳数限制(Hop Limit)
- 源地址(Source Address)
- 目标地址(Destination Address)
- 扩展首部
- 4.4.1 IP 地址与路由控制
- 4.5.2 IP 报文的分片和重组
- 4.5.3 路径 MTU 发现
- 4.6.8 IPv6 分段处理
- 5.3 地址解析协议 ARP
- 5.4 网际控制报文协议 ICMP
- ICMP 报文种类
- ICMP 差错报文数据字段格式
- 不应该发送 ICMP 差错报文的情况
- ICMP 询问报文
- ICMP 应用
- ICMPv6
- 5.6 网路地址转换 NAT
- NAT 作用
- NAT 工作机制
- 网络地址与端口号转换 NAPT
- NAT 的潜在问题
- 5.7 IP 隧道
- 5.8 IP 多播
- IP 多播需要的两种协议
- 网际组管理协议 IGMP(Internet Group Management Protocol)
- 多播路由选择协议
- 5.8.2 IP 任播
- 5.5 DHCP
- 5.5.1 DHCP 作用
- 5.5.2 DHCP 工作机制
- 5.5.3 DHCP 中继代理
- 6.1.1 传输层的作用
- 6.1.3 TCP 与 UDP
- 6.2 端口号
- 端口号定义
- 端口号的确定
- 端口号与协议
- 6.3 用户数据报协议 UDP
- 6.6 UDP 首部格式
- 源端口(Source Port)
- 目的端口(Destination Port)
- 长度(Length)
- 检验和(Checksum)
- 6.4 传输控制协议 TCP
- 6.7 TCP 的首部格式
- 源端口(Source Port)
- 目的端口(Destination Port)
- 序号(Sequence Number)
- 确认号(Acknowledgement Number)
- 数据偏移(Data Offset)
- 保留(Reserved)
- 控制位(Control Flag)
- 窗口大小(Window Size)
- 检验和(Checksum)
- 紧急指针(Urgent Pointer)
- 选项(Options)
- 最大报文长度 MSS(Maximum Segment Size)
- 窗口扩大
- 时间戳
- 选择确认
- 6.4.4 TCP 的连接管理
- 套接字
- TCP 连接建立
- TCP 连接释放
- TCP 有限状态机
- 6.4.2 TCP 可靠传输的工作原理
- 停止等待协议
- 连续 ARQ 协议
- 6.4.4 TCP 可靠传输的实现
- 以字节为单位的滑动窗口
- 选择确认 SACK
- 6.4.8 TCP 流量控制
- 6.4.9 拥塞控制
- 拥塞控制与流量控制的区别
- TCP 拥塞控制的方法
- 主动队列关联 AQM
- 5.2 域名系统 DNS
- 5.2.3 域名的构成
- 域名服务器DNS
- 8.2 远程终端协议 TELNET
- 8.3 文件传送协议
- FTP
- 简单文件传送协议 TFTP
- 8.4 电子邮件
- 邮件地址
- 简单邮件传送协议 SMTP
- 邮件读取协议 POP3 和 IMAP
- 8.5 万维网 WWW
- 统一资源定位符 URL
- 超文本传送协议 HTTP
- HTTP报文结构
- 代理服务器
- 在服务器上存放用户的信息 Cookie
- 8.5.4 超文本标记语言 HTML
图解TCP_IP 第5版
1.7.1 面向有连接型与面向无连接型
1.7.2 电路交换与分组交换
1.7.3 单播、广播、多播和任播
1.9.1 通信媒介
1.9.1 传输速率、带宽和吞吐量
在计算机网络(谢希仁,第7版)1.6 节中描述的速率(或数据率)就是这里说的传输速率。
1.9.2 网卡
计算机网络(谢希仁,第7版)3.3.1 节介绍适配器的作用:
1.9.3 中继器与集线器
1.9.4 网桥/2 层交换机
网桥连接起来的属于一个局域网,有相同的网络号,工作在数据链路层。
计算机网络(谢希仁,第7版)3.4.2 节介绍网桥和以太网交换机:
1.9.5 路由器/3层交换机
路由器连接不同的网络,属于网络层。
计算机网络(谢希仁,第7版)4.2.2 节介绍路由器:
1.9.6 4~7 层交换机
这里的传输层指运输层。
1.9.7 网关
2.2.1 TCP/IP 的具体含义
TCP/IP 指的是 TCP/IP 网际协议族(Internet Protocol Suite),并非两种协议。
2.5.1 数据包首部
包、帧、数据报、段、消息
What the message in NetworkLayer is called?
2.5.2 发送数据包
3.1 数据链路层的作用
计算机网络(谢希仁,第7版)3.1.1 节介绍数据链路的定义:
3.1 数据链路层的段
3.1 网路拓扑
3.2.1 MAC 地址
MAC 地址用于识别数据链路中互联的节点。
3.2.2 共享介质型网络
计算机网络(谢希仁,第7版)3.3.2 节介绍载波监听:
介质访问控制方式——争用方式
计算机网络(谢希仁,第7版)3.3.2 节介绍CSMA/CD。
介质访问控制方式——令牌传递方式
令牌
3.2.3 非共享介质网路
3.2.3 全双工与半双工
3.2.4 以太网交换机的转发方式
以太网交换机的介绍见 1.9.4 节。
计算机网络(谢希仁,第7版)3.4.2 节介绍以太网交换机的特点和自学功能。
总线以太网到星型以太网
见计算机网络(谢希仁,第7版)3.4.2 节介绍。
3.2.5 以太网交换机环路
计算机网络(谢希仁,第7版)3.4.2 节介绍以太网交换机环路的形成。
3.2.5 生成树协议
生成树协议(STP)
3.2.6 虚拟局域网 VLAN
计算机网络(谢希仁,第7版)3.4.3 节介绍虚拟局域网。
3.3.1 以太网介绍
扩展的以太网
计算机网络(谢希仁,第7版)3.4.1 节介绍扩展的以太网。
3.3.2 以太网分类
3.3.2 以太网传输速度单位
3.3.4 以太网帧格式
以太网帧前导码
计算机网络(谢希仁,第7版)3.1.2 节介绍封装成帧。
ASCALL 码文本文件的帧定界
非 ASCALL 码文本文件的帧定界
以太网帧本体
FCS 作用
计算机网络(谢希仁,第7版)3.1.2 节介绍差错检测:
CRC(循环冗余校验码)简介与实现解析
3.3.4 数据链路的介质访问控制层和逻辑链路控制层
3.4.1 无线通信的种类
3.4.6 使用无线 LAN 时的注意事项
3.5.1 数据链路层——点对点协议 PPP
数据链路层的可靠传输服务和不可靠传输服务
计算机网络(谢希仁,第7版)3.1.2 节介绍差错检测:
点对点协议 PPP
计算机网络(谢希仁,第7版)3.2 节介绍PPP协议:
PPP 协议应满足的需求
计算机网络(谢希仁,第7版)3.2.1 节介绍PPP协议应满足的需求:
PPP 协议的组成——LCP 和 NCP
PPP 帧格式
计算机网络(谢希仁,第7版)3.2.2 节介绍PPP协议帧格式:
各字段的意义
字节填充
零比特填充
3.7.1 公共网络——模拟电话线路
4.1.1 网络层的作用
4.1.1 主机与节点
主机:配置有 IP 地址但不进行路由控制的设备。
路由器:既配有 IP 地址又具有路由控制能力的设备。
节点:主机和路由器的统称。
4.1.2 网络层和数据链路层的关系
数据链路层:提供直连两个设备之间的通信功能,仍在一个网络中。
网络层:负责在没有直连的两个网络之间进行通信传输,在不同网络之间通信。
4.2.1 IP 地址的作用
数据链路层中的 MAC 地址用来标识同一个链路中不同计算机的一种识别码。
IP 地址用于在连接到网络中的所有主机中识别出进行通信的目标地址,TCP/IP 通信中所有的主机或路由器必须设定自己的 IP 地址。
IP地址和MAC地址的区别和联系是什么?
4.2.2 路由控制
路由控制(Routing)是指将分组数据发送到最终目标地址的功能。
路由控制表
4.2.3 数据链路的抽象化
- IP 是实现多个数据链路之间通信的协议。
- 数据链路根据种类的不同各有特点,如以太网、无线 LAN 或 PPP。
- IP 对不同数据链路的相异特征进行抽象化,因此对不同的数据链路都一视同仁。
- 不同数据链路的区别在于各自的最大传输单位 (MTU:Maximum Transmission Unit)。
不同数据链路的 MTU
IP 数据报的总长度不能超过数据链路层的 MTU 值。
IP 分片处理(IP Fragmentation):
- 将较大的包裹分成多个较小的 IP 包。
- 分片的包到达目的地址后会被组合起来一起传给上层。
- 上层可以忽略分片的细节。
4.2.4 IP 为面向无连接型
IP 面向无连接:
- 在发包前,不需要建立与目标地址之间的连接。
- 即使对端主机关机或不存在也会发送数据包。
- 面向无连接可能会有很多冗余的通信。
IP 无连接原因:
- 为了简化,有连接处理更复杂。
- 为了提速,省去建立连接的时间。
IP 提供尽力服务(Best Effort):
- 不保证数据包被正确的收到,中途可能丢包、错位以及数据量翻倍等问题。
- 可靠交付由上层的 TCP 负责。
4.3.1 IP 地址的定义
IPv4 地址为 32 位正整数,每 8 位一组,共 4 组,为了方便记忆,用点分十进制表示。
4.3.2 IP 地址的组成——网络号和主机号
计算机网络(谢希仁,第7版)4.2.2 节介绍IP 地址的组成:
IP 地址的特点
计算机网络(谢希仁,第7版)4.2.2 节介绍IP 地址的特点:
- IP 地址管理机构在分配 IP 地址时只分配网络号,剩下的主机号由该网络号单位自行分配,便于管理。
- 路由器仅根据目的主机所连接的网路号来转发分组(不考虑主机号),因此减少路由表占用的存储空间以及查找路由表的时间。
- IP 地址是标识一台主机(或路由器)和一条链路的接口。如果一台主机同时连到两个网络,则有两个网络号不同的 IP 地址,这种称为多归属主机(multihomed host)。
- 路由器至少连接两个网络,因此一个路由器至少有两个不同的 IP 地址。
- 一个网络是指有相同网络号 net-id 的主机的集合,因此用转发器或网桥连接起来的若干网路仍为一个网络。
- 不同网路号的局域网必须由路由器连接。
- 互联网平等对待每个 IP 地址。
- 两个路由器直接相连时,两个连接的接口处可以分配也可以不分配 IP 地址;如果不分配 IP 地址,则称为无编号网络(unnumbered network)或无名网络(anonymous network)。
- 路由器只根据目的站的 IP 地址的网络号进行路由选择。
IP 地址与硬件地址的区别
计算机网络(谢希仁,第7版)4.2.2 节介绍IP 地址与硬件地址:
-
物理地址是数据链路层和物理层使用的地址,IP 地址是网络层和以上各层使用的地址,是逻辑地址。
-
不同区间硬件地址和 IP 地址的源地址和目的地址不同,IP 数据报中源地址和目的地址不变,硬件地址会变化。
-
路由器只根据目的站的 IP 地址的网络号进行路由选择。
4.3.3 IP 地址的分类
计算机网络(谢希仁,第7版)4.2.3 节介绍IP 地址的分类:
IP 地址规则:
- 网络号全 0 表示本网络。
- 主机号全 0 表示本主机。
- 网路号 127(01111111)保留作为本地软件环回测试(lookback test)本主机的进程之间的通信。如果主机发送目的地址为环回地址,则本主机中的协议软件处理数据报中的数据,而不会把数据发送到任何网络。
-
A 类地址
- 网络号字段占 1 个字节,只有 7 可使用,第一位固定为 0。
- 可指派的网络号为 126 个 ( 2 7 − 2 2^{7}-2 27−2),这里减 2 是排除网络号全 0 和 网络号为 127 (除了第一位固定 0 外其余位全 1)。
- 主机号占 3 字节,每一个网络最大主机数为 2 24 − 2 2^{24}-2 224−2,减 2 是排除主机全 0 (本主机)和主机全 1 (该网络的所以主机)。
-
B 类地址
- 网络号字段有 2 字节,前 2 位固定为 10,剩下 14 位可以分配网络号。
- 网络地址 128.0.0.0 (除了前两位固定 10,其余位全为 0)不可指派。
- 最小网络地址为 128.1.0.0,可指派的网络号为 2 14 − 1 2^{14}-1 214−1。
- 每一个网路上最大的主机数为 2 16 − 2 2^{16}-2 216−2,排除主机号全 0 和 全 1.
-
C 类地址
- 网络号字段有 3 字节,最前面 3 位固定为 110,剩下 21 位可分配。
- 网络地址 192.0.0.0 不可指派 (除去固定位其余全为 0)。
- 可指派的最小网络地址为 192.0.1.0。
- 可指派的网络总数为 2 21 − 1 2^{21}-1 221−1。
- 每个网络地址最大的主机数为 2 8 − 2 2^{8}-2 28−2,除去主机号全 0 和全 1。
注意:近年来广泛使用的是无分类的 IP 地址,这种分类已成为历史。
相关习题
假设一个子网的地址是192.168.224.0/20,那么其广播地址是?
4.3.6 子网掩码
划分子网
计算机网络(谢希仁,第7版)4.2.1 节介绍划分子网:
划分子网原因:
- IP 地址空间利用率有时很低。
- 给每个物理网络分配一个网络号会使路由表变得太大而降低网络性能。
- 两级 IP 地址不够灵活。
划分子网方法:
- 将一个网络号表示的物理网络划分若干子网(subnet),对外仍表现为一个网络。
- 将两级 IP 地址在本物理网路内部变成三级 IP 地址。
- 路由器仍是根据 IP 数据报的目的网络号查找本单位网络上的路由器,然后该路由器按照子网号找到目的子网。
子网掩码
-
子网掩码解决的问题
- 对于划分子网的网络,从 IP 数据报中识别子网的网络号。
- 不划分子网的网络,仍可以通过子网掩码与 IP 地址逐位相与得到网络地址(目前基本使用无分类的 IP 地址)。
-
子网掩码(subnet mask)定义:子网掩码中 IP 地址的网络标识部分(包括网络号和子网号)全为 1,主机号全为 0。
-
子网掩码的使用
- 所有的网络都必须使用子网掩码,路由器的路由表中也必须有子网掩码这一栏。
- 如果网络不划分子网,则该网络的子网掩码就使用默认子网掩码,即子网掩码中 1 的位置和 IP 地址中网络号字段对应。
-
子网掩码的表示
- IP 地址和子网掩码分别用两行表示,子网掩码全 1 部分对应 IP 地址的网络标识,全 0 部分对应 IP 地址的主机号位置。
- IP 地址后追加网络地址的位数,用 / 隔开。
4.3.7 无分类编址 CIDR(构造超网)
计算机网络(谢希仁,第7版)4.3.3 节介绍CIDR:
-
CIDR 定义:放弃 IP 地址分类,采用任意长度分割 IP 地址的网络标识。这种随机修改组织内各个部分的子网掩码长度的机制称为可变长子网掩码(VLSM)。
-
IP 地址变回两级编址:
-
CIDR 记法
- IP 地址后加上斜线 /,然后写明网络前缀所占的位数。
- IP 地址点分十进制记法中连续的 0 可以省略,如
10.0.0.0/10
可以简写为10/10
。 - 星号记法:网络前缀后面加一个星号(*),星号后面为 IP 地址的主机号。
-
CIRD 地址块: CIRD 将网络前缀相同的连续 IP 地址组成一个 CIDR 地址块。
4.4.2 路由控制表的聚合
- 对内多个子网掩码,对外呈现同一个网络地址,有效的减少路由表的条目。
- 将已知的路由信息传送给周围其他路由器,达到控制路由信息的目的。
练习题
路由聚合习题1
4.3.8 全局 IP 地址与私有 IP 地址
问题: 最初互联网中任意一台主机或路由器必须配有一个唯一的 IP 地址,但随着互联网普及,IP 地址面临耗尽的危险。
计算机网络(谢希仁,第7版)4.8.1 节介绍虚拟专用网 VPN:
解决 IP 地址紧缺:
- 本地地址: 一个机构中不需要将所有的主机接入到外部的互联网,因此对尽在机构内部使用的计算机由本机构自行分配其 IP 地址。(这里的本地地址即为私有地址)
- 全球地址: 与外部互联网连接,向互联网的管理机构申请全球唯一的 IP 地址。(全球地址即为全局地址)
虚拟专用网 VPN
计算机网络(谢希仁,第7版)4.8.1 节介绍虚拟专用网 VPN:
问题: 本机构内某台主机原本使用本地地址,如果需要和互联网连接,那么该本地地址可能和互联网中某个 IP 地址重合。
解决方案: 指明专用地址(private address),即这些地址仅在机构内部使用,不能和互联网上的主机通信。专用地址仅能作为本地地址而不能用作全球地址。互联网上的路由器对目的地址为专用地址的数据报不进行转发。
专用网
虚拟专用网
-
对于一些很大的机构,其各部门分布范围很广,部门之间交换信息则通过虚拟专用网(Virtual Private Network)。
-
定义: 专用网不同网点之间利用公用的互联网通信。
-
要求: 所有通过互联网传送的数据都必须加密。
-
之所以称为虚拟专用网,因为实际并没有真正使用通信专线,VPN 只是效果上和真正的专用网一样。
-
使用: 机构要建立自己的 VPN 就必须为它的每个场所购买专门的硬件和软件,并进行配置,使每个场所的 VPN 系统知道其他场所的地址。
-
示例:
- 每个场所 A 或 B 内部的通信量都不经过互联网。
- 场所 A 的主机 X 向场所 B 的主机 Y 发送的 IP 数据报的源地址是
10.1.0.1
,目的地址是10.2.0.3
。 - 主机 X 发送的数据报先发送到与互联网相连的路由器 R1,路由器 R1 将内部数据数据加密然后重新加上数据报的首部,封装成在互联网上发送的外部数据报,此时外部数据报的源地址和目的地址分别是路由器 R1 的全球地址
125.1.2.3
和路由器 R2 的全球地址194.4.5.6
。 - 路由器 R2 收到数据报后解密,恢复原来的内部数据,根据内部数据报的目的地址
10.2.0.3
将数据报交付给主机 Y。 - 从路由器 R1 到路由器 R2 可能经过多个网络和路由器,但从逻辑上看,R1 和 R2 之间好像一条直通的点对点链路。
-
内敛网 VPN: 由场所 A 和 B 内部网络构成的虚拟专用网 VPN,标识场所 A 和 B 属于同一个机构。
-
外联网 VPN: 一个机构的 VPN 需要某些外部机构参加进来的 VPN。
-
远程接入 VPN: 机构驻留在外部的员工通过个人电脑与公司的主机之间建立 VPN 隧道,使得外地员工感到使用的是公司内部的本地网络。
4.3.9 全局地址的管理
- 世界范围内,全局 IP 由 ICANN (Internet Corporation Assigned Names and Numbers)进行管理,该机构负责管理全世界的 IP 地址和域名。
- 互联广泛使用后,用户向 ISP 申请接入互联网并分配全局 IP 地址。
- 连接到某个区域的网络时,一般不需要联系提供商,只需联系该区域网络的运营商即可。
互联网服务提供者 ISP
计算机网络(谢希仁,第7版)1.2 节介绍ISP:
互联网服务提供者 ISP(Internet Service Provider) 是一个进行商业活动的公司,又称为互联网服务提供商。
ISP 可以从互联网管理机构申请到很多 IP 地址,同时有通信线路以及路由器等连网设备,个人只要向某个 ISP 缴纳费用即可获取所需 IP 地址的使用权,并通过 ISP 接入互联网。
中国电信、中国联通和中国移动等公司为我国最有名的 ISP。
WHOIS
WHOIS 提供查询 IP 地址、AS 编号以及搜索域名分配登记和管理人信息的服务。
4.7 IPv4 数据报格式
在 TCP/IP 的标准中,各种数据格式常常以 32 位(4字节)为单位来描述,其格式如下:
版本 (Version)
- 占 4 位,表示 IP 首部的版本号,IPv4 的版本号即为 4。
- 通信双方使用的 IP 协议的版本必须一致。
首部长度(IHL: Internet Header Length)
计算机网络(谢希仁,第7版)4.2.5 节介绍IP 数据报的格式:
- 占 4 位,表面 IP 首部的大小。
- 单位为 4 字节,如果首部长度值为 5,则长度为 20 字节。
- 首部固定长度为 20 字节,因此首部长度字段的最小值为 5。
- 首部长度的最大值为 15(1111),即首部长度为 60 字节。
- 如果 IP 数据报的首部长度不是 4 字节的整数倍,必须利用最后的填充字段加以填充,因此数据报的数据部分永远在 4 字节的整数倍时开始。
区分服务(TOS: Type of Service)
- 占 8 位,表明服务质量,具体含义如下:
总长度(Total Length)
计算机网络(谢希仁,第7版)4.2.5 节介绍IP 数据报的格式:
- 占 16 位,表示IP 数据报首部加上数据部分的总字节数。
- 总长度最大为 65535 字节。
- 总长度不能超过数据链路层规定的 MTU 值。
- IP 协议规定,互联网中所有的主机和路由器,必须接受长度不超过 576 字节的数据报。
- 分片后的总长度为该分片的首部长度和数据长度的总和。
标识(ID: Identification)
- 占 16 位,用于分片重组,同一个 IP 数据报分片的标识相同。
- IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。
- 如果 ID 相同,但目的地址、源地址或协议不同,也被认为不同的分片。
标志 (Flags)
- 占 3 位,表示包被分片的相关信息,目前只有两位有意义。
- 下图中比特 2 为最低位,记为 MF;比特 1 为中间位,记为 DF。
片偏移(FO: Fragment Offset)
- 占 13 位,标识每个分片相对于原始数据的位置,第一个分片的值为 0。
- 单位为 8 字节,因此每个分片的长度是 8 字节的整数倍。
生存时间(TTL: Time To Live)
- 占 8 位,表面数据报在网路中的寿命,防止无法交付的数据报无限制地在互联网中兜圈子。
- 当前,TTL 字段功能改为跳数限制,路由器每次转发数据报之前将 TTL 值减 1,若 TTL 值减小到 0,就丢弃该数据报。
- 现在 TTL 的单位不是秒,而是跳数,其意义为数据报在互联网中至多可经过多少个路由器。
- 最大值为 255。
- TTL 为 1 表示数据报只在本局域网中传送。
协议(Protocol)
- 占 8 位,指明数据报携带的数据使用何种协议,以便目的主机的 IP 层知道应将数据报的数据部分上交给哪个协议处理。
首部校验和(Header Checksum)
计算机网络(谢希仁,第7版)4.2.5 节介绍IP 数据报的格式:
- 占 16 位,只校验数据报的首部,不校验数据部分,以便减少路由器的工作。
- 为了减少校验的工作量,不用复杂的 CRC 校验法,而是采用如下方法:
源地址(Source Address)
- 占 32 位,表示发送端的 IP 地址。
目标地址(Destination Address)
- 占 32 位,表示接收端的 IP 地址。
可选项(Options)
- 长度可变,从 1 字节到 40 字节不等,用来支持排错、测量、安全等措施。
填充(Padding)
- 在有可选项时,首部长度可能不是 4 字节整数倍,因此在填充字段填充 0,调整为 4 字节的整数倍。
数据(Data)
- 存入数据,包含上层协议的首部和数据部分。
4.6 IPv6
IPv6 必要性和特点
- IPv6 的出现是为了解决 IPv4 地址耗尽的问题。
- IPv4 地址写成 4 个 8 位字节,共 32 位;IPv6 地址一般写成 8 个 16 位字节,共 128 位。
- IPv6 仍是无连接传送,但将协议数据单元 PDU 称为分组而不是 IPv4 的数据报。
- IPv6 的首部和 IPv4 的首部不兼容。
- IPv6 支持即插即用,不需要使用 DHCP 服务器也能自动分片 IP 地址。
- IPv6 首部改为 8 字节对齐,IPv4 首部是 4 字节对齐。
- IPv6 数据报由两大部分组成,即基本首部(base header) 和后面的有效载荷(payload)。
- IPv6 首部常用固定值为 40 字节,不再使用首部校验码。
- 路由器不再做分片处理,通过路径 MTU 发现只由主机进行分片。
- 采用认证与加密功能。
- 多播、Mobile IP 成为扩展功能。
IPv6 中 IP 地址的表示方法
计算机网络(谢希仁,第7版)4.6.2 节介绍IPv6:
-
点分十进制
-
冒号十六进制(colon hexadecimal notation)
每个 16 位用 4 个十六进制的数表示,每个部分可省去前面的 0,如下面第 5 部分将 0000 简写为 0:
-
零压缩(zero compression)冒号十六进制
一连串的 0 可用一对冒号代替,但一个地址中只能用一次零压缩:
-
冒号十六进制结合点分十进制
冒号分隔的值是 16 位,点分十进制的值为 8 位:
CIDR 斜线法仍使用,可以在上述 IPv6 地址后面加斜线指明网络标识字段位数:
IPv6 地址的分类
计算机网络(谢希仁,第7版)4.6.2 节介绍IPv6:
全局单播地址
链路本地单播地址
唯一本地地址
4.8 IPv6 首部格式
计算机网络(谢希仁,第7版)4.6.1 节介绍IPv6 的基本首部:
版本(Version)
- 占 4 位,表示 IP 首部的版本号,IPv6 的版本号即为 6。
- 通信双方使用的 IP 协议的版本必须一致。
通信量类(Traffic Class)
- 占 8 位,类似 IPv4 的 TOS 字段,为了区分不同的 IPv6 数据报的类别或优先级。
流标号(Flow Label)
计算机网络(谢希仁,第7版)4.6.1 节介绍IPv6 的基本首部:
有效载荷长度(Payload Length)
- 占 16 位,指明 IPv6 数据报除基本首部以外的字节数(所有的扩展首部算在有效载荷内)。
- 该字段的最大值是 64 KB。
下一个首部(Next Header)
跳数限制(Hop Limit)
源地址(Source Address)
- 占 128 位,表示发送端 IP 地址。
目标地址(Destination Address)
- 占 128 位,表示接收端 IP 地址。
扩展首部
4.4.1 IP 地址与路由控制
- 发送 IP 数据包时需要指明路由或主机的信息才能发往目标地址,保存这种信息的就是路由控制表(Routing Table)。
- 路由控制就是路由器按照正确的方向转发 IP
- 实现 IP 通信的主机和路由器都必须有路由控制表。
- 路由器根据收到的数据包中目标主机的 IP 地址与路由控制表的比较得出下一个应该接收的路由器。
- 路由控制表有两种:
- 静态路由控制
管理员手动设置。 - 动态路由控制
路由器与其他路由器相互交换信息时自动刷新。
网络上互联的路由器之间必须设置好路由协议,保证正常读取路由控制信息。
- 静态路由控制
- IP 协议始终认为路由表是正确的。
- 路由控制表记录网络地址与下一步应该发送至路由器的地址。
- 默认路由: 标记为
0.0.0.0/0
或default
,该地址不是指 IP 地址是0.0.0.0
。 - 主机路由: IP 地址/32 为主机路由(Host Route),表示整个 IP 地址的所有位都参与路由。多用于被不希望通过网络地址路由的情况。
- 环回地址: 同一台计算机上程序之间进行网路通信时使用的一个默认地址。网路号 127(01111111)保留作为本地软件环回测试(lookback test)本主机的进程之间的通信。
- IP 地址的网络部分用于进行路由控制。
计算机网络(谢希仁,第7版)4.2.6 节介绍IP 层转发分组的流程:
- 互联网上转发分组时,是从一个路由器转发到下一个路由器。
- 路由表中每一条路由的信息为:(目的网络地址,下一跳地址),没有指明到某个网络的完整路径(先到哪个路由器,再到哪个路由器等)。
- 特定主机路由: 对特定的目的主机指明一个路由,方便对网络的连接或路由表进行排错时使用。
- 路由器找到下一跳路由器的过程:
- 数据报的首部提取目的主机的 IP 地址 D,得出目的网络地址 N。
- 若 N 是与此路由器直接相连的某个网络地址,则进行直接交付,即直接将数据报交付给目的主机。
- 若 N 不在此路由器直接相连的某个网络地址中,如果此路由器的路由表中有目的地址为 D 的特定主机路由,则将数据报传送给路由表中所指明的下一跳路由器。
- 如不在上述情况中,若路由表中有到达网络 N 的路由,将数据报传送给路由表中指明的下一跳路由器。
- 如不在上述情况中,若路由表中有一个默认路由,则将数据报传送给默认路由器。
- 如不在上述情况中,报告转发分组出错。
4.5.2 IP 报文的分片和重组
- 从 4.2.3 节可知,数据链路对报文的大小由限制,以太网默认 MTU 是 1500 字节,即 IP 数据报的总长度(首部加上数据部分)不能超过 1500 字节。
- 如果 IP 数据报超过数据链路层规定的 MTU 时路由器将此 IP 数据报进行分片后发送。
- 分片后的 IP 数据报在被重组时,只能由目标主机进行,路由器不负责重组。(分片的 IP 数据报不一定由相同的路由器转发)
4.5.3 路径 MTU 发现
分片机制的不足:
- 加重路由器的处理负荷。
- 如果某个小分片丢失,整个 IP 数据报作废。
路径 MTU(Path MTU): 发送端主机到接收端主机之间不需要分片时最大 MTU 的大小,即路径中存在的所有数据链路中最小的 MTU。
路径 MTU 发现(Path MTU Discovery): 发送主机按照路径 MTU的大小将数据报分片后进行发送,这样可以避免在中途的路由器上进行分片处理。
4.6.8 IPv6 分段处理
5.3 地址解析协议 ARP
为什么需要 ARP
- 网络层使用 IP 地址,但实际网络的链路上传输数据帧时,必须使用使用该网络的硬件地址。
- IP 地址与硬件地址无简单的映射关系,且网络上可能由新的主机加入或者更换网络适配器而导致主机的硬件地址改变。
- 因此需要 ARP 协议,通过 IP 地址找出硬件地址。
ARP 特点
- ARP 属于网络层,以目标 IP 地址为线索,用来定位下一个应该接收数据分包的网络设备(主机或路由器)对应的 MAC 地址。(数据链路层使用的是硬件地址)
- ARP 只使用 IPv4,不能用于 IPv6。
- ARP 解决同一个局域网上主句或路由器 IP 地址和硬件地址的映射问题。
ARP 工作机制
计算机网络(谢希仁,第7版)4.2.4 节介绍地址解析协议 ARP:
- 每个主机都设一个 ARP 高速缓存(ARP cache),存放本局域网上各主机和路由器的 IP 地址到硬件地址的映射表,并且经常动态更新。
- ARP 对高速缓存中的每个映射都设置生存时间,超过生存时间的项目就删除。
- 源主机和目的主机不在同一局域网情况,如下面主机 H1 发送数给主机 H2:
5.4 网际控制报文协议 ICMP
计算机网络(谢希仁,第7版)4.4 节介绍ICMP(Internet Control Message Protocol):
- ICMP 报文装在 IP 数据报中,作为数据部分,是网络层的协议。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告,便于进行网络问题诊断。
- ICMP 报文代码字段用于进一步区分某种类型中的几种不同情况。
- ICMP 报文检验和字段用来检验整个 ICMP 报文。(IP 数据报的首部检验和不检验数据部分)
ICMP 报文种类
计算机网络(谢希仁,第7版)4.4.1 节介绍 ICMP 报文种类:
- ICMP 差错报告报文
- ICMP 询问报文
ICMP 差错报文数据字段格式
- 所有 ICMP 差错报文数据字段有相同的格式。
- 数据字段组成:收到的需要进行差错报告的 IP 数据报的首部加上数据字段的前 8 个字节(包含运输层端口号(对于 TCP 和 UDP)以及运输层报文发送序号(对于 TCP))。
不应该发送 ICMP 差错报文的情况
计算机网络(谢希仁,第7版)4.4.1 节介绍 ICMP 差错报文:
ICMP 询问报文
计算机网络(谢希仁,第7版)4.4.1 节介绍 ICMP 询问报文:
ICMP 应用
计算机网络(谢希仁,第7版)4.4.2 节介绍 ICMP 的应用举例:
-
分组网间探测 PING(Packet InterNet Groper)
- 用来探测两台主机之间的连通性。
- 利用 ICMP 回送请求与回送回答报文。
- 没有通过运输层,应用层直接使用网络层。(ping 属于应用层非网络层)
-
traceroute
- 跟踪一个分组从源点到终点的路径。
- Windows 操作系统中这个命令是 tracert。
ICMPv6
- ICMPv6 支持 IPv6 使用,反馈一些差错信息。
- ARP 和 IGMP 的功能已被合并到 ICMPv6。
5.6 网路地址转换 NAT
NAT 作用
- NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接到互联网时转而使用全局 IP 地址的技术。
NAT 工作机制
计算机网络(谢希仁,第7版)4.8.2 节介绍 网络地址转换 NAT:
- 在专用网接到互联网的路由器上安装 NAT 软件,这种路由器称为 NAT 路由器,至少有一个有效的全局 IP 地址。
- 本地地址的主机和外界通信时,在 NAT 路由器上将其本地地址转换为全局 IP 地址,再和互联网连接。
- NAT 路由器具有 n 个全球 IP 时,专用网内最多可以同时有 n 台主机接入互联网。
- NAT 路由器收到数据报时,通过 NAT 地址转换表,将全局 IP 地址转换为私有 IP 地址。
- 通过 NAT 路由器的通信必须由专用网内的主机发起。如果由互联网上的主机发起通信,当 IP 数据报到达 NAT 路由器时,NAT 路由器不知道应当把目的 IP 地址转换为专用网中的哪个本地 IP 地址。
- 转换表在 NAT 路由器上自动生成。
网络地址与端口号转换 NAPT
使用端口号的 NAT 叫 NAPT(Network Address and Port Translation)。
NAPT 对 IP 地址和端口号都进行转换。
NAT 的潜在问题
5.7 IP 隧道
5.8 IP 多播
计算机网络(谢希仁,第7版)4.7.1 节介绍 IP 多播:
背景
- 许多应用需要由一个源点发送到许多终点,即一对多通信。
- 多播可大大节约网络资源。
单播与多播的比较
多播路由器
- 互联网范围内的多播要靠路由器实现,这些路由器必须增加一些能够识别多播数据报的软件。
- 能运行多播协议的路由器为多播路由器(multicast router)。
- 多播路由器也可转发普通的单播 IP 数据报。
多播数据报
- 多播数据报的目的地址为多播组的标识符,即 IP 地址中的 D 类地址,其前四位为 1110。
- 多播数据报首部的协议字段值为 2,表面使用国际组管理协议 IGMP。
- 多播地址只能用于目的地址,不能用于源地址。
- 多播数据报不产生 ICMP 差错报文。
IP 多播的分类
- 本局域网上进行硬件多播。
- 互联网范围进行多播。
IP 多播需要的两种协议
网际组管理协议 IGMP(Internet Group Management Protocol)
多播路由选择协议
5.8.2 IP 任播
5.5 DHCP
5.5.1 DHCP 作用
- 实现自动设置 IP 地址、统一管理 IP 地址分配。
- 有了 DHCP(Dynamic Host Configuration Protocol),计算机只要连接到网络上就可以进行 TCP/IP 通信,实现即插即用。
- DHCP 适用于 IPv4 和 IPv6。
5.5.2 DHCP 工作机制
使用前环境配置
- 需要一台 DHCP 服务器,通常由该网段的路由器充当。
- 将 DHCP 所要分配的 IP 地址设置到服务器上。
- 将相应的子网掩码、路由控制信息以及 DNS 服务器的地址等设置到服务器。
从 DHCP 获取 IP 地址
DHCP工作过程详解
5.5.3 DHCP 中继代理
6.1.1 传输层的作用
提供进程之间通信。
6.1.3 TCP 与 UDP
TCP 与 UDP 是传输层(运输层)的两种协议。
运输协议数据单元 TPDU(Transport Protocol Data Unit): 两个对等运输实体在通信时传送的数据单位,在 TCP 协议中叫TCP 报文段(segment),UDP 中叫 UDP 用户数据报。
传输控制协议 TCP(Transmission Control Protocol)
- 提供面向连接的服务,传送数据前建立连接,数据传送结束后释放连接。
- 不提同多播或广播服务。
- 提供可靠的运输服务,增加开销,如确认、流量控制、计时器以及连接管理等。
- 可靠的流协议。流就是不间断的数据结构,如同排水管道中的水流。
- TCP 实行顺序控制或重发控制机制来提供可靠传输。
- TCP 具备流量控制、拥塞控制、提高网络利用率等众多功能。
用户数据报协议 UDP(User Datagram Protocol)
- 不具备可靠性、面向无连接的数据报协议。
6.2 端口号
计算机网络(谢希仁,第7版)5.1.3 节介绍运输层的端口:
来源:
- 运输层有复用和分用功能,因此需要给每个进程赋予一个明确的标志。
- 复用: 应用层的所有应用进程都可以通过运输层传到网络层。
- 分用: 运输层从网络层收到发给各进程的数据后,必须分别交付给指明的各进程。
- 进程标识符在不同操作系统中格式不统一,且进程的创建和撤销是动态的。
端口号定义
在运输层使用协议端口号(protocol port number) 来识别不同的进程 。
- 这种协议端口是软件端口,区别于路由器或交换机上的硬件端口。
- 运输层的端口号有 16 位。
- 端口号只具有本地意义,标志本计算机中各个进程在和运输层交互时的层间接口。在互联网的不同计算机中,相同的端口号没有关联。
端口号的确定
- 熟知端口号(well-known port number)(服务端使用)
数值在 0 ~ 1023,见 Service Name and Transport Protocol Port Number Registry
- 登记端口号(服务端使用)
数值在 1024 ~ 49151,在 IANA 按照规定的手续登记,防止重复,用于没有熟知端口的应用程序。 - 短暂端口号
数值在 49152 ~ 65535,仅在客户端进程运行时动态选择,通信结束后端口号就不存在。
端口号与协议
- 端口号由其使用的运输层协议决定。
- 不同的运输层协议可以使用相同的端口号。
- 数据到达网路层后,先检查 IP 数据报首部的协议号,再传给相应的协议模块,因此即使是同一个端口号,由于运输层协议各自独立地进行处理,因此相互不会受影响。
6.3 用户数据报协议 UDP
计算机网络(谢希仁,第7版)5.2 节介绍UDP:
UDP 只在 IP 的数据报服务之上增加少量的功能,即复用和分用以及差错检测。
- UDP 是无连接的,发送数据前不需要建立连接,因此减少开销和发送数据前的时延。
- UDP 使用尽最大努力交付,不保证可靠交付。
- UDP 是面向报文,将应用层交下来的报文直接增加首部后交给网络层,不拆分或合并。
- UDP 没有拥塞控制,网络拥塞时源主机发送速率不会降低。
- UDP 支持一对一、一对多、多对一和多对多的交互通信。
- UDP 首部开销小,只有 8 字节,TCP 首部最小 20 字节。
6.6 UDP 首部格式
计算机网络(谢希仁,第7版)5.2.2 节介绍UDP 首部格式:
UDP 首部占 8 字节,共 4 个字段,每个字段 2 字节。
源端口(Source Port)
- 占 2 字节,表示发送端端口号。
- 可选项,需要对方回信时选用,默认为 0。
目的端口(Destination Port)
- 占 2 字节,表示接收端口,终点交付报文时必须使用。
长度(Length)
- 占 2 字节,包含首部和数据长度之和。
检验和(Checksum)
- 占 2 字节,检测 UDP 数据报再传输中是否有错,有错则丢弃。
- 将首部和数据部分一起检验,不是 IP 数据报只检验首部。
- 在 UDP 数据报之前增加 12 字节的伪首部(临时添加,不向下或向上传递)用来检验。
检验和计算:
6.4 传输控制协议 TCP
计算机网络(谢希仁,第7版)5.3 节介绍传输控制协议 TCP:
- TCP 是面向连接的协议,发送数据前先建立 TCP 连接,传送数据结束后,释放已建立的 TCP 连接。
- 每条 TCP 连接只能有两个端点(endpoint),只能点对点(一对一)。
- TCP 提供可靠交付的服务,传送的数据无差错、不丢失、不重复并且按序达到。
- TCP 提供全双工通信。TCP 连接的两端都设有发送缓存和接收缓存,临时存放双向通信的数据。
- TCP 是面向字节流的。TCP 将应用程序交下来的数据块(大小不等)看成一连串的无结构的字节流。发送方的数据块和接收方的数据块不一定有对应大小的关系(如发送 10 个数据块,接收 4 个数据块),但字节流是相同的。
- TCP 虽然是面向字节流的,但传送的数据单元是报文段。
6.7 TCP 的首部格式
计算机网络(谢希仁,第7版)5.5 节介绍TCP 的首部格式:
- TCP 虽然是面向字节流的,但传送的数据单元为报文段。报文段分为首部和数据两部分。
- 首部的前 20 字节固定,后面有 4n 字节根据需要而增加。
源端口(Source Port)
- 占 2 字节,写源端口号。
目的端口(Destination Port)
- 占 2 字节,写目的端口号。
序号(Sequence Number)
- 占 4 字节,序号增加到最大( 2 32 − 1 2^{32}-1 232−1)后,下一个序号为 0.
- 因为 TCP 是面向字节流的,发送的每个字节都按序编号,序号字段的值为本报文段所发送数据的第一个字节的序号。
- 字节流的起始序号在建立连接是设置,且设置的起始序号是随机数而非从 0 开始。
- 建立连接和断开连接时发送的 SYN 包和 FIN 包虽然不携带数据,但也会占用序号。
确认号(Acknowledgement Number)
- 占 4 字节,只下一次应收到的数据的序号。例如 B 收到 A 发送的报文段的序号范围为 501 ~ 700,则发送的确认号为 701。如果中间 600 的字节未收到,但 601 ~ 700 均收到,则发送的确认号为 600。
数据偏移(Data Offset)
- 占 4 位,表示 TCP 报文段的数据部分距离起始处的距离,即首部长度。
- 单位是 4 字节,最大值为 15,即首部最大长度为 60 字节。
保留(Reserved)
- 占 4 位,一般设为 0,为了以后扩展使用。
控制位(Control Flag)
窗口大小(Window Size)
检验和(Checksum)
- 占 2 字节,检验范围包括首部和数据两部分。
紧急指针(Urgent Pointer)
- 占 2 字节,仅 URG = 1 时有意义,指明本报文段中紧急数据的字节数(紧急数据结束后即为普通数据)。
- 窗口大小为 0 时也可发送紧急数据。
选项(Options)
- 长度可变,最大 40 字节,用于提高 TCP 的传输性能。
- 该字段尽量调整为 32 位的整数倍。
最大报文长度 MSS(Maximum Segment Size)
TCP 报文数据字段的最大长度。
窗口扩大
时间戳
选择确认
6.4.4 TCP 的连接管理
计算机网络(谢希仁,第7版)5.9 节介绍TCP 的运输连接管理:
套接字
计算机网络(谢希仁,第7版)5.3.2 节介绍TCP 的连接:
- TCP 连接的端点叫套接字(socket)。
- 套接字 socket = (IP 地址: 端口号)
- 每一条 TCP 连接唯一地被通信两端的两个端点所确定。
- 同一个名字 socket 在不同语境有不同含义:
TCP 连接建立
计算机网络(谢希仁,第7版)5.9 节介绍TCP 的运输连接管理:
TCP 连接释放
计算机网络(谢希仁,第7版)5.9 节介绍TCP 的运输连接管理:
TCP 有限状态机
计算机网络(谢希仁,第7版)5.9 节介绍TCP 的运输连接管理:
6.4.2 TCP 可靠传输的工作原理
计算机网络(谢希仁,第7版)5.4 节介绍TCP 可靠传输:
停止等待协议
- 传输的数据单元称为分组。
- 每发送完一个分组就停止发送,等待对方确认,收到确认再发送下一个分组。
- 这种确认和重传机制实现的可靠传输协议称为自动重传请求 ARQ(Automatic Repeat reQuest)。
- 信道利用率低:
-
无差错情况
-
出现差错
- 接收方收到有差错的分组就丢弃,其他什么不做(不通知发送方)。
- 发送方超过一定时间未收到确认则重新发送分组,即超时重传,需要一个超时计时器。
- 发送方在收到确认前先暂时保存发送分组的副本。
- 分组和确认分组必须进行编号。
- 超时计时器设置的重传时间需比分组传输的平均往返时间更长一点。
-
确认丢失和确认迟到
- 接收方发送的确认分组迟到或丢失导致发送方重新发送分组。
- 接收方应丢弃重复的分组。
- 接收方再次向发送方发送确认。
连续 ARQ 协议
停止等待协议传输效率低,因此采用流水线传输方式。
- 发送方维持一个发送窗口,将发送窗口内的分组连续发送出去。
- 发送方每收到一个确认,将发送窗口向前滑动一个分组的位置。
- 接收方一般采用累计确认方式,收到几个分组后,对按序到达的最后一个分组发送确认。例如发送方发送 5 个分组,中间的第 3 个分组丢失,则接收方只能对前 2 个分组发出确认,因此发送方需对后面 3 个分组重传,这种称为Go-back-N(回退 N)。
6.4.4 TCP 可靠传输的实现
计算机网络(谢希仁,第7版)5.6 节介绍TCP 可靠传输的实现:
以字节为单位的滑动窗口
- A 在未收到 B 的确认时可连续将窗口内的数据发送出去。
- A 已发送但未收到确认的数据必须暂时保留,以便超时重传。
- A 的发送窗口不能超过 B 的接收窗口。
- 发送窗口的后沿不可能继续向后。
- 发送窗口的前沿可能不动:
- 没有收到新的确认,对方通知窗口的大小不变。
- 收到了新的确认但对方通知窗口缩小了。
- 发送窗口的前沿可能向后收缩:
- 对方通知的窗口缩小,但 TCP 标准不建议这样。
用状态指针描述发送窗口的状态:
选择确认 SACK
6.4.8 TCP 流量控制
计算机网络(谢希仁,第7版)5.7.1 节介绍利用滑动窗口实现流量控制:
流量控制(flow control): 让发送方的发送速率不要太快,接收方来得及接收。
6.4.9 拥塞控制
计算机网络(谢希仁,第7版)5.8 节介绍TCP 拥塞控制:
拥塞(congestion): 对网络中某一资源的需求超过了该资源所能提供的可用部分,导致网络性能变坏的情况。
拥塞控制与流量控制的区别
TCP 拥塞控制的方法
-
慢开始算法
- 发送方维持一个叫**拥塞窗口 cwnd(congestion window)**的状态变量,拥塞窗口的大小取决于网络的拥塞程度,并且动态变化。
- 发送方让自己的发送窗口等于拥塞窗口。
- 发送方没有按时收到确认报文(超时)就判断网络出现拥塞。
- 初始拥塞窗口 cwnd 设置为不超过 2 至 4 个发送方的最大报文段 SMSS(Sender Maximum Segment Size)的数值:
- 每收到一个确认报文段,增加拥塞窗口值:
- 为了避免拥塞窗口过大,还需设置慢开始门限 ssthresh 状态变量:
-
拥塞避免算法
- 让拥塞窗口线性规律缓慢增长,每经过一个 RTT 就加 1。
- 让拥塞窗口线性规律缓慢增长,每经过一个 RTT 就加 1。
-
快重传算法
-
快恢复算法
- 将快恢复时的拥塞窗口值调大一些(增大 3 个报文段的长度),即等于新的 ssthresh + 3 * MSS。
-
AIMD 算法
主动队列关联 AQM
5.2 域名系统 DNS
计算机网络(谢希仁,第7版)6.1 节介绍域名系统 DNS:
- IP 地址不便记忆,DNS 管理主机名和 IP 地址之间的对应关系。
- DNS 是一个联机分布式数据库系统,采用客户服务器方式。
- DNS 使大多数名字在本地解析,仅少量解析需要在互联网上通信。
- DNS 是分布式系统,即使单个计算机出了故障,也不妨碍整个 DNS系统正常运行。
域名到 IP 地址的解析过程要点:
- 需要解析域名的进程调用解析程序(resolver),成为 DNS 的一个客户。
- 进程将待解析的域名放在 DNS 请求报文中,以 UDP 用户数据报方式发给本地域名服务器。
- 如本地域名服务器不能回答请求,则此域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求,直到找到能回答该请求的域名服务器为止。
5.2.3 域名的构成
- 域名结构采用层次树状结构的命名方法。
- 任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。
- 每个域名都由标号(label)序列组成,各标号之间用点隔开。
- 标号由英文字母和数字组成,每个标号不超过 63 个字符,不区分大小写,除了连字符(-)外泵使用其他标点符号。
- 级别最低的域名在最左边,级别更高的域名写在最右边。
- 多个标号组成的完整域名总共不超过 255 个字符。
- DNS 不规定一个域名要包含多少个下级域名,也不规定每一级域名代表什么意思。
- 各级域名由其上一级域名的域名管理机够管理,最高的顶级域名由 ICANN 管理。
- 任何公司、机构都有权向 ICANN 申请新的顶级域。
- 国家顶级域名下注册的二级域名由该国家自行确定。
顶级域名 TLD(Top Level Domain)
-
国家级域名 nTLD
- cn 为中国
- us 为美国
- uk 为英国
-
通用级域名 gTLD
- com 为公司企业
- net 为网络服务机构
- org 为非营利组织
- int 为国际组织
- edu 为美国专用的教育机构
- gov 为美国政府部门
- mil 为美国军事部门
-
基础结构域名(infrastructure domain)
- 这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称反向域名。
域名服务器DNS
具体实现域名系统是使用分布在各地的域名服务器。
不是每一级的域名对应一个域名服务器,因为这样会使域名服务器数量太多,降低运行效率。
DNS 分区
- 一个服务器管辖的范围叫区(zone)。
- 一个区中所有节点必须连通。
- 每个区设置相应的权限域名服务器(authoritative name server),用来保存该区所有主机的域名到 IP 地址的映射。
- 区可能小于或等于域,但不能大于域。
域名服务器分类
- 根域名服务器(root name server)
- 最高层次的域名服务器,最重要的域名服务器。
- 所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
- 根域名服务器有 13 个域名,一个根域名服务器由多台机器组成,共用一个 IP 地址。
- 根域名服务器采用任播技术,路由器找距离 DNS 客户最近的一个根域名服务器。
- 顶级域名服务器
- 管理在该顶级域名服务器注册的所有二级域名。
- 权限域名服务器
- 负责一个区的域名服务器。
- 本地域名服务器
- 当一台主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
- 每一个互联网服务提供者 ISP,或一个大学,甚至一个系,都可以拥有一个本地域名服务器。
- 本地域名服务器离用户较近,一般不超过几个路由器的距离。
DNS 域名服务器把数据复制到几个域名服务器保存,其中一个是主域名服务器(master name server),其他的是辅助域名服务器(secondary name server)。
主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。
域名解析过程
- 主机向本地域名服务器的查询通常采用递归查询(recursive query)。如果本地服务器不知道被查询的 IP 地址,则本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
- 本地域名服务器向根域名服务器的查询通常采用迭代查询(iterative query)。根域名服务器要么告诉本地域名服务器 IP 地址,要么告诉下一步向哪个域名服务器查询,让本地域名服务器自己继续查询。
高速缓存域名服务器
- 为了减轻根域名服务器的负荷和互联网上 DNS 查询报文数量,在域名服务器中使用高速缓存。
- 为保持告诉缓存中的内容正确,域名服务器应该为每项内容设置计时器并处理超过合理时间的项。
8.2 远程终端协议 TELNET
计算机网络(谢希仁,第7版)6.3 节介绍远程终端协议 TELNET:
- 使用 TCP 连接,用户击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。
- 使用客户服务器方式。
- 能适应许多计算机和操作系统的差异。
- 定义了数据和命令应怎样通过互联网,即网络虚拟终端 NVT(Network Virtual Terminal)。
- 客户软件把用户的击键和命令转换为 NVT 格式,并送交服务器。
8.3 文件传送协议
FTP
计算机网络(谢希仁,第7版)6.2 节介绍文件传送协议:
- 文件传送协议 FTP(File Transfer Protocol)提供交互式访问允许客户指明文件类型与格式,并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。
- FTP 适合于异构网络中任意计算机之间传送文件。(FTP 屏蔽了各计算机系统的细节)
- FTP 使用 TCP 可靠的运输服务。
- FTP 主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
- FTP 使用客户服务器方式,一个 FTP 服务器进程可同时为多个客户进程提供服务。
- FTP 服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外若干从属进程,负责处理单个请求。
主进程工作步骤
- 打开数值端口(端口号为 21),使客户进程能够连接上。
- 等待客户进程发出连接请求。
- 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
- 回到等待状态,继续接受其他客户进程发来的请求。主进程和从属进程的处理是并发进行的。
FTP 传输数据问题:
简单文件传送协议 TFTP
- TCP/IP 协议族还有一个简单文件传送协议 TFTP(Trivial File Transfer Protocol),是一个很小且易于实现的文件传送协议。
- TFTP 是客户服务器方式,使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。
- TFTP 只支持文件传输而不支持交互。
- TFTP 每次传送的数据报文中有 512 字节的数据,但最后一次可不足 512 字节。
- 数据报文按序编号,从 1 开始。
- 支持 ASCLL码或二进制传送。
- 可对文件读写。
- 使用很简单的首部。
- 工作很像停止等待协议,发送完一个文件就等待对方确认,确认时应指明所确认的块编号。超时则重发数据。
8.4 电子邮件
计算机网络(谢希仁,第7版)6.5 节介绍电子邮件:
提供电子邮件服务的协议叫 SMTP(Simple Mail Transfer Protocol),运输层使用 TCP 协议。
邮件地址
简单邮件传送协议 SMTP
-
建立连接
-
邮件发送
-
连接释放
邮件读取协议 POP3 和 IMAP
- POP3
- IMAP
8.5 万维网 WWW
计算机网络(谢希仁,第7版)6.4 节介绍万维网 WWW:
- 万维网 WWW(World Wide Web)是一个大规模的、联机式的信息储藏所,简称 web。
- 万维网用链接的方式从互联网上一个站点访问另一个站点。
- 万维网是一个分布式的**超媒体(hypermedia)系统,是超文本(hypertext)**系统的扩展。超文本是指包含指向其他文档链接的文本。
- 超文本是万维网的基础。
- 超媒体与超文本的区别在于文档内容不同,超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画以及视频图像等。
- 万维网以客户服务器方式工作。
统一资源定位符 URL
- URL(Uniform Resource Locator)用来标志万维网上的文档,每个文档在互联网范围内有唯一的标识符 URL。
- URL 表示从互联网上得到的资源位置和访问这些资源的方法。
- URL 给资源的定位提供一种抽象的识别方法。
- 资源指互联网上可以被访问的任何对象,包括目录、文件、文档、声音等。
- URL 是文件名在网络范围的扩展。
- URL 还包含访问对象使用的协议。
- URL 里的字母不分大小写。
使用 HTTP 的URL
- HTTP 的默认端口为 80,通常可忽略。
超文本传送协议 HTTP
- HTTP 定义了浏览器(万维网客户进程)怎么向万维网服务器请求万维网文档以及服务器怎样把文档传送给浏览器。
- HTTP 是面向事务(transaction-oriented) 的应用层协议。
- HTTP 报文通常使用 TCP 连接传送,但在双方交换 HTTP 报文前不需要先建立 HTTP 连接。
- HTTP 协议是无状态的(stateless)。同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时相同。
HTTP/1.1 持续连接(persistent connection)
- 万维网服务器在发送响应后仍在一段时间保持这条连接,使同一客户和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
HTTP/1.1 持续连接(persistent connection)的两种工作方式
- 非流水线方式(without pipelining)
- 客户在收到前一个响应后才能发出下一个请求。
- 客户每访问一个对象都有用去一个往返时间 RTT。
- 流水线式(with pipelining)
- 客户在收到 HTTP 的响应报文前就能发送新的请求报文。
- 客户访问所有对象只需花费一个 RTT时间。
HTTP报文结构
- 每一个请求报文发出后都能收到一个响应报文,响应报文的第一行就是状态行。
- 状态行的内容为:HTTP 的版本,状态码,以及解释状态码的短语。
- 状态码:
代理服务器
- 代理服务器(proxy server)是一种网络实体,又称万维网高速缓存(Web cache)。
- 代理服务器将最近的一些请求和响应暂存在本地磁盘中。
- 代理服务器可在客户端或服务器端工作,也可在中间系统上工作。
在服务器上存放用户的信息 Cookie
- HTTP 是无状态的,万维网站点可以使用 Cookie 来跟踪用户。
- Cookie 指 HTTP 服务器和客户之间传递的状态信息。
- Cookie 是一个小小的文本文件,不是可执行程序。
- Cookie 的工作方式:
8.5.4 超文本标记语言 HTML
计算机网络(谢希仁,第7版)6.4.4 节介绍超文本标记语言 HTML:
- 超文本标记语言 HTML(HyperText Markup Language)是一种制作万维网页面的标准语言,消除不同计算机之间信息交流的障碍。
- HTML 不是应用层的协议,是万维网浏览器使用的一种语言。
- HTML 是一种可以用任何文本编辑器创建的 ASCII 码文件。
- HTML 必须以 .htm 或 .html 为后缀。