计算机网络
第一章 计算机网络概述
1.1 计算机网络作用
21世纪计算机网络特征:数字化、信息化(用手机打电话、传输数据)、网络化
网络又分为(三网):电信网络、有线电视网络、计算机网络
- 电信网络:向用户提供电话、电报以及传真等服务
- 有线电视网络:向用户传送各种电视节目
- 计算机网络:使用户可以在计算机之间传送数据文件
计算机网络又分为:因特网、其他网络
计算机网络重要功能(特点):连通性、共享
连通性:互联网上网用户之间,不管相距多远,都可以传送数据
共享:资源共享(信息、软件、硬件共享),用户可以方便的获取资源。
1.2 互联网概述
1.2.1 网络的网络
网络、互连网、互联网(因特网)
计算机网路:计算机通过集线器、交换器连接组建一个局域网。有若干节点和连接这些节点的链路组成
节点可以是计算机、集线器、路由器、交换机
通过路由器把网络和网络之间相连叫互连网(internet)
互联网(Internet 因特网):全球最大的一个互连网
网络把许多计算机相连,而互连网则把许多网络通过一些路由器连接在一起与许多网络相连的计算机称为主机
1.2.2 互联网发展阶段
-
ARPANET向互联网发展:起源于第一个分组交换网ARPANET,TCP/IP协议成为ARPANET标准协议
-
三级结构的互联网 分为:主干网(速率45Mb)、地区网、校园网(或企业网)
-
全球范围内的多层次ISP结构的互联网,
ISP(互联网服务提供商):从互联网管理机构申请IP地址,向用户分发。
1.2.3 互联网标准化
互联网研究部IRTF:由互联网研究指导小组管理,(长期)研究协议、应用、结构体系等
互联网工程部IFTF:由互联网工程指导小组管理,(短期和中期需考虑的)研究工程问题,如协议的开发、标准化
1.3 互联网的组成
根据工作方式分:边缘部分、核心部分
边缘部分:由所有连接在互联网上的主机组成,这部分由用户直接使用,用来进行通信和资源共享
核心部分:由大量网络和路由器组成,这部分为边缘部分提供服务(连通性和交换)
1.3.1 互联网的边缘部分
边缘部分就是所有接入互联网的主机,这些主机又称端系统
计算机之间通信:我们一般是指主机某个进程之间通信
在网络边缘部分的通信方式可分为:客户-服务器方式(C/S)、对等通信(P2P)
客户-服务器通信:这里客户、服务器是指通信中涉及的两个应用进程;客户是服务请求方、服务器是服务提供方。客户与服务器通信关系建立后,通信是双向的,都可发送和接受数据
客户程序:被用户调用后,在通信时主动向服务器发起通信,需要知道服务器程序地址。
服务器程序:可同时处理多个客户请求,被动等待接受客户的请求,所以不需要知道客户程序地址
对等方式(P2P):本质上是客户服务器方式,只是对等连接中每一台主机既是客户又是服务器,支持大量用户同时工作
1.3.2 互联网的核心部分
网络核心部分起到特殊作用的是路由器,路由器实现分组交换的关键构件,其任务是转发收到的分组
-
电路交换:必须经过“建立连接(一条专用的物理通路)-通话-释放连接”这三个步骤的交换方式。例子:打电话,
特点:在通话过程中,通话两个用户始终占据端到端的通信资源,线路的传输速率往往比较低
适合场景:数据量很大的实时性传输,核心路由器之间可以使用电路交换
-
报文交换:一整个报文直接发送,不分组,报文交换时延长
-
分组交换:采用存储转发技术,将一个报文划分为几个分组。
一整个数据段称为报文,将划分为几个一小段的报文添加上首部(包头,包含目的地址、源地址)就构成了分组,分组是互联网中传送的数据单元,正是由于首部中包含目的地址、源地址等每一个分组才能在互联网上独立选择传输路径。
互联网核心部分的路由器之间一般用高速链路连接,在网路边缘部分的主机接入核心部分一般采用较低速链路连接
若连续传送大量的数据,且传送时间远大于连接建立时间,则电路交换的传输速率较快
报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道的利用率
分组交换比报文交换时延小,更灵活
1.4 计算机网络在我国发展
1.5 计算机网络类别
| 作用范围 | 使用者 | 拓扑结构 | 交换方式 | 工作方式 |
|---|---|---|---|---|
| 广域网(WAN) | 公用网 | 总线型 | 电路交换 | 资源子网 |
| 城域网(MAN) | 专用网 | 环型 | 报文交换 | 通信子网 |
| 局域网(LAN) | 星型 | 分组交换 | 接入网 | |
| 个人区域网(PAN) | 树形 | |||
| 网状 |
1.6 计算机网络性能
1.6.1 计算机网络的性能指标
-
速率:数据的传送速率,也称数据率或比特率,单位bit/s
-
带宽:指数字信道所能传送的最高数据率,单位bit/s
-
吞吐量:在单位时间内通过某个网络的实际数据量
-
时延:数据从一端到另一端所需时间
-
发送时延:主机或路由器发送数据帧所需时间(发送第一个帧到最后一个帧所需时间)
发送时延=数据块长度(bit)/发送速率(bit/s)
-
传播时延:电磁波在信道上传播一定距离所需的时间
传播延迟=信道长度(m)/信号在信道上传输速率(m/s)
电磁波在自由空间传输速率是光速:3.0*10^5km/s
电磁波在铜线电缆中传输速率:2.3*10^5km/s
电磁波在光纤中传播速率:2.0*10^5km/s
传播时延大小与信道长度有关
- 处理时延:分析、检查产生的时延
- 排队时延:排队时延长短取决于网络当时的通信量
我们所说的提高速率实际上是减少发送时延
-
-
时延带宽积:数据链路上能够承载的数据量
时延带宽积=传播时延*带宽
-
往返时间RTT:双方交互需要的时间,有效数据率=数据长度/(发送时间+往返时间)
-
利用率:
信道利用率=有数据通过的时间/(有+无)数据通过的时间
网络利用率:全网络信道利用率的加权平均值
信道利用率或者网络利用率过高会产生很大的时延
1.6.2 计算机网络的非性能指标
费用、质量、标准化、可扩展性、可升级性等
1.7 计算机网络体系结构
1.7.1 形成
APEANET提出分层概念
OSI参考模型(开放系统互连基本参考模型):这是法律上的国际标准,该模型有七层
应用层:能够产生网络流量、能够和用户交互的应用程序
表示层:加密、压缩数据 开发人员需要考虑
会话层:服务和客户端建立会话,查木马:netstat -nb
传输层:进行可靠传输(建立会话)、不可靠传输(不建立会话)以及流量控制
网络层:IP地址编址,选择最佳路径
数据链路层:主要规定数据如何封装、添加MAC地址
物理层:规定标准—电压、接口标准
TCP/IP模型:事实上的国际标准,该模型四层
1.7.2 协议与划分层次
为进行网络中的数据交换而建立的规则、标准或约定称为网络协议
网络协议由语法、语义、同步组成
语法:数据和控制信息的结构和格式
语义:需要发出何种控制信息,完成何种动作以及做出何种响应
同步:事件实现顺序的详细说明
网络协议是计算机网络不可缺少的组成部分
分层的优点:
- 各层之间独立
- 灵活性好
- 结构上可分割
- 易于实现、维护
- 促进标准化工作
- 一般有的功能:差错控制、流量控制、分段和重装、分用和复用、连接的建立和释放
计算机体系结构:计算机网络各层及其协议的集合
1.7.3 具有五层协议的体系结构
应用层:通过应用进程之间的交互完成特定网络应用,数据单元是报文
运输层:想两台主机进程之间通信提供通用的数据传输服务,端到端 主要有两个协议,TCP (PDU是报文段),UDP(PDU是用户数据报)
网络层:为分组交换网上的不同主机提供通信服务,点对点通信 PDU是IP数据报(IP分组)
数据链路层:将数据分装成帧,进行简单的差错检测PDU是数据帧
物理层:将数据装为比特流
1.7.4 实体、协议、服务和服务访问点
实体:发送或接收信息的硬件或软件进程
协议:控制两个对等实体通信的规则的集合
服务:下层为上层提供服务,上层需要使用下层服务实现本层功能
服务访问点:同一系统中,相邻两层实体间交换信息的地方
所以说:协议是水平的,服务是垂直的
1.7.5 TCP/IP体系结构
四层结构:网络接口层
第二章 物理层
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体
基本特性:机械特性、电气特性、功能特性、过程特性
数据在计算机内部多采用并行传输,但数据在通信线路上的传输方式一般采用串行传输
2.2 数据通信的基础知识
2.2.1 数据通信模型
数据通信系统:源系统、传输系统、目的系统

