Skip to content

Latest commit

 

History

History
3931 lines (1779 loc) · 112 KB

计算机网络.md

File metadata and controls

3931 lines (1779 loc) · 112 KB

计算机网络

第1章 计算机网络体系结构

1.1计算机网络概述

计算机网络概念、组成、功能和分类

将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。

计算机网络是互联的、自治的计算机集合。

互联-互联互通 通信链路

自治-无主从关系

计算机网络的功能

1.数据通信

2.资源共享 (硬件资源 软件资源 数据资源)

3.分布式处理 多台计算机各自承担统一工作任务的不同部分

4.提高可靠性

5.负载均衡

计算机网络的组成

image-20210725101721623

image-20210725102159248

image-20210725102425735

计算机网络的分类

image-20210725103020004

总结

image-20210725103145160

标准化工作及相关组织

标准化工作

image-20210725200223536

自己想制定标准供大家使用

image-20210725200545043

总结

image-20210725200830126

性能指标

速率相关的性能指标

速率

Mbps

速率用比特/秒,容量用字节

image-20210725204202238

带宽

带宽->路宽

传播速率->车速

image-20210725205750395

image-20210725205810855

吞吐量

带宽->路宽

吞吐量->单位时间内路口过去多少车(实际情况)

image-20210725210540545

时间相关的性能指标

时延

image-20210726124015324

时延带宽积

A-B的一条公路

A-B的距离/车速=传播时延

带宽:路宽,即车道个数

时延带宽积:A-B这条路可以容纳的所有车辆

时延带宽积(bit)=传播时延(s)×带宽(b/s)

image-20210726124406204

往返时延RTT

image-20210726125120671

利用率

image-20210726125450997

总结

image-20210726125530902

1.2计算机网络体系结构与参考模型

分层结构、协议、接口、服务

为什么要分层?

  • 发送文件前要完成的工作

    ①发起通信的计算机必须将数据通信的通路进行激活(清理链路)

    ②要告诉网络如何识别目的主机

    ③发起通信的计算机要查明目的主机是否开机,并且与网络连接正常

    ④发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作。

    ⑤确保差错和意外可以解决

常用名词

  • 实体:第n层中的活动元素称为n层实体。同一层的实体称为对等实体

  • 协议:为进行网络中的对等实体数据交换而建立的规则、标准或约定。包含语法,语义,同步三个部分,水平方向 语法:规定传输数据的格式 语义:规定所要完成的功能 同步:规定各种操作的顺序

  • 接口(访问服务点SAP):上层使用下层服务的入口

  • 服务:下层为相邻上层提供的功能调用,垂直方向

  • SDU (Service Data Unit)服务数据单元:为完成用户所要求的功能而应传送的数据

  • PCI (Protocol Control Information)协议控制信息:控制协议操作的信息

  • PDU (Protocol Data Unit)协议数据单元:对等层次之间传送的数据单位 PDU = SDU + PCI 上一层PDU会成为下一层的SDU,与下一层的PCI组合成下一层的PDU,直到传递到物理层

分层基本原则

  • 各层之间相互独立,每层只实现一种相对独立的功能

  • 每层之间界面自然清晰,易于理解,相互交流尽可能少

  • 结构上可分割开。每层都采用最合适的技术来实现,不受其他层影响

  • 保持下层对上层的独立性,上层单向使用下层提供的服务

  • 整个分层结构应该能促进标准化工作

重要概念

  • 网络体系结构是从功能上描述计算机网络结构的

  • 计算机网络体系结构简称网络体系结构是分层结构

  • 每层遵循网络协议以完成本层功能

  • 计算机网络体系结构是计算机网络的各层及其协议的集合

  • 第n层向第n+1提供服务时,此服务不仅包括第n层本身的功能,还包含由下层服务提供的功能

  • 仅仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽

  • 体系结构是抽象的,通过一系列软件和硬件来实现

7层OSI参考模型

提出背景

  • IBM提出了第一个网络体系结构SNA

  • 美国国防部提出了TCP/IP

  • 为了支持异构网络系统的互联互通,ISO于1984年提出开放系统互连(OSI)参考模型

模型分层

模型分层每层以功能划分,即每层完成特定的功能

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

顺口溜:物联网叔会使用

模型通信过程

  • 主机A(完整七层)→中间系统(通信子网部分层)→主机B(完整七层)(物理层之间通过传输介质连接)

  • 主机A自顶向下(打包) ①除物理层和数据链层外,其余各层只要在上一层数据基础上添加头部 ②数据链路层需要在上一层数据基础上添加头部和尾部 ③物理层将数据链路层的比特流转换成物理信号,并放到传输介质

  • 物理信号经传输介质传送到中间系统上,从物理层开始自底向上对数据进行解析,同时确定数据下一发送目的地,再自顶向下将数据包裹传到物理层,转换成物理信号发送到传输介质上传输

  • 主机B自底向上(拆包) ①物理层从传输介质上接收物理信号,转换成数据链路层数据格式 ②数据链路层根据协议去掉头和尾 ②其余各层根据协议去掉头部即可

  • 特点总结:应用层、表示层、会话层、传输层,不需要中间系统,是端到端的通信。物理层、数据链路层、网络层需要中间系统,是点对点的通信

每层的功能及协议

应用层

所有能和用户交互产生网络流量的程序

应用层服务:文件传输FTP、电子邮件SMTP、万维网HTTP

表示层

用于处理两个通信系统中交换信息的表示方式(语法和语义)

  • 功能

    ①数据格式变换(各主机信息编码不同,类似翻译官)

    ②数据加密和解密

    ③数据压缩及恢复

  • 协议:JPEG、ASCII

会话层

建立连接并在连接上有序的传输数据

  • 功能:向表示层实体/用户进程提供建立连接并在连接上有序地传输数据的功能。这叫会话Session,也是建立同步(SYN)

    ①建立、管理、终止会话

    ②使用校验点使会话在通信失效时,从校验点/同步点继续恢复通信,实现数据同步。

  • 协议:ADSP、ASP

传输层

负责主机中两个进程间的通信,端到端的通信

  • 自下而上第一个端到端通信的层次,也是资源子网和通信子网的中间接口

  • 传输单位是报文段或用户数据报

  • 功能(顺口溜:“可差留用”)

    ①可靠传输(建立连接,确认机制,收到确认才发新数据)TCP、不可靠传输(不建立连接,不需要确认,发送即可)UDP

    ②差错控制(报文段数据纠错)

    ③流量控制(控制发送方的速度)

    ④复用分用 复用:多个应用层进程可同时使用下面运输层的服务 分用:运输层把收到的信息交付给上面应用层中相应的进程 (多进程可同时发送数据,报文段有对应的目标端口号,传输层通过端口号查找目标进程转发)

  • 协议:TCP、UDP

网络层

定义IP编址与路由,把数据报分组从源端传到目的端,为分组交换网的不同主机服务

  • 传输单位是数据报/数据报组。数据报过长,就可拆分成若干分组,再放到链路上传递。

  • 功能

    ①路由选择(通过路由算法计算出最佳路径)

    ②流量控制(控制发送端速度)

    ③差错控制(检查并纠错)

    ④拥塞控制 若所有结点都来不及接收分组,而要丢弃大量分组,网络就处于拥塞状态。要采取一定措施,缓解拥塞

  • 协议:IP、IPX、ICMP、IGMP、ARP、RARP、OSPF

数据链路层

定义数据基本格式,把网络层传下来的数据报组装成帧

  • 传输单位是帧

  • 功能

    ①成帧(定义帧的开始和结束)

    ②差错控制(帧错、位错)

    ③流量控制(控制发送端的速度)

    ④访问(接入)控制(控制对信道的访问,例如在广播式网络,同时只有一台主机发送,其他主机监听)

  • 协议:SDLC、HDLC、PPP、STP

物理层

在物理媒体上实现比特流的透明传输(不管所传数据是什么样比特组合,都应当能在链路上传送)

  • 传输单位是比特

  • 功能 ①定义接口特性(引脚) ②定义传输模式(单工、半双工、双工) ③定义传输速率 ④比特同步 ⑤比特编码

  • 协议:Rj45、802.3

4层TCP/IP模型

与OSI参考模型的对比

image-20210727200437037

相同点

①都分层

②都是基于独立的协议栈的概念

③可以实现异构网络互联(不同设备)

不同点

①OSI定义三点:服务、协议、接口

②OSI先出现,参考模型先与协议发明,不偏向特定协议

③TCP/IP设计之初就考虑到易购网互联的问题,将IP作为重要层次

image-20210727201257123

面向连接:

①建立连接。发出一个建立连接的请求。

②只有连接建立成功后才能开始传输数据。

③当数据传输完毕,释放连接。 无连接:直接进行数据传输

5层参考模型

综合了OSI和TCP/IP的优点(功能划分清晰,且不重叠)

各层功能及其协议

  • 应用层

    支持各种网络应用(FTP、SMTP、HTTP)

  • 传输层

    进程-进程的数据传输(TCP、UDP)

  • 网络层

    源主机到目的主机的数据分组路由与转发(IP、ICMP、OSPF)

  • 数据链路层

    把网络层传下来的数据报组装成帧(Ethernet、PPP)

  • 物理层

    比特传输(Rj45、802.3)

数据封装与解封装

image-20210727201912256

总结

image-20210727202234208

第2章 物理层

2.1 通信基础

物理层基本概念

解决如何在各种计算机的传输媒体上传输数据比特流

定义标准:

①机械特性 包括接口形状、引线数目等

②电气特性 规定电压范围、距离限制等、

③功能特性 规定某条线上出现某一电平的意义

④规程特性 定义各个物理线路的工作规程和时序关系


通信基础知识

典型的数据通信模型

调制解调器(猫)

image-20210728194651925

相关术语

通信的目的是传送消息。

数据:传送信息的实体,通常是有意义的符号序列。

信号:数据的电气表现,是数据的存在型式。

​ 数字信号:离散的,0V,5V代表0101

​ 模拟信号:连续的,波形

信源:发送数据源头

信宿:接收数据终点

信道:信号的传输媒介,包括发送信道和接收信道

image-20210728195348245

三种通信方式

1.单工通信 没有反方向交互,只需要一条信道(一直挨打)

2.半双工通信 双方可以接受或者发送,但一方不能同时接收和发送,需要两条信道(回合制)

3.全双工通信 通信双方可以同时发送和接受,也需要两条信道(即时制)

两种数据传输方式

串行传输:速度慢,费用低,适合远距离

并行传输:速度快,费用高,适合近距离

image-20210728195934908

image-20210728200055413


码元、速率、波特、带宽

码元

用一个固定时长的信号波形(数字脉冲),(0,1的长度为码元宽度,0,1两种高低不同称为二进制码元),是数字通信中数字信号的计量单位

