一、基本概念
1. 基础知识
计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
计算机网络是互连的、自治的计算机集合。(互连-互联互通|通信链路/自治-无主从关系)
功能:数据通信(连通性)、资源共享(硬件/软件/数据)、分布式处理(多台计算机各自承担同一工作任务的不同部分)、提高可靠性(替代机)、负载均衡......
组成:硬件、软件、协议。工作方式(边缘部分C/S和P2P、核心部分)。功能组成(通信子网、资源子网)。
分类:
按分布范围分:广域网WAN(交换技术)、城域网MAN、局域网LAN(广播技术)、个人区域网PAN
按使用者分:公用网、专用网
按交换技术分:电路交换、报文交换、分组交换
按拓扑结构分:总线型、星型、环型、网状型(常用于广域网)
按传输技术分:广播式网络(共享公共通信信道)、点对点网络(使用分组存储转发和路由选择机制)
2. 性能指标
速率:数据率或称数据传输率或比特率(比特 1/0 位)。
连接在计算机网络上的主机在数字信道上传送数据位数的速率。(单位是b/s,kb/s,Mb/s,Gb/s,Tb/s)
与存储容量区分开:1Byte(字节)=8bit(比特)。(单位是B,KB,MB,GB,TB)
带宽:原本指某个信号具有的频带宽度,即最高频率与最低频率之差,单位是赫兹(Hz)。
计算机网络中,带宽用来表示网络的通信线路传送数据的能力,通常是指单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。单位是“比特每秒”,b/s,kb/s,Mb/s,Gb/s。网络设备所支持的最高速度
吞吐量:表示在单位时间内通过某个网络(或信道、接口)的数据量。单位b/s,kb/s,Mb/s等。吞吐量受网络的带宽或网络的额定速率的限制。
时延:指数据(报文/分组/比特流)从网络)或链路)的一端传送到另一端所需的时间。也叫延迟或迟延。单位是s。
高速链路:发送速率(信道带宽)提高。
时延带宽积:时延带宽积又称为以比特为单位的链路长度。即“某段链路现在有多少比特”。(容量)
时延带宽积(bit)=传播时延(s)×带宽(b/s)
往返时延RTT:从发送方发送数据开始,到发送方收到接收方的确认(接收方收到数据后立即发送确认),总共经历的时延。(RTT越大,在收到确认之前,可以发送的数据越多)
RTT包括:往返传播时延=传播时延*2、末端处理时间
利用率:信道利用率=有数据通过时间/(有+无)数据通过时间、网络利用率(信道利用率加权平均值)。
利用率接近1,时延急剧增大(类比车流量,堵车)。
3. 分层结构
实体:第n层中的活动元素称为n层实体。同一层的实体叫对等实体。
协议:为进行网络中的对等实体数据交换而建立的规则、标准或约定称为网络协议。【水平】
包含了语法(规定传输数据的格式)、语义(规定所要完成的功能)、同步(规定各种操作的顺序)。
接口(访问服务点SAP):上层使用下层服务的入口。
服务:下层为相邻上层提供的功能调用。【垂直】
SDU服务数据单元:为完成用户所要求的功能而应传送的数据。
PCI协议控制信息:控制协议操作的信息。
PDU协议数据单元:对等层次之间传送的数据单位。
SDU + PCI = PDU
3.1 OSI参考模型
应用层:所有能和用户交互产生网络流量的程序。
文件传输(FTP)、电子邮件(SMTP)、万维网(HTTP)
表示层:用于处理在两个通信系统中交换信息的表示方式(语法和语义)。
数据格式变换翻、数据加密解密、数据压缩和恢复
会话层:向表示层实体/用户进程提供建立连接并在连接上有序地传输数据(建立同步|SYN)。
功能:建立、管理、终止会话;使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步(适用于传输大文件)。
传输层:负责主机中两个进程的通信,即端到端的通信。
传输单位是报文段或用户数据报。
功能:可靠传输、不可靠传输;差错控制;流量控制;复用分用
TCP、UDP
网络层:主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。
网络层传输单位是数据报。
功能:路由选择;流量控制;差错控制;拥塞控制
主要协议:IP、IPX、ICMP、lGMP、ARP、RARP、OSPF
数据链路层:主要任务是把网络层传下来的数据报组装成帧。
数据链路层/链路层的传输单位是帧。
功能:成帧(定义帧的开始和结束);差错控制(帧错+位错);流量控制;访问/接入控制(控制对信道的访问)
主要协议:SDLC、HDLC、PPP、STP
物理层:主要任务是在物理媒体上实现比特流的透明传输。
物理层传输单位是比特。
透明传输:指不管所传数据是什么样的比特组合,都应当能够在链路上传送。
功能:定义接口特性;定义传输模式(单工、半双工、双工);定义传输速率;比特同步;比特编码
主要协议:Rj45、802.3
3.2 TCP/IP模型
应用层、传输层、网际层、网络接口层
5层参考模型:应用层(报文)、传输层(报文段)、网络层(数据报)、数据链路层(帧)、物理层(比特)
二、物理层
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层主要任务:确定与传输媒体接口有关的一些特性,定义标准。
- 机械特性:定义物理连接的特性,规定物理连接时所采用的规格、接口形状、
引线数目、引脚数量和排列情况。 - 电气特性:规定传输二进制位时,线路上信号的
电压范围、阻抗匹配、传输速率和距离限制等。 - 功能特性:指明某条线上出现的
某一电平表示何种意义,接口部件的信号线的用途。 - 规程特性:(过程特性)定义各条物理线路的
工作规程和时序关系。
1. 通信知识
通信的目的是传送消息。
1.1 数据信道
数据:传送信息的实体,通常是有意义的符号序列。
信号:数据的电气/电磁的表现,是数据在传输过程中的存在形式。数字信号(代表消息的参数取值是离散的)、模拟信号(代表消息的参数取值是连续的)。
信源:产生和发送数据的源头。
信宿:接收数据的终点。
信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含一
条发送信道和一条接收信道。
三种通信方式:单工通信、半双工通信、全双工通信
两种数据传输方式:串行传输(速度慢,费用低,适合远距离)、并行传输(速度快,费用高,适合近距离)用于计算机内部数据传输。
1.2 码元
码元是指用一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度。当码元的离散状态有M个时(M大于2),此时码元为M进制码元。
1码元可以携带多个比特的信息量。例如,在使用二进制编码时,只有两种不同的码元,一种代表0状态,另一种代表1状态。
1.3 速率|波特|带宽
速率也叫数据率,是指数据的传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。
- 码元传输速率(1s传输多少个码元):别名码元速率、波形速率、调制速率、符号速率等,它表示单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化的次数),单位是
波特(Baud)。1波特表示数字通信系统每秒传输一个码元。这里的码元可以是多进制的,也可以是二进制的,但码元速率与进制数无关。1Baud=X码元/s - 信息传输速率(ls传输多少个比特):别名信息速率、比特率等,表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒(b/s)。
关系:若一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为M×n bit/s。
带宽:表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,常用来表示网络的通信线路所能传输数据的能力。单位是b/s。
1.4 奈氏准则和香农定理
影响失真程度的因素:码元传输速率、信号传输距离、噪声干扰、传输媒体质量。
码间串扰:接收端收到的信号波形失去了码元之间清晰界限的现象。
奈氏准则:在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰,极限码元传输速率为2W Baud,W是信道带宽,单位是Hz。
理想低通信道下的极限数据传输率=2Wlog2^V (b/s)。V - 几种码元/码元的离散电平数目。
信噪比=信号的平均功率/噪声的平均功率,常记为S/N,并用分贝(dB)作为度量单位,即:
信噪比(dB)=10log10^(S/N)
香农定理:在带宽受限且有噪声的信道中,为了不产生误差,信息的数据传输速率有上限值。
信道的极限数据传输速率=Wlog2^(1+S/N)(b/s)
1.5 编码与调制
基带信号:将数字信号1和0直接用两种不同的电压表示,再送到数字信道上去传输(基带传输)。
来自信源的信号,直接表达了要传输的信息的信号,比如我们说话的声波就是基带信号、网卡。
宽带信号:将基带信号进行调制后形成的频分复用模拟信号,再传送到模拟信道上去传输(宽带传输)。把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输(即仅在一段频率范围内能够通过信道)。
数据->数字信号:编码
数据->模拟信号:调制
数字数据编码为数字信号:非归零编码【NRZ】、曼彻斯特编码、差分曼彻斯特编码、归零编码【RZ】、反向不归零编码【NRZI】、4B/5B编码。
数字数据调制为模拟信号:调幅2ASK、调频2FSK、调相2PSK、调幅+调相(QAM)。
模拟数据编码为数字信号:脉码调制(PCM)
抽样、量化、编码
模拟数据调制为模拟信号:
2. 传输介质
传输介质也称传输媒体/传输媒介,它就是数据传输系统中在发送设备和接收设备之间的物理通路。
传输媒体并不是物理层。传输媒体在物理层的下面,因为物理层是体系结构的第一层,因此有时称传输媒体为
0层。
导向性传输介质 → 电磁波被导向沿着固体媒介(铜线/光纤)传播。
双绞线、同轴电缆、光纤
非导向性传输介质 → 自由空间,介质可以是空气、真空、海水等。
无线电波、微波、红外线、激光
3. 物理层设备
中继器的功能:对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度。【再生数字信号】
5-4-3规则:5个网段4个设备3个电脑
集线器的功能:对信号进行再生放大转发,对衰减的信号进行放大,接着转发到其他所有(除输入端口外)处于工作状态的端口上,以增加信号传输的距离,延长网络的长度。不具备信号的定向传送能力,是一个共享式设备。
三、数据链路层(待补)
四、网络层(待补)
五、传输层
为应用层提供通信服务,使用网络层的服务。
传输层提供进程和进程之间的逻辑通信、复用和分用、传输层对收到的报文进行差错检测。
面向连接的传输控制协议TCP:传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。【可靠,面向连接,时延大,适用于大文件】
无连接的用户数据报协议UDP:传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。【不可靠,无连接,时延小,适用于小文件】
复用:应用层所有的应用进程都可以通过传输层再传输到网络层。
分用:传输层从网络层收到数据后交付指明的应用进程。
端口号长度为16bit,能表示65536个不同的端口号。
- 熟知端口号:给TCP/IP最重要的一些应用程序,让所有用户都知道。0~1023
- 登记端口号:为没有熟知端口号的应用程序使用的。1024~49151
- 客户端使用:仅在客户进程运行时才动态选择的端口号。49152~65535
在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程。
套接字Socket=(主机IP地址,端口号)
1. UDP
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP的主要特点:
- UDP是
无连接的,减少开销和发送数据之前的时延。 - UDP使用最大努力交付,即
不保证可靠交付。 - UDP是面向报文的,适合一次性
传输少量数据的网络应用。 - UDP
无拥塞控制,适合很多头的应用。 - UDP
首部开销小,8B,TCP20B。
首部字段(8字节):
源端口号(2Byte)+目的端口号(2Byte)+UDP长度(2Byte)+UDP检验和(2Byte)
UDP长度:UDP用户数据报的整个长度(首部字段+数据字段)。
UDP检验和:检测整个UDP数据报是否有错,错就丢弃。分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。
伪首部只有在计算检验和时才出现,不向下传送也不向上递交。
17:封装UDP报文的IP数据报首部协议字段是17。
UDP长度:UDP首部8B+数据部分长度(不包括伪首部)。
在发送端:
- 填上伪首部
- 全0填充检验和字段(
先把校验和填为全零) 全0填充数据部分(UDP数据报要看成许多4B的字串接起来)- 伪首部+首部+数据部分采用
二进制反码求和 - 把
求和反码填入检验和字段 去掉伪首部,发送
在接收端:
- 填上伪首部
- 伪首部+首部+数据部分采用二进制反码求和
结果全为1则无差错,否则丢弃数据报/交给应用层附上出差错的警告。
2. TCP
- TCP是面向连接(虚连接)的传输层协议。
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是
点对点的。 - TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。【
可靠有序,不丢不重】 - TCP提供
全双工通信。【TCP缓存】- 发送缓存准备发送的数据&已发送但尚未收到确认的数据
- 接收缓存按序到达但尚未被接受应用程序读取的数据&不按序到达的数据
- TCP
面向字节流。TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。- 流:流入到进程或从进程流出的字节序列。
-
序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所
发送数据的第一个字节的序号。 -
确认号:
期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。 -
数据偏移(
首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B。 -
紧急位URG:URG=1时,标明
此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。 -
确认位ACK:ACK=1时确认号有效,在连接建立后
所有传送的报文段都必须把ACK置为1。 -
推送位PSH:PSH=1时,
接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。 -
复位RST:RST=1时,表明TcP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
-
同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。
-
终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接。
-
窗口:指的是发送本报文段的一方的接收窗口,即现在
允许对方发送的数据量。 -
检验和:检验首部+数据,检验时要加上
12B伪首部,第四个字段为6。 -
紧急指针:URG=1时才有意义,指出
本报文段中紧急数据的字节数。 -
选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认...
2.1 连接管理
连接建立->数据传送->连接释放
- ROUND 1:客户端发送
连接请求报文段,无应用层数据。
SYN=1,seq=x(随机) - ROUND 2:服务器端为该TCP连接
分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。
SYN=1,ACK=1,seq=y(随机),ack=x+1 - ROUND 3:客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。
SYN=0,ACK=1,seq=x+1,ack=y+1
SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。【解决:SYN cookie】
- ROUND 1:客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。
FIN=1,seq=u - ROUND 2:服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了――半关闭状态。
ACK=1,seq=v,ack=u+1 - ROUND 3:服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。
FIN=1,ACK=1,seq=w,ack=u+1 - ROUND 4:客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。
ACK=1,seq=u+1,ack=w+1
2.2 可靠传输
可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。
TCP实现可靠传输的机制:校验(伪首部)、序号、确认、重传
确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。【超时重传】
重传时间:TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
冗余ACK(冗余确认):每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。
例子:
发送方已发送1,2,3,4,5报文段
接收方收到1,返回给1的确认(确认号为2的第一个字节)
接收方收到3,仍返回给1的确认(确认号为2的第一个字节)
接收方收到4,仍返回给1的确认(确认号为2的第一个字节)
接收方收到5,仍返回给1的确认(确认号为2的第一个字节)
发送方收到3个对于报文段1的冗余ACK认为2报文段丢失,重传2号报文段。【快速重传】
2.3 流量控制
TCP利用滑动窗口机制实现流量控制。
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。
案例:A向B发送数据,连接建立时,B告诉A:“我的rwnd=400(字节)”,设每一个报文段100B,报文段序号初始值为1。
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。
若窗口仍然是0,那么发送方就重新设置持续计时器。
2.4 拥塞控制
出现拥塞的条件:对资源需求的总和>可用资源
网络中有许多资源同时呈现供应不足 -> 网络性能变坏 -> 网络吞吐量将随输入负荷增大而下降
拥塞控制:防止过多的数据注入到网络中。【全局性】
假定:
- 数据单方向传送,而另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度
发送窗口=Min{接收窗口rwnd,拥塞窗口cwnd}
接收窗口:接收方根据接收缓存设置的值,并告知给发送方,反映接收方容量。
拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。
慢开始|拥塞避免算法
快重传|快恢复算法