通信的目的:传送消息
数据:运送消息的实体
信号:数据电气或电磁的表现
模拟信号:消息的参数是连续的
数字信号:消息的参数是离散的
码元:在使用时间域的波形表示数字信息时,则代表不同的离散数值的基本波形
一个码元可以携带nbit的信息量
2.2.2 有关信道的几个基本概念
信道:一般表示向一个方向传送信息的媒体
从通信的双方信息交互的方式来看:
- 单工通信(单向通信):只有一个方向的通信而没有反向通信,例如:有线广播
- 半双工(双向交替通信):通信双方都可以发送,但双方不能同时接收或发送信息,例如:对讲机
- 全双工(双向同时通信):通信双方都可以发送、接收信息,效率最高,例如:打电话
基带信号:来自信源的信号
基带调制:对基带信号的波形进行变换
带通信号:经过载波调制的信号
带通调制:经过载波调制
常用的调制方法:
调幅:载波的振幅随基带数字信号而变化
调频:载波的频率随基带数字信息而变化
调相:载波的初始相位随基带数字信号而变化
常用的编码方式:
不归零制、归零制、曼彻斯特和差分曼彻斯特(具有同步功能)
2.2.3 信道的极限容量
码元传输速率越高、信号传输距离越远、噪声干扰越大、传输媒体质量越差,在接收端的波形失真就越严重
为解决码间串扰,就提出了奈氏准则
-
奈氏准则:(无干扰)
理想低通信道的最高码元传输速率=2W(码元/秒)—W代表理想低通信道带宽,单位HZ
-
信噪比
香农公式:信道的极限信息传输速率C=Wlog以2为底(1+S/N)b/s
W:为信道的带宽(Hz)
S:信道内所传信号的平均功率
N:信道内部的高斯噪声功率
提高信息传输速率:
信道的带宽或者信道的信噪比越大,信息的极限传输速率就越大
让每个码元携带更多的比特信息量
2.3 物理层下面的传输媒体
传输媒体可分为导引型传输媒体和非导引型传输媒体
导引型传输媒体:电磁波沿着固体媒体传播
-
双绞线:传输距离在30~100m,绞合度越高可用的数据传输率越高
屏蔽双绞线STP:价格便宜
无屏蔽双绞线UTP:
衰减都随着频率的升高而增大,使用更粗的双绞线可以减小衰减
-
同轴电缆:具有良好的抗干扰性,被广泛用于传输较高速率的数据
50欧同轴电缆:用于数字传输,多用于基带传输
75欧同轴电缆:用于模拟传输,即宽带同轴电缆
-
光纤:传输损耗小,终极距离长、抗雷电和电磁干扰性能好、无串音干扰,保密性好、体积小重量轻
多模光纤:存在多条不同角度入射的光线在一条光纤中传输
单模光纤:光纤像一根波导,使光纤一直向前传播,而不产生多次反射,损耗小
非导引型传输媒体:
短波通信主要是靠在电离层的反射,通信质量较差
微波:频率范围为300MHZ~300GHZ,在空间中主要是直线传播
信噪比越大,误码率越低
集线器:在网络中只起到信号放大和重发作用,起作用是扩大网络传输范围,最大传输距离100米,集线器是一个大的冲突域(半双工通信)
假设集线器有20MB带宽,5台主机,那么每台主机能分到4MB带宽
2.4 信道复用技术
信道复用就是共享信道,复用后需要分用
2.4.1 频分复用、时分复用和统计时分复用
复用器和分用器是成对出现的
- 频分复用:各路信号在同样的时间占用不同的带宽(频率带宽)资源=》调制解调分离波形,解出对应的波形的数据
- 时分复用:所有用户在不同时间占用同样的频带宽度
- 统计时分复用:集中器尝使用统计时分复用,通过集中器给每个帧在一个标记
2.4.2 波分复用
WDM就是光的频分复用
2.4.3 码分复用CDM
码分多址CDMA:码分复用信道被不同地址的多个用户所共享
由于各用户使用经过特殊挑选的不同码型,因此每一个用户在同样的时间使用同样的频带通信不会造成干扰,有很强的抗干扰能力。
码片:把一个比特的时间划分为m个短的间隔
2.5 数字传输系统
最初使用的传输标准是脉冲编码调制PCM。现在光纤是长途干线最主要的传输媒体,现在高速的数字传输系统使用同步光纤网SONET(美国标准)或同步数字系列SDH(国际标准)。
SDH/SONET定义了标准光信号,规定了波长为1310nm和1550nm的激光源
2.6 宽带接入技术
2.6.1 ADSL技术
非对称数字用户线ADSL技术:用数字技术对现有模拟电话线进行改造
早期:把0~4kHZ地段频谱留给传统电话使用,高频频谱留给上网用户使用
我国采用离散多音调DMT(频分复用)
不能保证固定的数据率,不适用于企业
2.6.2 光纤同轴混合网(HFC网)
把原有线电视中的同轴电缆主干部分换成光纤,光纤从头端连接到光纤节点
现在的HFC网具有双向传输功能,而且扩展了传输频带
2.6.3 FTTX技术
光纤到户FTTH,光纤到大楼FTTB
为了有效利用光线资源,在光纤干线和广大用户之间,还需铺设转换装置光配线网ODN
现在多使用无源光网络PON(以太网无源光网络、吉比特无源光网络)
第三章 数据链路层
数据链路层使用的信道主要是:点对点信道、广播信道
点对点信道:一对一的点对点通信,PPP协议
广播信道:一对多的广播通信方式,使用CSMA/CD协议
3.1 数据链路层的几个共同的问题
链路:从一个节点到相邻节点的一段物理线路
数据链路:除了物理线路外,还必须有通信协议来控制数据传输
点对点信道的数据链路层的协议数据单元是帧
3.1.2 三个基本问题
封装成帧:在一段数据的前后分别添加首部很尾部,首部尾部还有帧定界的作用,帧的数据部分最大(MTU)不超过1500个字节。帧开始符:SOH 帧结束符:EOT
透明传输:解决定界符误读问题⇒在传输的时候使用字节填充或字符填充在EOT或SOH前插入转义字符ESC,送往网络层时删除转义字符
差错检测:传输过程中可能会产生差错。传输错误的比特占所有传输比特总数的比率称为误码率。
循环冗余检验CRC就是被广泛使用的差错检测措施
使用异或运算,FCS就是所求的冗余码

从多项式获取除数
例:原始报文是11001010101, P(X)=x^4 + x^3 + x + 1,除数P=11011,给多项式后面填4个0(比除数位数少一位),然后进行异或运算,得到的余数就是冗余码,要补齐四位
仅用CRC差错检测技术只能做到无差错接受,数据链路层协议都是不可靠传输
3.2 点对点协议PPP
出现错误就丢弃
PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议
适用场景:拨号上网(有实名验证的功能)、路由器点对点通信、支持身份认证、常见的认证的方式包括PAP、CHAP
PPP协议应满足的要求:简单、封装成帧、透明性、多种网络层协议、多种类型链路(光纤、同轴电缆)、差错检测等
PPP协议组成部分:
一个将IP数据报封装到串行链路的方法
一个用来建立、配置的和测试数据链路连接的链路控制协议LCP
一套网络控制协议NCP
PPP协议的帧格式:
0x7E代表开始和结束,FF是目的地址。
信息部分不超过1500个字节