速率、波特、带宽

image-20210728205106246

速率:数据的传输速率,表示单位时间内传输的数据量

①码元传输速率:单位时间内传播的码元个数( 脉冲个数), 单位是波特(码元/秒),与进制数无关

②信息传输速率 比特/秒

带宽:最高传输速率 b/s

image-20210728205658466


奈氏准则和香农定理

失真:数字信号->模拟信号 由于信道带宽首先、有噪声、干扰导致信号波形变形

影响失真的因素:

①码元传输速率+

②信号传输距离+

③噪声干扰+

④传输媒体质量-

信道带宽:可以通过的最高频率和最低频率之差

奈式准则(奈奎斯特定理)

信号太密集会产生码间串扰

在理想低通条件下,极限码元传输速率为2W 波特,W是信道带宽,单位Hz

①任何信道中,码元传输的速率是有上限的。

②信道的频带越宽,就可应用越高的速率进行码元传输。

③奈氏准则给出了码元传速速率的限制,但没有对信息传速速率给出限制。

④想提高数据传输的速率,需要采用多元制的调制方法,比如4进制,8进制,16进制码元

香农定理

噪声会限制信息的发送速率

在带宽受限且有噪声的信道中,为了不产生误差,信息传输速率的上限值。

信噪比形容噪声对信号的影响

dB=10log(S/N)平均功率/噪声的平均功率

信道的极限数据传输速率=Wlog2(1+S/N)(b/s)


编码与调制

基带信号与带宽信号

信道:信号的传输媒介。

包括数字信道和模拟信道。

基带信号(来自信源的信号):将数字信号1和0直接用两种不同的电压表示,再送到数字信道上去传输(基带传输)。

基带信号就是发出的直接表达了要传输的信息的信号

宽带信号:将基带信号进行调制后形成的频分复用模拟信号,再传送到模拟信道上去传输(宽带传输)。

将基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输。

区别:

传输距离较近,计算机网络采用基带传输方式。

传输距离较远,计算机网络采用宽带传输方式。

编码(数据→数字信号)

数字数据——>(数字发送器)数字信号

模拟数据——>(PCM编码器)数字信号

调制(数据→模拟信号)

数字数据——>(调制器)模拟信号

模拟数据——>(放大调制器)模拟信号


2.2传输介质

传输介质也叫做传输媒体(介),它就是数据传输系统中在发送设备和接收设备之间的物理通路。

**传输媒体并不是物理层。**在传输信号的过程中,传输媒体并不知道传输的信号代表什么意思,只管传,但物理层规定了电气特性,因此能够识别传输的比特流。

导向性传输介质

电磁波被导向沿着固体媒介(铜线/光纤)传播。

介质:

①双绞线:绞合可以减小对相邻导线的电磁干扰。image-20210729195615002

②同轴电缆:(电视线)image-20210729195718921image-20210729195818904

③光纤:(全反射)image-20210729200037836

非导向性传输介质

自由空间,介质可以是空气、真空、海水等。

①无线电波:所有方向,较强穿透能力

②微波:固定方向,地面微波接力通信,卫星通信

③红外线、激光:固定方向,把传输的信号分别转换为各自的信号格式。

知识总结

image-20210729221237605


2.3物理层设备

放大器

对模拟信号放大的设备

中继器

image-20210730092805830

对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度。

中继器的两端:

①两端的网络部分是网段,不是子网,适用于完全相同的两类网络的互联,且两个网段速率要相同。

②中继器只将任何电缆段上的数据发送到另一段电缆上,仅作用于信号的电气部分,不管是否有错误或者不适于网段的数据(傻瓜层)。

③两端可连接相同媒体(传输介质),也可连接不同媒体。

④中继器两端的网段一定要是同一个协议。

5-4-3规则:网络标准中 都对信号的延迟范围作了具体的规定,因而中继器只能在规定的范围内进行,否则会网络故障。

以太网络标准中就约定了一个以太网上只允许出现5个网段, 最多使用4个中继器, 而且其中只有3个网段可以挂接计算机终端。

5:5个网段

4:4个物理层的网络设备(中继器/集线器)

3:只有三个段可以连接计算机。

集线器

image-20210730093058110

多口中继器

对信号进行再生放大转发,对衰减的信号进行放大,接着转发到其他所有(除输入端口外)处于工作状态的端口上,以增加信号传输的距离,延长网络的长度。不具备信号的定向传送能力,是一个共享式设备。

集线器是星型拓扑结构,广播通信方式

集线器不能分割冲突域,连在集线器上的工作主机平分带宽 集线器在一个时钟周期内,只能传递一组信息,多台主机要同时通信会发生碰撞,每台主机的带宽变小,通信速率降低

中继器和集线器的区别

1.在于连接设备的线缆的数量。一个中继器通常只有两个端口,而一个集线器通常有4至20个或更多的端口。

2.中继器只起到连接的作用,而集线器则还有分配网络资源的作用,所以说集线器的功能上要比中继器的强。

3.中继器主要功能是通过对数据信号的重新发送或者转发,来扩大网络传输的距离;集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。


知识总结

image-20210730093553396

第3章 数据链路层

3.1数据链路层的功能

当专门研究数据链路层的问题的时候,只关注水平方向的

image-20210801162206908

基本概念

结点:主机、路由器

链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。

数据链路:网络中两个节点之间的逻辑通道,把实现控制数据协议的硬件和软件嫁到链路上就构成数据链路。

帧:链路层的协议数据单元,封装网络层数据报。

数据链路层负责 通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。

功能概述

功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。确认:确认信号,有连接一定有确认!

功能二:链路管理 ,即连接的建立、维持、释放(用于面向连接的服务)。

功能三:组帧。

功能四:流量控制。限制放送方。

功能五:差错控制(帧错/位错)。


3.2组帧

image-20210802204331604

封装成帧:就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端再收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界

**帧同步:**接收方应当能从接收到的二级制比特流中区分出帧的起始和终止。

透明传输

不管数据是什么样的比特组合,都应当能在链路上传送。因此链路层就“看不见”有什么妨碍数据传输的东西。

当传送的数据恰好和某个控制信息完全一样时,就需要采取措施,保证数据不被误认。这才能保证传输透明。

四种组帧方法

组帧的四种方法:

(1)字符计数法

帧首部使用一个计数字段(第一个字节 八位)来标明帧内字符数。

image-20210802205850678

痛点:鸡蛋装在一个篮子里,如果第1帧的第1个字符5写成4,后面的每一帧就全错了。

(2)字符填充法

SHO和ETO都用特定字符表示

如果传输的数据中出现这两个特定字符,要在其前面加上字节填充进行转义

image-20210802211204375

(3)零比特填充法

image-20210802212517052

操作:

①在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0.

②在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。

(4)违规编码法

image-20210802221855765

曼彻斯特编码不会出现“高-高”,“低-低”的情况,用这两种违规编码来表示每一帧的起始和终止。

可以用“高-高”,“低-低”来定界帧的起始和终止。

目前普遍使用的帧同步法是比特填充和违规编码法。


3.3差错控制(错位)

差错都是由于噪声引起的。

全局性:

①由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。

解决办法:提高信噪比来减少或避免干扰。(对传感器下手)

局部性:

②外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。

解决办法:通常利用编码技术来解决。

差错由来

位错:比特位出错,1变成0/0变成1

帧错:1-2-3

①丢失1-3

②重复1-2-2-3

③失序1-3-2

确认和重传机制

无确认无连接服务(通信质量好,有线传输链路)

有确认无连接服务(通信质量差的无线传输服务)有确认面向连接服务。

检错编码(位错/比特位出错)

奇偶校验码:

1位校验元+n-1位信息元

奇校验码:“1”的个数为奇数

偶校验码:“1”的个数为偶数

例子:一个字符S的ASCII编码从低到高依次是1100101,采用奇校验

为了n中1的个数为奇数,应该在前加上校验元1,11100101

奇偶校验码的特点:

只能检查出奇数个比特错误,检错能力为50%,

出现0变1可以检查出错误,出现两个0变1就检查不出错误

循环冗余码CRC:

例子:
发送端:
要传的数据(5)÷生成多项式(2)=2......FCS帧检验序列/冗余码(1)
最终发送的数据:5+1=6

接收端:
接收到的数据(6)÷生成多项式(2)=3......0
余数为0,判定无措,就接受。

image-20210803213726667

接收端: 将最终发送的数据11010110111110除生成多项式,余数为0接受,否则丢弃

纠错编码(发现并确定错误位置)

海明码:发现双比特错,纠正单比特错

工作原理:动一发而牵全身

工作流程:

①确定校验码位数r

海明不等式 $$ 2的r次方>=k+r+1 $$ r为冗余信息位,k为信息位

要发送的数据:D=101101
数据的位数k=6
满足不等式的最小r为4
也就是D=101101的海明码应该有6+4=10位,
其中原数据6位,校验码4位。

②确定校验码和数据的位置

D=101101 假设这4位校验码分别为P1、P2、P3、P4;数据从左到右为D1、D2、...、D6。

image-20210803215856550

③求出校验码的值

image-20210803220330983

④检错并纠错

image-20210803221007001

知识总结

image-20210803221039813


3.4流量控制与可靠传输机制

较高的发送速度和较低的接受能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。

数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。

数据链路层流量控制手段:接收方收不下就不回复确认。

传输层流量控制手段:接收端给发送端一个窗口公告。

流量控制方法

停止-等待协议:

image-20210804165029906

每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。

滑动窗口协议:

image-20210804165257503

收到一个确认发送窗口前进一格

①后退N帧协议(GBN)

②选择重传协议(SR)

流量控制协议 发送窗口大小 接收窗口大小
停止等待协议 =1 =1
后退N帧协议(GBN) >1 =1
选择重传协议(SR) >1 >1

可靠传输、流量控制、滑动窗口关系

可靠传输:发送端发啥,接收端接受啥。

流量控制:控制发送速率,使得接收方有足够的缓冲空间来接收每一帧。

滑动窗口解决:

①流量控制(收不下就不给确认,想发也不能发)

②可靠传输(发送方自动重传)

停止等待协议

停等的由来:

除了比特出差错,底层信道还会出现丢包问题 。

为了实现流量控制。

研究停等协议的前提:

①仅考虑一方发送另一方接受。

②不考虑数据是在哪一个层次上传送的。

停止等待协议应用的情况:

1)无差错情况

2)有差错情况

①数据帧丢失或者检测到帧出错

正常情况下发送一帧,确认一帧,然后发送下一帧

有一个超时计时器:每次发送一帧就会启动一个计时器,超时计时器的设置的重传时间应当比帧传输的平均RTT更长一些。

超时就会重传1帧

注意:

· 发完一个帧,必须保留它的副本

