1. 物理层
① 三种通信方式
- 根据信息在传输线上的传送方向,分为以下三种通信方式:
- 单工通信:只能有一个方向的通信而
没有反方向的交互
。只能A向B发信息,不能B向A发信息。 - 半双工通信:通信的双方都可以发送信息,但
不能双方同时发送
(当然也就不能同时接收)。A向B发信息时,B不能向A发信息;反之亦然。 - 全双工通信:通信的双方可以
同时发送和接收信息
。在这里插入代码片
② 基带调制、带通调制
数字信号
是离散
的信号,模拟信号
是连续
的信号。- 数字信号又叫
基带信号
,将数字信号调制为数字信号
,叫基带调制。 - 将
数字信号调制为模拟信号
,叫带通调制。 - 基本的带通调制方法:
- 调幅(AM): 载波的振幅随基带数字信号而变化。
- 调频(FM): 载波的频率随基带数字信号而变化。
- 调相(PM): 载波的初始相位随基带数字信号而变化。
2. 数据链路层
① 三个基本问题
封装成帧
- 将网络层传递下来的
IP数据报
加上帧首部和帧尾部
,用于标记帧的开始和结束
。 - 为了进行
帧定界
,在帧的最前面
加一个控制字符SOH
(start of header,帧开始符),表示帧的首部开始
;在帧的最后面
加一个控制字符EOT
(end of transmission,帧结束符),表示帧的结束
。
透明传输
- 如果帧中出现了
定界控制符(SOH或者EOT)
,数据链路就会错误地找到帧的边界,使得只有部分帧被收下,剩余部分被当做无效帧丢弃。
- 为了实现
透明传输
,即帧数据中的定界控制字符不影响整个帧定界
,采用字符填充方法(又叫字节填充方法):
- 在数据中出现SOH或者EOT的前面插入一个转义字符ESC,
接收端将帧送往网络层之前
,删除之前插入的转义字符。 - 在数据中出现转义字符ESC,就在
转义自字符的前面再添加转义字符
,接收端收到连续的两个转义字符
,就删除其中前面的一个。
差错控制
- 目前数据链路层广泛使用了**循环冗余检验(CRC)**来
检查比特差错
。
② MAC地址、交换机、以太网MAC帧
MAC地址
- MAC 地址是链路层地址,
长度为 6 字节
(48 位),用于唯一标识网络适配器(网卡)。 - 一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如
笔记本电脑
普遍存在无线网络适配器
和有线网络适配器
,因此就有两个 MAC 地址
。 - Ubuntu中使用
ifconfig -a
命令查看mac地址:
交换机 - 交换机具有自学习能力,学习的是交换表的内容,
交换表中存储着 MAC 地址到接口的映射
。正是由于这种自学习能力,因此交换机是一种即插即用设备
,不需要网络管理员手动配置交换表内容
。 - 自学习过程举例:
- 主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。
- 为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项。那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧。
- 主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
以太网的MAC帧
- 常用的以太网MAC有两种类型,介绍使用的最多的以太网v2的MAC帧格式。
目的地址、源地址:
6字节,目的主机和源主机的MAC地址类型:
2字节,标识上一层使用的协议数据:
46~1500字节,整个MAC帧的长度最小为64字节
,减去首部和尾部的18字节,数据长度最小为46字节。长度不够
时,在末尾加上填充字段
。FSC:
4字节,帧检验序列,使用CRC检验
。
- 注意: 以太网v2的MAC帧在发送前会在
头部插入8个字节
,前7个字节为前同步码
,最后一个字节为帧开始定界符
,定义为10101011
。
③ PPP协议(point to point protocol
)
- 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是
用户计算机和 ISP 进行通信
时所使用的数据链路层协议
。 - PPP帧格式:
F:
帧的标识字段,即帧的定界符A 和 C 字段:
暂时没有意义FCS 字段:
帧检验序列,2个字节
,PPP协议使用的是CRC检验
协议:
2个字节,0x0021
表示信息部分为IP数据报
;0xC021
表示信息部分为LCP的数据
。信息部分:
长度可变,但长度不超过 1500
④ CSMA/CD 协议
- 载波监听 (carrier sense): 每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就暂不发送,等到信道空闲才发送。
- 多点接入(multiple access) : 说明这是
总线型网络
,许多主机以多点的方式连接到总线上
。 - 碰撞检测(collision detection) :
- 边发送边监听: 在发送中,如果监听到信道
已有其它主机正在发送数据
,就表示发生了碰撞。 虽然每个主机在发送数据之前都已经监听到信道为空闲
,但是由于电磁波的传播时延的存在
,还是有可能会发生碰撞
。- 发生碰撞后,
网络适配器立即停止发送
,等待一段随机时间
后再次发送。
3. 网络层
① IP数据报
- 一个 IP 数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共
20 字节
,是所有 IP 数据报必须具有的
。 - 在首部的固定部分的后面是一些可选字段,
其长度是可变的
。但必须是4字节的整数倍,如果不够用0填充。
- 版本: 4 bit,有 4(IPv4)和 6(IPv6)两个值;
- 首部长度 : 4 bit,最大值为15(
2
4
−
1
2^4-1
24−1)。
值为 1
表示的是 1 个 32 位字的长度,也就是4 字节
。因为固定部分长度为 20 字节,因此该值最小为 5
。如果可选字段的长度不是 4 字节的整数倍
,就用进行尾部填充。 - 区分服务 : 8 bit,用来获得更好的服务,
一般情况下不使用
。 - 总长度 : 16bit,整个IP数据报的长度,
包括首部长度和数据部分长度
。 - 生存时间 :
TTL(time to live)
,8 bit,用于指定IP数据报被路由器丢弃之前允许通过的最大网段数量。
目的: 为了防止无法交付的数据报在互联网中不断兜圈子
。以路由器跳数为单位,当TTL 为 0 时就丢弃数据报
。
最大值为255( 2 8 − 1 2^8-1 28−1),建议值为64。 - 协议 : 8 bit,
指出该分组应该由哪种上层协议进行处理
,例如 ICMP、TCP、UDP 等。 - 首部检验和 : 16 bit,因为数据报每经过一个路由器,都要重新计算检验和,因此
检验和不包含数据部分可以减少计算的工作量
。 - 标识 : 16 bit,它是一个
计数器
,用来产生数据报的标识。在数据报长度过长从而发生分片
的情况下,相同数据报的不同分片具有相同的标识
。 - 标志: 3 bit,用于指示是否分片 。
- 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。
实例: 一个数据报的总长度为3820字节,其中首部占20字节,数据长度为3800字节。要求每个分片的长度不超过1420字节,即数据长度不超过1400字节,于是将3800字节的数据分为3片0 ~ 1399
,1400 ~ 2799
,2800~ 3799
。
② IP地址的编码方式
- IP地址长度为32 bit,
网络号和主机号
,其中不同分类具有不同的网络号长度,并且是固定的。
I P 地 址 : : = < 网 络 号 > , < 主 机 号 > IP 地址 ::= {< 网络号 >, < 主机号 >} IP地址::=<网络号>,<主机号>
- IP地址采用点分十进制记法,提高可读性。
- IP地址的范围以及特殊用途:
类型 | 初始bit 值 | 网络取值范围 | 最大主机数 | 默认子网掩码 |
---|---|---|---|---|
A类 | 0开头,网络号占8 bit | 1~127,其中127为回环地址,127.0.0.1 表示主机本身,用于本地机器测试 | 2 24 2^{24} 224个主机 | 255.0.0.0 |
B类 | 10开头,网络号占16 bit | 128~191 | 2 16 2^{16} 216个主机 | 255.255.0.0 |
C类 | 110开头,网络号占24 bit | 192~223 | 2 8 2^8 28个主机 | 255.255.255.0 |
D类 | 1110开头,多播地址 | 224~239 | ||
E类 | 1111开头,保留为今后使用 | 240~255,255.255.255.255 用于广播地址 |
③ 其他协议
ARP 地址解析协议
- 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,
IP 数据报的源地址和目的地址始终不变
,而MAC 地址随着链路的改变而改变
。 - ARP可以实现
由 IP 地址得到 MAC 地址
。
ICMP 网际控制报文协议
- ICMP 是为了
更有效地转发 IP 数据报
和提高交付成功的机会
。它封装在 IP 数据报中
,但是不属于高层协议
。 - ICMP的重要应用:
ping
和Traceroute
。
NAT 网络地址转换
- 专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用
NAT 来将本地 IP 转换为全球 IP
。 - 分布式集群有自己的本地ip地址
192.168.100.1
,需要进行外网访问时,通过NAT将其转换为172.38.1.54
就可以实现外网访问。 - 了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传
输层的端口号也用上
了,使得多个专用网内部的主机共用一个全球 IP 地址
。