字节填充:使用异步传输,把转义字符定义为0x7D
零比特填充方法:PPP协议用在SONET/SDH链路时,使用同步传输,这种情况下采用零比特填充
出现连续的5个1,填入一个0;接受的时候发现连续的5个1后,删除后面的0
PPP协议工作状态:在点对点链路上传输多协议数据
3.3 使用广播信道的数据链路层
3.3.1 局域网的数据链路层
局域网:网络为一个单位所拥有,地理范围和站点数据有限
具有广播功能、提高了系统的可靠性、可用性、生存性;可使用多种传输媒体。工作跨越了数据链路层、网络层
现在有总线网、环形网、星形网,目前使用的大多是星形网
共享通信媒体技术:
静态划分信道:频分复用、时分复用、波分复用
动态媒体接入控制(多点接入):随机接入(主要被以太网采用)、受控接入
以太网的主要标准:IEE802委员会把数据链路层拆成两个字层:逻辑链路控制LLC,媒体接入控制MAC
网卡(适配器):进行数据串行传输和并行传输的转换、对数据进行缓存、实现以太网协议,有过滤功能
3.3.2 CSMA/CD协议(总线型)
载波监听多点接入/碰撞检测,以太网使用CSMA/CD协议,不可能同时收发数据,是半双工通信
多点接入:表示许多计算机以多点接入的方式连接在总线上
载波监听:边发送边监听⇒发送前、中每个站都要不停的检测信道。
碰撞检测:发送前监听信道,避免冲突,发送时监听信道,如果发现有其他站在发送,就立即中断本站的发送。
电磁波在1km电缆(光纤)的传播时延约为5us
单程端对端传播时延记为t
在以太网端到端往返时间2t称为争用期,具体争用期时间是51.2us,在争用期内没用发生冲突则这次发送不会发生冲突.
对于10Mb/S在争用期可发送512b(64字节)所以以太网的帧最短有效帧长64字节
二进制指数类型退避算法:发送碰撞的站停止发送数据后,要推迟一个随机时间再发送数据
确定基本退避时间,基本上是争用期(2t)
重传16次仍不成功就丢弃该帧,并向高层报告
3.3.3 使用集线器的星形拓扑
集线器工作在物理层,集线器连的一个网是一个冲突域
以太网集线器是共享媒体,所有站点共享带宽
交换机独立端口,每个端口带宽与总带宽一致
10Base-T:代表10Mb/s数据率 双绞线
3.3.4 信道利用率
帧长为L(b)数据发送速率为C(b/s),则帧发送的时间为T=L/C(s)
要提高信道利用率就必须减小t与T之比,这就有了a=t/T,表示以太网单程端到端时延与帧发送时间之比
信道利用率最大值:
对以太网的要求:帧不能太短,以太网连线不能太长
最大值:发送一帧占用线路的时间为T+t,而帧本身发送时间为T,所以信道利用率最大值Smax=T/(T+t)=1/(1+a)
3.3.5 以太网的MAC层
-
MAC层的硬件地址
硬件地址:物理地址或MAC地址
MAC地址的前24位叫做组织唯一标识符OUI
适配器有过滤功能,发往本站的帧有:单播帧、多播帧、广播帧
-
MAC帧格式
以太网帧格式有两种格式:DIX EthernetV2标准、IEEE 802.3标准
目的地址和源地址是MAC地址,各占6字节即48b,类型(2字节)指明数据包封装的数据的协议类型。以太网数据帧最小64b
![image.png]()
无效的MAC帧:帧的长度不是整数、FCS校验出错、数据字段不在461500字节之间,有效的MAC帧长度在641518字节(其中帧的首部+尾部=18字节)、对于检查出的无效帧直接丢弃,以太网不负责重传
3.4 扩展的以太网
最初人们使用网桥扩展以太网,网桥对收到的帧根据MAC帧的目的地址进行转发和过滤(有存储转发功能)
交换机实质是多端口的网桥,以太网交换机的每个端口都直接与一台主机或另一个以太网主机相连一般以全双工方式通信,具有并行性,相互通信的主机独占传输媒体,无碰撞地传输数据(每个端口和连接的主机构成了一个冲突域)
以太网交换机一般是透明的(不知道经过了几个交换机),是一种即插即用设备
自学习算法:
如果交换表中没有该MAC地址,先把源地址和端口写入交换表,再广播查找目的地址的端口,然后再写入交换表
在switch终端上ping每台主机,hub会自学习mac地址,如图2,会发现有三个F0/4口,说明hub连的是F0/4口,在该hub上连了三个主机


为了避免交换机回路问题提出了STP生成树协议(更改优先级)
虚拟局域网
使用IEEE802.1Q标准⇒在以太网的数据帧中插入4字节的VLAN标签,用来指明发送该帧的计算机属于哪个VLAN
LAN(局域网 )、VLAN(虚拟局域网)
一个以太网就是一个广播域
VLAN(虚拟局域网):把一个较大的局域网换分成小的独立的局域网,每个局域网就是一个较小的广播域。实际上就是局域网给用户提供的一种服务
常见的划分VLAN的方法:
基于交换机端口划分
基于MAC地址划分
基于子网划分
基于高层应用划分
不同的vlan使用三层交换机或者路由器
连接两个交换机端口之间的链路称为汇聚链路或者干线链路(trunk) 可用于跑多个VLAN
3.5 高速以太网
-
100BASE-T以太网
100BASE-T是在双绞线上传送100Mb/s基带信号的星形以太网,任然使用IEEE802.3的CSMA/CD协议,又称为快速以太网
可在全双工模式下工作而无冲突发生,所以不使用CSMA/CD协议,但是帧格式还是802.3标准
速率提高了10倍,帧间间隔从原来的9.6us变成了现在的0.96us
-
吉比特以太网
允许在1Gb/s下使用全双工和半双工两种方式工作
使用IEEE802.3协议规定帧格式
在半双工方式下使用CSMA/CD协议,全双工方式不使用CSMA/CD
当吉比特以太网工作在全双工方式时,不使用载波延申和分组突发
-
10吉比特以太网和更快以太网
10吉比特以太网
只工作在全双工方式下,不存在争用问题,不使用CSMA/CD
它的出现使得以太网工作范围从局域网扩大到城域网、广域网,并且实现了端到端的以太网传输
-
使用以太网进行宽带接入
以太网接入的一个重要特点:可以提供双向的宽带通信,并可以灵活带宽升级
第四章 网络层
解决主机-主机之间的通信
端系统实现可靠交付
4.1 网络层的几个重要概念
-
网络层提供的两种服务
虚电路服务:
每个分组都有一条也是唯一一条虚电路路径,如果该路径断了就传不过去,按发送顺序到达终点
是可靠服务
数据报服务 :
每个分组都有目的地址,根据路由表临时选择路径,只要能到达目的地址就可以,到达终点的顺序可能时乱序的
简单灵活、无连接的、尽最大努力交付的数据报服务,不可靠
![image.png]()
-
网络层的两个层面
4.2 网际协议IP
网络层协议:IP协议、ARP协议(地址解析协议IP→MAC)、ICMP协议(网际控制报文协议)、 IGMP协议(网际组管理协议)