· 数据帧和确认帧必须编号(解决帧的丢失和重复)

②ACK丢失(确认帧丢失)

超时重传,确认方丢弃重复的1帧,重传确认1帧

③ACK迟到

image-20210804202100736

和ACK丢失大体相同,只不过迟到后发送方收下就丢弃。

后退N帧协议(GBN,Go Back N)

  • 发送方连续发送多帧(流水线技术)

    ①要增加序号范围

    ②发送方需要缓存多个分组

  • 滑动窗口类别

    • 发送窗口:发送方维持一组连续的允许发送的帧的序号

    • 接收窗口:接收方维持一组连续的允许接收帧的序号

    无差错情况

    • 发送窗口连续发送帧,接收到确认帧后右移一位
    • 接收窗口接收到一帧后,也右移一位
    • 注意:帧必须按顺序接收和确认

GBN发送方必须响应的三件事:

①上层的调用

上层要发送数据的时候,会先检查发送窗口是否已满,如果未满则产生一个帧并将其发送;

如果已经满了,发送发只需将数据返回给上层让上层等一会再发送。

②收到了一个ACK

GBN协议中,对n号帧的确认采用累计确认的方式,标志接收方已经收到n号帧以及之前的全部帧率。

③超时事件

如果出现超时,发送发会重传所有已发送但未被确认的帧。

GBN接收方要做的事情:

如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。

其余情况都丢弃帧,并为最近按序接受的帧重新发送ACK (3号帧没来,收到4,5号 但还是要丢掉4,5号帧)

image-20210805154040153

滑动窗口长度:

采用n个比特対帧编号,那么发送窗口的尺寸WT应该满足1<=WT<=2的n次方-1。

n个比特対帧编号 比如n=2 可以表示0123 0123 0123,前面每个数字代表1帧,如果滑动窗口超过3,那就使得接收方无法区别新帧和旧帧

选择重传协议(SR,Selective Repeat)

对于发送完的被确认的先放到缓存中,等到前面的帧收到后,经过整理再交付给网络层

SR发送方必须响应的三件事:

①上层的调用

从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则,要么缓存数据,要么返回给上层之后再传输

②收到了一个ACK

收到ACK后移动到没有被确认的帧,并发送有序号的未发送帧

SR接收方要做的事:

接收方将确认一个正确接收的帧而不管其是否按顺序。对于失序的帧将被缓存,并发送ACK,直到所有帧(序号更小的帧)都被收到为止,然后将一批帧按序交付给上层。

image-20210805211233399

发送窗口最好等于接收窗口。WTmax=WRmax=2的n-1次方

总结:

①对数据帧逐一确认,收一个确认一个

②只重传出错帧

③接收方有缓存

3.5介质访问控制

传输数据使用的两种链路

点对点链路:

两个相邻结点通过一个链路相连,没有第三者。

应用:PPP协议,常用于广域网。

广播式链路:

所有主机共享通信介质。

应用:早期的总线以太网、无线局域网,常用于局域网。

典型拓扑结构:总线型、星型(逻辑总线型)

介质访问控制基本概念

采取一定的措施,使得两对节点之间的通信不会发生相互干扰的情况。

信道划分介质访问控制(静态划分信道)

信道划分介质访问控制:

将使用介质的每个设备与来自同一信道的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。

多路复用技术:

image-20210806152854640

①频分多路复用FDM frequency ---并行

每个用户占用一个频段。

②时分多路复用TDM time ---并发

将时间划分为一段段等长的时分复用帧,所有用户轮流占用信道。

TDM帧是在物理层传送的比特流所划分的帧,标志一个周期。

改进的时分复用:统计时分复用STDM

有一个集中器,先到先发。

③波分多路复用WDM wave

由于波长不同,所以各路光信号互不干扰最后再用波长分解复用器将各路波长分解出来。

④码分多路复用CDM code

动态媒体接入控制/多点接入(动态分配信道)

随机访问协议

可能发生冲突

ALOHA协议(不听就说!)

纯ALOHA协议(想发就发)

协议思想:不监听信道,不按时间槽发送,随机重发

如果发生冲突,接收方就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。

时隙ALOHA协议(控制想发就发的随意性)

协议思想:把时间分成若干个相同的时间片(时间槽),所有用户在时间片开始时刻同步接入网络信道,若发生冲突,必须等到下一个时间片开始时刻再发送。

CSMA协议(先听再说)

carrier sense multiple access

CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。

MA:多点接入,表示许多计算机以多点接入的方式连接在以一根总线上。

协议思想:发送帧之前,监听信道。

监听结果:

· 信道空闲:发送完整帧

· 信道忙:推迟发送

1-坚持CSMA
坚持指的是对于监听信道忙之后的坚持。
思想:如果一个主机要发送消息,那么它先监听信道,空闲直接传输,不必等待。
	忙则一直监听,直到空闲马上传输。
	如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。
优点:只要媒体空闲,站点马上发送,避免了媒体利用率的损失。
缺点:假如有两个或者以上的站点要发送数据,冲突不可避免。

非坚持CSMA
非坚持指的是对于监听信道忙之后就不继续监听。
思想:忙则等待一个随机的时间之后再进行监听。
优点:可以减少冲突发送的可能性。
缺点:大家都在等待的时候,使得媒体处于空闲状态,媒体使用率降低。

p-坚持CSMA
p-坚持指的是对于监听信道空闲的处理。
思想:空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输
	忙则等待一个随机的时间之后再进行监听
优点:集合了前两种。

image-20210807153051523

CSMA/CD协议(先听再说,边听边说)

载波监听多点接入/碰撞检测CSMA/CD

CS:载波侦听/监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。

MA:多点接入,总线型网络

CD:碰撞检测,“边发送边监听” (半双工网络)

先监听,发现没有其他计算机发送数据后再发送,为什么还会产生冲突?

因为电磁波在总线上总是以有限的速率传播的。

传播时延对载波监听的影响:

image-20210807212931730

A->B需要的时间为τ

B在A发送后△t时刻发送,A信号会和B信号发生碰撞,在t=2τ-△t的时候检测到数据错误,发生了碰撞
当△t->0的时候t有最大值为2τ,如果2τ时间内还没检测到碰撞,就能确定一定不会发生碰撞。

最小帧长的问题:A站发了一个很短的帧,但是发生了碰撞,不过帧在发送完毕后才检测到发生碰撞,没法停止发送,因为发完了。

帧的传播时延至少要两倍于信号在总线中的传播时延: $$ 帧长(bit)/数据传输速率>=2τ $$ 以太网规定最短帧长为64B,凡是长度小于64B的都要进行填充。

CSMA/CA协议

载波监听多点接入/碰撞避免CSMA/CA

为什么要有CSMA/CA?

在无线局域网当中,无法做到360°全面检测碰撞,另外就是隐蔽站的问题(A给C发送数据不知道B也给C发送数据导致冲突)

工作原理:

①发送数据前,先检测信道是否空闲。

②空闲则发出RTS(request to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。

③接收端收到RTS后,将响应CTS。

④发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)

⑤接收端收到数据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧。

⑥发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)

预约信道 ACK帧 RTS/CTS帧(可选)

CSMA/CD与CSMA/CA

相同点:先听再说,当发现信道空闲后,才能进行接入。

不同点:

①传输介质不同:分别是以太网和无线局域网

②载波检测方式不同:因为传输介质不同

③CSMA/CD检测冲突,CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。

轮流协议

轮训协议:

主节点轮流“邀请”从属节点发送数据。

问题:轮询开销,等待延迟,单点故障

令牌传递协议:应用于令牌环网(物理上为星型结构,逻辑上为环状拓扑结构)

令牌:一个特殊格式的MAC控制帧,不含任何信息。

​ 控制信道的使用,确保同一时刻只有一个结点独占信道。

发送数据的主机持有令牌并且改令牌标志位,标志令牌正在使用,令牌后面跟数据。

当A主机发送数据过长,还是会将令牌传递出去让其他主机发送数据。

每结点都可以在一定时间内获得发送数据的权利,并不是无限制地持有令牌。

问题:令牌开销,等待延迟,单点故障

知识总结

image-20210807183033711


3.6局域网与以太网

局域网

简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。

特点:

①覆盖的地理范围较小

②数据传输速率较高(10Mb/s~10Gb/s)

③通信延迟时间短,误码率低,可靠性较高。

④各站点平等,共享传输信道

⑤多采用分布式控制和广播式通信,能进行广播和组播。

决定局域网的主要要素为:网络拓扑,传输介质与介质访问控制方法。

局域网的拓扑结构

image-20210808150832518

局域网的传输介质

有线局域网:双绞线、同轴电缆、光纤

无线局域网:电磁波

局域网介质访问控制方法:

1.CSMA/CD:常用于总线型局域网,也用于树形网络

2.令牌总线:常用于总线型局域网,也用于树形网络

3.令牌环:用于环形局域网,如令牌环网

局域网的分类:

①以太网:逻辑总线,物理星型

②令牌环网:物理星型,逻辑环形

③FDDI:物理双环,逻辑环形

④ATM网

⑤无线局域网WLAN:IEEE 802.11标准

MAC子层和LLC子层

IEEE 802标准将数据链路层划分为逻辑链路层LLC子层和介质访问控制MAC子层。

LLC:负责识别网络层协议,为网络层提供服务。

MAC:数据帧的封装/卸装,帧的寻址和识别,帧的接收和发送,链路的管理,帧的差错控制等。

以太网

是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD技术。

优点:

①造价低廉

②是应用最广泛的局域网技术

③比令牌环网、ATM网便宜,简单;

④满足网络速率要求:10Mb/s~10Gb/s

以太网提供无连接、不可靠的服务

无连接:发送方和接收方之前无“握手过程”

不可靠:不需要对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责。

适配器和MAC地址

计算机与外界有局域网的连接是通过通信适配器(网卡)的。

在局域网中,硬件地址又称为物理地址,或者MAC地址。实际上就是一个标识符。

MAC地址:每个适配器有一个全球位移的48位二进制地址,前24位代表厂家(由IEEE规定),后24位厂家自己指定。常用6个十六进制数表示,如02-60-8c-e4-b1-21。

image-20210808161146582

以太网MAC帧

image-20210808163821071

无线局域网

802.11 MAC帧头格式:

设备A和设备B通信,A先传送到A附近的基站AP1,然后再发送到B附近的基站AP2,最后发送给B。

image-20210808202213886

image-20210808202339009

无线局域网的分类

1.有固定基础设施无线局域网

image-20210808203220577

一个WiFi名也叫服务集标识符。代表一个基站。

2.无固定基础设施无线局域网的自组织网络

image-20210808205514095


3.7广域网

通常跨接很大的物理范围,所覆盖的范围从十几公里到几千公里。

