文章目录
- 一、计算机网络概述
- 1.1 概念
- 1.2 功能
- 1.3 组成
- 1.4 分类
- 1.5 标准化及标准化组织
- 1.6 性能指标
- 1.7 分层结构
- 1.7.1 分层基本原则:
- 1.7.2 分层的方式
- 1.7.3 七层结构和四层结构
- 二、物理层
- 2.1 四个特性:
- 2.2 数据通信
- 2.2.1 通信系统模型
- 2.2.2 三种通信方式和两种传输方式
- 2.3 码元、速率、波特、带宽
- 2.4 奈氏准则
- 2.5 香农定理
- 2.6 信号
- 2.6.1 数据---> 数字信号 -- 编码
- 2.6.2 数据---> 模拟信号 -- 调制
- 2.7 传输介质及分类
- 2.7.1 传输媒体不是物理层
- 2.7.2 分类
- 2.7.2-1导向性:固体媒介
- 2.7.2-2 非导向性:自由空间
- 2.8 设备
- 2.9 信道复用技术
- 三、数据链路层
- 3.1 基本概念
- 3.2 三个基本问题
- 3.3 信道划分和介质访问控制
- 3.3.1 传输数据使用的两种链路
- 3.3.2 介质访问控制
- 3.4 点对点协议PPP
- 3.3.1 特点
- 3.3.2 帧格式
- 3.3.3 工作状态
- 3.5 使用广播信道的数据链路层
- 3.4.1 局域网的数据链路层
- 3.4.2 CSMA/CD 协议
- 3,4.3 V2的MAC帧
- 3.6 设备
- **交换机的自学习**
- 四、网络层
- 4.1 几种交换方式
- 4.2 两种服务
- 4.3 网际协议IP
- 4.3.1 TCP / IP 协议栈
- 4.3.2 IP数据报格式
- 4.4 路由算法
- 4.3.1 动态路由算法
- 4.3.2 分层次的路由选择协议(后面有详细介绍)
- 4.5 IPv4地址
- 4.5.1 分类的IP地址
- a.某些特殊的IP地址
- b.常用的IP地址
- c.网络地址转换NAT
- 4.5.2 子网的划分
- 1. 子网掩码
- 2. **IP地址和子网掩码按位相与得到网络地址**
- 3. 路由器转发分组的算法
- 4.5.3 构造超网(无分类编址CIDR)
- 4.6 ARP协议
- 4.7 网际控制报文协议ICMP
- 4.8 IPv4和IPv6
- 4.9 内部网关协议IGP
- 4.9.1 RIP协议与距离向量算法
- 1. RIP协议和路由器的路由表
- 2. 距离向量算法及路由表交换
- 4.9.2 OSPF协议和SPF算法
- 4.10 外部网关协议BGP
- 4.11 IP组播(多播)
- 4.11.1 组播
- 4.11.2 IGMP协议
- 4.12 设备
- 五、运输层
- 5.1 概述
- 5.2 TCP协议
- 5.3 UDP协议
- 5.4 传输控制协议TCP
- 5.4.1 TCP协议特点
- 5.4.2 TCP报文段首部格式
- 5.4.3 TCP的连接建立(三次握手)和释放(四次握手)
- 5.5 可靠传输的工作原理及其实现
- 5.5.1 停等协议
- 5.5.2 后退N帧协议(GBN)
- 5.5.3 选择重传协议
- 5.5.4 TCP的可靠传输
- 5.6 TCP的流量控制
- 5.7 TCP的拥塞控制
- 5.7.1 慢开始和拥塞避免
- 5.7.2 快重传和快恢复
- 六、应用层
- 6.1 域名解析系统DNS
- 6.1.1 域名
- 6.1.2域名服务器
- 6.1.3 域名解析
- 6.2 文件传输协议FTP
- 6.3 电子邮件
- 6.4 DHCP
- 6.5 万维网WWW和HTTP协议
从Typora导过来图片全丢了…又从头插一遍
需要md文件或者思维导图的可以评论,后续会上传到gitee和github上,欢迎star
一、计算机网络概述
1.1 概念
-
计算机网络是互连的、自治的计算机集合。
互连:互通互联,通信链路(双绞线、同轴电缆、光纤)
自治:无主从关系
1.2 功能
- 数据通信(连通性)
- 资源共享(软硬件数据等)
- 分布式处理(解决负载过重的问题Hadoop)
- 提高可靠性
- 负载均衡
1.3 组成
- 组成部分:硬件、软件、协议
- 工作方式组成:
- 边缘部分:用户直接使用(C/S 、P2P)
- 核心部分:为边缘部分服务
- 功能组成:(数据通信,资源共享)
- 通信子网:实现数据通信
- 资源子网:实现资源共享、数据处理
1.4 分类
- 按范围划分:广域网(WAN)、城域网(MAN)、局域网(LAN)、个人区域网(PAN)
- 按使用者划分:公用网、专用网
- 按交换技术划分:电路交换、报文交换、分组交换
- 按拓扑结构划分:总线型、星型、环形、网状型(常用于广域网)
- 按传输技术划分:广播式网络(共享公共信道)、点对点网络(使用分组存储转发和路由选择机制)
1.5 标准化及标准化组织
- 法定标准:OSI
- 事实标准:TCP/IP
- 组织:
- 国际标准化组织ISO :OSI(开放系统互连基本参考模型)
- 国际电信联盟ITU :制定通信规则
- 国际电器电子工程师协会IEEE
1.6 性能指标
-
速率:数据率,数据传输率,比特率
速率进率为103
单位有: b/s、kb/s、Mb/s、Gb/s、Tb/s
存储容量:进率为210
1 Byte(字节) = 8 bit(比特)
1 KB = 210 B = 1024 B = 1024 * 8 b
-
带宽:单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,单位b/s
是传送数据的能力,不是速率
带宽:原本指某个信号具有的频带宽度,单位是Hz
-
吞吐量:单位为时间内通过某个网络(或信道、接口)的数据量
-
时延
-
发送时延:发送数据帧的时间
发送时延=数据长度/信道带宽
-
传播时延:电磁波在信道中传播一定距离需要花费的时间
传播时延=信道长度/传播速率
-
排队时延
-
处理时延
-
-
时延带宽积
时延带宽积=传播时延*带宽
-
往返时间RTT:从发送方发送到发送方接收到接收方的确认
RTT = 往返传播时延 * 2 + 末端处理时间(末端处理时间一般忽略)
-
利用率
-
信道利用率 = 有数据通过的时间 / 总时间
-
网络利用率
D = D0 / 1 - U
-
1.7 分层结构
1.7.1 分层基本原则:
- 各层之间相互独立只能实现一种相对独立的功能
- 每层之间界面自然清晰,易于理解,相互交流尽可能少
- 结构上可分割,都用最合适的技术实现
- 上层使用下层提供的服务
1.7.2 分层的方式
-
实体:任何可发送或接收信息的硬件或软件进程,同一层的实体叫对等实体
-
协议:控制两个对等实体(或多个实体)进行通信的规则的集合
- 语法:传输数据的格式
- 语义:所要完成的功能
- 同步:各种操作的顺序
协议是水平的,服务是垂直的
-
接口(访问服务点SAP):上层使用下层服务的入口
-
服务:下层为相邻上层提供的功能调用
PCI 协议制信息 :控制协议操作的信息
PDU协议数据单元 :对等层次之间传送的数据单位
1.7.3 七层结构和四层结构
-
七层OSI参考模型:法定标准
- 上面四层是端到端通信,下面三层是点到点的通信
- 七层及其功能
- 应用层:所有能和用户交互产生网络流量的程序(FTP、SMTP、HTTP)
- 表示层:用于处理在两个通信系统中交换信息的表示方式(语法和语义)
- 数据格式变换
- 数据加密和解密
- 数据压缩和恢复
- 会话层:建立同步(SYN)
- 传输层:负责主机中两个进程的通信,即端到端的通信(可差流用)
- 可靠/不可靠传输
- 差错控制
- 流量控制
- 复用分用
- 网络层:把分组从源端传到目的端,传输单位是数据报
- 路由选择
- 流量控制
- 差错控制
- 拥塞控制
- 数据链路层:数据报封装成帧,传输单位是帧
- 封装成帧
- 差错控制
- 流量控制
- 访问控制
- 物理层:在物理媒体(有线和无线等)上实现比特流的透明传输,传输单位是比特
- 定义接口特性
- 定义传输模式:单工、半双工、全双工
-
四层TCP/IP参考模型:事实标准
-
五层体系结构
应用层:报文
传输层:报文段
网络层:IP数据报,分组
数据链路层:帧
物理层:比特流
二、物理层
2.1 四个特性:
- 机械特性:接口的形状等
- 电气特性:电压范围等
- 功能特性:电平的意义(0和1)
- 过程特性:事件的出现的顺序
2.2 数据通信
2.2.1 通信系统模型
-
数据:传送消息的实体
-
信号:数据在传输过程中的存在形式
数字信号:离散的
模拟信号:连续的
-
信源:产生和发送数据的源头
-
信宿:接收数据的终点
-
信道:信号的传输媒介
2.2.2 三种通信方式和两种传输方式
-
单工:只有一个方向的通信
-
半双工:都可以发送和接收,但是不能同时发送或接收
-
全双工:可以同时发送和接收
-
串行传输和并行传输
2.3 码元、速率、波特、带宽
-
码元:一个固定时长的信号波形,1码元可以携带多个比特的信息量
二进制码元:log2 2 = 1个比特位表示两种状态0和1
四进制码元:log2 4 = 2个比特位表示四种状态 00 01 10 11
-
速率:数据的传输速率
码元传输速率:1 s传输的码元数(单位:波特Baud) 1波特 = 1码元 / 秒
信息传输速率:1 s传输的比特数
-
带宽:最高数据率
1 s传输了(8000/4)2000个码元,每个码元携带了(log2 4) 2个比特的数据
系统传输的是比特流,所以通常比较的是信息传输速率,后面的系统传输速率快
2.4 奈氏准则
-
理想极限数据传输率 = 2 W log2 V(b/s)
W:带宽(Hz) V:几种码元/码元的离散电平数
W = 3k Hz; V = 4 * 4 = 16;最大数据传输率 = 2 * 3 k * log2 16 = 24 k b/s
2.5 香农定理
-
信噪比:10 log10 (S/N) (dB)
-
**信道的极限数据传输速率 = W log2 (1+S/N) **
单位:(b/s)
W = 3k Hz; S/N = 1000
3k * log2 (1+1000) = 30k b/s
2.6 信号
- 数字信号和模拟信号
2.6.1 数据—> 数字信号 – 编码
-
不归零码:高1低0
-
归零码:正脉冲代表1,负代表0(每个周期都要归零)
-
曼彻斯特编码:周期中心有跳变
-
差分曼彻斯特编码:每一处的中心始终有跳变,位开始边界有跳变代表0
2.6.2 数据—> 模拟信号 – 调制
-
调幅 AM:载波的振幅随基带信号改变
-
调频 FM:载波频率随基带信号改变
-
调相 PM:载波的初始相位随基带信号改变
2.7 传输介质及分类
2.7.1 传输媒体不是物理层
因为物理层规定了电气特性,所以可以识别传送的比特流
2.7.2 分类
2.7.2-1导向性:固体媒介
-
双绞线
组成:两根绞合的铜导线组成(绞合可减少对相邻导线的电磁干扰)
类型:
STP:屏蔽双绞线
UTP:非屏蔽双绞线
-
同轴电缆
-
光纤
- 通过光的全反射实现数据传输
2.7.2-2 非导向性:自由空间
- 无线电波
- 微波:地面微波接力通信和卫星通信
- 红外线
2.8 设备
-
中继器
功能:对信号进行再生和还原,放大信号,以增加传输距离
中继器两端是相同的网络,一定要是同一个协议,且速率要相同
不会存储转发,也不能检查差错
-
集线器(多口中继器)
功能:与中继器类似,是一个共享式的设备(广播)
2.9 信道复用技术
- 频分复用FDM:频分复用的所有用户在同样的时间占用不同的带宽资源(频率带宽)
时分复用TDM:用户时分复用的所有用户是在不同的时间占用同样的频带宽度
统计时分复用STDM - 波分复用WDM :就是光的频分复用
- 码分复用CDM:码分多址CDMA
四个站进行CDMA通信。四个站的码片序列为:
A:-1 -1 -1 +1 +1 -1 +1 +1 B:-1 -1 +1 -1 +1 +1 +1 -1
C:-1 +1 -1 +1 +1 +1 -1 -1 D:-1 +1 -1 -1 -1 -1 +1 -1
现接收到了-1 +1 -3 +1 -1 -3 +1 +1。问哪个站发送数据流?发送的是1还是0。
-
求内积:
设接收到的为X,
A ⋅ X = ( + 1 − 1 + 3 + 1 − 1 + 3 + 1 − 1 ) / 8 = 1 ( 符 号 相 同 则 为 正 , 不 同 为 负 ) 以 此 类 推 : B ⋅ X = − 1 C ⋅ X = 0 D ⋅ X = 1 A \cdot X = (+1 -1 +3 +1 -1 +3 +1 -1) / 8=1\\ (符号相同则为正,不同为负)以此类推:\\B \cdot X = -1\\ C \cdot X = 0 \\ D \cdot X = 1 A⋅X=(+1−1+3+1−1+3+1−1)/8=1(符号相同则为正,不同为负)以此类推:B⋅X=−1C⋅X=0D⋅X=1
则:A和D发送的是1,B发送的是0,C未发送
北美和日本:T1速率(1.544Mbit/s) 欧洲:E1速率(2.048Mbit/s)
非对称数字用户线ADSL 技术是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带数字业务。
光纤到X:FTTx技术
三、数据链路层
3.1 基本概念
- 节点:主机、路由器
- 链路:两个节点的物理通道(有线和无线)
- 数据链路:逻辑通道,把实现控制协议的硬件和软件加到链路上就构成了数据链路
- 帧:链路层的数据传输单元,封装网络层的数据报
- 最大传送单元MTU:每一种链路层协议都规定了所能传送的帧的数据部分长度的上限
3.2 三个基本问题
-
封装成帧:在一段数据的前后分别添加首部和尾部,构成一个帧。
-
透明传输:解决数据链路层错误地“找到帧的边界”,需使数据部分透明(实际存在的事物看起来不存在),可用字节填充
字节填充:在关键字前加上转义字符
ESC
-
差错检测:广泛采用循环冗余检验(CRC)
CRC:
发送接收的双方事先定好一个(n+1)位的除数P,一般给出的P是一个公式,需要转换为二进制
例如:P = X4 + X +1 ===> 10011
发送端:将要发送的数据加上n位的冗余码再发送
冗余码(为检错而添加的冗余码又称帧检验序列(FCS)):发送的数据之后加上n个0,将这个数除以P(模2运算),得到的余数就是冗余码
接收端:将接收到的数据除以P(模2运算,10+11=01,不进位),然后检查余数R
数据正确时R=0,接收这个帧;反之则丢弃
- 海明码:发现双比特错误,纠正单比特错误
1)令所有要校验的位异或(相同为0,不同为1)为0,Pi校验的位为第i位为1的数据位(0001~1010)
P1 ⊕ D1 ⊕ D2 ⊕D4 ⊕ D5 = 0 —> P1 = 0 同理:P2 = 0 P3 = 0 P4 = 1
2)得到海明码:0010011101
3)传输过程中出现错误,检错
4)和1相同,将得到的几位校验码从右往左排好,得到的二进制转化为十进制就知道是第几位出错了
p1=1 p2=0 p3=1 p4=0 —> 0101 —> 5 —> 第五位出错
3.3 信道划分和介质访问控制
3.3.1 传输数据使用的两种链路
- 点对点链路:两个相邻节点通过一个链路连接
- 广播式链路:所有主机共享通信介质
3.3.2 介质访问控制
- 静态划分信道
- 信道划分介质访问控制
- 频分多路复用 FDM(frequency):相同时间占用不同的带宽资源—并行
- 时分多路复用 TDM(time):每一个TDM帧中占用固定序号的时隙----并发
- 统计时分复用(STDM):按需动态分配时隙
- 波分多路复用 WDM(wave):光的频分多路复用
- 码分多路复用 CDM(code):码分多址CDMA
- 信道划分介质访问控制
- 动态分配信道
- 轮询访问介质访问控制
- 令牌传递协议
- 随机访问介质访问控制
- ALOHA:不听就说
- CSMA:先听再说
- CSMA/CD:载波监听多点接入/碰撞检测(多用于总线型以太网)
- CSMA/CA:载波监听多点接入/碰撞避免(多用于无线局域网)
- 轮询访问介质访问控制
3.4 点对点协议PPP
3.3.1 特点
(1)应满足的需求
简单、封装成帧、透明性、多种网络层协议(同一条物理链路上同时支持多种网络层协议)、多种类型链路、差错检测、检测连接状态、最大传送单元、网络层地址协商、数据压缩协商
(2)组成
-
一个将IP数据报封装到串行链路的方法。
-
一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
-
一套网络控制协议NCP,其中每一个协议支持不同的网络层协议。
3.3.2 帧格式
.png)]
-
字节填充(将信息字段的0x7E修改,0x7D)
- 0x7E -> 0x7D,0x5E
- 0x7D -> 0x7D,0x5D
- ASCII -> 加上0x7D
-
零比特填充(ppp协议实现透明传输的方式)
连续五个1插入一个0
3.3.3 工作状态
链路静止(设备间无链路)–>链路建立(物理链路)–>鉴别(LCP链路)–>网络层协议(已鉴别的LCP)–>链路打开(已鉴别的LCP和NCP链路)–>链路终止
3.5 使用广播信道的数据链路层
3.4.1 局域网的数据链路层
-
局域网拓扑:星型网(集线器连接)、环形网、总线网
-
共享信道技术:
- 静态划分信道(不适用于局域网):FDM、TDM、STDM
- 动态媒体接入控制(又称多点接入,分为随机接入、受控接入)
-
以太网的两个标准:DIX Ethernet V2和IEEE 802.3
-
适配器的作用
- 计算机与外界局域网的连接
- 主机箱中的网络接口板(卡),即网卡,现在叫适配器。
以太网提供无连接、不可靠的服务
- 10 BASE-T以太网:10:10 Mbit/s base:基带 T:双绞线
- 无线局域网:802.11
3.4.2 CSMA/CD 协议
先听后发,边听边发,冲突停止,延迟重发
-
CSMA/CD :载波监听多点接入/碰撞检测
- 多点接入:总线型网络上,许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:利用电子技术检测总线上有没有其他计算机也在发送。
- 碰撞检测:边发送边监听,适配器边发送数据边检测信道上的信号电压变化情况,以判断自己在发送数据时其他站是否也在发送数据。
-
碰撞后的重传时机:截断二进制规避算法
-
争用期时间是51.2μs,对于10 Mbit/s的以太网,可发送512bit数据 512 bit = 64 B
3,4.3 V2的MAC帧
MTU:1500
46 = 64 - 6 - 6 -2 - 4
3.6 设备
- 网桥:根据MAC帧的目的地址对帧进行转发过滤
- 优点:(1)过滤通信量,增大吞吐量;(2)扩大了物理范围;(3)提高了可靠性;(4)可互联不同物理层、不同MAC子层和不同速率的以太网。
- 缺点:(1)增加了时延;(2)MAC子层中没有流量控制功能;(3)广播风暴(传播过多的广播信息而产生的网络拥塞)。
- 交换机(多接口网桥)
交换机的自学习
(多网桥的交换机)
A->B :A广播发送数据帧,先到达B,B收到;
交换机 1收到,表中没有A,记录A是从1号接口进入的;CD收到;
交换机 2收到,表中没有A,记录A是从1号接口进入的;EF收到;
E->C: E广播,交换机1和2中都没有E,交换机1和2接收并记录E是从2号接口进入的;
ABCDF都收到;
B->A: B广播,A收到;交换机1收到,查表发现表中没有B,记录B是从1号接口进入的;
发现表中有记录了A是从1号接口进入的,则丢弃帧;右侧不会收到该帧;
四、网络层
4.1 几种交换方式
-
电路交换:建立连接–通信–释放连接
-
报文交换:源–存储转发–目的
报文:源应用发送的信息整体
-
分组交换:和报文交换类似
分组:把大块的数据块分割成小的数据块
4.2 两种服务
- 数据报服务----无连接服务
- 每个分组携带源地址和目的地址
- 路由器根据分组的目的地址转发分组
- 虚电路(VC)服务----连接服务
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
4.3 网际协议IP
4.3.1 TCP / IP 协议栈
- IP
- ICMP:网际控制报文协议
- IGMP:网际组管理协议
- ARP:地址解析协议
4.3.2 IP数据报格式
-
首部:(1 Byte=8 bit = 1 B = 8位)
-
固定部分:20 Byte
版本:4 Byte,IPv4或者IPv6
首部长度:单位是4 Byte,最小为5个单位;5*4 = 20 B,满足固定首部长度20 B
总长度:首部+数据长度,单位是1 B;占16位,表明IP数据报最大长度为216 -1 = 65535 B(一般达不到,太长了会分片)
生存时间(TTL):IP分组的保质期,经过一个路由器就-1,为0时则丢弃
源IP地址和目的IP地址:均为32位
填充:全0,为了把首部补成4 B的整数倍
标识:同一数据报的分片使用同一标识
标志:占3位,只有前两位有用(x _ _)
- 最低位:MF(more fragment);MF = 1表示还有分片,为0则表示是最后一个
- 中间一位:DF(don’t fragment);DF = 0才允许分片
片偏移:较长分组分片之后,某片在原分组中的相对位置,以8 B为单位
-
例:
3800 = 1400 + 1400 + 1000 (B)===> 分为三片总长度为:1400 + 20 + 1400 + 20 + 1000 + 20 = 3860 (B)
分片1: 0~1399 片偏移量 = 0 MF = 1 DF = 0分片2: 1400~2799 片偏移量 = 1400 / 8 = 175 MF = 1 DF = 0
分片3: 2800~3800 片偏移量 = 2800 / 8 = 350 MF = 0 DF = 0
4.4 路由算法
路由器又称网关
最佳路由:相对某一种特定要求下得出的较为合理的最优路径
- 静态路由算法:管理员手工配置
- 动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化出路由表项
4.3.1 动态路由算法
- 全局性:链路状态路由算法 OSPF
- 分散性:距离向量路由算法 RIP
4.3.2 分层次的路由选择协议(后面有详细介绍)
- 自治系统 AS:
- 内部网关协议IGP: AS内部使用(OSPF,RIP)
- 外部网关协议EGP: AS外部使用(BGP)
4.5 IPv4地址
- 全世界唯一的32位/4字节标识符,标识路由器的接口(一个路由器可以有多个IP地址,多个接口)
- IP地址 :: = {<网络号>,<主机号>}
- 点分十进制:每八位之间用一个
.
分隔开,并将该八位转化为对应的十进制数 - 路由器间也构成网络,称为无编号网络
4.5.1 分类的IP地址
- A类、B类、C类都是单播地址(一对一)
a.某些特殊的IP地址
再写一遍,加深印象
- 全0+全0:本网络的本主机
- 全0+非全0:某台主机
- 全1+全1:本网广播地址
- 网络号+全0:某网络的网络地址
- 网络号+全1:某网络的广播地址,对该网络的所有主机广播
- 127+非全0/非全1:本地软件测试地址(ping 127.0.0.1)
b.常用的IP地址
网段:网络号种类
- A类
- IP:除去固定的0,还剩7位,可供指派的网络号还有126位(27 - 2,全0和全1要减去)
- 主机号:占24位,主机数为224 - 2 个(去掉全0和全1,全0表示网络地址,全1表示广播地址)
- B类
- IP: 214个(这里有一些细微的差别,有的是要减一,有的没有)
- 主机号:216 - 2 个(去掉全0和全1,全0表示网络地址,全1表示广播地址)
后面的都类似了…
c.网络地址转换NAT
- 专用网(使用私有IP地址)连接到因特网的路由器上要按照NAT软件
- 普通路由器不转发私有IP地址的数据报
- 安装了NAT软件的路由器叫做NAT路由器,至少有一个有效的外部全球IP地址
4.5.2 子网的划分
原因:
- IP地址空间的利用率有时很低
- 两级的IP地址不够灵活
- IP地址 :: = {<网络号>,<子网号>,<主机号>}
- 划分子网后,对外表现仍是一个网络
1. 子网掩码
- 网络号都为1,主机号都为0就是IP地址的子网掩码
2. IP地址和子网掩码按位相与得到网络地址
- 例题:
首先得到141.14.x.0;
255为全1,按位相与得到的数不变;0为全0,按位相与得0
然后是72 —> 0100 1000
192 ---->1100 0000
按位相与得:01000000 —> 64(相与时都为1才得1)最后得出结果:141.14.64.0
同样的道理:先得到 141.14.x.0;
224 —> 1110 0000
72 —> 0100 1000
再得到:0100 0000
结果是一样的 141.14.64.0
首先是广播分组:主机号全1;排除A
再根据上一题的解题方法:
252 —> 1111 1100
77 —> 0100 1101
得到:0100 1100 —> 76 ,该网络所在子网号为:180.80.76.0
从子网掩码得知该网络前22位为网络号(因为180开头是B类地址,所以网络号应该为16位,子网号占6位),后10位为主机号
广播时要使用广播地址,即主机号全为1的地址;
此时将0100 1100的后两位改为1,再加上后8位全为1就是广播地址了
得出结果:0100 1111 —> 79,所以选D、180.80.79.255
- 常用的8位二进制转十进制
记住每个位上的1是多少更方便计算
(1000 0000)2 = 128 (0100 0000)2 = 64
(0010 0000)2 = 32 (0001 0000)2 = 16
(0000 1000)2 = 8 (0000 0100)2 = 4
(0000 0010)2 = 2 (0000 0001)2 = 1
3. 路由器转发分组的算法
路由表包括:1)目的网络地址 2)目的子网掩码 3)下一跳地址
- 每一项如果没有,则往下一项走
- 提取目的IP地址
- 是否直接交付
- 特定主机路由
- 检测路由表中有无路径
- 默认路由
- 最后不行则丢弃,报告转发分组出错
4.5.3 构造超网(无分类编址CIDR)
多个子网聚合成一个较大的子网,叫做构成超网或路由聚合
-
CIDR消除了传统的A类、B类、C类地址及划分子网的概念
-
IP地址 ::= {<网络前缀>,<主机号>}
-
CIDR记法或斜线记法:IP地址/网络前缀位数
-
CIDR地址块:网络前缀相同的IP地址组成的
-
子网掩码(地址掩码):网络前缀全1,主机号全0
-
最长前缀匹配:使用CIDR时,查找路由表是应选择具有最长网络前缀的路由。
因为第一个8位的132 ABC三个选项都包括,所以排除D(默认路由是找不到目的网络的时候才使用的)
看第二个8位,19—>0001 0011,当网络前缀位数为8时,目的地址的网络号为:132.0.0.0/8;
当网络前缀位数为8时,目的地址的网络号为:132.0.0.0/8;根据最长前缀匹配原则,排除A
C选项:当网络前缀数为22时,22-16=6,237 —> 1110 11**|**01,主机号全0表示本网络,所以目的地址的网络号为:132.19.236.0/22,和C不匹配,排除C
得出结果:B最合适
网络前缀为24,前三个字节都作为网络前缀,定长子网划分则是对最后一个字节进行子网划分(即8位里面取出一部分作为子网号)
从子网掩码可知,248 —> 1111 1000,网络号全1,主机号全0为子网掩码,所以最后8位里面有5位是子网号,3位是主机号
25 = 32;23 - 2 = 6(全0和全1的地址不可用),答案为B
4.6 ARP协议
-
APR高速缓存:IP地址与MAC地址的映射(10-20分钟更新一次)
-
ARP协议:完成主机或路由器IP地址到MAC地址的映射(解决下一跳走哪的问题)
- 检查ARP高速缓存,有对应的项则将其写入MAC帧,没有则用目的地址全1的帧封装并进行广播ARP请求分组,同一局域网内的主机都可以收到请求
- 目的主机收到请求后会向源主机单播一个ARP响应分组
- 源主机收到后会将此映射后会写入ARP缓存中
4.7 网际控制报文协议ICMP
-
ICMP:允许主机或路由器报告差错情况和提供有关异常情况的报告,ICMP报文封装在IP数据报中。
-
使用IP协议传输
-
种类:ICMP差错报告报文,ICMP询问报文
-
ICMP差错报告报文:
- 终点不可达(无法交付)
- 源点抑制(拥塞,请慢点)
- 时间超过(TTL=0)
- 参数问题(首部字段有问题)
- 改变路由(重定向,请选择更好的路由)
-
ICMP询问报文
- (1)回送请求和回答(你听得到吗,我听得到)
- (2)时间戳请求和回答(几点了,32位时间戳,用于时间同步)
-
-
ICMP不发送的情况
- ICMP报文也出错时
- 某数据报的第一个分片后续的所有分片
- 组播地址(选定某些地址统一发送)的数据报
- 特殊地址(127.0.0.0或0.0.0.0)
-
应用
- 分组网间探测PING:测试两个主机间的连通性。应用层直接使用网络层的一个例子,没有通过运输层的TCP或UDP。
- trace route:跟踪一个分组从源点到终点的路径
4.8 IPv4和IPv6
- IPv6地址从32位扩大到128位
- IPv6将IPv4的校验和字段彻底移除
- IPv6将IPv4的可选字段移除首部,变成了拓展首部
- IPv6支持即插即用(自动配置),不需要DHCP协议
冒号十六进制记法:每四位用十六进制表示,并用冒号隔开
压缩形式:省略0
- 单播:一对一通信
- 多播:一对多通信
- 任播:一对多中的一个通信
4.9 内部网关协议IGP
一个AS内部使用
4.9.1 RIP协议与距离向量算法
1. RIP协议和路由器的路由表
- RIP是一种分布式的基于距离向量的路由选择协议,最大优点是简单
- RIP要求网络中的每一个路由器维护到目的网络的最短距离
- RIP最多允许一条路由只能包含15个路由器,16表示网络不可达
- RIP只适用于小型互联网
- 好消息传得快,坏消息传得慢(网络出现故障时,要经过比较长的时间才能将此信息传到所有的路由器,“慢收敛”)
看图可知,R2的路由表:
目的网络 | 距离 | 下一跳 |
---|---|---|
Net2 | 1 | 直接交付 |
Net1 | 2 | R1 |
Net4 | 2 | R3 |
- 距离(跳数):源端口到目的端口所经过的路由器个数
- 每经过一个路由器,跳数+1
- 路由器到它直接连接的网络距离为1
2. 距离向量算法及路由表交换
- 原则:找出到达每个目的网络的最短距离(和谁交换,交换什么,多久交换)
- 仅和相邻路由器交换
- 交换的信息是自己的路由表
- 按固定时间交换一次
距离向量算法
- 修改相邻路由器发来的RIP报文的所有表项
- 对地址为X的相邻路由器,发来的RIP报文中的下一跳都改为X,距离+1
- 对修改后的RIP报文,和路由表中的每一项进行比对和替换,规则如下:
- 若原来的路由表中没有目的网络N,则直接添加到路由表
- 若有N,且下一跳是X,则修改路由表中的距离为最新的距离
- 若有N,下一跳不是X
- 如果距离小于路由表中的距离,则更新下一跳为X,更新距离为到X的距离
- 否则不作处理
- 例题:
先将c发来的信息修改
目的网络 距离 下一跳 N1 3 C N2 2 C N3 4 C N4 8 C 对比替换
1.2.3.4都有,所以不需要新添
N1: 4 > 3,从B到目的网络更远,下一跳修改为C
N2: 下一跳为C,更新为最新距离(这里距离没变,还是2)
N3: 下一跳为F,到达目的网络距离为1 < 4,不改变
N4: 下一跳为G,到达目的网络距离5 < 8,不改变
- 路由器A更新后的路由表:
目的网络 | 距离 | 下一跳 |
---|---|---|
N1 | 3 | C |
N2 | 2 | C |
N3 | 1 | F |
N4 | 5 | G |
4.9.2 OSPF协议和SPF算法
开放最短路径优先(OSPF)和最短路径优先算法(SPF)
- OSPF最主要的特征是使用分布式的基于链路状态的协议
- OSPF协议收敛很快
- 使用OSPF的路由器遵循的规则:(和谁交换,交换什么,多久交换)
- 使用洪泛法向一个AS中所有路由器发送信息(每一个路由器向所有相邻的路由器发送信息,一传十十传百)
- 交换相邻的所有的路由器的链路状态
- 只有链路状态发生变化时才洪泛发送信息
- 到最后,所有路由器都能建立一个链路状态数据库,及全网拓扑图
- 五种分组:
- 问候分组
- 数据库描述分组
- 链路状态请求分组
- 链路状态更新分组
- 链路状态确认分组
4.10 外部网关协议BGP
-
BGP交换规则:(和谁交换,交换什么,多久交换)
- BGP与其他AS的邻站BGP发言人交换信息
- BGP之间交换网络可达性的信息(到达某个网络所要经过的一系列AS)
- 发生变化时更新有变化的部分
-
BGP寻找的并不是最佳路由,是一条比较好的路由
-
BGP是基于路径向量的外部网关协议
-
BGP发言人往往是BGP边界路由器
-
BGP协议交换一般是一组路径向量
-
BGP-4四种报文
- OPEN:与相邻BGP发言人建立关系,并认证
- UPDATE:通知新路径或撤销原路径
- KEEPALIVE:周期性验证邻站的连通性
- NOTIFICATION:报告先前报文的差错;也用于关闭连接
三种协议的比较
RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息
OSPF最主要的特征是使用分布式的基于链路状态的协议,使用IP协议交换信息
BGP是一个外部网关协议,基于路径向量,网络环境较复杂,需要保证可靠传输,所以使用TCP
4.11 IP组播(多播)
4.11.1 组播
- IP组播地址让源设备能够将分组分发给一组设备,使用D类地址
- 组播地址只能用于目的地址,不能用于源地址(源地址总是单播地址)
- 组播数据报也是”尽最大努力交付“
- 不产生ICMP差错报文
4.11.2 IGMP协议
- IGMP协议让路由器知道本局域网上是否有主机参加或退出了组播组
- IGMP工作的两个阶段:
- 某台主机加入新的多播组时,发送一个IGMP报文声明要成为该组的成员
- 组员关系是动态的。本地组播路由器会周期性探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员
4.12 设备
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组
- 路由器根据所选的路由选择协议构造出路由表,然后不断更新和维护路由表
- 交换结构:根据转发表对分组进行转发(转发表由路由表得来)
- 转发是根据转发表选择输出端口;路由选择是选择一条路由路径
- 如果是RIP或者OSPF交给路由选择处理机
- 如果是数据分组则查找转发表,交给合适的输出端口
- 分组丢失发生在路由器中的输入或输出队列产生溢出的时候
五、运输层
只有主机才有的层次
运输层向它上面的应用层提供通信服务
使用网络层的服务
5.1 概述
-
传输层提供进程和进程之间的逻辑通信
-
复用和分用
- 复用:应用层所有的应用进程都可以通过运输层再传送到网络层
- 分用:运输层将收到的数据分别交付指明的各应用进程
-
对收到的报文进项差错检验
-
端口也称协议端口号、软件端口:应用层各种进程与运输层进行层间交互的一种地址,且端口号只具有本地意义,因为两主机进程间通信是IP+端口。
-
端口分类:
- 1.服务器端使用的端口号(分为熟知端口号0~1023和登记端口号1024~49151)。
- 2.客户端使用的端口号(仅在客户程序运行时才动态选择,短暂端口号)。
UDP:
应用 FTP TELNET SMTP DNS TFTP 熟知端口号 21 23 25 53 69 TCP:
应用 HTTP SNMP HTTPS 熟知端口号 80 161 443
5.2 TCP协议
传送数据之前必须建立连接,数据传输结束之后要释放连接
不提供广播或组播服务
- 可靠的、面向连接的、时延大、适用于大文件
5.3 UDP协议
-
不可靠、无连接、时延小、适用于小文件
-
UDP是面向报文的,即无论应用层给UDP多长的报文,UDP都是完整的发送一个报文
-
UDP无拥塞控制(适合实时应用,如视频通话)
-
UDP首部开销小,8 B
-
UDP数据报的格式
- 首部:四个字段,均为两个字节
- 源端口:需要对方回信时选用。不用时可以全0
- 目的端口:用于交付报文
- 长度:UDP数据报的长度,最小值是8
- 校验和:检测UDP数据报在传输中是否有错,有错就丢弃
5.4 传输控制协议TCP
5.4.1 TCP协议特点
-
面向连接的运输层连接
-
每一条TCP连接只能是点对点的
-
提供全双工通信
-
面向字节流(把数据当成一连串的无结构的字节流)
TCP连接的断点叫套接字(socket)或插口
套接字 socket = (IP地址:端口号)
5.4.2 TCP报文段首部格式
-
源端口和目的端口:各占2个字节
-
序号:占4个字节,在一个TCP连接中传送的字节流中每一个字节都按顺序编号
序号则是本报文段所发送数据的第一个字节的序号
-
确认号:期望收到的下一个报文段的第一个数据字节的序号
若确认号=N,则表明到序号N-1为止的所有数据都已经正确收到
-
数据偏移(首部长度):以4字节为单位
-
6个控制位:
- 紧急位URG: 为1时紧急传输,设置了高优先级,可以优先发送
- 确认位ACK: ACK= 1时确认号有效。在连接建立后,所有传送的报文段都必须把ACK置为1
- 推送位PSH: PSH=1时,接收方尽快交付接收到的应用进程,不再等到缓存填满再向上交付
- 复位RST: RST=1时,表明连接中出现了严重差错,必须释放连接并重新建立连接
- 同步SYN: SYN=1表明是一个连接请求/连接接收报文
- 终止FIN: FIN=1时,表明此报文发送方数据已发完,要求释放连接
-
窗口:2字节,发送方的接收窗口,允许对方发送的数据量,且动态变化
-
紧急指针:2字节,URG=1时才有意义,用于指出本报文段中紧急数据的字节数,且指出了紧急数据的末尾在报文段中的位置
-
选项、填充:如果选项字段加上之后,TCP报文不是4字节的整数倍,则在填充字段添0来使它达到4字节的整数倍
5.4.3 TCP的连接建立(三次握手)和释放(四次握手)
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程是客户端,被动等待的是服务器
连接:
-
一次握手:
-
客户端发送连接请求报文段,无应用层数据
SYN=1,seq=x(随机产生的序号)
-
-
二次握手:
-
服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,无应用数据
SYN=1,ACK=1(确认位),ack=x+1(确认号),seq=y(随机产生的序号)
-
-
三次握手:
-
客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据
SYN=0,ACK=1,ack=y+1,seq=x+1
-
释放:参与TCP连接的两个进程中的任何一个都可以终止连接,然后主机中的缓存和变量都会被释放
-
一次握手:
-
客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接
FIN=1,seq=u
-
-
二次握手:
-
服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了(半关闭状态)
ACK=1,ack=u+1,seq=v
-
-
三次握手:
-
服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接
FIN=1,ACK=1,ack=u+1,seq=w(可能服务器段又发送了一些数据,所以为w)
-
这里ack没变,因为客户端并没有发送新的数据
-
-
四次握手:
-
客户端返回一个确认报文段,再等到时间等待计时器设置的2 MSL(最长报文段寿命)后,连接彻底关闭
- 当确认报文段丢失之后,服务器会重传第三次握手的报文段,所以是2 MSL
ACK=1,ack=w+1,seq=u+1
-
5.5 可靠传输的工作原理及其实现
5.5.1 停等协议
每发送完一个分组就停止发送,等待对方确认,收到确认后再发送下一个分组
-
无差错情况:
-
分组丢失或分组出错
- 未收到确认分组时,超时计数器到时间时,超时重传
-
ACK迟到和丢失
- 超时重传,丢弃重复的分组
停等协议信道利用率太低
5.5.2 后退N帧协议(GBN)
- 发送方:
- 上层的调用:上层要发送时,先检查发送方窗口是否已满,如果未满则产生一个分组并将其发送;如果满了,将数据缓存或者返回给上层之后再传输
- 收到一个ACK:累计确认,标明接收方已经收到n号分组和它之前全部的分组
- 超时事件:出现这种情况时,发送方重传所有已发送但未被确认的分组
- 接收方:
- 如果正确收到n号分组,并且按序,接受方会返回一个确认分组,然后将该分组交付给上层
- 其余情况都丢弃分组,并未最近按序接收的分组重新发送确认分组。接收方无需缓存任何失序分组。
5.5.3 选择重传协议
滑动窗口机制:
- 对数据逐个确认,收一个确认一个
- 只重传出错分组
- 接收方有缓存
滑动窗口的长度:2(n-1) ,n是用于标号的比特数
- 发送方:
- 上层的调用:从上层接收到数据后,发送方检查下一个可用于该分组的序号,如果序号在发送窗口内,则发送;否则将数据缓存或者返回给上层之后再传输
- 收到一个ACK:如果收到一个确认分组,如果该分组的序号在窗口内,则将被确认的分组标为已接收。如果是该窗口的最左边的第一个窗口对应的序号,则窗口滑动到当前未确认的分组的最小序号处。如果窗口滑动了,且可发送的分组在窗口内,则发送这些分组
- 超时事件:每个分组都有自己的定时器,一个超时事件发生后只重传一个分组
- 接收方:
- 对于窗口中的分组,确认一个正确接收的分组,不管是否按序。
- 无序的分组会被缓存,并返回给发送方一个确认分组(确认收到了该分组)
- 直到所有分组都被收到之后,这时候才将一批分组按序交付给上层,然后向前滑动窗口
5.5.4 TCP的可靠传输
可靠:保证接收方进程从缓存区读出的字节流与发送发出的字节流是完全一样的
-
实现机制
-
校验:与UDP校验一样,校验时加上伪首部
-
序号:在一个TCP连接中传送的字节流中每一个字节都按顺序编号
-
确认:
- 携带确认:接收方确认号字段为x+1时,说明已经正确接收到了发送的前x个字节的数据,此时才从TCP缓存中将前x个字节的数据删除
- 累计确认(TCP默认):可能因为路由选择等原因,某些数据还未接收到,此时接收方会重新发送一个确认报文段要求重传(例如:123 ,45 ,678按序发送,123和678都已经到达了,但是4号5号迟迟没有到达,此时接收方就会发送一个ack为4的报文段,要求发送方重传序号为45的报文段)
-
重传:
- TCP的发送方在规定时间内没有收到确认,就会重传已发送的报文段(超时重传)
- TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)
- 新的RTTs 由新的RTT和旧的RTT计算出来(RTT:往返时间)
- 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号(快重传)
- 当接收方收到三个对于某报文段的冗余ACK,则认为它后一个的报文段丢失,进行重传
- TCP的发送方在规定时间内没有收到确认,就会重传已发送的报文段(超时重传)
-
5.6 TCP的流量控制
让发送方发送速率不要太快,要让接收方来得及接收
滑动窗口实现流量控制
-
接收方根据自己的接收缓存大小,动态调整发送方的发送窗口大小(即接收窗口rwnd,receiver window,通过接收方设置报文段的窗口字段来告知)
-
发送方的窗口值取rwnd和cwnd(拥塞窗口)的最小值
-
滑动窗口进行流量控制
首先B告诉A,B的rwnd=400B,设每一个报文段100B,报文段初始序号为1
当rwnd=0的通知A收到之后,B的缓存又有了一些空间,但是此时新的通知报文丢失了,会造成一直互相等待的局面(类似死锁),为了解决这种情况,为TCP连接设置了一个持续计时器,只要一方收到零窗口通知,就启动计时器。计时器到期时就发送一个零窗口探测报文段,接收方收到时给出现在的窗口值
5.7 TCP的拥塞控制
- 拥塞的条件:资源需求总和 > 可用资源
- 拥塞控制:防止过多数据注入到网络中,是一个全局性的过程
- 拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量
轻度拥塞 》》拥塞 》》死锁
cwnd:单位是一个报文段
一个传播轮次:发送了一批报文段,并收到它们的确认的时间(一个RTT)
ssthresh:慢开始门限值
5.7.1 慢开始和拥塞避免
- 慢开始
- 慢开始的cwnd默认为1(报文段个数)
- 每经过一个传播轮次,cwnd变为原来的两倍
- 当到达门限值时,开始拥塞避免算法(这里是cwnd=16时)
- 拥塞避免(加法增大,乘法减小)
- 每经过一个传播轮次,cwnd加1(加法增大)
- 当cwnd=24时,此时出现了超时现象,判断为网络拥塞,此时将cwnd一下变为1,并将门限值改为原来的一半cwnd=12(乘法减小)
后面的都是类似的进行
5.7.2 快重传和快恢复
-
当收到三个相同的重复确认之后,执行快重传算法
-
不用使门限值降为1,而是降为原来的一半12即可(快恢复)
-
然后再用拥塞避免算法继续传输
六、应用层
-
应用层协议定义:
- 应用进程交换的报文类型(请求、响应等)
- 各种报文类型的语法(字段及其描述)
- 字段的语义(字段的内容)
- 进程何时、如何发送报文,以及对报文进行响应的规则
-
功能:
功能 协议 文件传输、访问和管理 FTP 电子邮件 SMTP、POP3 虚拟终端 HTTP 查询服务和远程作业登录 DNS
6.1 域名解析系统DNS
域名 —(DNS)—> IP —(ARP)----> MAC
6.1.1 域名
6.1.2域名服务器
6.1.3 域名解析
- 递归查询
- 主机–>本地域名服务器–>顶级域名服务器–>根域名服务器–>权限域名服务器–>(再原路返回)
- 迭代查询
- 主机–>本地域名服务器–>本地域名服务器去一个个找其他的域名服务器
6.2 文件传输协议FTP
- 提供不同系统之间的文件传输能力(消除了不兼容性)
- FTP基于TCP
- TFTP基于UDP
- FTP使用C/S结构
- 一个FTP服务器有一个主进程和多个从属进程
- 主进程负责接受新请求
- 从属进程负责处理单个进程
6.3 电子邮件
SMTP,POP3都是使用TCP进行传输
-
信封:xxx@163/xxx@qq
-
内容:
-
首部:
To: xxx@163
Subject: Hello!
-
主体:正文
-
-
用户代理:Fox Mail、Outlook
- 功能:撰写,显示,处理,通信
-
邮件服务器功能:发送接收邮件,向发件人报告结果
- POP3协议读取协议
基于万维网的电子邮件使用HTTP协议发送接收邮件(邮件服务器之间依然使用SMTP协议)
6.4 DHCP
- 静态配置:默认网关+子网掩码+IP地址
- 动态配置:DHCP服务器分配
- 使用C/S方式,客户端和服务端通过广播方式进行交互,基于UDP
- DHCP提供即插即用联网的机制,允许地址重用,支持移动用户加入网络,支持在用地址续租
6.5 万维网WWW和HTTP协议
- 万维网使用统一资源定位符URL来定位资源
-
用户点击超链接获取资源,资源通过超文本传输协议(HTTP)传送给使用者
-
Cookie:记录一段时间内某用户的访问记录
-
HTTP是无状态的,但是采用TCP作为运输层协议
更多推荐
万字计算机网络知识汇总
发布评论