-
虚拟互连设备
要实现网络互连,需要使用一些中间设备
物理层使用的中间设备:转发器(信号放大)(集线器)
数据链路层使用的中间设备:交换机、网桥
网络层使用的中间设备:路由器
网络层以上的中间设备:网关
现在所说的网关是路由器的IP地址
-
IPv4
层次化IP地址将32位的IP地址分为网络号和主机号
IP地址的分类
A类地址:1~126 /8
127.0.0.1用于本地环回测试
B类地址:128~191 /16
C类地址:192~223 /24
D类地址:组播地址/多播地址
E类地址:科研
保留的私网地址
10.0.0.0 /8
172.16.0.0~172.31.0.0/12
192.168.0.0~192.168.255.254/16
![image.png]()
-
CIDR无分类域间路由选择
CIDR把网络号改为网络前缀
网络前缀(n位)+主机号(32-n位)=IP地址
地址块:把网络前缀都相同的所有连续的IP地址组成一个CIDR地址块,如:128.14.32.0/20(主机号全为0)
特殊的地址块:
/0 0.0.0.0 默认路由
/31 255.255.255.254 用于点对点链路
/32 255.255.255.255 用于主机路由
路由聚合:可以使两个不同网段的主机通过一个路由器访问互联网,如图路由器的子网掩码255.255.254.0,这样就可以使这两台不是一个网段的主机访问互联网
减少查找路由表的时间,提高路由效率
![image.png]()
-
IP地址与MAC地址
MAC地址已固化在网卡的ROM上,48位
计算机A与B通信过程中,源IP地址和目的IP地址不变,MAC地址在变,帧中的MAC地址决定了该数据帧的下一跳给谁
![image.png]()
-
ARP地址解析协议(IP地址→MAC地址)
ARP可以限制网络广播数量
ARP广播解析MAC地址,不安全
每一台主机都设有ARP高速缓存,里面存有本局域网的各主机和路由器的IP地址到MAC地址的映射表
流程:(新主机入网)
-
ARP进程在本局域网上广播发送一个ARP请求,我是主机x.x.x.x MAC地址是xxx,我想知道IP地址xxx的MAC地址
-
本局域网上所有主机运行的ARP进程都收到此ARP请求
-
主机xxx向主机x.x.x.x发送ARP响应分组,同时在这个ARP响应分组中写入自己的MAC地址
ARP请求分组是广播,但是ARP响应分组是单播
-
主机x.x.x.x收到ARP响应分组后,就在其ARP高速缓存表中写入主机B的IP地址到MAC地址的映射
ARP对保存在高速缓存表中的每一个映射地址都设有一个生存时间(超出时间删除)
ARP用于解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射关系
IP地址使得同一个网络通信变得简单
-
-
IP数据报格式
IP数据包=首部+数据部分
首部的固定部分20字节+可变部分
版本:IP数据版的版本(IPv4或IPv6) 首部长度
区分服务:表明该数据包是否着急
总长度:首部+数据的总长度,单位为字节
标志:告诉该数据包是否分片 3b
最低位MF=1(后面还有分片) MF=0(这是最后一个片)
中间位DF=1(不能分片) DF=0(允许分片)
生存时间TTL(1字节:可防止IP数据包回路 TLL的意义是指明数据报在互联网上至多可经过的路由器数量,TTL最大数值是255,若把TTL设置为1,说明该数据包只能在本局域网内传送
windows系统TTL是128,每经过一个路由器TTL就会减一
如图:说明ping www.baidu.com 经过了76个(128-52) 路由器,windows系统TTL确实是128

首部校验和:只检验IP数据报的首部
发送端:先把首部分成许多16位的序列,其中校验和置全0,反码求和后取反得到校验和
接收端:同上,只是校验和变成了求出来的检验和,所有16位的序列相加取反,若结果为0,则保留,反之丢弃


4.3 IP转发分组的过程
-
基于终点的转发
分组在互联网中逐跳转发,分组在互联网上传送和转发是基于分组首部的目的地址,称为基于终点的转发
-
最长前缀匹配(路由聚合)
相同网段的主机/路由可互相通信,若都没有可以走默认路由(0.0.0.0/0)
网关就是默认路由
指定数据包发送路径:IP route 192.168.0.0 255.255.255.0 172.18.0.1(下一跳)
在路由表上加路由 route add 0.0.0.0 mask 0.0.0.0 10.56.76.1(下一跳地址)
-
使用二叉线索查找转发表
自顶向下最多查找32层
4.4 网际控制报文协议
为了提高IP数据报交付成功的机会,在网际层使用ICMP协议,是网络层协议
用来向主机或路由报告差错情况和有关异常情况
-
ICMP类型:ICMP差错报告报文、ICMP询问报文
ICMP差错报告报文:终点不可达、时间超过、参数问题、改变路由(重定向)
ICMP询问报文:回送请求或回送回答、时间戳请求或时间戳回答
-
ICMP应用举例
重要应用:分组网间探测PING,ping使用了ICMP回送请求和回送回答报文,是应用层直接使用网络层ICMP的例子,他没有通过运输层的TCP或UDP协议
另一个应用:tracert 从源主机向目的主机发送一连串IP数据报,这个数据包封装的是无法交付的UDP用户数据报,用来跟踪该数据报经过每层的路由,所花费的时间,第一次TTL设置为1,到达第一层,TTL-1=0,路由器将其丢弃,向源主机发送ICMP时间超过差错报告报文
4.5 IPv6
IPv4只有32位,目前资源不足,为了解决IPv4资源耗尽的根本措施是采用具有更大空间的IPv6(128位)
IPv6仍然支持无连接传送,但将协议数据单元PDU称为分组
IPv6的变化
更大的地址空间:32位→128位
扩展的地址层次结构:可划分为更多的层次,对寻址和路由层次的设计更具有灵活性
灵活的首部格式:提高路由器处理效率
允许协议继续扩充:
支持即插即用(即自动配置):不需要使用DHCP
-
IPv6数据报首部
首部由基本首部和有效载荷组成,有效载荷允许有多个或零个扩展首部
IPv6取消了首部长度字段,因为首部长度固定40字节
IPv6取消了服务类型字段,因为IPv6首部中的通信量类和流标号实现了区分服务字段的功能
通信量类:区分不同数据报的类别和优先级,可帮助路由器进行拥塞控制。
IP v6把生存时间TTL字段改为跳数限制字段
IP v6取消首部校验和字段,加快路由器处理数据报的速度
IP v6提出流的概念,流就是因特网上从特定源点到特定终点的一系列IP v6 数据报,而流所经过的路径上的所有路由器都保证指明服务质量
所有属于同一个流的IP v6数据报都具有同样的流标号,也就是说流标号用于资源分配
源地址和目的地址字段都为128位
-
IP v6地址
根据IP v6数据报的目的地址可以划分为:单播(点对点)、多播(一对多)、任播(交给一组计算机中,距离最近的一个主机)
节点:IP v6把实现IP v6的主机和路由器均成为节点
IP v6中,每个地址占128b,地址空间大于3.4*10^38
IP v6使用冒号十六进制记法,将128b的IP v6地址按每16位划分,者16位每四位对应一个十六进制
零压缩法(只能用一次)左侧零省略和零压缩可以同时使用
![image.png]()
-
IPv6地址分类
未指明地址:全0地址 ::
环回地址:::1
多播地址:FF00::/8
本地站点单播地址:未连接到互联网时不允许和互联网通
-
IP v4向IP v6过渡
使用双协议栈
一部分主机装有IP v4、IP v6两种协议栈,双协议栈的主机记为IP v4/IP v6
双协议栈主机既可以和IP v4 系统通信,也可以和IP v6系统通信
使用隧道技术 可以屏蔽内网细节
在IP v6数据报要进入IP v4网络时,把IP v6数据报封装成IP v4数据报,简而言之就是披着4外衣的6
4.6 互联网的路由选择协议
路由选择协议核心是路由算法
分层次路由选择协议:内部网关协议IGP、外部网关协议EGP
自治系统之间⇒域间路由选择协议:BGP(基于路径向量)
自治系统内部⇒域内路由选择协议:RIP(基于距离向量)、OSPF(基于链路状态)
4.6.1 内部网关协议 RIP
RIP 基于距离向量算法 (最短距离) 周期性广播 每隔30s更新一次,允许一条路径最多15跳(15个网络),大于等于16跳不可达,仅和相邻的路由器交换信息
RIP报文最多可包括25个路由,RIP报文作为UDP运输层用户数据部分被传送,使用UDP的520端口
RIP2可以支持无分类域间路由选择CIDR,RIP提供鉴别功能
RIP特点:好消息传得快,坏消息传的慢
RIP优点:实现简单、开销小
路由表更新流程
- 将接受的路由表距离(跳数)全部+1,下一跳地址改为发送该路由的邻居路由器接口 IP
- 新路由表中有而旧路由表中没有的,要把新路由填加到旧路由表里面
- 如果目的网络和下一跳地址都相同,新的数据覆盖旧的路由
- 如果目的地址相同,不同下一跳,跳数相同,保留原路由
- 如果目的网络相同,下一跳地址不相同,选择路径最短的
4.6.2 内部网关协议 OSPF
使用IP数据报进行数据传送
开放最短路径优先OSPF协议,是动态路由协议
OSPF使用链路状态协议,基于链路状态更新路由,这里链路状态指的是度量值(带宽、费用、距离(管理距离越小越优先)、时延),支持多区域 、触发式更新,每隔一段时间更新(如30分钟),建立有链路状态数据库,有三个表(邻居表、链路状态表、计算路由表)
优先级:静态路由→OSPF→RIP
OSPF使用层次结构的区域划分使每一个区域能够和本区域外的区域通信
OSPF特点:
- 向本自治系统中所有路由器发送信息⇒洪泛法
- 发送的信息就是本路由器相邻的所有路由器的链路状态
- 当链路状态发生变化或者每隔一段时间(如30min),路由器向所有路由器用可靠的洪泛法发送链路状态更新分组
- OSPF直接用IP数据报传送路由表
- 支持多路径上负载均衡、支持可变长度的子网划分和CIDR
- 所有在OSPF路由器之间交换的分组都具有鉴别功能
- 链路状态序号增长的速率不得超过每5s一次
OSPF的五种分组类型
-
问候(Hello)分组:用来发现和维护邻站的可达性,在邻居路由器之间交换Hello信息报文
ospf规定每两个相邻路由器每隔10s要交换一次问候(Hello)分组
-
数据库描述分组:向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
-
链路状态请求分组:向对方请求发送某些链路状态的详细信息
-
链路状态更新分组:使用洪泛法更新全网链路状态
-
链路状态确认分组:对链路更新分组的确认
4.6.3 外部网关协议 BGP
使用TCP数据报进行数据传送
外部网关协议BGP是不同的自治系统的路由器之间交换路由信息的协议
BGP是基于路径向量的路由选择协议,力求选择出一条能够到达目的网段且比较好的路由
如图,BGP协议会在每个网段内选出一个发言人(边界路由),用来传送数据,该网段是一个自治系统AS,该AS中的路由器叫做内部路由器,所以可画成图中下面那样

在AS内部,两个路由器之间还需要建立iBGP(i代表内部),iBGP使用TCP连接传送BGP报文
BGP规定:在一个AS内部所有的iBGP都必须是连通的
eBGP是两个不同AS的两个对等端之间的BGP连接
iBGP是同一个AS的两个对等端之间的BGP连接
每一个AS都必须运行本AS选择的内部网关协议IGP,如OSPF或RIP

BGP的路由选择:
- 本地偏好值最高的路由作为首要选择
- 选择具有AS(自治系统)跳数最少的路由
- 使用热土豆路由选择算法(分组在AS内转发次数最少的)
- 选择BGP标识符最小的路由
路由器的构成
路由器的作用是转发分组、路由选择
整个路由器结构可分为:路由选择部分、分组转发部分
路由选择部分:也叫控制部分或控制层面
分组转发部分:即数据层面(交换结构、一组输入端口、一组输出端口构成)
交换结构:根据转发表对分组进行处理。常用的三种交换方法:通过存储器、通过总线、通过互连网络
4.7 IP多播
多播(组播)实现一对多通信,多播地址只能用于目的地址,不能用于源地址,对多播数据报不产icmp差错报文
多播地址就是IP地址中的D类地址,范围为224.0.0.0~239.255.255.255
IP多播可以分为在本局域网上进行硬件多播、在因特网上进行多播
-
只在本局域网上进行硬件多播
把IP v4多播地址映射成多播MAC地址,将mac帧首部中的目的MAC地址字段的值设置为多播MAC地址
以太网多播地址:01-00-5E-00-00-00到01-00-5E-7F-FF-FF
如图:先检查MAC地址对不对,不对直接丢弃,反之再检查IP地址

-
多播所需的两钟协议
在因特网上进行IP多播,就必须考虑IP多播数据报经过多个多播路由器进行转发的问题
仅使用IGMP协议是无法完成多播任务的,连接在局域网上的多播路由还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小的代价传送给所有组成员
网际组管理协议IGMP
让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出某个多播组
IGMP仅在本网络有效,使用IGMP并不知道多播组所包含的成员数量,也不知道多播组的成员都在哪些网络中。
IGMP使用IP数据报传递其报文
工作流程:当某台主机加入到新的多播组,该主机想多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员,本地多播路由器收到IGMP报文后,利用多播路由选择协议把组成员关系转发给互联网上其他多播路由器,组成员关系是动态的,本地路由器要周期性探询本地局域网上的主机
IGMP一些措施:为了避免多播控制信息给网络增加大量的开销
在主机和多播路由器之间所有的通信都是用IP多播,只要有可能,携带IGMP报文的数据报都用硬件多播来传送,因此在支持硬件多播的网络上,没有参加IP多播的主机不会受到IGMP报文
多播路由选择协议
主要任务:在多播路由器之间为每个多播组建立一个多播转发树
多播转发树连接多播源和所有拥有该多播组成员的路由器
转发多播数据报的三种方法:
洪泛与剪除:适合较小的多播组,为了避免兜圈子,采用反向路径广播(检查是否经源点的最短路径,相同选择IP地址小的)
如果在多播转发树上的某个路由器发现它的下游树枝已没有该多播组成员,就把他和他的下游树枝一起剪除
隧道技术
基于核心的发现技术
IP数据报只要沿着多播转发树进行洪泛
![image.png]()
4.8 虚拟专用网VPN和网络地址转换NAT
-
虚拟专用网VPN⇒实现内部通信 在通信的两端之间建立密文通信信道
本地地址:仅在本机构有效的IP地址
全球地址:全球唯一的IP地址
在互联网中的所有路由器,对目的地址是专用地址的数据报一律不转发
专用地址(RFC规定):也可叫可重用地址
10.0.0.0/8
172.116.0.0/12
192.168.0.0/16
内联网和外联网都采用互联网技术,基于TCP/IP协议
-
网络地址转换NAT⇒实现本地地址转为全球IP地址,节约IP地址资源
专用网内部的主机不能直接充当服务器
使用端口号的NAT也叫做网络地址与端口号转换NAPT
NAPT把源IP地址和TCP端口号都进行转换
因为在私有网络中存在很多IP地址一样的主机,但是端口号不同,连接互联网时NAPT将源IP地址和端口号都转换,回来的时候才能找到对应主机
主机绑定IP地址,主机上的进程绑定端口号
4.9 多协议标签交换MPLS
多协议标签交换MPLS是IP增强技术
MPLS特点:
支持面向连接的服务质量
支持流量工程,均衡网络负载
支持虚拟专用网VPN
流程:
MPLS在MPLS域的入口节点处,给每一个IP数据报打上固定长度标签,然后对打上标签的IP数据报用硬件转发(即目的IP地址不变,MAC地址变),因而转发速率大大加快
MPLS必须依赖IGP协议,如OSPF、RIP
4.10 软件定义网络SDN
基于SDN的专用广域网可以大大提高网络利用率
SDN核心思想:把网络控制层面和数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备
OpenFlow协议可以看成SDN体系结构中控制层面域数据层面之间的通信接口
软件定义网络SDN要点:
- 基于流的转发
- 数据层面与控制层面分离
- 控制层面通过软件实现,并且是逻辑上的集中控制
- 可编程的网络
SDN控制器的三个层次:
- 通信层,大多采用OpenFlow协议,与数据层面的接口叫做南向接口
- 状态管理层
- 到网络控制应用层的接口(北向接口)
OpenFlow的技术规范由开放网络基金会ONF制定
第五章 运输层
端对端通信
有两个协议TCP协议和UDP协议
TCP 分段 编号 流量控制 建立会话(建立连接) netstat -n
UDP 一个数据包完成数据通信 不建立会话
5.1 运输层协议概述
-
进程之间的通信
运输层向它上面的应用层提供通信服务
通信两端是两个主机的应用进程,也就是说端对端的通信是应用进程之间的通信
运输层有一个很重要的功能——复用、分用
网络层为主机之间的通信提供服务,运输层在网络层的基础上,为应用进程之间的通信提供服务
运输层还要对收到的报文进行差错检测,因为在网络层IP数据报中校验和只检验首部是否出现差错,而不检查数据部分
运输层向高层用户屏蔽了下面网络的核心细节,它使应用进程看见的就好像在两个运输层实体之间有一条端到端的逻辑通信信道
-
运输层两个协议
TCP:传输控制协议 运输协议数据单元TPDU是TCP报文段 不提供广播或多播服务
应用 应用层协议 运输层协议 电子邮件 SMTP TCP 远程终端接入 TALNET TCP 万维网 HTTP TCP 文件传送 FTP TCP UDP:用户数据报协议 运输协议数据单元TPDU是UDP用户数据报
应用 应用层协议 运输层协议 多播 IGMP UDP 域名转换 DNS UDP 网络管理 SNMP UDP IP地址配置 DHCP UDP 路由选择协议 RIP UDP -
运输层端口
软件端口:在协议栈层间的抽象的协议端口
软件端口是应用层的各种协议进程与运输实体进行层间交互的地点
在TCP UDP首部格式中,都有源端口和目的端口
TCP/IP运输层用一个16位的端口号来标志一个端口,也就说最多允许65535个不同的端口
运输层端口可分为:
-
服务器使用的端口
熟知端口号或全球通用端口:1~1023
登记端口:1024~49151
-
客户端使用的端口:49152~65535
运输层与应用层的之间的关系
应用程序 运输层协议 端口号 HTTP TCP 80 HTTPS TCP 443 FTP TCP 21 SMTP TCP 25 POP3 TCP 110 TELNET TCP 23 DNS UDP 53 SNMP UDP 161 SNMP(trap) UDP 162 TFTP UDP 69 DHCP UDP 67(服务) 68(客户) IGMP UDP 应用层协议和服务之间的关系:服务(对外服务)运行后在TCP和UDP的某个端口侦听客户端请求
-
5.2 用户数据报协议UDP
用户数据报协议UDP一般用于流媒体
用户数据报协议UDP只在IP的数据报服务之上增加了一点功能:复用、分用以及差错检测功能
UDP的特点:
- UDP面向无连接,减少开销和发送数据时延
- UDP尽最大努力交付,不保证可靠交付
- UDP是面向报文的
- UDP没有拥塞控制
- UDP支持一对一、一对多、多对一、多对多的交互通信
- UDP的首部开销小,只有八字节
如图所示:应用进程把用户数据通过各自端口传送到运输层后,共用一个网络层协议,把收到的UDP数据报组装成不同的IP数据报,发送给互联网,这就是UDP的复用
接收方的网络层收到IP数据报后,提取数据部分,再根据目的端口分别传送到相应的端口,这就是分用功能

UDP的首部格式
UDP首部只有八字节(源端口+目的端口+长度+校验和)
UDP在计算校验和时,要在UDP用户数据报之前增加12个字节的伪首部,构成了临时用户数据报参与计算校验和,也就是说伪首部和数据部分都参与UDP的校验和计算,而IP数据报首部校验和只校验首部

5.3 传输控制协议TCP
TCP可靠传输、流量控制、拥塞控制
TCP协议的主要特点
-
TCP是面向连接的运输层协议
-
每一条TCP连接只能有两个端点,每一条TCP连接只能点对点通信
-
TCP提供可靠交付
-
TCP提供全双工通信,就像打电话一样
-
TCP面向字节流
TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小关系,但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样
TCP把连接作为最基本的抽象
TCP连接的端点是套接字,每一条TCP连接唯一地被通信两端地两个端点(套接字)所确定
套接字socket=(IP地址:端口号)
5.4 可靠传输的工作原理
由于TCP下面地网络所提供的是不可靠传输,所以传输层要提供可靠传输——停止等待协议
5.4.1 停止等待协议
全双工通信
停止等待协议包含停止等待和超时重传,这里把传送的数据单称为分组
-
无差错情况下
A向B发送分组M1,发完暂停发送,等待B地确认,收到B地确认后再发送分组M2
-
出现差错
A向B发送分组M1,B在接收时检测到M1有差错,丢弃M1,A等待时间超过RTT(往返时间)就重传分组M1
注意
A在发送完一个分组后,必须暂时保留已发送的分组副本(以防重传)
分组和确认分组都应该编号
实现超时重传是在每发送完一个分组时就设置一个超时计时器,超时计时器设置的重传时间应该比数据在分组传输的平均往返时间要长一点
![image.png]()
-
确认丢失和确认迟到
- A向B发送分组,B收到了,并向A发送确认分组,但是发送过程中,确认丢失,A没收到确认,则超时重传M1,B收到M1,这时B收到了两个M1,丢弃重复的分组M1,再向A发送确认分组
- A向B发送分组M1,B收到了,并向A发送确认M1,但是确认迟到了,A迟迟没收到确认M1,触发超时重传,A重新向B发送M1,B收到后丢弃重复的M1,重传确认M1,这是之前迟到的确认M1也受到了,A收下后丢弃迟到的确认分组
![image.png]()
通过上述确认和重传机制,就可以在不可靠的传输网络上实现可靠传输
像这种可靠传输协议我们称为自动重传请求ARQ
-
信道利用率
停止等待协议简单但是信道利用率太低,为了提高信道利用率,可以使用流水线传输
提到流水线传输就必须介绍连续ARQ协议和滑动窗口协议
5.4 2 连续ARQ协议
要求发送方维持发送窗口(位于发送窗口内的x个分组都可以连续发送,而不需要等待对方确认)
发送方每收到一个分组就把滑动窗口向前滑动一个分组的位置
接收方一般采用累积确认,在收到几个分组后,对按序到达的最后一个分组发送确认
优点:容易实现、即使确认丢失也不必重传
缺点:不能向发送方及时反映
5.5 TCP报文段首部格式
TCP虽然是面向字节流,但是传送的数据单元是报文段
TCP报文段首部(固定部分+可变长度)的前20字节是固定的
-
源端口和目的端口:各占2字节
-
序号seq:4字节,用于标识该分段是整个数据的第几个,如当前发送45报文段,4在整个数据报中是第四个,所以该数据报的序号就是4
-
确认号ack:接收方期待收到的下一个报文段的第一个数据字节的序号。也是告诉发送方下次发第几个数据字节
-
数据偏移:指出TCP报文段的数据起始位置距离TCP报文段的起始有多远(第几个开始是数据),实际上指出首部长度
-
保留:无用
-
紧急URG:标记该报文段比较着急,优先级高,URG=1,该报文段优先发
-
确认ACK:ACK=1,则上面的ack才有效,在连接建立后所有传送的报文段必须将ACK置1
-
推送PSH:置1,优先级高,立即交付
-
复位RST:当RST=1时表明TCP连接中出现严重差错,必须释放连接,再重新建立连接
-
同步SYN:连接建立时用来同步序号
-
终止FIN:释放连接,当FIN=1时表明此报文段的发送方的数据已发送完毕,并要求释放连接
-
窗口:占2字节,【0,2^16-1】,窗口值说明的是接收方的目前能接收的缓存空间,用于告诉发送方,发送发应该设置的窗口值要考虑接收方的窗口
窗口字段明确指出了现在允许对方发送的数据量
-
校验和:加上12字节的伪首部构成临时TCP报文段(伪首部+TCP报文段)
-
紧急指针:占2字节仅在URG=1时有用,指出本报文段的紧急数据的字节数
-
选项:规定最大报文段长度MSS,MSS是每一个TCP报文段中的数据字段的最大长度

5.6 TCP可靠传输的实现
5.6.1 以字节为单位的滑动窗口
以字节为单位的滑动窗口可以更精细地控制数据发送量,提高带宽利用率
A B的窗口都是20字节,A窗口把20字节地数据分段传送给B,在还没收到确认地时候可以继续把窗口里剩下地数据传送给B,如果这时B收到A发送的数据,B向A发送一个确认号,如图,B收到了16连续数据,则向A发送地确认号是7(表明期望下一个接受的是7开头的数据),A收到确认后,滑动窗口移动,16的数据删除,接收方的滑动窗口也可以向前移动。
未收到确认的时候需要暂时保留

注意
发送窗口和接收窗口并不总是一样大
对于不按序到达的数据,暂存在临时窗口中
TCP要求接收方必须有累计确认功能
TCP是全双工通信,通信的每一方都在发送和接收报文段
5.6.2 超时重传时间的选择
TCP每发送一个报文段,就对这个报文段设置一次计时器,只要计时器设置的重传时间到了但还没收到确认就重传
新的RTTs=(1-a)旧的RTTs+a(新的RTT样本)
推荐a=0.125,
超时重传时间应略大于上面得出的加权平均往返时间RTTs
5.6.3 选择确认SACK
只传送缺少的数据而不重传已收到的数据,使用SACK选择确认
比如目前收到了11000,20002500,3000~4500,则接收方会发送选择确认ACK=1,ack=1001,再根据TCP首部的选项中的选择确认字段指明收到的数据块的边界[2000,2500],[3000,4500],告诉发送方这些范围内的数据不需要重传,一个TCP的SACK选项最多携带4个数据块范围
5.7 TCP的流量控制
流量控制往往是指点对点通信量的控制,是个端到端的问题
5.7.1 利用滑动窗口实现流量控制
利用滑动窗口大小,调整发送方发送速率,进行流量控制
流量控制:让发送方的发送速率不要太快 ,要让接收方来得及接收
TCP的窗口单位是字节
发送方的发送窗口不能超过接收方的接收窗口的数值
为了解决死锁问题,TCP为每个连接设置了一个持续计时器,TCP连接的一方收到对方的零窗口通知,就启动持续计时器,,若持续计时器设置的时间到期,就发送一个零窗口探测报文段
5.7.2 TCP的传输效率
控制TCP发送时机
- TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中存放的数据达到MSS字节,就组装成一个TCP报文段发送出去。
- 由发送方的应用进程指明要求发送报文段,即TCP的推送push操作
- 发送方的一个计时器期限到了,这是就把当前已有的缓存数据装入报文段(不超过MSS)
若出现糊涂窗口综合征,可以让接收方等待一段时间,使得或者接收缓存已有足够的空间容纳一个最长报文段,或者等到接收缓存已有一半空闲的空间
5.8 TCP 的拥塞控制
5.8.1 拥塞控制的一般原理
拥塞:在某时间段,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏 ⇒对资源的需求>可用资源
拥塞控制:防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不至于过载
拥塞控制有一个前提——网络能够承受现有的网络负荷
拥塞控制可以分为开环控制和闭环控制
开环控制:在设计网络时事先将发生拥塞的有关因素考虑周到,力求网络工作时不产生拥塞
闭环控制:
- 监测网络系统以便检测到拥塞在何时何处发生
- 把拥塞发生的信息传送到可采取行动的地方
- 调整网络系统的运行以解决出现的问题
5.8.2 TCP的拥塞控制方法
拥塞控制方法:慢开始、拥塞避免、快重传、快恢复
这里讨论的拥塞控制是基于窗口的
这里窗口的单位是报文段,不是字节(滑动窗口)
-
慢开始和拥塞避免
发送方维持一个叫做拥塞窗口的状态变量
拥塞窗口的大小取决于网络的拥塞程度,并且是动态变化的,发送方让自己的发送窗口等于拥塞串窗口
具体:由小到大逐渐增大注入到网络中的数据字节,也就是说逐渐增加拥塞窗口值
发送方每收到一个对新报文段的确认,就把发送方的拥塞窗口+1,所以慢开始的拥塞窗口是成倍增加的
![image.png]()
为了防止拥塞窗口增长过大引起网络拥塞,还需设置一个门限值ssthresh
流程:
当TCP连接建立后,把拥塞窗口cwnd置为1,初始本门限值=16,在执行慢开始算法阶段,每经过一个RTT,拥塞窗口就加倍,当拥塞窗口到达门限值,改为执行拥塞控制,此时拥塞窗口按线性规律增长,在RTT=12,拥塞窗口=24时出现了网络拥塞(超时),调整门限值ssthresh=cwnd/2=12,重新执行慢开始算法,拥塞窗口cwnd=12时,改为执行拥塞控制算法。
![image.png]()
-
快重传和快恢复
为了避免在传送数据过程成误把丢包的停止等待认为是网络拥塞,造成不必要的资源浪费,就有了快重传。
快重传可以让发送方尽早知道发生了个别报文段的丢失。如:收到了失序报文段M1、M2、M4,接收方会向发送方一连发送3个重复确认M2,快重传开始执行,重传M3。
发送方知道不是网络拥塞,就执行快恢复,将门限值ssthresh调整为cwnd/2=12,开始执行拥塞避免算法
![image.png]()
发送窗口的上限值=Min[rwnd,cwnd],也就是说rwnd和cwnd中数值较小的一个,控制了发送方发送数据的速率
5.8.3 主动队列管理AQM
网络层的策略对TCP拥塞控制影响最大的就是路由器的分组丢弃策略,一般,路由器的队列都是按照先进先出FIFO规则处理分组
主动队列管理就是当在队列长度达到某个值的警惕的数值时,主动丢弃分组
5.9 TCP的运输连接管理
TCP是面向连接的协议,运输链接有三个阶段:连接建立、数据传送、连接释放
TCP连接采用C/S方式,主动发起连接建立的应用程序叫做客户,被动等待连接的叫做服务器
5.9.1 TCP的连接建立
TCP的连接叫做握手,握手需要在客户和服务器之间交换三个报文段,
即TCP的连接建立通过三次握手建立
客户程序主动打开连接,服务器被动打开连接
一开始B的TCP服务器进程先创建传输控制块TCB

5.9.2 TCP的连接释放
连接释放需要经历4次挥手
A主动发起释放连接请求,FIN=1;A发起释放连接请求后不能再给B发送数据了,但是B可以给A发,B把剩下的数据向A发送完后,再发送确认连接释放的请求,ACK=1 FIN=1,客户进入时间等待(TIME-WAIT),等待2MSL(最长报文寿命),一般是等待4分钟后给服务器一个确认,服务器正式关闭

第六章 应用层
应用层许多的协议都是客户服务器方式,客户是服务请求方,服务器是服务提供方
实现两端用户传输文件
6.1 域名系统DNS
分布式查询技术,使用53端口
DNS请求报文中,以UDP用户数据报方式发个本地域名服务器(为了减小开销)
作用:将域名解析为IP地址
互联网格式:
mail(三级域名).cctv(二级域名).com(顶级域名)
如果买了cctv.com,那么www.cctv.com mail.cctv.com都是你的
顶级域名可分为三类:
国家顶级域名:.cn .us
通用顶级域名:.com .gov .edu
基础结构域名:只有一个为方向域名arpa
一个服务器所负责的管辖的范围叫作区,每个区设置相应的权限域名服务器
根据域名服务器所起的作用,可划分为:
- 根域名服务器:根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。许多情况下,根域名服务器并不直接把带查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应该找哪一个顶级域名服务器进行查询
- 顶级域名服务器:负责管理在该顶级域名服务器所注册的所有二级域名,当收到DNS查询请求时,给出相应回答(IP地址或者下一步应当找的域名服务器IP地址)
- 权限域名服务器:负责一个区的域名服务器,当一个权限域名服务器还不能给出最后的查询回答,就告诉发出DNS查询请求的客户,下一步该找哪一个权限服务器。
- 本地域名服务器:是用户主机在进行DNS查询时首先访问的服务器,通常由本地ISP提供,若本地缓存中有目标域名的解析,则返回,若无,则向根域名发起查询请求
主机向本地域名服务器查询一般采用递归查询
本地域名服务器向根域名服务器查询一般使用迭代查询
域名解析的过程
- 用户主机向本地域名服务器发送域名解析请求,进行递归查询
- 本地域名服务器检查自身缓存,若无则通过迭代查询向根域名服务器发送查询请求,若有直接得到目标域名的IP地址。
- 根域名服务器返回下一步应该查找的顶级域名服务器地址
- 本地域名服务器向顶级域名服务器发送查询请求,顶级域名服务器返回负责该区域的权限域名服务器地址
- 本地域名服务器向对应权限域名服务器发送查询请求,域名服务器返回目标域名对应的IP地址
- 本地域名服务器再将IP地址返回给用户主机,并将该解析结果缓存起来
使用高速缓存的目的:为了提高DNS查询效率,减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量
高速缓存是用来存放最近查询过的域名以及从何处获得域名映射信息的记录
6.2 文件传送协议
6.2.1 FTP
基于TCP协议,控制进程使用TCP21端口,数据传送进程使用TCP20端口

FTP连接方式:
控制连接:使用21端口,用于发送FTP命令信息
数据连接:使用20端口,用于上传下载数据
数据连接的建立类型:
主动模式:服务端从20端口主动向客户端发起连接
FTP服务器端如果有防火墙,需要在防火墙上开20 21端口,使用主动模式
被动模式:服务器端在指定范围内的某个端口被动等待客户端发起连接
FTP传输模式:文本模式、二进制模式
FTP工作流程:
- 建立连接:FTP客户端通过TCP三次握手与FTP服务器端建立连接
- 身份认证:客户端输入账号密码验证身份,验证成功后登录FTP服务器,进入FTP会话
- 命令交互:在FTP会话中,用户可以执行FTP命令进行文件传输
- 断开连接:客户端向FTP服务器发送断开连接的请求,经过四次握手后断开连接
6.2.2 简单文件传送协议TFTP
基于UDP协议,使用69端口,只支持文件传输,而不支持交互,每次传送512字节的数据
6.3 远程终端协议TELNET
TELNET又称终端仿真协议
使用TCP23端口,TELNET是明文传输的,不安全
TELNET是客户服务器方式,在本地系统运行telnet客户进程,在远程主机运行服务器进程
由于TELNET不安全,现在的代替方案是使用SSH协议,SSH协议使用22端口,有身份认证、数据加密、独立信道、防窃听功能
6.4 万维网WWW
6.4.1 万维网概述
万维网是一个大规模的联机式的信息储藏所
万维网是一个分布式的超媒体系统,他是超文本系统的扩充
万维网把大量信息分布在整个互联网上,每台主机上的文档独立进行管理
浏览器是在用户主机上的万维网客户程序,万维网以客户服务器方式,万维网文档所驻留的主机运行在服务器程序
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
6.4.2 统一资源定位符URL
URL=协议://主机名:端口/路径
主机名就是万维网文档存放所的主机的域名
6.4.3 超文本传送协议HTTP
基于TCP协议,使用TCP的80端口
HTTP是面向事务的应用层协议,他是万维网上能够可靠地交换文件的重要基础
HTTP本身是无状态的(不记得曾经是否访问过这个客户)
HTTP本身是无连接的,虽然HTTP使用TCP连接,但是在通信的双方交换HTTP报文之前不需要先建立HTTP连接
HTTP使用TCP连接进行数据的可靠传送
万维网工作过程
- 请求资源:用户通过浏览器在地址栏输入URL,发起一个请求,浏览器将URL解析成相关的协议、主机地址、端口号(通常是80或443)、路径等信息。
- DNS解析:浏览器向DNS发起请求,将域名解析为IP地址,以便找到对应的服务器
- 建立连接:使用HTTP或HTTPs协议,浏览器与目标服务器建立连接
- 发送HTTP请求:向服务器发送HTTP请求,告诉服务器需要获取那个网页或资源
- 服务器响应:Web服务器接收到请求后,会找到相应的网页或资源,并将其通过HTTP响应返回给浏览器。
- 浏览器渲染:浏览器接收到响应后,根据HTML代码、CSS样式表和JavaScript脚本对页面进行渲染,将网页呈现给用户。
- 显示和交互: 用户可以与网页进行交互,例如点击链接、提交表单等,浏览器再根据用户的操作发起新的请求,完成信息的交换和更新。
HTTP/1.1的持续链接有两种工作方式:流水线方式和非流水线方式
代理服务器是一种网络实体,又称万维网高速缓存
HTTP报文
- 请求报文:客户向服务器
- 响应报文:服务器向客户
HTTP/1.1报文是面向文本的
状态码:
1xx:表示通知信息
2xx:表示成功
3xx:表示重定向
4xx:表示客户的差错
5xx:表示服务器的差错
万维网站点可以使用Cookie来跟踪用户
6.5 电子邮件
一个电子邮件系统的三个主要组件:用户代理、邮件服务器以及邮件发送协议和邮件读取协议
用户代理UA是用户与电子邮件系统的接口,大多数是运行在用户计算机中的一个程序,又称电子邮件客户端软件,提供一个友好的可视化界面来发送和接收邮件
用户代理UA应该具有的功能:撰写、显示、处理、通信
邮件服务器需要使用两种不同的协议:SMTP、POP3
SMTP、POP3都使用TCP连接来传送邮件,使用TCP的目的是为了可靠地传送邮件
电子邮件由信封和内容组成
邮件地址格式:用户名@邮件服务器地域名
6.5.1 邮件发送协议SMTP
使用TCP的25端口
SMTP使用明文传输,不安全
发送方和接收方的邮件服务器之间SMTP通信的三个阶段:
- 连接建立:发送方的SMTP的25端口与接收方的邮件服务器的SMTP服务器建立TCP连接
- 邮件传送:
- 连接释放:SMTP客户发送QUIT命令,服务器返回221信息,表示同意释放TCP连接
6.5.2 邮件读取协议POP3和IMAP
POP3
使用TCP的110端口
支持用户鉴别
用户从POP3服务器读取了邮件,POP3服务器就把该邮件删除
网际报文存取协议IMAP
基于TCP的联机协议
允许用户可以随时随地使用不同的计算机处理自己邮件服务器中的邮件,并且允许收件人只读取邮件的某一部分
基于万维网的电子邮件
使用HTTP的POST发送邮件
使用HTTP的GET获取邮件
6.5.3 通用互联网邮件扩充MIME
由于SMTP不能传送可执行文件或其他二进制对象,并且仅限于传送7位的ASCII码,于是提出了MIME
MIME允许邮件传送图文生动
MIME标准规定Content-Type说明必须含有两个标识符,即内容类型和子类型,中间用/分开
如:Content-Type:multipart/mixed
6.6 动态主机配置协议DHCP
基于UDP协议,使用UDP数据报传输数据,客户端使用68端口,服务器使用67端口
动态主机配置协议DHCP时一种即插即用连网,允许一台计算机加入新的网络和获取IP地址不需要手工参与
DHCP使用客户服务器方式,采用请求/应答方式
DHCP客户端请求IP地址的过程
- 主机在互联网上广播发送发现报文
- DHCP服务器收到报文后,发送提供报文,从地址池分配一个IP地址给主机
- 主机选择使用该IP地址后发送请求报文
- DHCP同意后发送确认报文
现在几乎每个网络都有一个DHCP中继代理,中继代理配置了DHCP服务器的IP信息,当DHCP中继代理收到主机广播发送的发现报文后,以单播的方式向DHCP服务器转发此报文,DHCP中继代理收到DHCP的提供报文后,再把此提供报文转发给主机
DHCP分配给DHCP客户(主机)的IP地址是临时的,只能使用一段时间,这就称为租用期
DHCP客户使用UDP68端口,服务器使用UDP的67端口
DHCP协议工作过程:
- 主机首次接入互联网,DHCP服务器被动打开UDP67端口,等待客户发来DHCP发现报文
- DHCP客户从UDP68端口发送发现报文
- DHCP服务器凡收到发现报文,都发出提供报文
- DHCP客户从中选择一个,并向所选择的DHCP服务器发送DHCP请求报文
- 被选择的DHCP服务器发送确认报文,此刻,DHCP客户就可以使用这个IP地址了
- 租期过半,DHCP客户需发送请求报文,更新租期,若同意,服务器发送确认报文,IP地址继续用,若不同意,重新申请IP地址,发送发现报文
- DHCP客户可以随时提前终止服务器所提供的租用期,只需向DHCP服务器发送释放报文即可
6.7 简单网络管理协议SNMP
使用无连接的UDP
网络管理包括对硬件、软件和人力的使用、综合、协调,以便对网络资源进行监视、测试、配置、分析评价和控制
6.7.1 网络管理的基本概念
网络管理模型中的主要构件
管理站(又称管理器),关键构件是管理程序
管理站所在部门称为网络运行中心(NOC)
管理站(硬件)和管理程序(软件)都可称为管理者或管理器
在被管网络中有许多被管设备,包含软硬件,如主机、路由器、打印机、调制解调器等
在每一个被管设备中都要运行一个程序以便和管理站中的管理程序进行通信,这些运行着的程序叫做网络管理代理程序,简称代理
还有一个重要构件:网络管理协议SNMP
SNMP的网络管理组成:SNMP本身、SMI管理信息结构、MIB管理信息库
SNMP基本功能:
- 监视网络性能
- 监测分析网络差错
- 配置网络设置
6.7.2 SNMP的协议数据单元和报文
SNMP的两种基本的管理功能:
- 读操作:用Get报文来检测各被管对象的状况
- 写操作:用Set报文来改变各被管对象
SNMP的这些功能通过探询操作来实现,但SNMP不是完全的探询协议,它允许不经过询问就能发送某些信息,这些信息被称为陷阱
SNMP使用UDP,在运行代理程序的服务器使用161端口,来接受Get和Set报文和发送响应报文,运行管理程序的客户端使用端口162接收来自各代理的trap报文
6.8 应用进程跨越网络的通信
TCP连接:
- 连接建立
- 数据传送
- 连接释放
6.9 P2P应用
P2P文件分发不需要使用集中式的媒体服务器












浙公网安备 33010602011771号