广域网的通信子网主要使用分组交换技术。它将分布在不同地区的局域网或计算机系统互联起来,达到资源共享的目的。因特网是世界范围内最大的局域网。

image-20210808211250423

与局域网对比

  • 覆盖的网络层次更多:局域网只覆盖链路层和物理层,广域网还覆盖网络层

  • 局域网普遍采用总线型的多点接入技术,而广域网通常采用点对点的全双共或半双工通信模式

  • 广域网强调资源共享(速度快,延迟高),局域网强调数据传输(延迟更小,速度较慢)

PPP协议(面向字节)

点对点协议,是目前使用最广泛的数据链路层协议,只支持全双工链路。

PPP协议应满足的要求:

简单:对于链路层的帧,无需纠错,无需流量控制

封装成帧:帧定界符

透明传输:与帧定界符一样比特组合的数据应该如何处理:异步线路用字节填充,同步线路用比特填充。

多种网络层协议:封装的IP数据表可以采用多种协议。

多种类型链路:串行/并行,同步/异步,电/光...

差错检测:错就丢弃

检测连接状态:链路是否正常工作。

最大传送单元:数据部分最大长度MTU(默认不超过1500B)。

网络层地址协商:知道通信双方的网络层地址。

数据压缩协商

PPP协议无需满足的要求

纠错,流量控制,序号,不支持多点线路

PPP协议需要实现的三个功能:

①将IP数据报封装到串行链路的方法。

②链路控制协议LCP:建立并维护数据链路连接。 身份验证

③网络控制协议NCP:PPP支持多种网络层协议,不同的网络层协议要有响应的NCP配置,为网络层协议建立和配置逻辑连接。

PPP协议的帧格式:

image-20210809100508204

HDLC协议(面向比特)

高级数据链路控制,是一个在同步网上传输数据、面向比特的数据链路层协议。

数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现,采用全双工通信

所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高。

HDLC的站

①主站:起控制作用的站

②从站:被控制作用的站

③复合站:两种站的结合

三种数据操作方式:

①正常响应方式

②异步平衡方式

③异步响应方式

HDLC的帧格式

image-20210809101433206

协议对比

相同点:

①都只支持全双工链路

②都可以实现透明传输

③都可以实现差错检测,但不纠正差错。

不同点:

PPP协议 面向字节 2B协议字段 无序号和确认机制 不可靠
HDLC协议 面向比特 没有 有编号和去人机制 可靠

3.8数据链路层设备

物理层扩展以太网

  • 用光纤

  • 用主干集线器将集线器相连

  • 物理层扩展容易冲突

链路层扩展以太网

网桥&交换机

网桥根据MAC帧的目的地址对帧进行转发和过滤。

当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者把它丢弃。

image-20210809103133997

网桥分类

透明网桥:”透明“指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用设备。

源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中。

方法:源站以广播方式向欲通信的目的站发送一个发现帧。

多接口网桥--以太网交换机

image-20210809110322049

以太网交换机的两种交换方式:

直通式交换机:查完目的地址(6B)就立刻转发。

存储转发是交换机(常用):将帧放入高速缓存,并检查是否正确,正确则转发,错误则丢弃。

冲突域和广播域

冲突域:同一时间内只能有一台设备发送信息的范围。

广播域:如果站点发出一个广播信号,所有能接收到这个信号的设备范围称为一个广播域。

image-20210809111320720


知识总结

image-20210809113020162

第4章 网络层

4.1网络层的功能

功能概述

主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。

网络层传输单位是数据报

数据报是分组的片段。

应用层的信息分组称为报文。报文>分组>数据报

功能一:路由选择与分组转发 最佳路径

功能二:异构网络互联(不同设备通过路由器连接在一起)

功能三:拥塞控制

如果所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施缓解这种拥塞。

way1:开环控制 静态

way2:闭环控制 动态

三种数据交换方式

路由器实现网络的互联

电路交换

电话网络

image-20210809152857714

电路交换的阶段:建立连接->通信->释放连接

优点:

①通信时延小

②有序传输

③没有冲突

④实时性强

缺点:

①建立连接时间长

②线路独占,使用效率低

③灵活性差

④无差错控制能力

报文交换

报文:源应用发送的信息整体。比如PDF整体

image-20210809153809190

优点:

①无需建立连接

②存储转发,动态分配线路

③线路可靠性较高

④线路利用率较高

⑤多目标服务

缺点:

①有存储转发时延

②报文大小不定,需要网络结点有较大缓存空间

分组交换

分组:把大的数据分割成小的数据块。

image-20210809154257359

优点:

①无需建立连接

②存储转发,动态分配线路

③线路可靠性较高

④线路利用率较高

⑤相对于报文交换,存储管理更容易。

缺点:

①有存储转发时延

②需要传输额外的信息量(因为切成片,每一片都需要原地址目的地址等信息)

③乱序到目的主机时,要对分组排序重组。

数据报方式&虚电路方式

数据报方式为网络层提供无连接服务

无连接服务:不实现为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。

虚电路方式为网络层提供连接服务

连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。

数据报

每个分组携带源和目的地址

**路由器根据分组的目的地址转发分组:**基于路由协议/算法构建转发表;检索转发表;每个分组独立选路。

虚电路

将数据报方式和电路交换方式结合,发挥两者优点。

一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有结点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路的信息。

image-20210809172435737

数据报服务和虚电路的异同

image-20210809172500126

☆☆☆☆几种传输单元名词辨析

image-20210809170009482

源主机将长应用层报文分割成较小的分组,再在网络上发送这些较小分组;

分组交换与报文交换相比,它一般能够得到小的多的端到端时延。

image-20210809155137135

报文交换:串行

分组交换:并行,当第一组数据发送出去后,第二组数据也同时发出,各个交换设备以及链路中都有分组。

​ 计算时间只需看最后一个分组是什么时候发出的,然后最后一个分组到目的端需要多长时间。

​ 因此分组交换是现实生活中最常用的数据交换方式。

数据报(datagram):在报文首部加上ip首部形成一个数据报;

分片(fragment):如果在选定网络中,数据报的长度太大,ip就会把数据报分裂成几个分片,每个分片含有它自己的ip首部和一段原来数据报的数据;

分组(packet):提交给数据链路层进行传送时,一个ip分片或者一个很小的无需分片的ip数据报成为分组;

三种数据交换方式比较总结

image-20210809164010781

4.2 IP数据报

TCP/IP协议栈

image-20210810101357092

IP数据报格式

IP数据报=首部+数据部分(TCP、UDP段)

首部=固定部分+可变部分

image-20210810110104027

协议:image-20210810105814951

IP数据报分片

最大传送单元MTU

链路层数据帧可封装数据的上线。

以太网的MTU是1500字节。

image-20210810110440357

标识、标志、片偏移

标识:同一数据报的分片使用同一标识

标志:一共三位,只有2位有意义

