导图社区 计算机网络
详细记录并总结计算机网络课程的思维导图,梳理了计算机网络前几章核心知识点,逐层拆解各层级定义、功能、协议与技术要点。第一章讲解计算机网络体系结构,介绍网络概念、发展、功能、分类,重点对比 ISO/OSI 参考模型与 TCP/IP 四层体系架构,搭建整体知识框架。第二章为物理层,涵盖信道基础、传输介质(双绞线、同轴电缆、光纤)、物理层设备等内容,阐明底层信号传输的物理基础。第三章数据链路层是重点模块,梳理封装成帧、差错检测、流量控制、介质访问控制、局域网、广域网、以太网交换机等核心技术,标注了 CRC 校验、PPP 协议等关键考点。第四章网络层聚焦 IP 体系,详解 IPv4 地址分类、子网划分、路由协议、ICMP 报文以及 IPv6 基础,讲解跨网段数据寻址与转发逻辑。第五章、第六章同为传输层,分别深入剖析 TCP 与 UDP 协议特性、端口作用、拥塞控制、流量控制、三次握手四次挥手,以及应用层 DNS、FTP、HTTP、SMTP 等常用应用协议的工作原理。整体由底层硬件传输逐层向上延伸至顶层应用,逻辑层级清晰,完整覆盖计算机网络核心考点。无论备考计算机等级考试的学生、零基础学习网络运维的从业者,还是考研复习计算机专业课的考生,都可以借助这份框架梳理知识脉络,高效完成系统复习。
提示: 本内容由社区用户上传并分享。平台不对内容的真实性、合法性、知识产权归属及是否侵害第三方权利进行事前审核或保证。本内容可能包含受版权保护的图片、字体或其他第三方素材,使用前请自行确认授权范围。
计算机网络
第一章 计算机网络体系结构
1.1计算机网络概述
1.1.1计算机网络的概念
计算机网络
由若干结点(node)和连接这些结点的链路(link)组成。 结点可以是计算机、集线器、交换机、路由器等。
主要功能:数据通信(信息传递)、资源共享
互连网(internet)
多个计算机网络通过路由器互相连接而成
可使用任意通信协议
互联网(Internet)
特指全世界最大的计算机网络,由各大ISP和国际机构组建
使用TCP/IP协议族作为通信规则
其他扩展
ISP(Internet Service Provider),互联网服务提供商
集线器、交换机用于连接同一网络内的不同结点; 路由器用于连接不同的网络
家用路由器=路由器+交换机+其他功能
1.1.2计算机网络的组成
从组成部分看
硬件
主机(端系统)-如:电脑、手机、物联网设备
通信设备—如:集线器、交换机、路由器
通信链路-如:网线、光纤、同轴电缆
软件
方便用户使用,实现资源共享。如:Email客户端、聊天软件、网盘软件
协议
规定计算机网络中的通信规则
由硬件、软件共同实现,如:网络适配器+软件 实现网络通信协议
从工作方式看
边缘部分
工作方式:直接为用户服务(通信、资源共享)
主要由连接到互联网上的主机及其软件组成
核心部分
工作方式:为边缘部分提供服务(连通性、交换服务)
由大量网络和连接这些网络的路由器组成
从逻辑功能看
资源子网
计算机网络中运行应用程序,向用户提供可共享的硬件、软件和信息资源的部分
主要由连接到互联网上的主机组成
通信子网
计算机网络中负责计算机间信息传输的部分。即把计算机和其他用户 装置互连在一起的所有通信设备和介质的总称。
主要由 通信链路+通信设备+协议 构成
注:主机内部实现信息传输的网络适配器、底层协议 属于通信子网的范畴
1.1.3计算机网络的功能
数据通信-实现计算机间的数据传输,是最基本、最重要的功能
资源共享-硬件、软件、数据资源
如:智能音箱 请求服务器处理
如:应用商店
如:分享视频
分布式处理-将某个复杂任务分配给网络中多台计算机处理
如:大矩阵运算、MapReduce
提高可靠性-网络中各台计算机互为替代机
如:某网盘服务器集群网络,数据冗余备份
负载均衡-网络中各台计算机共同分担繁重工作
如:某游戏用多台服务器均衡处理玩家请求
其他-满足社会需求、生活需求
如:远程办公、远程教育、娱乐等
1.1.4三种交换
电路交换
含义
通信前从主叫端到被叫端建立一条专用的物理通路,在通信的全部时间内,两个用户 始终占用端到端的线路资源。
优点
数据直送,传输速率高
低频次、大量地传输数据
缺点
(1)建立/释放连接,需要额外的时间开销
(2)线路被通信双方独占,利用率低。
(3)线路分配的灵活性差
(4)交换节点不支持“差错控制” (无法发现传输过程中发生的数据错误)
报文交换
含义
发送方把完整数据(正文、地址、控制信息)一次性发送给交换节点; 节点先完整存储整个报文,排队等待线路空闲后,再转发给下一个报文, 直至送达目标,全程不独占物理线路,无电路建立过程。
优点
(1)无需建立连接
(2)线路利用率高
(3)流量缓冲、支持“差错控制”
(4)通信线路可灵活分配
缺点
(1)报文不定长,不方便存储转发管理
(2)长报文的存储转发时间开销大、缓存开销大
(3)长报文容易出错,重传代价高
分组交换
含义
发送端将长报文分割成多个固定长度的小段(分组),每个分组单独带上地址、校验控制信息, 独立在网络中传输;交换机逐个转发分组,接收端再重新拼接还原完整报文。
优点
(1)无需建立连接
(2)线路利用率高
(3)流量缓冲、支持“差错控制”
(4)通信线路可灵活分配
(5)分组定长,方便存储转发管理
(6)分组的存储转发时间开销小、缓存开销小
(7)分组不易出错,重传代价低
缺点
(1)相比于报文交换,控制信息占比增加
(2)相比于电路交换,依然存在存储转发时延
(3)报文被拆分为多个分组,传输过程中可能出现失序、丢失等问题,增加处理的复杂度
1.1.5计算机网络的分类
按分布范围分类
广域网(WAN)
城域网(MAN)、局域网(LAN)—使用“以太网技术”实现
个域网(PAN)
按传输技术分类
广播式网络(根据数据目的地址判断是否接受)、点对点网络
按拓扑结构分类
总线形
存在“总线争用”问题;广播式传输
环形
用“令牌”解决总线争用问题;广播式传输
星形
不存在总线争用问题;由中央设备实现数据的点对点传输
网状
灵活、可靠性高、控制复杂、线路成本高
按使用者分类
公用网、专用网
按传输介质分类
有限网络、无线网络
1.1.6计算机网络的性能指标(单位bps)
速率
数据传输速率、数据率、比特率
带宽
表示某信道允许通过的最高数据率
吞吐量
描述某个网络(或节点、信道)的在单位时间内通过的实际数据量 (实际的综合数据率)
带宽(另一种含义)
表示某信道允许通过的信号频带范围,单位Hz
时延
数据从一端传送到另一端所需的时间
总时延=发送时延+传播时延+处理时延+排队时延
注:(1)发送时延=数据长度(bit)/发送速率(bit/s) (2)传播时延=信道长度(m)/电磁波在信道中的传播速度(m/s) (3)收网络负载、路由器性能等诸多因素影响,考试中一般不考虑处理时延和排队时延
时延带宽积
单向传播时延*带宽
往返时延RTT
表示从发送方发送完数据,到发送方收到来自接收方的确认总共经历的时间
信道利用率
某个信道有百分之多少的时间是有数据通过的
利用率低会浪费带宽资源;利用率太高可能导致网络拥塞
1.2计算机网络体系结构及参考模型
1.2.1计算机网络分层结构
体系结构精确定义了网络的层次划分、各层功能、各层协议,不涉及具体实现
三种常见的网络体系结构
OSI参考模型,7层(法律标准)
TCP/IP模型,4层(事实标准)
五层模型,5层(教学用标准)
1.2.2网络协议、接口、服务
PDU、SDU、PCI
PDU(协议数据单元)、SDU(服务数据单元)、PCI(协议控制信息)
n-SDU+n-PCI=n-PDU=(n-1)-SDU
协议的三要素
语法:数据与控制信息的格式
语义:需要发出何种控制信息,完成何种动作及做出何种应答
同步(时序):执行各种操作的条件、时序关系等
实体、协议、接口、服务
实体:第n层中的活动元素(软件+硬件)称为第n层实体
协议:是控制对等实体之间进行通信的规则的集合,是水平的
服务:是指下层为紧邻的上层提供功能调用,是垂直的
接口:服务访问点,上一层实体通过“接口”请求下一层实体的服务
1.2.3ISO/OSI参考模型和TCP/IP模型
OSI模型(物联网叔会使用)
#7应用层:实现特定网络应用,单位(报文)
#6表示层:解决不同主机上信息表示不一致的问题,实现数据格式转换
#5会话层:管理进程间会话,实现会话管理功能
#4传输层:实现端到端(进程到进程)通信,实现复用和分用、差错控制、流量控制、连接管理、可靠传输管理功能,单位(报文段)
#3网络层:把分组从源结点转发到目的结点,实现路由选择、分组转发、拥塞控制、网际互联、差错控制、 流量控制、连接管理、可靠传输管理
#2数据链路层:确保相邻节点之间的链路逻辑上无差错,实现差错控制、流量控制功能,单位(帧)
#1物理层:实现相邻节点之间比特的传输,需要定义电路接口参数、信号的含义/电气特性等,单位(比特)
TCP/IP(接网叔用)
#4应用层:实现特定网络应用
#3传输层:实现端到端(进程到进程)通信, 功能:复用和分用、差错控制、流量控制、连接管理、可靠传输管理
#2网络层:把分组从源结点转发到目的结点 功能:路由选择、分组转发、拥塞控制、网际互联
#1网络接口层:实现相邻结点之间的数据传输(为网络层传输“分组”)
区别
OSI
OSI传输层仅可向上层提供:有连接的可靠的服务
网络层可向上层提供:有连接可靠的服务(虚电路) 无连接不可靠的服务(数据报)
TCP/IP
传输层可向上层提供:有连接可靠的服务(TCP协议) 无连接不可靠的服务(UDP协议)
网络层仅可向上层提供:无连接不可靠的服务(数据报)
第二章 物理层
2.1通信基础
2.1.1基本概念
信源(数据的发送方);信宿(数据的接收方)
信号,是数据的载体
数字信号:值是离散的
模拟信号:值是连续的
信道(信号的通道)
数字信道
模拟信道
码元
一个“信号周期”内可能出现几种信号?
每一类信号就是一个码元
“码元宽度”指的是一个“信号周期”的长度
若一个周期可能出现K种信号,就是K进制码元-1码元 携带 log2 K bit
速率
波特率-每秒传输几个码元。单位码元/秒,或波特(Baud)
比特率-每秒传输几个比特。单位bit/s,或b/s,bps。
2.1.2信道的极限容量
带宽
信道允许通过的信号频率范围。单位:Hz
噪声
噪声会影响信道的数据传输效果
奈奎斯特定理
无噪声情况下信道的极限波特率=2W(单位:波特,码元/秒)
无噪声情况下信道的极限比特率=2Wlog2K(单位:dB)
香农定理
信噪比
分贝记法
10log10 S/N(单位:dB)
无单位记法
S/N=信号功率/噪声功率
做题h时注意切换
有噪声情况下信道的极限比特率=Wlog(1+S/N)(单位:b/s)
2.1.3编码与调制
概念
编码
二进制数据->数字信号,逆过程为“解码”
调制
二进制数据—>模拟信号,逆过程为“解调”
常用的编码方法
不归零编码(NRZ):低0高1,中不变,长串0/1,无跳变,同步困难
归零编码(RZ):低0高1,中归零
反向非归零编码(NRZI):跳0不跳1看起点,中不变
曼彻斯特编码:跳0反跳1看中间,中必变
上0下1(标准)
下0上1
差分曼彻斯特编码:跳0不跳1看起点,中必变
常用的调制方法
调幅(AM)或幅移键控(ASK)
若信号波有K种振幅,则1码元=log2K bit
调频(FM)或频移键控(FSK)
若信号波有K种频率,则1码元=log2K bit
调相(PM)或相移键控(PSK)
若信号波有K种相位,则1码元=log2K bit
正交幅度调制(QAM)
AM与PM结合,形成叠加信号,若有m种振幅、n种相位,则1码元=log2mn bit
QAM-16的含义是“采用QAM调制技术,有16种码元”
2.2传输介质
2.2.1双绞线、同轴电缆、光纤与无线传输介质
双绞线
两根导线相互绞合而成
有屏蔽层=屏蔽双绞线(STP)
同轴电缆
内导体(用于传输信号)+外导体屏蔽层(用于抗电磁干扰)
光纤
纤芯(高折射率)+包层(低折射率),利用光的全反射特性,在纤芯心内传输光脉冲信号
分类
单模光纤
只有一条光线,在一根光纤中传输,适合长距离传输,信号传输,损耗小
多模光纤
多条光线在一根光纤中传输,适合近距离传输,远距离传输光信号容易失真
无线传输介质
本质都是电磁波,波长不同而已(长波->短波)。波长和信号频率呈反比
短波信号指向强,数据传输能力强,长波信号绕射性好,指向性弱
物理层接口的特性
机械特性
指明接口所用接线器的形状和尺寸,引脚数目和排列固定和锁定装置等
电气特性
指明在接口电缆的各条线上出现的电压的范围,传输速率,距离限制等
功能特性
指明某条线上出现的某一电平的电压的意义
过程特性(规程特性)
指明对于不同功能的各种可能事件的出现顺序
2.3物理层设备
2.3.1中继器
中继器只有两个端口,通过一个端口接收信号,将失真信号整形再生,并转发至另一端口(会产生一些时延)
仅支持半双工通信(两端连接的节点不可同时发送数据,会导致冲突)
中继器两个端口对应两个网段
2.3.2集线器
本质上是多端口中继器,集线器将其中一个端口接收到的信号整形再生后,转发到所有其他端口
各端口连接的节点不可同时发送数据,会导致冲突
集线器的N个端口对应N个网段,各网段属于同一个”冲突域”
一些特征
集线器,中继器,不能“无线串联”
集线器连接的网络,物理上是星型拓扑,逻辑上是总线型拓扑
集线器连接的各网段“共享带宽”
集线器可以连接不同的传输介质,因此两个网段的物理接口特性可以不同
集线器如果连接速率不同的网段,会导致所有网段速率向下兼容
第三章 数据链路层
封装成帧(组帧)
帧定界
如何让接收方能够确定帧的界限,HDLC格式的F开始,F结束。
透明传输
不论什么样的比特组合,都能按照原样无差错地在这个数据链路上进行传输。接收方链路层要能从收到的帧内恢复原始SDU,让网络层“感受不到将分组封装成帧的过程”
字符计数法
在每个帧开头,用一个定长计数字段表示帧长
注意:帧长=计数字段长度+帧的数据部分长度
最大缺点:任何一个计数字段出错,都会导致后续所有帧无法定界
字节填充法
特殊字符
标记帧开头的字符SOH;标记帧结尾的字符EOT;
转义字符ESC
如果帧的数据部分包含“特殊字符”,则发送方需要在这些“特殊字符”前填充“转义字符ESC”(接收放要做逆处理)
零比特填充法(2013年)
用特殊的比特率01111110标记帧开始、帧结尾
发送方需要对帧的数据部分进行处理,每当遇到连续5个1,就填充一个0
接受方需要对帧的数据部分进行逆处理,每当遇到连续5个1,就删掉后面的0
HDLC协议、PPP协议使用此方法
违规编码法
使用“违规信号”,表示帧的开头、结尾(需物理层配合)
采用曼彻斯特编码时,使用“中间不跳变”作为“违规信号”,标记帧的开头结尾
差错控制
发现并解决一个帧内部的“位错”
(1)接受方发现比特错后丢弃帧,发送方重传帧(仅需采用 检错编码)
(2)由接收方发现并纠正比特错误(需采用 纠错编码)
奇偶校验
概念
信息位(有效数据):指帧的“数据部分”
校验位(冗余位):为了给帧的“数据部分”检错/纠错而附加的一些冗余比特
校验原理
在信息位的首部尾部添加一个校验位
奇校验:整个校验码(信息位和校验位)中“1”的个数为奇数,10011011
偶校验:整个校验码(信息位和校验位)中“1”的个数为偶数,10011010
奇偶校验码仅能检测出奇数位错误,无纠错能力
异或运算(模二加)
两个比特进行异或运算,当二者“相异”时计算结果为1
将“偶校验”的信息位、校验位全部异或若结果为0,说明没有错误
循环冗余校验码(CRC)
构造
由生成多项式确定“除数”,若生成多项式中X的最高次为R,则“除数”有R+1位
K个信息位+R个0,作为“被除数”
被除数、除数进行“模二除”,得R位余数
K个信息位+R位余数=CRC码
校验
收到K+R位数据,与生成多项式模二除,计算R位余数
余数为0,说明无错误
余数非0,说明出错
检错、纠错能力
(1)可检测出所有奇数个错误;
(2)可检测出所有双比特的错误;
(3)可检测出所有小于等于校验位长度的连续错误;
(4)若选择合适的生成多项式,且2^R>=K+R+1,则可纠正单比特错
例如:数据M=101001(m=6),除数G=1101(r=3),商Q=110101,余数R=001,
海明码(纠错编码)
基本思想
分组偶校验,多个校验位可反映出错位置
求解步骤
确定校验位个数(k个校验位,n个信息位)
2^k>=n+k+1
确定校验位分布
p1,p2,p3…分别在1,2,4,8,16……
空出来的其他位置依次填入信息位
求校验码
将信息位的位置序号用k位二进制数表示出来
校验位Pi与位置序号第i位为1的信息位归为同一组,进行偶校验
纠错
对P1,P2,P3…所属各组进行异或(相当于分组偶校验)求得S1,S2,S3……
S3,S2,S1=000,说明无错误
S3,S2,S1!=000,则其值反映出错位置
补充
海明码有1位纠错,2位检错能力
为了区分1位错和2位错,还需添加“全校验位”对整体进行偶校验
注意:有的题目位置变好可能是从小到大的,但处理方式雷同
例如:1010, 海明码位数4+3+1<=2^3,n=4,k=3,信息D4D3D2D1(1010),检验位P3P2P1,检验位Pi在海明位号为2^(i-1)位置。 分布: P1海明码位号1,即H1为P1 P2海明码位号2,即H2为P2 P3海明码位号4,即H4为P3 H7 H6 H5 H4 H3 H2 H1 D4 D3 D2 P3 D1 P2 P1 分组: D1放在H3上,由H2H1检验 D2放在H5上,由H4H1检验 D3放在H6上,由H4H2检验 D4放在H7上,由H4H2H1检验 检验位取值: P1=D1⊕D2⊕D4=0 P2=D1⊕D3⊕D4=1 P3=D2⊕D3⊕D4=0 对应海明码为1010010
流量控制与可靠传输机制
可靠传输
发现并解决“帧错”
帧丢失
帧重复
帧失序
停止-等待协议(S-W)
滑动窗口机制
发送窗口Wt=1,接受窗口Wr=1
确认机制
确认帧:ACK_i
若接收方收到i号帧,且没有检测出“差错”,需要给发送方返回确认帧ACK_i
重传机制
超时重传
若发送方超时未收到ACK_i,则重传i号帧
帧编号
仅需1bit给帧“编号”
要求:Wt+Wr<=2^n
过程
实现流量控制
发送方成功收到对应序号的ACK确认帧,才会向右进行滑动
实现可靠传输
数据丢失
发送方
(1)启动计时器,等待ACK
(2)计时器超时,仍未收到确认
(3)判定数据帧丢失,重传当前未确认的数据帧,计时器重置;
(4)发送窗口保持不动,不会发送新帧;
接收方
无任何动作,不会回复ACK
数据有错
接收方
(1)通过CRC校验发现帧差错,直接丢弃损坏帧,不交付数据
(2)不返回任何ACK确认帧
(3)接收窗口保持原位,依旧等待原序号的正确帧
发送方
(1)收不到ACK,计时超时
(2)重传出错的那一帧,重新计时
重复帧
接收方
(1)检查帧序号,接收的旧帧
(2)直接丢弃重复数据,不交付
(3)重新发送一次对应的ACK确认帧(防止上一轮ACK丢失)
(4)接收窗口保持不变
发送方
收到补发的ACK后,发生窗口滑动,发送下一帧
不会出现数据帧失序问题
停止等待始终“发1帧->等待确认->再发1帧",链路上永远最多一个数据帧,自然不会出现先收到后序号,后收到前序号的失序现象
后退N帧协议(CBN)
滑动窗口机制
发送窗口Wt>1,接受窗口Wr=1
确认机制
确认帧:ACK_i
若接收方收到i号帧,且没有检测出“差错”,需要给发送方返回确认帧ACK_i
重传机制
超时重传
若发送方超时未收到ACK_i,则重传i号帧
帧编号
为了支持以上机制正确运行,至少需要用n bit给帧“编号”
要求:Wt+Wr<=2^n
GBN的特殊规则
关于确认帧:接收方可以“累计确认”。即连续收到多个数据帧时,可以仅返回最后一个帧的ACK
ACK_i表示接收方已收到i号帧及其之前的所有帧
超时重传:若发送方超时未收到ACK_i,则重传i号帧,及其之后的所有帧
要点
收到一个"非法帧"时,接收方将此帧丢弃,并返回目前已接收的最后一个正确帧的ACK_i。以提醒发送方“后退”回i+1号帧重新发送
“非法帧”包括落在接收窗口之外的帧,检测出差错的帧
缺点,如果接收方接收帧的速度很慢,或在信道误码率很高的情况下,可能会导致发送方的发送进度经常需要"后退”,传输效率低下
选择重传协议(SR)
滑动窗口机制
发送窗口Wt>1,接受窗口Wr>1
确认机制
确认帧:ACK_i
若接收方收到i号帧,且没有检测出“差错”,需要给发送方返回确认帧ACK_i
否认帧:NAK_i
若接收方收到i号帧,但检测出i号帧有“差错”,需要丢弃该帧,并给发送方返回否认帧NAK_I
重传机制
超时重传
若发送方超时未收到ACK_i,则重传i号帧
请求重传
若发送方收到NAK_i则重传i号帧
帧编号
为了支持以上机制正确运行,至少需要用n bit给帧“编号”
要求:
Wt+Wr<=2^n
Wr<=Wt,即接受窗口不能大于发送窗口
要点
若接收方检测出帧差错,则丢弃帧,并返回NAK_i,主动请求重传
接收方不能‘累计确认’,必须“一帧一确认”
S-W、CBN、SR的理想信道利用率
S-W
U=Td/(Td+RTT+Ta)
Td:一个数据帧的传输时延(发送时延)
Ta:一个ACK确认帧的传输时延(发送时延)
RTT:往返时延,两倍的单向传播时延
注意:很多题目会忽略确认帧的传输时延Ta
GBN、SR
U=NTd/(Td+RTT+Ta)
N表示发送窗口大小
信道利用率不能超过1
常结合“帧编号”考察
用n bit给帧“编号”,要求
Wt+Wr<=2^n
GBN协议Wr=1,SR协议Wr>1。因此,同样用n bit给帧编号,GBN的发送窗口Wt更大,因此GBN的信道利用率更高
术语补充
滑动窗口协议
指GBN协议或SR协议
ARQ协议
指S-W协议或GBN或SR协议
连续ARQ协议
指GBN协议或SR协议
流量控制
控制发送方发送帧的速率别太快,让接收方“来得及”接受
介质访问控制
“广播信道”需要实现此功能。广播信道咋逻辑上是总线型拓扑,多个结点需争抢传输介质的使用权
“点对点信道”通常不需要实现此功能。点对点信道通常意味着两个结点之间有专属的传输介质,不用抢
信道划分介质访问控制
时分复用(TDM)
将时间分片(时间片大小固定),各节点依次分配一个时间片
统计时分复用(STDM)
在时分复用的基础上,按需分配时间片
频分复用(FDM)
将信道的总频带拆分为几条互不相交的子频带,为每个发送节点分配一条子频带
波分复用(WDM)
本质上是光的频分复用,光的波长与频率有关
码分复用(CDM)
(1)给各节点分配专属码片序列
"码片序列包"含m个码片(信号值),可看作“m维向量”(分量通常取1或-1)
要求:各节点的m维向量必须相互正交
相互通信的各节点,知道彼此的码片序列
(2)发送方如何发送数据?
节点发送m个信号值与“码片序列”相同,表示比特1
节点发出m个信号值与“码片序列”相反,表示比特0
(3)信号在传输过程中“叠加”
当多个发送方同时发送数据时,信号值会”叠加”,注:本质是多个m维向量的加法
(4)接收方如何接收数据?
接收方收到的叠加信号需要从中分离出,各发送方的数据
叠加信号与发送方的码片序列作为”规格化内积”
结果为1,表示比特1
结果为-1表,示比特0
随机访问介质访问控制
ALOHA协议
纯ALOHA
节点一旦准备好数据帧,就立即发送到信道上
若超时未收到ACK,随机等待一段时间后重传
时隙ALOHA
"时隙"大小固定=传输一个最长帧所需时间
各节点只能在时隙内传输帧,相比于纯ALOHA,降低了冲突概率
CSMA协议
1-坚持CSMA
发送前先监听信道,若信道空闲,立即发送数据帧(发送概率为1)
"坚持"意味着如果信道不空闲节点,会坚持监听信道
非坚持CSMA
可记忆为“1-非坚持”,即发送前先监听信道。若信道空闲,立即发送数据帧(发送概率为1)
非坚持意味着如果信道不空闲,节点不会坚持监听信道,而是随机推迟一段时间后再尝试监听
p-坚持CSMA
发送前先监听信道,如果信道空闲,则以概率p立即发送帧,以概率1-p推迟一段时间再发送
坚持意味着如果信道不空闲节点,会坚持监听信道
CSMA/CD协议
协议要点
先听后发,边听边发,冲突停发,随机重发
如何随机重发?
截断二进制指数退避算法: 随机等待一段时间=r倍争用期,其中r是随机数 (1)如果k<=10,在[0,2^k-1]区间随机取一个整数r (2)如果k>10,在[0,2^10-1]区间随机取一个整数r
特别注意
第10次冲突,是”随机重发‘’的分水岭
第16次冲突,直接躺平,放弃传帧,报告上级(网络层)
争用期=2*最大单向传播时延(考虑距离最远的两个节点)
若争用期内未发生冲突,就不可能再冲突
CSMA/CD没有ACK机制,若发送过程中未检测到冲突,就认为帧发送成功
最短帧长=2*最大单向传播时延*信道带宽
若收到的帧小于最短帧长,视为无效帧
最长帧长:规定最长帧长可防止某些节点一直占用信道
以太网规定
最短帧长=64B;最长帧长=1518B
CSMA/CA协议
协议要点
发送方:先听后发,忙则退避
若信道空闲,间隔DIFS后,再发送帧(一口气发完,发送过程中不用检测冲突)
若信道不空闲,则进行'随机退避”
"随机退避原理"
用二进制指数退避算法,确定一段随机退避时间(倒计时)
发送方会保持监听信道,只有信道空闲时才"扣除倒计时",倒计时结束后立即发送帧(此时信道"听起来"一定空闲)
接收方:停止等待协议
每收到一个正确数据帧都返回ACK;若发送方超时未收到ACK,则进行“随机退避”
信道预约机制(可选功能)
发送方广播RTS控制帧(先听后发,忙则退避) 需在RTS,CTS中指明预约时长
AP广播CTS控制帧
其他无关节点收到CTS后,自觉“禁言”一段时间(即虚拟载波监听机制); 发送方收到CTS后,就可以发送数据
AP收到数据帧后进行CRC校验,若无差错就返回ACK帧
帧间间隔IFS
DIFS,最长的IFS
每次”帧事务“开始之前,需要等待的时间
SIFS,最短的IFS
收到一个真后需要预留的一段处理时间
PIFS,中等长度的IFS
可不关注pifss
令牌传递协议
协议要点
令牌帧
需指明当前获得令牌的节点编号
只有获得令牌的节点,才能往信道上发送数据帧
如果获得令牌的节点没有数据要发送,就将令牌传递给下一个节点
数据帧
需指明数据帧的源地址/目的地址、是否已被接收,获得令牌的节点编号
数据帧从源节点出发,“传递一圈”后回到原节点
数据帧"传递一圈”的过程中,会被目的节点复制一份数据,并将数据帧标记为“已接收”
数据帧回到原节点后,如果发现异常情况,就尝试重发,若无异常,就将令牌传递到下一个节点
其他补充
无论是令牌帧还是数据帧,只能沿单向传递
获得令牌的节点每次只能发一帧,发完就释放令牌
需要用专门的网络设备(MAU)实现集中控制
令牌传递协议很适用于负载高的网络(不会发生冲突效率高)
局域网
局域网(LAN)
分类(出题点) (1)拓扑结构 (2)传输介质 (3)介质访问控制方式
有限局域网
以太网/802.3 (物理层采用 曼彻斯特编码)
同轴电缆以太网 (1)总线型 (2)同轴电缆(可用中继器连接多个同轴电缆网段) (3)CSMA/CA协议
双绞线以太网 10BaseT,1990年
用集线器连接
(1)物理上星形,逻辑上总线形 (2)双绞线(用集线器连接) (3)CSMA/CD协议
用交换机连接
(1)物理上、逻辑上星形 (2)双绞线(用交换机连接) (3)CSMA/CD协议 或NULL
半双工模式下,采用CSMA/CD争抢信道 全双工模式下,不用争抢信道,也不需要使用CSMA/CD协议
光纤以太网 (用于扩大以太网覆盖范围)
(1)点对点(用于中继器/集线器/交换机之间的传输,通常不会连接终端结点) (2)光纤 (3)NULL(用两条光纤实现全双工通信)
半双工模式下,采用CSMA/CD争抢信道 全双工模式下,不用争抢信道,也不需要使用CSMA/CD协议
令牌环网
(1)环形 (2)同轴电缆或双绞线 (3)令牌传递协议
无线局域网
WIFI/802.11
(1)IEEE 802.11定义为星形(1个AP+N台移动设备) (2)无线(Wireless) (3)CSMA/CA协议
硬件架构
802.3局域网
以太网适配器
ROM(唯一的物理MAC地址,48bit)
RAM(帧缓冲)
网络适配器要点
(1)负责把帧发送到局域网。 关于将IP数据报(IP分组)封装成帧,有些系统由主机实现,有些系统由网络适配器负责。
(2)负责从局域网接收帧。 如果收到正确帧,就用中断通知CPU,如果收到异常帧,就直接丢弃
(3)需要根据接入的局域网类型,按照标准实现数据链路层+物理层功能
(4)需要完成数据的串/并行转换
(5)需要支持帧缓冲
802.11局域网
WIFI网络适配器
ROM(唯一的物理MAC地址,48bit)
RAM(帧缓冲)
特点
1.覆盖较小的地理范围
2.较低的时延和误码率
3.局域网内的各节点之间,以"帧"为单位进行传输
4.支持单播,广播,多播
以太网(IEEE 802.3)
物理层标准
速率+Base+传输介质信息
如:10 Base5,10 Base 2
同轴电缆
如:10Base、100BaseTX、2.5GBaseT
双绞线
如:10BaseF、100BaseFX、40GBaseFR
光纤
Key:如果一个网段工作在半双工模式下,才需要使用CSMA/CD协议实现介质访问控制
做题技巧
同轴电缆网段
仅支持半双工
双绞线网段
如果连接集线器,就只能工作在半双工模式下
如果连接交换机,就默认工作在全双工模式下
光纤网段
仅支持全双工
以太网的物理层使用曼彻斯特编码(跳0反跳1看中间,中必变)
MAC层标准
以太网MAC帧格式
V2标准(默认)
6 6 N 4,收发协数验
802.3标准
6 6 2 N 4,收发长数验
N是46~1500
一个MAC地址是6B,48bit。目的地址全1表示广播帧
交换机会将收到的广播帧转发至其他端口
路由器不会转发广播帧
物理层会在MAC帧前添加8B前导码(7同步、1定界)
虚拟局域网(VLAN)
大型局域网面临的问题
整个局域网是一个很大的广播域,容易出现广播风暴
不利于信息安全
VLAN的特点
可将大型局域网分割成若干个较小的VLAN,每个VLAN是一个广播域
需要使用支持VLAN功能的以太网交换机来实现
每个VLAN对应一个VID
三种划分VLAN的方式
基于接口
VID<->接口号
基于MAC地址
VID<->MAC地址
基于IP地址
VID<->IP地址
这种方式可以让VLAN范围跨越路由器,让多个局域网的主机组成一个VLAN,需要网络层功能支持
802.1Q帧
主机与交换机之间传输标准以太网帧( 6 6 2 N 4,收发协数验)
交换机与交换机之间(干线链路),传输802.1Q帧(6 6 4 2 N 4 ,收发V协数验)
4字节VLAN标签=16+4+12bit=固定+随便+VID
无线局域网 (IEEE 802.11)
基本概念
802.11无线局域网是星形拓扑,中心称为接入点(AP),也称为无线接入点(WAP)
基本服务及(BSS)=1个基站+N个移动站
属性
服务集标识符(SSID),不超过32字节
基本服务区(BSA)
扩展服务集(ESS)
将多个AP连接到同一个分配系统,组成一个更大服务集
漫游
一个移动站丝滑切换AP,且通信继续保持,不中断
门户(Portal)
可将802.11无线局域网接入802.3有线以太网
802.11帧
分类
(1)数据帧;(2)控制帧(如ACK、RTS、CTS);(3)管理帧(如 探测请求、探测响应帧)
数据帧格式
30 N 4 首数验,首部3+1地址
九十比特表去来,帧的中转靠AP
去往AP中起止、来自AP止中起
其他补充
802.11无线局域网使用CSMA/CA协议实现介质访问控制
802.11无线局域网内,两个移动站之间不能直接通信,而必须通过基站(AP)转发帧
AP通常具备“帧格式转换”功能,可以将在无线链路上传输的802.11帧格式,与有线链路上传输的以太网帧格式相互转换
AP与移动站之间通过无线链路传输: AP与AP之间,AP与路由器之间,AP与以太网交换机之间,通过使用有线链路
广域网(WAN)
基本概念
特点:覆盖范围广,几十公里到几千公里
主要任务
将长距离运送主机所发送的数据
将分布在各地方的局域网互联起来
WAN各节点之间通常是点对点高速链路
对比:LAN中常用“总线型”链路
点对点协议(PPP协议)
三个组成部分
链路控制协议(LCP)
用于建立、配置LCP链路(例如:协商数据链路层的MTU、认证协议)
网络控制协议(NCP)
为网络层协议建立和配置逻辑连接(例如:网络层使用IP协议,则NCP要负责申请一个IP地址)
注:每个不同的网络层协议要用一个相应的NCP配置(例如:为IP协议服务的NCP就是IPCP)
定义PPP帧格式(用于携带网络层协议数据,如IP数据报)
PPP帧格式
F A C 协议 信息部分 FCS F
7E FF 03 IP数据报 7E
字节:1 1 1 2 不超过1500B 2 1
首F、尾F:帧定界符,0x7E A(地址域)、C(控制域):固定数值,无意义 协议:指明“信息部分”携带的是什么协议的数据 信息部分:具体携带的协议数据(如:IP数据报) FCS:CRC循环冗余校验码(若帧校验出错,直接丢弃)
如何实现透明传输
字节填充
用于异步传输(逐个字符地传送)
0x7E(即01111110)作为帧定界符,0x7D(即01111101)作为转义字符
零比特填充
用于同步传输(一连串的比特连续传送)
除了首、尾的帧定界符0x7E外,只要发现有5个连续的1,则立即填入一个0
PPP协议的特点
PPP是链路层协议,仅支持点对点全双工链路
链路层只保证无差错(CRC校验),但不可靠(没有ACK)
支持多种网络层协议(如:IPv4,IPv6、AppleTalk)
PPP帧是面向字节的,帧长度是字节的整数倍
工作过程
设备之间无链路
物理层建立连接(物理线路连接主机和ISP路由器)
节点之间已建立“物理链路”
LCP配置协商(发送LCP配置请求->,<-发送LCP配置应答)
节点之间已建立"LCP链路"
LCP链路鉴别(发送用户名、密码->,<-认证成功/失败)
已鉴别的LCP链路
NCP配置协商(发送NCP请求->,<-发送NCP确认)
已鉴别的LCP链路和NCP链路(连网成功,可以开始上网)
用PPP帧携带“IP分组”
以太网交换机
特点
交换机=多端口网桥
交换机工作在数据链路层,可以根据目的MAC地址转发帧
自学习功能(支持即插即用)
交换表
初始为空,记录[ MAC地址,端口号]的对应关系
每收到一个帧,就将“发送方”的MAC地址端口号更新到交换表
如果不知道“接收方”在哪里,就把帧广播道除入口外的其他端口 如果知道“接收方”在哪里,就把帧精准转发至某个端口
交换表中每个表项都有有效时间,过期表项自动作废
以防止某些节点拔线跑路
两种交换方式
直通交换
只检查帧的目的MAC地址,以决定帧的转发端口
优点:转发时延低
缺点:不适用于需要速率匹配、协议转换或差错检测的线路
存储转发交换
先把帧完整的接收到交换机内部的高速缓存中,进行差错检测等必要处理,再根据交换表决定从哪个端口转发出去
优点适用于需要速率匹配,协议转换或差错检测的线路
缺点:转发时延高
流量控制与可靠传输机制
第四章 网络层
网络层的功能
异构网络互联
如何理解“异构”?
每个网络的拓扑结构不同,物理层,链路层的实现不同,主机类型也不同相同
重要的设备:路由器(Router)
注:在TCP/IP文献中,路由器也被称为网关(Gateway)
路由与转发
路由
各个路由器之间相互配合,规划IP数据报(分组)的最佳转发路径
注:各个路由器需要运行“路由协议”,最终生成各自的“路由表”
转发
一台路由器,根据自己的“转发表”,将收到的IP数据报从合适的接口转发出去
注:转发表=精简版路由表。更精简的数据结构有助于快速检索
拥塞控制
拥塞
原因:网络上出现过量分组,超负荷,引起网络性能下降
现象:网络上的分组数增加,但吞吐量反而降低
类比:节假日路上的车辆增多到一定程度时,收费站的吞吐量反而降低
拥塞控制方法
开环控制(静态的方法)
在部署网络时,就提前设计好预防拥塞的方法。一旦网络系统开始运行,就不再修改
闭环控制(动态的方法)
动态监视网络状态,及时发现哪里发生拥塞,并将拥塞信息传递给相关路由器,如:通过ICMP
相关路由器及时调整“路由表”
IPv4
IPv4分组
结构<首部+数据部分>
各字段的作用
首部:版本、首部长度、区分服务、总长度、标识、标志、片偏移、生存时间、协议、首部校验和、源地址、目的地址、可选字段、填充、 数据部分
首部固定部分20B,可变部分0~40B
注意3个与“长度”相关的字段:418,首总偏
分片问题
MTU(最大传送单元):一个链路层数据帧能承载的最大数据量
如果一个IP,数据报的总长度大于下一段链路的MTU,就需要将"数据部分"分片
易错:除最后一个分片外,其他每个分片的"数据部分"必须是8b的整数倍
易混
标识16bit,用于区分每个分片原本属于哪个IP数据报?
标记3bit,关注最低位MF,次低位DF
ME=1,表示后面还有分片
MF=0,表示这是最后一个分片
DF=1,表示不允许被分片
DF=0,表示允许被分片
TTL字段
IP分组每经过一个路由器TTL减1,如果已经减到0,该路由器就丢弃分组,并向源主机发送ICMP报文(通知出现异常)
IPv4地址
IP地址是给连接到互连网上的每台主机(路由器)的每个接口,分配的一个在全球范围内唯一的32位标识符,32位IP地址分成4段,每段8位。
分类IP地址
A类(1·126):0~8位为网络号,9~32位为主机号
B类(128~191):1~16号为网络号,17~32为主机号
C类(192~223):1~24位为网络号,25~32为主机号
D类(224~239):多播地址
E类(240~255):保留今后使用
特殊IP地址(0.0.0.0)
主机号全0,表示本网络本身。
主机号全1,表示本网络的广播地址
127.X.X.X保留作为本地软件换回测试本主机的进程之间的通信用
32位全0,表示本网络上的本主机
32位全1表示受限广播地址
网络地址转换NAT
私有IP地址 (内网IP)
10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255 192.168.0.0`192.168.255.255
每个局域网内部都可以自行分配这些私有IP地址
私有IP地址是可复用的,只要求局域网内唯一,不要求全球唯一
只允许分配给局域网内部的节点, 不允许分配给互联网上的节点
全球IP地址 (外网IP)
通常由ISP提供,全球唯一
外网IP是一个局域网与外界通信时所需使用的IP地址
NAT路由器
普通路由器转发IP数据报时 不会改变源IP,目的IP地址
作用:转发IP数据报时,进行内网IP、外网IP的相互转换
NAT表,记录地址转换关系
<内网IP:端口号<->外网IP:端口号>
一个IP数据报
从内网转发到外网,会更改源IP地址、源端口号
从外网转发到内网,会更改目的IP地址、目的端口号
NAT路由器包含传输层的功能(因为端口号是传输层的概念)
子网划分与子网掩码
划分子网
两级IP地址空间利用率有时很低、给每个物理网络分配的网络号会使得路由表变得太大引起网络性能变坏,两级IP不够灵活
划分思想
划分子网纯属一个单位内部的事情
划分子网的方法是从网络的主机号借用若干位作为子网号,IP地址结构:{网络号,子网号,主机号}
路由器转发分组根据的仍然是IP数据报的目的网络号,本单位的路由器收到IP数据报后,再按目的网络号和子网号找到目的子网。最后把IP数据报交付给目的主机。
主机发送IP数据报的过程
一、判断目的主机和主机是否属于同一网络
(1)检查本机IP地址和目的IP地址的网络前缀是否相同(需要用本机配置的子网掩码:“逐位与”)
(2)若网络前缀相同,说明目的主机和本机属于同一个网络。若网络前缀不同,说明不属于同一网络
二、将IP数据报封装成MAC帧并发送到链路上
如果目的主机与本机属于同一网络,就通过ARP协议找到目的主机的MAC地址,再将IP数据报封装成帧,并将帧发送给目的主机
如果目的主机与本机不属于同一网络,就通过ARP协议找到默认网关的MAC地址,再将IP数据报封装成帧,并将帧发送给默认网关
路由器转发一个IP数据报的过程
一、路由器的某个接口收到一个IP数据报
二、对IP数据报首部进行校验,并从中找到目的IP地址
三、查“转发表”(最长前缀匹配原则)
转发表的表项包含<目的网络号,子网掩码,转发接口>
检查目的IP地址与每个表项能否匹配(将目的IP地址、子网掩码“逐位与”,匹配表项中的目的网络号)
注:至少“默认路由”表项一定是可以匹配成功的
四、转发
根据查转发表的结果,将IP数据报从匹配的接口转发出去
如果匹配的“转发接口”和该IP数据报的入口相同,就不用再把IP数据报转发回去
路由聚合:对于一个路由转发表,如果几条路由表项的转发接口相同,部分网络前缀也相同,那么可以将这几条路由表项聚合为一条
无分类编址(CIDR)
基本原理
取消了IP地址传统的A/B/C/D/E分类。采用无分类编制CIDR,IP地址块分配更灵活,利用率更高,一定程度上缓解了IP地址耗尽
IP地址={<网络前缀>,<主机号>},其中网络前缀不定长
CIDR记法
128.14.32.153/30,表示在这个IP地址中,网络前缀占30位,主机号2bit
CIDR地址块的子网划分
定长子网划分
在一个CIDR地址块中,把主机号前k bit抠出来作为定长子网号,这样就能划分2^k个子网 (每个子网柏寒的IP地址块大小相等)
变长子网划分
在一个CIDR地址块中,划分子网时,子网号长度不固定 (每个子网包含的IP地址块大小不同)
注意
在每个子网中,主机号全0、全1的IP地址不能分配给特定节点私用
子网划分解题技巧
CIDR地址块的子网划分技巧
从根到叶构造“二叉哈夫曼树”
(1)原始CIDR地址块作为根节点(假设可以自由分配的主机号占h bit)
(2)每个分支节点必须同时拥有左右孩子,左0,右1(反过来也行)
(3)每个叶子节点对应一个子网,根据根节点到达叶子节点的路径来分析子网对应的IP地址块范围
(4)整棵树的高度不能超过h-1(因为既使最小的子网,也至少要保留2bit主机号)
无分类编址(CIDR)
基本原理
取消了IP地址传统的A/B/C/D/E分类。采用无分类编制CIDR,IP地址块分配更灵活,利用率更高,一定程度上缓解了IP地址耗尽
IP地址={<网络前缀>,<主机号>},其中网络前缀不定长
CIDR记法
128.14.32.153/30,表示在这个IP地址中,网络前缀占30位,主机号2bit
CIDR地址块的子网划分
定长子网划分
在一个CIDR地址块中,把主机号前k bit抠出来作为定长子网号,这样就能划分2^k个子网 (每个子网柏寒的IP地址块大小相等)
变长子网划分
在一个CIDR地址块中,划分子网时,子网号长度不固定 (每个子网包含的IP地址块大小不同)
注意
在每个子网中,主机号全0、全1的IP地址不能分配给特定节点私用
子网划分解题技巧
CIDR地址块的子网划分技巧
从根到叶构造“二叉哈夫曼树”
(1)原始CIDR地址块作为根节点(假设可以自由分配的主机号占h bit)
(2)每个分支节点必须同时拥有左右孩子,左0,右1(反过来也行)
(3)每个叶子节点对应一个子网,根据根节点到达叶子节点的路径来分析子网对应的IP地址块范围
(4)整棵树的高度不能超过h-1(因为既使最小的子网,也至少要保留2bit主机号)
地址解析协议(ARP)
回顾
MAC地址(48bit),是网络适配器出厂时分配好的,全球唯一
一台主机至少有一个网络适配器,因此主机至少有一个MAC地址
一台路由器有多个转发接口,每个接口背后都是一个网络适配器,因此路由器有多个MAC地址
ARP
作用
在一个局域网内部,可以通过ARP协议查询到一个IP地址对应的MAC地址
ARP表 (ARP缓存)
记录(IP地址<->MAC地址)之间的映射关系
一个数据结构(每台主机,每台路由器都有自己的ARP表)
需要定期更新ARP表项
过程
ARP请求分组
内容
我是谁?
我的IP地址是X,我的MA地址是Y
我想找谁
我想找的这个家伙,IP地址是Z
ARP请求分组封装进MAC帧(帧的目的地址=全1,源地址=Y)
ARP响应分组
内容
你好,我就是你要找的那个靓仔,我的IP地址是z,我的MAC地址是v
广播帧
ARP响应分组封装进MAC地址(帧的目的地址=Y,源地址=V
单播帧
动态主机配置协议DHCP
基本概念
DHCP协议的作用:给刚接入网络的主机动态分配IP地址、配置默认网关、子网掩码
DHCP使用客户/服务器模型(C/S)
DHCP客户:是新接入网络的主机,希望获得IP地址等配置
DHCP服务器
是负责分配IP地址的那台主机管理,一系列IP地址池
在家庭网络中,通常由家庭路由器兼职DHCP服务器
一个大型网络中可以有多台DHCP服务器
DHCP是应用层协议,基于UDP
客户UDP端口号=68,服务器UDP端口号=67
过程
(1)客户-〉服务器:DHCP发现报文
携带信息:客户主机的MAC地址(还可以提出对IP地址租用期的要求)
网络层:源IP地址=0.0.0.0,目的IP地址=255.255.255.255(广播IP数据报)
链路层:源MAC=客户的MAC地址,目的MAC=全1(广播帧)
(2)服务器-〉客户:DCHP提供报文
携带信息:给客户分配的IP地址,租用期,子网掩码,默认网关
网络层:源IP地址=DHCP服务器的IP地址,,目的IP地址=255.255.255.255(广播IP数据报)
链路层:源MAC=服务器的MAC地址,目的MAC=客户MAC地址(单播帧)
(3)客户-〉服务器:DCHP请求报文
携带信息:客户机确认要使用的IP地址
网络层:源IP地址=0.0.0.0.0,目的IP地址=255.255.255.255(广播IP数据报)
链路层:源MAC=客户的MAC地址,目的MAC=全1(单播帧)
(4)服务器-〉客户:DCHP确认报文
携带信息:给客户分配的IP地址、租用期、子网掩码、默认网关
网络层:源IP地址=DHCP服务器的IP地址,目的IP地址=255.255.255.255(广播IP数据报)
链路层:源MAC=服务器的MAC地址,目的MAC=客户的MAC地址(单播帧)
网际控制报文协议(ICMP)
ICMP属于网络层,ICMP报文封装在IP数据报。ICMP可以让主机或路由器相互报告网络中发生的差错和异常情况
ICMP报文的常见类型
差错报告报文
终点不可达
路由器告诉发送方:“目的IP地址不可达”(道路不通)
目的主机告诉发送方:“目的端口号不存在,我这里没有对应进程“
时间超过
路由器告诉发送方:‘’你的IP数据报到我这里TTL=0,被我丢了”(路程太远)
目的主机告诉发送方:‘’你的IP数据报被分片了,规定时间内没到齐,我已全部丢弃‘’
参数问题
告诉发送方:‘’你的IP数据报首部参数不合法,或首部校验出错‘’
改变路由(重定向)
路由器告诉发送方:”对于这个目的网络,下次你让另一台路由器帮你转发,路径会更短‘’
询问报文
回送请求
A到B:在吗?回答我
回送回答
B到A:在!
时间戳请求
A到B:我这边现在的时间是XX,你那边的时间?
时间戳回答
B到A:我收到的请求的时间是yyy,我发出回答的时间是zzz
不必反馈ICMP差错报告报文的情况
若携带ICMP差错报告报文的IP数据报出错,不再反馈ICMP差错
若IP数据报被分片,则无论几个分片出错,都只反馈一次ICMP差错
若IP数据报目的地址为多播地址,不反馈ICMP差错
若IP数据报的原地址为特殊地址(如127.x.x.x),则即便发生IP数据报异常,也不反馈ICMP差错
ICMP的典型应用
ping 基于 回送请求报文、回送回答报文 实现功能
traceroute(tracer)基于时间超过报文实现功能
IPv6
格式
总计128 bit,采用冒号十六进制记法(16位为一段,段间冒号分隔)
压缩记法
1.每个16位段内得前导0都可以省略
2.可用双冒号“::”替代连续出现的多个0(注意一个地址中只能出现一次双冒号)
一台主机的地址=【n位前缀,128-n位接口标识符】
分类
未指明地址=::/128、环回地址=::1/128
多播地址=FF::/8
本地链路单播地址=FE8::/10
全球单播地址=其他
三类IPv6目的地址
单播
多播(数据报交付一组主机)
任播(数据报交付最近的一台主机)
IPv6地址资源的分配
支持无分类编址CIDR,因此各级地址管理机构可以灵活划分子网大小
IPv6因为地址空间很大,所以可以划分为更多的层次
IPv6支持即插即用(IP地址自动配置),因此IPv6可以不使用DHCP
路由算法与路由协议
路由算法
路由算法的目的是找到转发IP分组的“最佳路径” 路由协议实现了某种路由算法,并且还要定义路由器之间如何相互通信,以获取路由算法所需的信息
路由算法的分类
静态路由算法
由网络管理员手工配置每一条路由
实现简单,开销小,不具备自适应能力,适用于小型网络
动态路由算法
路由器可根据网络变化来自动调整自身的路由表
实现复杂,开销大,具备自适应能力,适用于大型网络
常见的动态路由算法
距离向量路由算法(RIP基于此算法)
本质是Bellman-Ford算法在路由领域的应用
特点:路由器不必关心完整的网络拓扑结构,只需关心和邻居之间的距离,各个邻居和目的网络之间的最短距离
链路状态路由算法(OSPF基于此算法)
本质是迪杰斯特拉Dijkstra算法在路由领域的应用
特点:路由器需要知道完整的网络拓扑结构,再使用迪杰特斯拉算法找到最短路径
路径向量路由算法(BGP基于此算法)
分层次的路由协议
路由协议的分类
内部网关协议(IGP)
用于自治系统内部的路由选择。如:RIP、OSPF属于IGP
一个自治系统有权决定,在本自制系统内使用哪种内部网关协议
外部网关协议(EGP)
用于自治系统之间的路由选择。例如:BGP属于EGP
各个自治系统边界路由器之间,统一使用BGP协议相互通信路由信息
自治系统AS
全世界的互联网被划分为相互独立的自治系统AS,每个自治系统都有全球唯一的AS编号(ASN)
每个AS至少有一台自治系统边界路由器和其他AS相连
自治系统之间是平级关系,不存在包含关系
路由信息协议(RIP)
RIP信息
RIP属于应用层,她使用UDP传送数据(端口520)
RIP定义了两种报文: Request报文:请求邻居路由器发送其路由表用于启动或查询; Response报文:响应请求或定期发送给邻居路由器,携带完整或部分路由表
RIP路径长度
(1)RIP使用跳数或距离来衡量到达目的网络的距离。 规定:路由器到直连网络的距离为1,而每经过一个路由器距离就+1。
(2)RIP认为,好的路由就是跳数最少的。
(3)RIP允许一条合法路径距离不超过15,距离等于16时表示网络不可达,可见RIP只适用于小型自治系统。
(4)每个路由器都需要维护自己的路由表,路由表有三个关键字段:<目的网络N,距离d,下一跳路由器地址X>
(5)每个路由器都要维护从它自身到其他每个目的网络的距离记录,即距离向量(事实上,距离向量信息包含在路由表中,RIP协议使用距离向量路由算法计算最短路径)
RIP工作过程
原理
路由器刚开始工作时,只知道自己到直接相连的几个网络的距离为1,每个路由器仅和相邻路由器周期性的交换并更新路由信息,经过若干次交换和更新后,所有的路由器最终都会知道到达本自治系统内任何网络最短距离和下一跳路由器的地址,称为收敛。
执行步骤
(1)对地址为x的相邻路由器发来的RIP报文,先修改该报文中的所有项目:把下一跳字段中的地址都改为x,并把所有"距离"字段的值加1
本质是距离向量路由算法
(2)把修改后的RIP报文中的每个项目执行如下步骤: IF(若原来的路由表中没有目的网络N) 则把该项目添加到路由表中(表明这是新的目的网络) ELSE IF (若原来的路由表中有目的网络N,且下一跳路由器的地址是X) 用收到的项目替换原路由表中的项目(因为要以更新的消息为准) ELSE IF(若原来的路由表中有目的网络N,且下一跳路由地址不是x) 若收到的项目中的距离d小于路由表中的距离,则进行更新 ELSE 什么也不做
(1)有没有发现新网络? (2)网络的距离是否要更新? a.找到一条新路径,距离更近, b.继续走老路,但老路距离有变化
(3)若180秒(RIP默认超时时间)还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离设置为16(表示不可达)
(4)返回
优缺点
优点
(1)实现简单开销小,收敛过程较快
(2)若一个路由器发现了更短的路由,则这种更新信息就传播得很快,在较短时间内便可传播至所有路由器,俗称“好消息传播的快”
缺点
(1)Rip限制了网络的规模,它能使用的最大距离为15
(2)路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大
(3)当网络出现故障时,路由器之间需反复多次交换信息才能完成收敛,要经过较长时间才能将故障信息传送到所有路由器(慢收敛现象),俗称“坏消息传播的慢”
开放最短路径优先协议(OSPF)
OSPF属于网络层,使用IP协议提供的服务。IP手部的协议字段等于98
OSPF基于链路状态的路由算法(迪杰斯特拉算法)计算最佳转发路径
每一台路由器都需要建立整个网络的拓扑图(带权有向图,可用邻接表存储)
OSPF工作流程 (路由器视角)
路由器开机时,探测与自己直连的所有链路状态
用洪泛法(flooding)将探测到的链路状态信息迅速转发给其他路由器. 注意:每个链路状态信息都带上一个32位的序号,序号越大,状态就越新
若路由器探测到身边链路有变化,就再次立即洪泛最新的链路状态信息
其他特点
OSPF允许自治系统灵活的定义链路"代价"
OSPF支持等价多路径转发
OSPF分组支持鉴别功能,防止非法路由信息在自治系统内传播
OSPF支持变长子网划分、CIDR
工作原理
如何生成路由表
(1)构建LSDB
路由器用洪泛法将探测到的链路状态信息迅速转发给其他路由器,一旦探测到身边路链路有变化,路由器就再次立即洪泛最新的链路状态信息
各台路由器根据其他路由器发来的链路状态信息,构建LSDB(链路状态数据库,本质就是图的邻接表)
(2)运行Dijkstra算法
路由器基于LSDB运行Dijkstra算法计算出从自身到达每一个目的网络的最短路径
(3)生成路由表
根据Dijkstra算法的运行结果,构造路由表
路由表的结构为【目的网络,下一跳,到目的网络的距离】
区域划分
将自制系统划分为一个主干区域,多个非主干区域
区域划分的作用
洪泛范围局限在每个区域内部,降低了洪泛压力
一台普通路由器仅需关心所属区域的网络拓扑,也就是LSDB变小了
几类路由器
自治系统路由器(ASBR)
在主干区域内,至少有一台,与其他自治系统相连
区域边界路由器(ABR)
每个非主干区域,至少有一台,与主干区域相连
区域内部路由器(Internal Router)
“非边界路由器”,通常每个区域有多台
几个易混术语
LSDB
链路状态数据库
LSA
链路状态通告,OSPF协议定义的一种数据结构
LSI
链路状态信息,是一个广义的概念,指所有描述链路状态的信息
分组类型
OSPF定义在网络层
(1)Hello Packet 问候分组 :建立和维持邻居关系(每隔10秒发送一次,40秒超时)
(2)DD Packet 数据库描述分组:邻居建立时,向邻居给出自己LSDB摘要(即LSA的头信息)
(3)LSR Packet 链路状态请求分组:向邻居请求缺少的LSA(指明头信息即可)
(4)LSU packet 链路状态更新分组:向邻居传输具体的LSA(可能引发全网洪泛)
(5)LSAck Packet 链路状态确认分组:收奥邻居发来的LSU后,向邻居确认收到了那些LSA(头信息)
边界网关协议(BGP)
BGP是一种外部网关协议,用于在自治系统(AS)之间交换路由信息,实现路由选择,内部用OSPF/RIP
特点
(1)BGP力求找到一条自治系统之间比较好的路由,而不是“最佳路由”
(2)AS之间的路由选择必须考虑政治、安全或经济等有关因素
(3)BGP采用路径向量路由算法——路由器之间通告BGP路由信息时,不仅告知目的地,还告知到达该目的地的完整路径(即需要经过那些自治系统)
(4)BGP是应用层协议,基于TCP(端口号179)
概念
BGP邻居
BGP协议的通信双方称为BGP对等方(BGP peers)(BGP邻居)
BGP会话
BGP邻居之间先建立TCP连接,然后在该连接上交换BGP报文,从而建立BGP会话
两类BGP会话
两个AS的直连边界路由器之间,长期保持eBGP会话
AS内部的BGP路由器之间,长期两两保持iBGP会话
注意:规定AS内iBGP会话必须全连通(Ful Mesh),N个路由器形成(N-1)/2条iBGP会话
工作原理
BGP路由信息
CIDR前缀
指向目的网络
AS-PATH(自治系统路径)
描述到达目的网络需要经过那些自治系统(用ASN序列表示)
下一跳
对e BGP:下一跳 就是e BGP发送方路由器自己的IP
对i BGP:
默认不修改下一跳
也可修改为iBGP发送方路由器自己的IP
Bgp的关键规则
iBGP学到的路由不能再通过iBGP传播给其他iBGP邻居(避免环路传播)
注:AS内iBGP会话是全连通的,这样可以确保AS内所有路由器都能收到从外部学来的、一致的iBGP路由信息
工作原理
一、第一步:源头R1生成BGP路由(AS1内部) 1. R1直连网段X,把X封装成BGP路由条目(路径向量): [X , AS路径<AS1> , 下一跳R1自身IP] 2. R1和R2建立EBGP邻居,通过TCP 179发送Update报文,把这条路由发给R2。
二、第二步:EBGP传递规则(跨AS,修改下一跳、追加AS号) EBGP核心规则:发送路由时,更新两个参数 1. AS-PATH追加本AS号:R2收到路由 [X,<AS1>,R1] ,向外发给其他AS时,AS路径变为 <AS2,AS1> ; 2. 下一跳改为发送路由器自身IP: - R2发给AS2内部IBGP邻居时不改下一跳; - R4发给AS3的R6(EBGP)时,下一跳从R3改成R4自己的IP。
三、第三步:IBGP邻居路由传递(AS2内部R2/R3/R4/R5) IBGP核心规则:默认不修改下一跳;IBGP学到的路由不会转发给其他IBGP对等体 1. R2收到R1的EBGP路由 [X,<AS1>,下一跳R1] ; 2. R2向AS2内R3、R5发送IBGP报文,路由条目不变: [X,<AS1>,R1] ,下一跳依旧是R1,不会改成R2; 3. R3、R5收到后,不能再把这条路由转发给R4(IBGP水平分割防环); 4. R4无法直接从R3/R5获取X路由,需要依靠AS2内部IGP(OSPF/RIP): R4通过IGP计算出:去往 下一跳R1 的转发路径是R3,因此R4在IP路由转发表写入:目标X,下一跳R3。
三、第三步:IBGP邻居路由传递(AS2内部R2/R3/R4/R5) IBGP核心规则:默认不修改下一跳;IBGP学到的路由不会转发给其他IBGP对等体 1. R2收到R1的EBGP路由 [X,<AS1>,下一跳R1] ; 2. R2向AS2内R3、R5发送IBGP报文,路由条目不变: [X,<AS1>,R1] ,下一跳依旧是R1,不会改成R2; 3. R3、R5收到后,不能再把这条路由转发给R4(IBGP水平分割防环); 4. R4无法直接从R3/R5获取X路由,需要依靠AS2内部IGP(OSPF/RIP): R4通过IGP计算出:去往 下一跳R1 的转发路径是R3,因此R4在IP路由转发表写入:目标X,下一跳R3。
四、第四步:R4向AS3的R6发送EBGP路由 1. R4把路由封装为EBGP报文,执行EBGP修改规则: - AS路径追加AS2: <AS2,AS1> - 下一跳改为发送方R4自己的IP 最终发给R6的路径向量: [X , <AS2,AS1> , R4] 2. R6接收路由,写入自身转发表:目标网段X,下一跳R4。
七、图中总结BGP整体工作逻辑 1. 邻居建立:所有BGP对等体先建立TCP 179连接,协商Open报文,达到Established状态; 2. 路由交换:仅增量Update报文传递路由,携带「可达网段、AS-PATH、下一跳」三元组(路径向量); 3. 区分EBGP/IBGP两套转发规则:下一跳修改、路由转发限制不同; 4. 双层防环:EBGP靠AS-PATH,IBGP靠水平分割; 5. 路由下发:路由器把优选后的BGP路由写入本机IP转发表,指导实际IP报文转发。
BGP路由选择
对于外部AS的目的网络x,如果有多条AS PATH可以走,选哪一条路?
怎么做
(1)选择本地偏好值最高的路线
"本地偏好值"由AS管理员设置,相当于"优先级"
通常考虑成本,安全等因素
(2)选择AS跳数最少的路线
注意:AS跳数最少,路由器跳数不一定最少
(3)使用热土豆路由选择算法
理念:烫手的土豆,要尽快脱手
如果多条路线的AS跳数都相同,那么要根据内部网关协议(如RIP或OSPF)找到一条路线让IP分组以最小代价,离开本自治系统
注:RIP以路由器跳数作为代价,OSPF以路径总长度作为代价
(4)选择BGP标识符最小的路由 (BGP标识符=BGP ID)
理念:如果两个员工都说很好,就听老员工的
每一台BGP路由器都有唯一的32 bit BGP标识符(常选取路由器各接口中更大的IP地址作为标识符)
路由器之间发送BGP报文时,会告知彼此BGP ID
四种报文
(1)Open(打开)报文。用来与相邻的另一个BGP对等方建立BGP会话,使通信初始化
(2)Update(更新)报文,用来通知某一路由的信息以及列出要撤销的多条路由
(3)Keepalive(保活)报文,用来周期性的通知BGP对等方“我还活着”
(4)Notification(通知)报文,用来发送检测到的错误,并立即关闭BGP会话
发送时机:TCP连接成功后BGP发出第一个报文 发送时机:发现新的路由信息或发现老的路由信息发生变化 发送时机:周期性的发送,如60秒一次,如果超出60×3=180秒未收到,说明BGP会话出问题 发送时机:检测到BGP错误时,例如BGP报文首部参数错误
IP多播
相关概念
IP多播:源主机发送一个IP多播分组,再由多播路由器"多口转发”
多播路由器:支持IP多播功能的路由器(运行IGMP协议,多播路由器协议)
IGMP协议
作用:是主机和路由器之间的多播管理协议,用于管理主机对多播组的加入和离开
IGMP协议属于网络层,使用IP协议提供的服务,IP首部的协议字段=2
多播路由协议:多波路由器之间通过“多播路由协议"得知哪些端口处有多播组成员
IP多播地址
类比:IP多播地址=QQ群号,IP单播地址=个人QQ号
一个多播地址,对应一个多播组,可能包含多台主机
范围=224.0.0.0~239.255.255.255(即IPv4的D类地址,前4位是1110)
IP多播的特点
(1)多播IP数据报也是尽最大努力交付,不提供可靠服务
(2)多播地址只能作为目的地址,而不能作为源地址
(3)对多播数据报不产生ICMP差错报文
移动IP
概念
移动节点/移动站。永久地址;转交地址。归属网络/本地网络;被访网络/外地网络
归属代理/本地代理;外地代理
通信过程
移动站在本地网络的通信
和普通的TCI/IP通信一样
移动站到达外地网络
(1)移动站向外地代理登记,并获得临时的转交地址
(2)外地代理向本地代理登记该移动站的转交地址
移动站在外地网络接收IP分组
(1)发送方构造原始IP分组(目的地址=永久地址)
(2)归属代理收到IP分组,进行IP-in-IP套娃封装,外层IP分组的源IP=归属代理的IP、目的IP=移动站的交转交地址
(3)外地代理收到归属代理转发的套娃IP分组,拆封后得到原始IP分组,封装成MAC帧并发送给移动站
移动站在外地网络发送IP分组
(1)移动站构造IP分组(源IP=永久地址),直接交由外地代理转发
(2)外地代理无需转交给归属代理,而是直接转发到目的网络
移动站回到本地网络——移动站向归属代理登记,注销转交地址
网络层设备(路由器)
组成和功能
控制层面(Control Plane) ——实现路由选择功能
路由选择处理机
运行路由选择协议进程(如:RIP/OSPF/BGP进程),生成路由表
路由表
不同的路由协议生成的路由表条目字段略有区别
路由表包含:【网络前缀,下一跳IP,出接口,其他信息】
数据层面(Data Plane) ——实现分组转发功能
交换结构
转发表
转发表包含:【网络前缀,下一跳IP,出接口】
分组处理
根据IP首部目的地址查转发表(硬件实现),确定输出端口
将IP分组从输入端口交换到输出端口
一组输入端口
物理层,链路层,网络层三个模块逐层处理
每个输入端口设有“输入缓冲区”,用于暂存交换结构来不及处理的IP分组。如果缓冲区满,但仍有新的IP分组到达,则新分组丢失(发生网络拥塞)
一组输出端口
物理层,链路层,网络层三个模块逐层处理
每个输入端口设有“输出缓冲区”,用于暂存交换结构已处理(已确定输出端口)。但是由于带宽限制暂时无法发送到链路上的IP分组
路由表与路由转发
严格来说,路由表,转发表是有区别的,但是在探讨路由选择的时候,通常不严格区分路由表、转发表
除非特意考察路由表、转发表的区别,否则就认为二者相同,包含【前缀,下一跳IP,出接口】
第五章 传输层
传输层概述
端口的作用
通过"端口号"标识本主机的一个特定进程
注意:每台主机的端口号是相互独立的
TCP、UDP两种协议的端口号是相互独立的
TCP或UDP协议,通过Socket套接字=[IP地址:端口号],唯一的标识网络中的一台主机上的一个应用进程
端口号的分类
服务器使用的端口号
熟知端口号:0至1023,通常只能用于被熟知的重要应用程序
登记端口号1024-49151
客户端使用的端口号
短暂端口号:49152-65535
功能
实现端到端(进程到进程)的通信
复用和分用
复用(从上到下):在发送数据的时候,同一台主机上的多个进程可以使用同一个传输层协议
分用(从下到上):在接收数据的时候,传输层可以把数据正确交付到目的进程
差错检测
TCP检测出差错后丢弃数据,并通知发送方重传
UDP检测出错误后,直接丢弃数据,且不通知发送方
向应用层提供两种服务
面向连接的、可靠的端到端传输服务TCP
确保数据正确/完整,但开销大,实时性较差
无连接的,不可靠的端到端传输服务UDP
数据可能出错/丢失,但速度快,开销小
UDP
UDP协议
与TCP的特点对比
UDP
UDP首部很小,只占8B
Udp每次传输一个完整的报文,不支持报文自动拆分,重装
Udp是无连接的,不可靠的,也不支持拥塞控制
Udp支持一对一、一对多传输
TCP
TCP首部更大,占20~60B
T tcp支持报文自动拆分重装,因此可以传输长报文
TCP是有连接的,可靠的,支持拥塞控制
TCP仅支持一对一传输
UDP数据报格式
首部
16位源端口号
发送进程的端口号,如果不需要对方回复,可以置为全零
16位目的端口号
接收进程的端口号(必填)
16位UDP长度
包含首部,以字节为单位
16位UDP校验和
由发送方的传输层计算并填入校验和,接收方的传输层检测是否有差错,如果无需校验,可以填入全零
数据
一个完整的应用层报文
UDP检验
一种新的差错检验算法
检验和计算:将原始数据以16bit为一组,进行二进制加法(最高位产生的进位需要回卷),加法运算的最终结果逐位取反,得到16位bit"检验和“”
差错检验方法:接收方将收到的内容以16bit为一组,进行二进制加法(最高位产生的进位需要回卷)
如果加法结果为全1,说明没有差错
如果加法结果不是全1,说明有差错
UDP校验要点
发送方在计算检验和之前,需要添加伪首部,计算完校验和之后,拆除伪首部
接收方在差错检验之前,需要添加伪首部,检验完之后拆除伪首部
如果检验出差错,就丢弃该UDP数据报
如果无差错,就接收该UDP数据报
TCP
TCP特点
TCP是在不可靠的IP层之上实现的,可靠的数据传输协议,它主要解决,传输的可靠,有序,无丢失和不重复问题
(1)TCP是面向连接的传输层协议。TCP连接是一条逻辑连接
(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是一对一的
(3)TCP提供可靠交付的服务,保证传送的数据无差错,不丢失,无重复且有序
(4)TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据
TCP报文段
只有握手(1)的ACK=0, 其他所有TCP报文段ACK=1
首部
源端口、目的端口、序号,确认号、数据偏移,保留,URG,ACK, PSH,RST, SYN, FIN,窗口,检验和,紧急指针,选项,填充.一个TCP报文段分为首部和数据两部分,整个TCP报文段作为IP数据报的数据部分,封装在IP数据报中.
序号:用于标记数据部分第一个字节,在原始字节流中的位置
确认号:用于反馈表示序号,在该确认号之前的所有字节都已正确收到
数据偏移:表示首部长度,它指出TCP报文段的数据起始处处距离TCP报文段的起始处有多远
URG紧急位:他告诉系统,此报文段中有紧急数据,应尽快传送
ACK确认位:仅当ACK=1时确认号字段才有效,当ACK=0时确认号无效
PSH推送位:两个应用进程进行交互式通信时,都希望在键入一个命令后,就立即就能收到对方的响应。此时,发送方TCP将PUSH置为1
RST复位位:当RST=1时表示TCP连接中出现严重差错,必须释放连接,然后重新建立传输连接
SYN同步位:当SYN=1时表示这是一个连接请求或连接接受报文
只有握手(2)握手(2)的SYN=1,其他所有TCP报文段都是SYN=0
FIN终止位:用来释放一个连接,当FIN=1时表明使报文段的发送方的数据已发送完毕,并要求释放传输连接
只有挥手(1)、挥手(3)的FIN=1,其他所有TCP报文段都是FIN=0
窗口:窗口值告诉对方,从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。接收方的数据缓存空间是有限的,因此窗口值作为接收方让发送方设置其发送窗口的依据
"流量控制”的关键
校验和:校验和字段检验的范围包括首部和数据部分
紧急指针。紧急指针仅在uURG=1时才有意义。它指出,本报文段中的紧急数据的字节数
选项:可以为空,也可以非空,规定了一种选项,最大报文段长度(MSS),是TCP报文段中的数据字段的最大长度
建立TCP连接时,在握手(1)握手(2)选项中,协商MSS,Mss的值表示,在接下来的数据传输中,一个TCP报文段最多携带多少数据,(首部不算在内)通常MSS不会设置太大,以免在IP层被分片
TCP连接管理
建立连接(3次握手)
握手(1)(2)不能携带数据,握手(1)(2)固定消耗一个序号 握手(3)可以携带数据 握手(3)如果不携带数据就不消耗序号
整体结构:客户端(CLOSED)主动发起,服务端(LISTEN)被动监听
第一次握手(客户端->服务端SYN报文)
SYN=1,ACK=0,FIN=0,seq=666,ack=无效
第二次握手(服务端->客户端SYN+ACK报文)
SYN=1,ACK=1,FIN=0,seq=50,ack=667
第三次握手(客户端->服务端ACK报文)
SYN=1,ACK=1,FIN=0,seq=667,ack=51
释放连接(四次挥手)
在TCP全过程中,只有挥手(1)、(3)的FIN=1 挥手(1)、(3)即使不携带数据也要消耗一个序号 挥手(2)可以携带数据 挥手(4)不可以携带数据
第一次挥手(客户端->服务端)
SYN=0,ACK=1,FIN=1,seq=9999,ack=5600
第二次挥手(服务端->客户端)
SYN=0,ACK=1,FIN=0,seq=5600,ack=10000
数据传送(单向)(服务端->客户端) 假设传了2200B
第三次挥手(服务端->客户端)
SYN=0,ACK=1,FIN=0,seq=7600,ack=10000
第四次挥手(客户端->服务端)
SYN=0,ACK=1,FIN=0,seq=10000,ack=7601
耗时分析
KEY
客户进程收到挥手(3)后,至少要倒计时2MSL后才能进入CLOSE状态
如果服务器进程收到挥手(1)时,已经没有待传送数据,那么就连续发出挥手(2)(3)
MSL(最长报文段寿命),是由TCP协议规定的一个固定时间长度
TCP可靠传输
序号
进程在建立连接时确定起始序号数据传输过程中,每个字节对应一个序号
确认机制
累积确认规则
如果收到ack_seq=n说明序号在n之前的所有字节都已正确接收
返回ACK的时机
推迟确认
推迟时间最多不能超过0.5秒(TCP标准规定)
如果自己也有数据要传送给对方,立即返回ACK段,并"捎带"自己的数据
若连续收到两个长度为MSS的报文段,就应该立即返回ACK段
两种ACK段
专门确认
一个ACK段只有TCP首部,而没有携带数据
捎带确认
一个ack段顺道携带了数据,就是捎带确认
重传机制
超时重传
美发出一个报文段,就设置一个计时器,若计时器到期还没有收到确认,就重传这一报文段,并重置计时器
快重传 (冗余ACK)
作用让可能出错的报文段尽早重传,而不是非要等到超时再重传
配套机制立即确认
每收到一个TCP报文段,就立即返回一个ack段
即使收到一个失序报文段,也要立即返回ack段,失序报文段会导致冗余ack
当发送方连续收到了三个确认号相同的冗余ACK时,就立即重传该确认号对应的报文段
TCP流量控制
让发送方的发送速率不要太快,以便让接收方来得及接收(速率匹配服务)
接收方了根据当前接收缓存的大小,动态的调整接收窗口的大小,其大小反映了接收方的容量,接收方将其放在TCP报文段首部的"窗口"字段,以通知发送方,发送方的发送窗口不能超过接收方给出的接收窗口值,以限制发送方方向,向网络注入报文的速率。
TCP拥塞控制
拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不至过载。
算法
慢开始
先发送少量数据探测一下,若没有发生拥塞,则适当增大拥塞窗口(为防止cwnd增长过大而引起网络),还需要设置慢开始门限(阈值),当cwnd增加到规定的阈值后,采用拥塞避免算法。
拥塞避免
每经过一个往返时延RTT就把发送方的拥塞窗口cwnd+1,使拥塞窗口cwnd按线性规律缓慢增长。 无论在慢开始阶段,还是在拥塞避免阶段,只要发送方判断网络出现拥塞就要首先把慢开始门限设置为出现拥塞时发送方的cwnd值得一半(但不能小于2)。
快重传
快重传 (冗余ACK)
作用让可能出错的报文段尽早重传,而不是非要等到超时再重传
配套机制立即确认
每收到一个TCP报文段,就立即返回一个ack段
即使收到一个失序报文段,也要立即返回ack段,失序报文段会导致冗余ack
当发送方连续收到了三个确认号相同的冗余ACK时,就立即重传该确认号对应的报文段
快恢复
当发送方连续收到3个冗余ACK时,执行“乘法减小”方法,把慢开始门限调整为当前cwnd的一半。
第六章 传输层
网络应用模型
C/S
工作流程:
服务器长期运行,等待客户发来请求
客户主动向服务器发出服务请求,客户端必须提前知道服务器的地址(IP端口)
服务器被动处理客户请求,并将处理结果返回给客户,可见服务器不用提前知道客户端的地址IP端口
特点
客户、服务器地位不平等,服务器处于中心
客户进程之间不直接通信
优缺点
优点:便于集中管理(数据资源、带宽资源等)
缺点:如果服务器损坏,影响全局; 处于中心位置的服务器负载大,服务器性能决定了整个系统的性能
P2P
特点
去中心化的,主机之间地位平等;
主机之间直接通信
优缺点
优点:单个结点损坏不影响全局 各节点可以分摊负载
缺点:一个主机被服务的同时也要为其他主机服务,主机负载较大; 可能导致网络数据流量大,网络拥塞
DNS(域名系统)
域名层次空间
DNS概述
域名
域名=给互联网上的主机/路由器取一个“名字”,该“名字”具有“层次化特性”
访问一个域名实质是访问该域名对应的主机
DNS的作用
实现域名->IP的转换
域名便于人类记忆,IP便于机器处理
基本特点
DNS属于应用层,通常基于UDP,端口53
DNS属于C/S模型
DNS是分布式系统
层次域名空间
域名书写规则
由多个标号Lable组成,用"."分隔
低级域名在左,顶级域名在右
标号主要有英文(不区分大小写)、数字组成;仅允许用连字符"-"(其他标点不行)
单标号<=63字符,全域名总长(含点)<=255字符
划分与管理
根(.)->顶级域(TLD)->二级域->三级域->四级域
顶级域由ICANN统一管理;上级机构可将子域逐极授权下级机构管理。
顶级域分类(TLD)
ccTLD:国家/地区(.cn、.us)
gTLD:通用(.com,.net,.org)
.arpa:基础结构域名,又称反向域名(用于反向解析:IP->域名)
FTP(文件传输协议)
功能和特点
支持不同系统间的文件传输;支持根据用户权限进行文件管理;支持匿名FTP共享公共文件
采用C/S模型;基于TCP;控制信息“带外传输”;文件修改效率低(需整体下载再上传)
C/S模型
服务器
主进程(仅有一个)
FTP服务器仅有一个控制进程,在整个FPT会话期间都存在
从属进程(有多个)
控制进程
一个已登录用户对应一个控制进程,在整个FTP会话期间都存在
数据传送进程
是一次性的短暂进程,每一次传输数据是建立/销毁
客户端
用户界面:供用户使用的软件界面,如Windows文件资源管理器,Mac的访达
控制进程、数据传送进程:分别与服务器的对应进程建立控制连接,数据连接
两种TCP连接
控制连接(持久)
用于传输控制信息;整个会话期间保持不断开;不传输文件数据
客户端 随机端口->服务器21端口
数据连接(非持久)
用于传输文件数据(上传/下载文件、传输文件列表等);在传输建立前,传输结束后立即关闭
传输模式
主动模式(PORT)
客户端开放随机端口,告诉服务器该端口
服务器(20端口)主动连接客户端(随机端口)
被动模式(PASV)
服务器开放随机端欧,告诉客户端该端口
服务器(随机端口)被动等待客户端发起连接
电子邮件
电子邮件系统的组成结构
1.用户代理(UA):如QQ邮箱,提供“用户界面”,编辑,发送,接收邮件
邮件服务器:存放用户邮件,发送/接收邮件,SMTP客户端&服务器双重角色
电子邮件协议:SMTP发,POP3收
电子邮件格式与MIME
邮件格式
邮件=信封+内容(内容=首部+主体),信封常根据首部信息自动生成
首部:To,From(必填),Subject(选填)
MIME
引入原因:SMTP限制只能发送7—bit ASCII,仅支持纯英文邮件,不支持发中文、发文件
MIME扩展了邮件格式:新增几个首部字段(如MIME 版本);定义了多种邮件主体的格式(如文本、图片);定义了传送编码(如Base64),能够将任何数据编码为7—bit ASCII码
SMTP与POP3
SMTP
实现发送邮件,C/S模型,基于TCP,服务器25端口
可用于
用户代理(Push推)->发送方邮件服务器
发送方邮件服务器(Push推)->接收方邮件服务器
SMTP通信三个阶段:连接建立、邮件发送、连接释放
POP3
实现读取邮件,C/S模型,基于TCP,服务器110端口’
仅可用于接收方用户代理(Pull拉)<-接收方邮件服务器
读邮件时,支持“下载并删除”、下载并保留两种功能
WWW(万维网)
World Wide Web,是一个 全球范围的、分布式、联机式 的信息存储空间,各种“资源”通过 HTTP协议传送给用户
组成
统一资源定位符(URL)
URL=<协议>://<主机>:<端口>/<路径>
指向万维网上的某个特定资源
超文本传输协议HTTP
应用层,基于TCP。HTTP协议定义了“HTTP请求报文”、“HTTP响应报文”两种数据结构
超文本标记语言(HTML)
一种文档结构的标记语言,使用一些约定的标记对页面上的各种信息(包括文字、图像、视频等),格式进行描述
HTTP
访问一个网页的过程
一个网页=1个html文件+n个网页元素(本质是文件)
每个文件的获取都需要经过一组HTTP请求&响应
注意:只有先获得html文件,才能知道其他n个被引用的网页元素的URL
过程
1.用户输入网址(域名); 2.浏览器通过DNS服务器查询域名对应的IP地址(浏览器会将查询结果“域名->”缓存在本地); 3.浏览器与<Web服务器IP地址:80端口>建立TCP连接; 4.浏览器在握手3中携带HTTP请求报文(指明要访问那个html网页); 5.服务器返回HTTP响应报文(携带html文件); 6.如果html文件引用了其他n个元素,还需要n组HTTP请求&响应。
HTTP协议的工作方式
非持续连接
特点:每建立一次TCP连接,仅完成一组HTTP请求&响应
可以通过“并行TCP连接”加快获取n个网页元素的速度
持续连接
特点:每建立一次TCP连接,可以完成多组HTTP请求&响应
分类
非流水线
只有上一次HTTP请求收到响应后,才能发出下一次HTTP请求
流水线
可以连续发出多个HTTP请求
HTTP报文结构
请求报文
方法 URL 版本 CRLF 首部字段名 : 值 CRLF 首部字段名 : 值 CRLF CRLF 实体主体(通常不用)
响应报文
版本 状态码 短语 CRLF 状态行 首部字段名 : 值 CRLF 首部字段名 : 值 CRLF CRLF 实体主体(有些响应报文不用)
常用“方法”
GET
获取指定位置资源
HEAD
残缺版GET(在响应报文中只返回状态行、首部行)
POST
向服务器发送待处理数据(如账号、密码)
Cookie的作用
客户端刚开始访问Web服务器时(如登录个人账号),服务器为该客户端生成一个"Cookie识别码",并通过HTTP响应报文返回给客户端
客户端如果已获得Cookie,就在每次发出HTTP请求事携带Cookie,亮明身份
Cookie识别码相当于给网站的访客制作一张“临时身份证”(一段时间内有效),Cookie识别码需要分别缓存在Web服务器、客户端。