​ 中间位DF(Don't Fragment)DF=1,禁止分片,DF=0,允许分片

​ 最低位MF(More Fragment)MF=1,后面还有分片,MF=0,代表最后一片/没分片

片偏移:指出较长分组分片后,某片在原分组中的相对位置,以8B为单位。相对于起始位置

除了最后一个分片,每个分片长度一定是8B的整数倍。

IP数据报分片问题

如果数据部分大于MTU就需要分片

例题:

首部(20B)+数据部分(3800B) 要求:分片长度不超过1420B的数据报片

分的数据报片应该尽可能的接近1420,但又小于1420且是8的整数倍,那就是1400

那将分成三部分:

标识 MF DF 片偏移量
首部1(20B)+数据1400 12345 1 0 0
首部2(20B)++数据1400 12345 1 0 1400/8=175
首部3(20B)++数据1000 12345 0 0 350

一些单位

总长度单位:1B

片偏移单位:8B

首部长度单位:4B

顺口溜:1总8片首4 一种八片手势

4.3 IPV4

IP编址的历史阶段

  • 分类的IP地址

  • 子网划分

  • 构成超网(无分类编址方法)

互联网中的IP地址

IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。

IP地址::={<网络号>,<主机号>}

8×4标识(1字节×4)

$$ 2^{32}=4294967296 $$

同一个局域网 前面的网络号的一样的,比如:222.1.3

分类的IP地址

概述

ABC类123字节010110

image-20210810145845073

特殊IP地址

image-20210810150036307

IP=网络号+主机号

if(网络号==0)本网下的主机号主机

if(主机号==0)表示一个网络

if(主机号==1)网络号下的所有主机

私有IP地址

用于公司,单位,学校等

image-20210810151037283

路由器对目的地址是私有IP地址的数据报一律不进行转发

网络地址转换NAT

专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址

WAN端:广域网端

LAN端:局域网端

image-20210810154411816

例子:A要给B发送数据

A发送数据,在传输层:LAN源IP地址+目的IP+端口号

到NAT路由器:替换源IP地址WAN和端口号

最大可用网络数目

image-20210810151602045

子网划分和子网掩码

设置背景

如果一个公司买一个网段,如果网络号的位数较短,但没有那么多设备,容易造成浪费,子网划分就是为了解决这个问题的,把IP地址分为三段,一段是网络号,一段是设备号,一段是主机号。

子网掩码:将子网掩码的地址转为二进制数之后,前面1的个数即为网络号+主机号的位数。

img

比如:子网掩码为255.255.255.240  IP地址为172.20.10.8

转为二进制就是11111111 11111111 11111111 11110000

一共32位,28位为1。

然后将IP地址转换为二进制:

10101100 00010100 00001010 00001000

前28位为:10101100 00010100 00001010 0000xxxx

如果另一个IP的前28位数也是如此,那么就是同网段

那么网段二进制是从10101100 00010100 00001010 00000000到10101100 00010100 00001010 00001111

对应十进制的IP范围为:172.20.10.0-172.20.10.15

子网掩码的作用:将某个IP地址划分成网络地址主机地址两部分

分类的IP地址的弱点:

①IP地址空间的利用率有时很低

②两级IP地址不够灵活

image-20210810160245643

子网划分

image-20210810161121828

145.13为网络号

子网掩码

目的就是找到主机号的位数

image-20210810161933454

对于三级IP地址:网络号+子网号+主机号

把主机号对应的位数全转换为0,把对应的网络号和子网号的位数全部转换为1,即为子网掩码

将三级IP地址与子网掩码的二进制数的对应位置作与运算,即可算出子网的网络地址。

习题

image-20210810163507548

首先广播分组的主机号为255,

其次子网掩码为255.255.252.0

252对应是11111100(6个连续的1),说明前8+8+6=22位为网络号+子网号

那么目的地址为:网络号+子网号+主机号(0)

IP地址180.80.77.55的前16位为180.80,77对应的二进制数为01001101,前6位为010011->76,因此子网掩码为

180对应的二进制数+80对应二进制数+010011+11 11111111(主机号的长度)

即180.80.79.255

路由表中的内容:

①目的网络地址

②目的网络子网掩码

③下一跳地址

路由器转发分组算法

①提取目的IP地址

②是否直接交付(现在连的路由器的网络中有目的通信子网)即 目的地址+子网掩码 是否有子网与其对应

③特定主机路由

④检测路由表中有无路径

⑤默认路由0.0.0.0

⑥丢弃,报告转发分组出错。

无分类编址CIDR

(Classless Inter-Domain Routing,无分类域间路由)

同一公司,不同部门的,可以设置变长子网掩码来控制不同部门的设备数

特点

1.消除了传统的A类,B类和C类地址以及划分子网的概念。

网络前缀+子网号

CIDR记法:IP地址后加上“/”,然后写上网络前缀的位数。eg.128.14.30.0/20

2.融合子网地址和子网掩码,方便子网划分

CDIR把网络前缀都相同的连续的IP地址组成一个"CIDR地址块"。

eg. 128.14.30.0/20

二进制:1000000 00001110 00100011 00000111

最小地址128.14.32.0-128.14.47.255

地址掩码(子网掩码):11111111 11111111 11110000 00000000->255.255.240.0

构成超网

将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。

方法:将网络前缀缩短

image-20210811100711101

为了使路由器转发表内容尽可能的少,将网络1网络2合一起

网络1:206.1.0.0-206.1.127.255

网络2:206.1.128.0-206.1.255.255

范围则是:206.1.0.0-206.1.255.255,前缀可以缩短到16

最长前缀配

使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。

image-20210811102217191

ARP协议(获取目的地址的MAC物理地址)

(Address Resolution Protocol,地址解析协议)

发送数据的过程

1号和3号通信:同一网段内

image-20210811143855622

ARP高速缓存存的是同一局域网络内的IP于MAC映射

1和5号通信:不同网段和路由器

先检查1和5的IP是否在同一网段,如果不是同一网段,直接跳到路由器IP6端口并返回MAC6

然后数据链路层为 FCS 1 IP1 IP5 MAC1 MAC6

路由器再进行解封装和封装  数据链路层为 FCS 1 IP1 IP5 MAC7  MAC8(点对点ppp协议,MAC8全1)

然后就路由器再解封装和封装 数据链路层为 FCS 1 IP1 IP5 MAC9 MAC5 其中MAC5是利用ARP请求分组得到的。

image-20210811150408829

特点

由于在实际网络的连路上传送数据帧数据时,最终必须使用MAC地址。

ARP协议:完成主机或路由器IP地址到MAC地址的映射。(解决下一条走哪的问题)

使用过程:

①检查ARP高速缓存,有对应表则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组

②同一局域网的所有主机都能收到该请求,目的主机收到请求后会就向源主机单播一个ARP响应分组,源主机收到后将映射写入ARP缓存(10-20min更新一次)

ARP协议的4种典型情况

1.主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;

2.主机A发送给另一网络上的主机B:用ARP找到本网络上的一个路由器(网关)的硬件地址;

3.路由器发给本网络的主机A:用ARP找到主机A的硬件地址;

4.路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。

ARP协议自动运行

DHCP协议(主机设备通过DCHP分配地址)

(Dynamic Host Configuration Protocol,动态主机配置协议)

主机如何获得IP地址

静态配置:IP地址 子网掩码 默认网关(路由器接口的IP地址)

动态配置:DHCP服务器->交换机->主机

特点

DHCP协议是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP

DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称和IP地址,允许地址重用(移动设备退出网络IP地址收回),支持移动用户加入网络,支持在用地址续租

工作流程

image-20210811153924641

ICMP协议(出现差错/异常发送ICMP报文)

(Internet Control Message Protocol,网际控制报文协议)

image-20210811154350972

ICMP协议支持主机或路由器:

差错(或异常)报告->发送特定的ICMP报文

image-20210812094544125

ICMP差错报告报文

1、终点不可达:路由器或主机不能交付数据报 即无法交付。

2、源点抑制:拥塞丢弃数据

3、时间超过:当路由器收到的生存时间TTL=0的数据报时,除了丢弃该数据报外,还要像源点发送时间超过报文 。

4、参数问题:当路由器或者目的主机首部字段出问题的时候。

5、改变路由(重定向):路由器把改变路由报文发送给主机。

不应该发送ICMP差错报文的情况

1、对ICMP差错报告报文不再发送ICMP差错报告报文

2、对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文

3、对具有组播地址(1对多)的数据报都不发送ICMP差错报告报文

4、对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。

ICMP询问报文

1、回送请求和回答报文:测试目的站是否可达以及了解其相关状态

2、时间戳请求和回答报文:用来进行时钟同步和测量时间。

ICMP的应用

PING 测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。

Tranceroute 跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文

4.4 IPv6

为什么有IPv6

32位IPv4地址空间已经分配殆尽

改进首部格式->快速处理/转发数据报

支持QoS:为网络提供更好的通信

IPv6数据报格式

image-20210813091432943

版本为协议版本,总是6

优先级:数据报的类别和优先级(是否先对本数据报进行处理)

流标签:所有属于同一个流的数据报都具有同样的流标签

有效载荷长度:有效载荷部分的大小=扩展首部+数据

扩展首部:指向下一个扩展首部(类似链表)有效载荷内有三个扩展首部,扩展首部三就是指向的数据部分

跳数限制:相当于IPv4的TTL

Pv6与IPv4对比

只关注粗体部分

1.IPv4将地址从32位扩大到128位

2.IPv6将IPv4校验和字段彻底移除,以减少每跳的处理时间

3.IPv6将IPv4的可选字段移除首部,变成了扩展首部,成为灵活的首部格式,路由器通常不检查扩展首部,提高了路由器处理效率。

4.IPv6支持即插即用,自动配置,不需要DHCP协议。

5.IPv6首部长度必须是8B整数倍,IPv4首部是4B整数倍。

6.IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。

7.ICMPv6:附加报文类型“分组过大”。

8.IPv6支持资源的预分配,支持实时影像等要求,保证一定的带宽和时延的应用。

9.IPv6取消了协议字段,改成了下一个首部字段。

10.IPv6取消了总长度字段,改用有效载荷长度字段。(IPv6首部长度固定40B )

11.IPv6取消了服务类型字段

IPv6地址表示形式

4位16进制数=2^16

8 个4位16进制数=2^128

image-20210813094333228

IPv6基本地址类型

单播 一对一通信 可做源地址+目的地址
多播 一对多通信 可做目的地址
任播 一对多中的一个通信(给任播组内最近一台发送数据报) 可做目的地址

IPv6向IPv4过渡的策略

双栈协议:在一台设备同时启用IPv4协议栈和IPv6协议栈

隧道技术:隧道协议将其他协议的数据帧或包重新封装然后通过隧道发送。

image-20210813095105747

知识总结

image-20210813095131112

4.5 路由算法与路由协议

路由算法

最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

路由算法:

①静态路由算法(非自适应路由算法)管理员手工配置路由信息。

特点:简便可靠,适用于负荷稳定、拓扑变化不大的网络中。

​ 路由更新慢,不使用大型网络。

②动态路由算法(自适应路由算法)路由器间彼此交换信息,按照路由算法优化出路由表项。

特点:路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。

​ 算法复杂,增加网络负担。

动态路由算法:

①全局性:链路状态路由算法 OSPF

​ 所有路由器都掌握完整的网络拓扑和链路费用信息。

②分散性:距离向量路由算法 RIP

​ 路由器只掌握物理相连的邻居及链路费用。

分层次的路由选择协议

原因:

①因特网规模很大

②许多单位不想让外界知道自己的路由选择协议,但还想连入因特网

自治系统AS:将庞大的互联网分成不同的自治系统,自治系统内部路由相互连通,使用其规定的协议,自治系统外部使用自己的协议,内外都不知道各自的协议。

image-20210813102251005

路由选择协议:

内部网关协议IGP:一个AS内使用的 RIP OSPF

外部网关协议EGP: AS之间使用的 BGP

RIP协议与距离向量算法

内容

RIP是一种分布式的基于距离向量的路由选择协议,特点是简单。

RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离纪录。

image-20210813145733649

距离:通常为“条数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器条数+1.

RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达

RIP协议只适用于小互联网

RIP协议的特点

1.仅和相邻路由器交换信息。

2.路由器交换的信息是自己的路由表。

3.每30秒交换一次路由信息,然后更新路由表。如果超过180s没收到邻居通告,判定邻居没了,更新自己路由表。

路由器刚开始工作时,只知道直接连接的网络的距离(为1),然后和自己邻居交换并更新路由信息。

经过多次更新后,所有路由器最终都会知道到达本自治系统的任何一个网络的最短距离和下一条路由器的地址。

距离向量算法

1.修改相邻路由器发来的RIP报文中的所有表项。地址改为相邻路由器的地址X,表中的距离都+1。先修改表,还未填入。

2.本路由表中没有对应网络net),直接把该项目填入路由表。

如果已经有对应网络net,就查看到下一跳的地址,如果就是X,将最新的距离填入。

如果不是X,比较下一跳的地址和X的地址哪一个到net的距离近。

3.如果180s还没收到相邻路由器X的路由表,把X记为不可达,距离设置为16.

总结就是:

距离+1 下一跳路由器改为邻居

无目的网络就添加

有目的网络看下一跳路由器是否相同

相同则更新距离,不同则比较距离最短,然后更新

R6的路由器表
目的网络 距离 下一跳路由器
Net2 3 R4
Net3 4 R5
... ... ...
R4的路由器表
目的网络 距离 下一跳路由器
Net1 3 R1
Net2 4 R2
Net3 1 直接交付

问怎么更新R6?

首先先改R4的表

R4的路由器表修改版
目的网络 距离 下一跳路由器
Net1 4 R4
Net2 5 R4
Net3 2 R4

R6无Net1直接加入,更新Net2,修改Net3

R6的路由器表更新版
目的网络 距离 下一跳路由器
Net2 5 R4
Net3 2 R4
Net1 4 R4

RIP是应用层协议,使用UDP传送数据。

一个RIP报文最多可包括25个路由,如果超过,必须再用一个RIP报文传送。

OSPF协议与链路状态算法

开放最短路径优先OSPF协议:“开放“指的是不受某一厂商控制,是公开发表的:最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF。

OSPF最主要的特征就是使用分布式的链路状态协议。

OSPF的特点

1.和相邻路由器发送信息 相邻的又给相邻的发 广播

2.发送的信息是与本路由器相邻的所有路由器的链路状态(本路由器的相邻路由器,以及该链路的代价--费用、距离、时延、带宽等)

3.只有当链路状态发生变化时,路由器才向所有路由器发送此信息。

链路状态路由算法

1.每个路由器发现它的邻居结点(每隔10s发送HELLO问候分组),并了解邻居结点的网络地址

2.设置到它的每个邻居的成本度量metric

3.构造DD数据描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息

4.如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或是更新的,则发送LSR链路状态请求分组,请求自己没有的和比自己更新的信息

5.收到邻站的LSR分组后, 发送LSU链路状态更新分组进行更新

6.更新完毕后,邻站返回一个LSAck链路状态确认分组进行确认

只要一个路由器的链路状态发生变化:

5.泛洪发送LSU链路状态更新分组进行更新

6.更新完毕后,其他站点返回一个LSAck链路状态确认分组进行确认

7.使用Dijkstra根据自己的链路状态数据库构造到其他结点间的最短路径

OSPF的区域

为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。

每个区域都有一个32位的区域标志附(用点分十进制表示)

区域也不能太大,路由器个数最好不要超过200个

image-20210813165759879

OSPF其他特点

1.每隔30min,要刷新一次数据库中的链路状态。

2.当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。

3.OSPF不存在坏消息传的慢的问题,它的收敛速度很快。

BGP协议

外部网关协议EGP AS之间使用的

BGP的特点

和谁交换?与其他AS邻站BGP发言人交换信息。

交换什么?交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。

多久交换?发生变化时更新有变化的部分。

BGP支持CIDR。

BGP刚刚运行时候,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。

BGP协议交换信息的过程

BGP所交换的网络可达性信息就是要到达某个网络所要经过的一系列AS。

交换的内容就是一系列路径。

BGP是应用层协议,借助TCP传送。

BGP-4的四种报文

1.OPEN报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方

2.UPDATE报文:通告新路径或撤销原路径。

3.KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性;也作为OPEN的确认。

4.NOTIFICATION(通知)报文:报告先前报文的差错;也被用于关闭连接(TCP)。

三种路由协议比较

image-20210813175815136

4.6 IP组播

IP数据报的三种传输方式

单播

用于发送数据包到单个目的地。是一种点对点的传输方式。

广播

发送数据包到同一广播域或子网内的所有设备的一种数据传输方式。是一种点对多点传输方式。

组播(多播)

当网络中的某些用户需要特定数据时,组播数据发送者仅需发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点的传输方式。

IP组播地址

IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求注意的相同标识)

组播地址范围为224.0.00~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用做分组的目的地址。源地址总是单播地址

1.组播数据报也是“尽最大努力交付”,不提供可靠交付,应用UDP。

2.对组波数据报不产生ICMP差错报文

3.并非所有D类地址都可以作为组播地址。

硬件组播

image-20210815152636906

IGMP协议

IGMP协议让路由器知道本局域网内是否有主机。

ROUND1:

某主机要加入做组播组时,该主机向源主机的组播地址发送IGMP报文,声明自己想成为该组成员。

源主机收到IGMP报文后,要利用组播路由选择协议把这组成员关系发送给因特网上的其他组播路由器。

ROUND2:

本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。(路由器看局域网内是否有组播组成员)

只要有一个主机对某个组播组响应,那么组播路由器就认为这个组是活跃的;如果几次探询无响应,组播路由器就不再把这组的成员关系发送给其他组的组播路由器。

组播路由选择协议

  • 找出以源主机为根结点的组播转发树(构造树可以避免在路由器之间转圈)

  • 不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树(树根不同)

常用的三种算法

  • 基于距离-向量的路由选择

  • 基于链路状态的路由选择

  • 协议无关的组播(稀疏/密集)

    建立转发树是使用单播数据报与远程路由器联系,不需要使用相同的单播路由选择协议

    稀疏:一个组播组内的主机离得远;密集:一个组播组内的主机离得近

4.7 移动IP

相关术语

移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨域不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。

移动节点:具有永久IP地址的移动设备。

归属代理(本地代理):一个移动结点拥有的就“居所”称为归属网络,在归属网络中韩代表移动节点执行移动管理功能的实体叫做归属代理。

外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。

永久地址(归属地址/主地址)移动站点在归属网络中的原始地址。

转交地址(辅地址):移动站点在外部网络使用的临时地址。

通信过程

image-20210816094305041

A从公司(本地地址)出差去分公司(外部代理),到分公司后第一次打招呼(首次和外部代理通信),

外部代理会获得A的MAC物理地址,并且给A分发一个临时的 转交地址,A把转交地址传给本地代理。

如果B给A发送消息,如果A不在本地代理,那么本地代理将会截获数据,然后把数据再封装转发给外部代理。

A如果移动到下一个网络:

①在新的外部代理登记注册一个转交地址

②新外部代理给本地代理发送新的转交地址(覆盖旧的转交地址)

③通信

4.8 网络层设备

路由器

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。

image-20210816095356034

输入端口处理

image-20210816095943597

输出端口处理

image-20210816100104906

路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因

三层设备的区别

路由器:可以互联两个不同网络层协议的网段

网桥:可以互联两个物理层和链路层不同的网段。

集线器:不能互联两个物理层不同的网段。

image-20210816100421885

路由表与路由转发

路由表根据路由选择算法得出的,主要用途是路由选择,总用软件来实现。

image-20210816100746567

转发表由路由表等待,可以用软件实现,也可以用特殊的硬件来实现。

转发表必须包含完成转发功能所必须的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。

第5章 传输层

5.1传输层概述

只有主机才有的层次

为应用层提供通信服务,使用网络层的服务

功能

1.传输层提供进程和进程之间的逻辑通信。

2.复用(一家人每人写一封信共同送邮局)和分用(邮局的回信分发给家里的每一个人)

3.传输层对收到的报文进行差错检测。

4.传输层有两种协议。

传输层的两个协议

传输层有两个好兄弟

大哥TCP和二弟UDP

大哥靠谱,二弟不靠谱

面向连接的传输控制协议TCP:

传送数据前必须建立连接,数据传送结束后要释放连接。

不提供广播或者多播服务。

由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:

确认、流量控制、计时器以及链接管理等。

可靠,面向连接,时延大,适用于大文件

无连接的用户数据报协议UDP:

传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。

不可靠,无连接,时延小,适用于小文件

传输层寻址与端口

复用:应用层所有的应用进程都可以通过传输层再传输到网络层。

分用:传输层从网络层收到数据后交付指明的应用进程

端口:传输层的SAP,标识主机中的应用进程。

端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。

端口号的长度是16bit,能表示65536个不同的端口号。

image-20210816151324934

image-20210816151439704

5.2 UDP(User Detagram Protocol)协议

UDP只在IP数据报服务至上增加了很少功能,即复用分用和差错检测功能。

特点

1.UDP是无连接的,减少开销和发送数据之前的时延。

2.UDP使用最大努力交付,即不保证可靠交付

3.UDP是面向报文的,适合一次性传输少量数据的网络应用。

image-20210816152158464

4.UDP无拥塞控制,适合很多实时应用。

5.UDP首部开销小,8B,TCP 20B

UPD首部格式

image-20210816152616307

UDP校验

伪首部只有在计算检验和的时候才出现,不会向下传送也不会向上递交。

image-20210816153029534

image-20210816153432294

发送端:

1.添加伪首部

2.全0填充检验和

3.全零填充数据部分,UDP数据报的长度应该是4B的整数倍,比如数据长度是7B,需要填1B来补0(填充的部分仅用来才加计算)

4.伪首部+首部+数据部分采用二进制求和得出反码(16bit为一段,依次二进制相加)

5.反码填入检验和字段

6.去掉伪首部然后发送

接收端:

1.填上伪首部

2.伪首部+首部+数据采用二进制求和后得出反码

3.如果反码的结果全为1则无差错

5.3 TCP(Transmission Control Protocol)协议

特点

1.TCP是面向连接(虚连接)的传输层协议。

2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。

3.TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重

4.TCP提供全双工通信

发送缓存:准备发送的数据&已发送但尚未收到确认的数据

接收缓存:按序到达但尚未被接受应用程序读取的数据&不按序到达的数据

5.TCP面向字节流

**流:**流入到进程或从进程流出的字节序列。

TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。

TCP报文段首部格式

image-20210816160432705

  • 序号(32bit):传输方向上字节流的字节编号。初始时序号会被设置为一个随机初始值(ISN),之后每次发送数据时,序号值=ISN+数据在整个字节流之间的偏移。用于解决网络包乱序的问题。

    假设A->B切ISN=1024,第一段数据512字节已经到B,则第二段数据发送时序号为1024+512。

  • 确认号(32bit):接收方对发送方TCP报文段的响应,其值是收到的序号值 + 1。

    接收方收到数据存入缓存,返回确认为N,说明到N-1序号为止的所有数据已经正确收到。

  • 数据偏移(首部长度4bit):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B为单位。

  • 标志位(6bit):

    • 紧急位URG:标志紧急指针是否有效
    • 确认位ACK:表示确认号是否有效(确认报文段)。用于解决丢包问题
    • 推送位PSH:提示接收端立即从缓存区读走数据。
    • 复位位RST:表示要求对方重新建立连接(复位报文段)。
    • 同部位SYN:表示连接请求/连接接受报文(连接报文段)。
    • 终止位FIN:表示关闭连接(断开报文段)。
  • 窗口(16bit):接收窗口。用于告知对方(发送方)本方的缓冲还能接收多少字节数据。用于解决流控。

  • 检验和(16bit):接收端用CRC检验整个报文段有无损坏。

  • 紧急指针(16bit):URG=1时才有意义,指出本报文段中紧急数据的字节数,从起始序号到起始+指针。

  • 选项(长度可变):最大报文段长度MSS、窗口扩大、时间戳、选择确认...

TCP连接管理

TCP连接传输三个阶段:

连接建立->数据传送->连接释放

建立连接(三次握手)

image-20210817094732891

图中SYN是同步位,seq是第一个字节序号,ACK是确认位,ack是确认号(ACK=1时有效)

TCP连接的建立采用client-server方式,主动发起建立的应用进程叫客户,被动等待连接建立的应用进程叫服务器。

  • 一次握手(客户端发送连接请求)

    客户端发送连接请求报文段,无应用层数据。

    同步位请求连接的 SYN=1,seq=x(随机),ACK=0

    客户端调用connect发送连接请求,

    客户端->SYN-SENT

  • 二次握手(服务器发送连接确认)

    表明服务器可以收到客户端

    服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。

    SYN=1,ACK=1,seq=y(随机),ack=x+1(表示收到连接请求)

    服务端通过listen变成LISTEN状态,收到客户端连接请求,

    放入未连接队列中,listen会发送连接确认,

    服务器->SYN-RCVD

  • 三次握手(客户端发送连接确认的确认)

    表明客户端可以收到服务器

    客户端为TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。

    SYN=1,ACK=1,seq=x+1,ack=y+1(表示收到二次握手的确认)

    客户端的connect返回请求套接字(无返回则阻塞),客户端->ESTABLISHED

    connect会发送连接确认的确认,服务端接收后,服务端->ESTABLISHED,

    连接请求会被放到完全连接队列中,然后客户端就可以调用accept从完全连接队列中取出一个连接进行数据传送

【TCP 建立连接全过程解释】

  1. 客户端发送 SYN 给服务器,说明客户端请求建立连接;
  2. 服务端收到客户端发的 SYN,并回复 SYN+ACK 给客户端(同意建立连接);
  3. 客户端收到服务端的 SYN+ACK 后,回复 ACK 给服务端(表示客户端收到了服务端发的同意报文);
  4. 服务端收到客户端的 ACK,连接已建立,可以数据传输。
TCP 为什么要进行三次握手?

【答案一】因为信道不可靠,而 TCP 想在不可靠信道上建立可靠地传输,那么三次通信是理论上的最小值。(而 UDP 则不需建立可靠传输,因此 UDP 不需要三次握手。)

Google Groups . TCP 建立连接为什么是三次握手?{技术}{网络通信}

【答案二】因为双方都需要确认对方收到了自己发送的序列号,确认过程最少要进行三次通信。

知乎 . TCP 为什么是三次握手,而不是两次或四次?

【答案三】为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

《计算机网络(第 7 版)-谢希仁》

SYN洪泛攻击

SYN洪泛攻击发生在传输层,这种方式利用TCP协议三次握手的特性。

攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据报,而当服务器返回ACK后,攻击者就不对其进行确认,这个TCP连接将处于挂起态 ,也就是半连接状态,服务器收不到再确认的话,还会重复发送ACK非攻击者。这样更加浪费服务器资源。攻击者会对服务器发送这种大量TCP连接,由于确认的确认总是收不到,服务器的这些TCP连接会因为挂起态消耗CPU和内存,最后可能死机。

**总结:**也就是说攻击者发送大量TCP请求,在服务器确认后,攻击者的这些主机都不发送确认的确认,导致服务器疯狂发送ACK给这些攻击主机,最终导致服务器CPU和内存消耗殆尽。

TCP连接释放(四次挥手)

参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的“资源”(缓存和变量)将被释放。

image-20210817095032971

  • 一次挥手(客户端通知服务端终止连接)

    客户端发送一个连接释放报文段,停止发送数据,主动关闭TCP连接

    FIN=1(请求释放连接),seq=u(无数据,仅用序号标识报文段)

    客户端->FIN_WAIT-1

  • 二次挥手(服务端确认客户端终止连接,进入半关闭状态)

    服务端回送一个确认报文段,客户到服务器这个方向的连接就释放了——半关闭状态(客户端停止发送数据,服务器端还在发送数据)半关闭,应用层关闭,底层还可以收发

    ACK=1,seq=v(上一报文发送到v-1),ack=u+1(已收到u,期望客户端从u+1开始发送)

    服务器->CLOSE_WAIT,客户端->FIN_WAIT_2

  • 三次挥手(服务端发送完最后的数据,通知客户端终止连接)

    服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接

    FIN=1,ACK=1,seq=w(上一报文发送到w-1),ack=u+1(客户端没有发送新数据,确认号不变)

    服务器->LAST_ACK,客户端->TIME_WAIT

  • 四次挥手(客户端确认服务端终止连接)

    客户端回送一个确认报文段,再等待计时器设置的**2MSL(最长报文寿命)**后,连接彻底关闭

    ACK=1,sqe=u+1(从u+1开始发送),ack=w+1(已收到w,期待服务器端从w+1开始发送)

    服务器->CLOSED

【TCP 释放连接全过程解释】

  1. 客户端发送 FIN 给服务器,说明客户端不必发送数据给服务器了(请求释放从客户端到服务器的连接);

  2. 服务器接收到客户端发的 FIN,并回复 ACK 给客户端(同意释放从客户端到服务器的连接);

  3. 客户端收到服务端回复的 ACK,此时从客户端到服务器的连接已释放(但服务端到客户端的连接还未释放,并且客户端还可以接收数据);

  4. 服务端继续发送之前没发完的数据给客户端;

  5. 服务端发送 FIN+ACK 给客户端,说明服务端发送完了数据(请求释放从服务端到客户端的连接,就算没收到客户端的回复,过段时间也会自动释放);

  6. 客户端收到服务端的 FIN+ACK,并回复 ACK 给客户端(同意释放从服务端到客户端的连接);

  7. 服务端收到客户端的 ACK 后,释放从服务端到客户端的连接

TCP 为什么要进行四次挥手?

【问题一】TCP 为什么要进行四次挥手? / 为什么 TCP 建立连接需要三次,而释放连接则需要四次?

【答案一】因为 TCP 是全双工模式,客户端请求关闭连接后,客户端向服务端的连接关闭(一二次挥手),服务端继续传输之前没传完的数据给客户端(数据传输),服务端向客户端的连接关闭(三四次挥手)。所以 TCP 释放连接时服务器的 ACK 和 FIN 是分开发送的(中间隔着数据传输),而 TCP 建立连接时服务器的 ACK 和 SYN 是一起发送的(第二次握手),所以 TCP 建立连接需要三次,而释放连接则需要四次。

(三次握手是,客户端请求SYN,服务器收到请求,发送ACK确认同时请求向客户端发送数据SYN

四次挥手是客户端先FIN请求断开,服务器先返回ACK确认但此时服务器到客户端的连接还没有释放,等服务器发送完数据,服务器发送FIN和ACK,客户端收到FIN+ACK回复ACK)

【问题二】为什么 TCP 连接时可以 ACK 和 SYN 一起发送,而释放时则 ACK 和 FIN 分开发送呢?(ACK 和 FIN 分开是指第二次和第三次挥手)

【答案二】因为客户端请求释放时,服务器可能还有数据需要传输给客户端,因此服务端要先响应客户端 FIN 请求(服务端发送 ACK),然后数据传输,传输完成后,服务端再提出 FIN 请求(服务端发送 FIN);而连接时则没有中间的数据传输,因此连接时可以 ACK 和 SYN 一起发送。

【问题三】为什么客户端释放最后需要 TIME-WAIT 等待 2MSL 呢?

【答案三】

  1. 为了保证客户端发送的最后一个 ACK 报文能够到达服务端。若未成功到达,则服务端超时重传 FIN+ACK 报文段,客户端再重传 ACK,并重新计时。
  2. 防止已失效的连接请求报文段出现在本连接中。TIME-WAIT 持续 2MSL 可使本连接持续的时间内所产生的所有报文段都从网络中消失,这样可使下次连接中不会出现旧的连接报文段。

【TCP连接状态】

  • CLOSED:初始状态。
  • LISTEN:服务器处于监听状态。
  • SYN_SEND:客户端socket执行CONNECT连接,发送SYN包,进入此状态。
  • SYN_RECV:服务端收到SYN包并发送服务端SYN包,进入此状态。
  • ESTABLISH:表示连接建立。客户端发送了最后一个ACK包后进入此状态,服务端接收到ACK包后进入此状态。
  • FIN_WAIT_1:终止连接的一方(通常是客户机)发送了FIN报文后进入。等待对方FIN。
  • CLOSE_WAIT:(假设服务器)接收到客户机FIN包之后等待关闭的阶段。在接收到对方的FIN包之后,自然是需要立即回复ACK包的,表示已经知道断开请求。但是本方是否立即断开连接(发送FIN包)取决于是否还有数据需要发送给客户端,若有,则在发送FIN包之前均为此状态。
  • FIN_WAIT_2:此时是半连接状态,即有一方要求关闭连接,等待另一方关闭。客户端接收到服务器的ACK包,但并没有立即接收到服务端的FIN包,进入FIN_WAIT_2状态。
  • LAST_ACK:服务端发动最后的FIN包,等待最后的客户端ACK响应,进入此状态。
  • TIME_WAIT:客户端收到服务端的FIN包,并立即发出ACK包做最后的确认,在此之后的2MSL时间称为TIME_WAIT状态。

TCP可靠传输

**可靠:**保证接收方从缓存区读出的字节流与发送方发出的字节流是完全一样的。

TCP实现可靠传输的机制

1.校验

与UDP校验一样,增加伪首部

2.序号

字节为单位,每个字节占用一个序号

序号字段指的是一个报文段第一个字节的序号

3.确认

image-20210816200421573

TCP收到后会发送确认,确认号为4,4之前的已经确认收到,可以从发送方的TCP缓存中将123删除

image-20210816200604997

如果没有收到4 5 6,确认字段仍然是4,将456再重传一次,下次的确认字段为9

4.重传

确认重传不分家,TCP的发送方在**规定的时间(重传时间)**内没有收到确认就要重传已发送的报文段。超时重传

TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间 )

发送方已经发送1,2,3,4,5,报文段

接收方收到1,返回给1的确认(确认号为2的第一个字节)

接收方收到3,返回给1的确认(确认号为2的第一个字节)

接收方收到4,返回给1的确认(确认号为2的第一个字节)

接收方收到5,返回给1的确认(确认号为2的第一个字节)

发送方收到3个对于报文段1的冗余ACK->认为2报文段丢失,重传2号报文段 快速重传

冗余ACK(冗余确认)

每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。

TCP流量控制

定义

流量控制:让发送方慢点,要让接收方来得及接收。

TCP利用滑动窗口机制实现流量控制。

在通信过程中,接收方根据自己接收缓存的大小,童泰调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文的窗口字段将rwnd通知发送方),发送方的发送窗口大小取 接收窗口和rwnd和拥塞窗口cwnd的最小值

过程

A向B发送数据,连接建立时,B告诉A:“我的rwnd=400字节”,设每一个报文段100B,报文段序号初始值为1

image-20210816210056428

刚开始主机A的窗口是1-400

但是201-300丢失

主机B发送确认信号ACK=1,ack=201表示201之前的确认收到,窗口大小rwnd=300

主机A滑动窗口从201之前的删掉,窗口变为201-500继续发送301-400(因为201-300已经发送过,但不知道是否丢失)401-500

过了超时重传时间,201-300会再发送一次

此时窗口为201-500全部发送,窗口也不能扩大,需要等待B的回复

主机B发送确认信号ACK=1,ack=501,rwnd=100

主机A滑动窗口为501-600,并发送501-600

主机B发送 确认信号ACK=1,ack=601,rwnd=0

不允许A再发送了(到序号600为止的数据全都收到了)

此时A一直等待B再发送rwnd的指令,如果B发送了rwnd=400,但是丢失了,那么A会一直等B,B也会一直等A,发生类似死锁的局面

为了解决这个问题(打破死锁局面):

TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。

如果持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到这个探测报文段时给出现在的窗口值。

如果窗口仍然是0,那么发送发就重新设置持续计时器。

TCP拥塞控制

定义

对资源需求的总和>可用资源

网络中许多资源同时呈现供应不足->网络性能变坏->网络吞吐量将随输入负荷增大而下降

拥塞控制:

防止过多是数据注入到网络中。全局性

拥塞控制和流量控制的区别

拥塞控制是多个主机发送到目的主机使得目的主机发生堵塞,目的主机也不能确定是哪一个源主机影响的。

流量控制是点对点的问题,是针对确定的源主机发送的目的主机发送速率过快的问题。

拥塞控制四种算法

假定:

1.数据单方向传送,而另一个方向只传送确认。

2.接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度。

发送窗口=Min接收窗口rwnd,拥塞窗口cwnd}

接收窗口:接收方根据接收缓存设置的值,并告知给发送方,反映接收方容量

拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。全局性的

慢开始和拥塞避免

image-20210816215148781

  • 纵坐标拥塞窗口,单位是一个报文段最大长度MSS,初始值为1

  • 横坐标传输轮次:发送了一批报文段并收到它们的确认的时间 也即往返时延RTT 也即开始发送一批拥塞窗口内的报文段到开始发送下一批拥塞窗口内的报文段的时间)

  • 刚开始指数增长,门限值之后线性增长,遇到拥塞,拥塞窗口减小到1,重设门限值(拥塞时窗口大小的一半),再次循环

快重传和快恢复

image-20210816215957945

  • 快重传:发送方收到3个重复(冗余)的确认(冗余ACK),就执行快重传算法,如果还收到冗余确认,进入快恢复

  • 快恢复:不需降到初始值,只需要降到新的门限值(拥塞时窗口大小的一半),再加法增大

5.4 传输层协议

  • TCP流量控制相关(参考链路层滑动窗口协议)

    发送缓存与发送窗口

    接收缓存与接收窗口

    停止等待协议(很少使用)

    GBN协议(后退N帧协议)

    SR协议(选择重传协议)

第6章 应用层

6.1 应用层概述与网络应用模型

应用层概述

应用层对应用程序的同喜提供服务。

应用层协议定义:

  • 应用进程交换的报文类型,请求/响应
  • 各种报文类型的语法,比如报文中各个字段及其详细描述
  • 字段的语义,即包含在字段中信息的含义
  • 进程何时、如何发送报文,以及对报文进行响应的规则。

应用层的功能:

  • 文件传输、访问和管理
  • 电子邮件
  • 虚拟终端

应用层的重要协议:

  • FTP
  • SMTP、POP3
  • HTTP
  • DNS

网络应用模型

客户机/服务器模型(Client/Server)

服务器:提供计算服务的设备

  1. 提供永久服务
  2. 永久性访问地址/域名

客户机:请求计算服务的主机

  1. 与服务器通信,使用服务器提供的服务
  2. 间歇性接入网络
  3. 可能使用动态IP地址
  4. 不与其他客户机直接通信

应用:Web,文件传输FTP,远程登录,电子邮件

P2P模型

image-20210817110922894

不存在永远在线的服务器,每台主机之前相互对等

每个主机既可以提供服务,也可以请求服务

任意端系统/节点之间可以直接通讯

节点间歇性接入网络

节点可能改变IP地址 动态IP

可扩展性好

网络健壮性强

6.2 域名系统(DNS)

Domain Name System

IP地址不容易记忆,通过域名来访问网站

DNS(Domain Name System,域名系统)是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 端口 53。当前,对于每一级域名长度的限制是 63 个字符,域名总长度则不能超过 253 个字符。

访问百度->htttp:://www.baidu.com->DNS服务器解析->给主机返回对应IP地址->成功访问网站

域名(大小写不区分)

www.baidu.com

com:顶级域名

baidu:二级域名

按点分割开,从右至左

  • 顶级域名

    • 国家顶级域名 cn,us,uk
    • 通用顶级域名 com(公司),net(信息),org(组织),gov(政府),int(国际组织),aero(航空),museum,,ravel
    • 基础结构域名/反向域名 arpa
  • 二级域名

    • 类别域名 ac,com,edu,gov,mil,net,org
    • 行政区域名 用于我国各省、自治区、直辖市bj ,js
    • 自己注册的域名:wyxcloud
  • 三级域名

image-20210817113346525

域名服务器

  • 根域名服务器

    一共有13个不同IP地址的根域名服务器a-m.rootservers.net

  • 顶级域名服务器

    管理该顶级域名服务器注册的所有二级域名

  • 权限域名服务器

    负责一个区的域名服务器

  • 本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。

image-20210817161302019

如果网址为baidu.com的IP为192,

在浏览器中输入baidu.com,

传送给根域名服务器,

根域名服务器传送给com域名服务器

com域名服务器得到baidu.com的IP:192返回

权限域名服务器类似于:qq.com,lol.qq.com

域名解析过程

  • 递归查询(靠别人,少用)

    本地域名服务器->根域名服务器->顶级域名服务器->权限域名服务器->递归找到最终的IP地址后再返回

  • 本地域名服务器没找到->根域名服务器(让主机直接去找对应的顶级域名服务器)->顶级域名服务器(让主机直接去找对应的权限域名服务器)

设置一个高速缓存存储最近查过的域名服务器的地址/或者存储域名应该直接到哪里来找对应的地址

6.3 文件传输协议(FTP和TFTP)

简单文件传送协议TFTP(Trivial File Transfer Protocol)

适合UDP协议以及内存小的设备

文件传送协议FTP (File Transfer Protocol)

提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。

FTP服务器和用户端:

  • FTP是基于客户/服务器(C/S)的协议。
  • 用户通过一个客户端软件连接至在远程计算机上运行的服务器程序。
  • 依照FTP协议提供服务,进行文件传送的计算机就是FTP服务端
  • 连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端

FTP工作原理:

  • 登录:ftp地址 用户名&密码(匿名登录)
  • FTP使用TCP实现可靠传输
  • FTP服务器进程可以同时为多个客户进程提供服务

服务器的进程:1个主进程和n个从属进程

img

控制进程仅传送请求(端口21),全程打开(控制信息带外传送)

数据连接传文件(端口与传输模式相关),传送文件时打开,传送完成关闭。

主动方式使用TCP 20端口,被动方式由服务器和客户端自行协商决定(端口>1024)

主动与被动方式

  1. 主动方式:客户端与服务器21号端口建立连接并发送请求和接收端口

    服务器通过数据连接端口与客户端接收端口建立连接,并传输数据

    (主动体现在服务器端会主动告知客户端的自己的数据连接端口TCP 20并建立连接)

  2. 被动方式:客户端询问服务器端数据连接端口号

FTP的传输模式

  1. 文本模式:ASCII模式,以文本序列传输数据
  2. 二进制模式:Binary模式,以二进制序列传输数据。

6.4 电子邮件(SMTP和POP3、IMAP)

信息格式

电子邮件

组成结构

image-20210817202912268

image-20210817202942393

简单邮件传送协议SMTP

  • SMTP规定了两个相互通信的SMTP进程之间应该如何交换信息。

  • 负责发送邮件的SMTP进程就是SMTP客户,负责接受邮件的进程就是SMTP服务器。

  • SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单英文文字说明)

  • TCP连接,端口号25,C/S

  • SMTP通信三个阶段:

    1. 连接建立:image-20210817203625594

    2. 邮件发送:image-20210817204047583

    3. 连接释放

      邮件发完,SMTP客户发送QUIT命令,SMTP服务器返回“221”,表示同意释放TCP连接。

  • SMTP的缺点:

    1. SMTP不能传送可执行文件或者其他二进制对象。
    2. SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。
    3. SMTP服务器会拒绝超过一定长度的邮件。

通用因特网邮件扩充MIME

image-20210817204608516

使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。

使得传输内容丰富多彩。

邮局协议POP3

image-20210817204809985

  • TCP连接,端口号110,C/S
  • POP3工作方式
    • 下载并保留在服务器内
    • 下载并删除

网际报文存取协议IMAP

  • IMAP协议比POP协议复杂。当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
  • IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)

居于万维网的电子邮件(现在日常生活中使用的)

通过使用浏览器登录电子邮箱发送邮件

image-20210817205631736

总结

image-20210817205708977

6.5 万维网(WWW)和HTTP协议

万维网概述

  • WWW(World Wide Web)是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。

  • 统一资源定位符URL(Uniform Resource Locator)

  • URL一般形式:

    <协议>://<主机>:<端口>/<路径>

    http 域名

    ftp IP地址

    比如:http://www.pku.edu.cn

完整格式:

  • 协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]

其中【访问凭证信息@;:端口号;?查询;#片段ID】都属于选填项 如:https://github.com/huihut/interview#cc

  • 通过点击超链接(http:://www.baidu.com)获取资源,这些资源通过超文本传输协议(HTTP)传送给使用者
  • 万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。
  • 万维网使用超文本标记语言HTML,使得万维网页面设计者可以很方便地从哪一个界面的连接转到另一个界面,并能够在自己的屏幕上显示出来。

超文本传输协议HTTP

  • HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

协议工作过程

image-20210817223320744

注:浏览器显示可以只下载文本部分

HTTP协议的特点

  1. 无状态(无记忆,第二次访问和第一次访问响应相同)

    Cookie,一种存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码表示,如“123456”)的访问记录

    可以利用Cookie记录访问历史,从而提供个性化服务

  2. 无连接

    HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)

HTTP协议的连接方式

  1. 非持久连接(Close)

    image-20210818092053509
  2. 持久连接(Keep-alive)

    • 非流水线式
    image-20210818092436275
    • 流水线式

      同时发送多个HTTP请求报文资源

HTTP协议报文结构

image-20210818093045066

HTTP报文是面向文本的,因此在报文中的每一个字段都是一些ASCII码串。

  • 请求报文

    image-20210818093350977
    • 请求行(开始行)

      • 方法:一些命令,说明对请求对象的操作
      • URL:统一资源定位符
      • 版本:HTTP协议的版本
      • CRLF:回车换行,标识开始行结束,首部行开始
    • 首部行(说明浏览器、服务器和报文主体的一些信息)

    • 某浏览器发出的请求报文

      image-20210818094517483

      GET方法(获取)

      URL=index.html

      版本=HTTP/1.1

      Host指的是URL存在于这个的网站的上面

      Close:非持续连接

      Cookie:用户识别码是123456

  • 响应报文

    image-20210818093450871
    • 状态码

      image-20210818095014870

      202 Accepted

      301 Moved Permanently

      404 Not Found

      短语(状态码的具体含义,如Not Found)

      首部行(说明浏览器、服务器和报文主体的一些信息)

      实体主体(有些响应报文不用)