计网personal note


1.计网概念

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

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

功能

数据通信(连通性)(通信子网:网络层、数据链路层、物理层)(是点到点的通信)

资源共享(资源子网:应用层、表示层、会话层) (是端到端的通信)

​ 两个子网之间隔着传输层

主机在osi模型中有七层,而中间系统只有物理层、数据链路层、网络层三层(交换机和网桥这种甚至只有物理层、数据层两层)

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

提高可靠性

负载均衡

组成

硬件、软件、协议(核心)

边缘部分(用户可以直接使用)、核心部分(为边缘部分服务)

功能组成:从上到下分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

分类

分布范围划分:广域网WAN、城域网MAN、局域网LAN、个人区域网PAN

使用者划分:公用网(电信)、专用网(军队)

交换技术划分:电路交换、报文交换、分组交换

拓扑结构划分:总线型、星型、环型、网状型

传输技术划分:广播式网络(共享公共通信通道)、点对点网络

标准的划分

法定标准:OSI

事实标准:TCP/IP(并不是指这两种协议,而是对许多大大小小的协议的泛指)

速率 & 带宽 & 吞吐量

1.速率

速率即数据率或数据传输率、或比特(bit)率,其实也就是速度 kb/s….

存储容量是以 字节(Byte)作为单位

2.带宽

原本:指某个信号具有的频带宽度,即最高频率和最低频率之差,单位是赫兹Hz

现在:它用来表示网络通信线路传送数据的能力,通常指单位时间内从网络某一点到另外一点的“最高数据率”,单位是比特每秒(和速率一样)(其实就是表示所支持最高速率为多少)

3.吞吐量

单位时间内通过某个网络(信道、接口)的数据量,单位是 b/s……

吞吐量还受到带宽或者网络额定速率的限制

吞吐量更像瞬时速率,带宽像最大速率

时延

指数据(报文/分组/比特流)从网络(或链路)的一端传送到另一端所需要的时间,也叫做延迟或迟延,单位是秒s

分别为

发送时延(把所有数据从发送端推到信道上,发生在主机内部)=数据长度/信道带宽,高速链路指的是发送速率的提高,即带宽的提高,导致发送时延的减少

传播时延(在信道上传播一段距离所花费的时间,发生在信道上)=信道长度/电磁波速率

排队时延(等待处理)

处理时延(检错,找出口)

时延带宽积bit = 传播时延s * 带宽b/s,它又称为以比特位单位的链路长度,链路的容量

往返时延RTT:从发送方发送数据开始,到发送方收到接收方的确认经历的时延,RTT = 往返传播时延 + 末端处理时间 = 传播时延*2 + 末端处理时间

利用率

信道利用率 = 有数据通过的时间 / 总时间

链路利用率=发送延时/总用时 = 发送延时/(发送时延+2*传播时延+确认帧传输时延)

网络利用率 = 信道利用率加权平均值

分层

关于实体、协议、服务和接口:

1.实体:第n层元素称为n层实体,同层另外一端主机的实体叫对等实体

2.协议:对等实体(或多个实体)通信规则,分为语法、语义、同步(操作顺序)

3.接口:上层使用下层服务的入口

4.服务:下层为相邻上层提供功能调用(相邻,下层为上层才能为称之为服务)

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

各层功能简洁概述
  • 应用层:在所有能和用户交互产生网络流量的程序,实现协同工作的应用进程之间的通信过程控制。

  • 表示层:用于处理两个通信系统中,交换信息的表示方式(语法和语义)功能:数据格式变换(翻译)、数据加密和解密、数据的压缩和恢复

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

  • 传输层:负责主机两个进程的通信,即端到端的通信,传输单位是报文段或用户数据段。功能:

    • 可靠传输(有确认机制)、不可靠传输;

    • 差错控制;

    • 流量控制(发送速率,使用滑动窗口,比如停等协议、后退N帧的滑动窗口,选择重传的滑动窗口);

    • 拥塞控制(慢开始、拥塞避免、快重传、快恢复);

    • 复用分用(复用是多个应用层可同时使用下层运输层服务,分用是目的主机传输层把收到的信息分别交付给上面应用层中相应进程,应用:端口号)(osi面向连接,tcp/ip无连接+面向连接)

  • 网络层:把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务,网络层传输单位是数据报(osi无连接+面向连接,tcp/ip无连接),路由的选择和分组转发 + 用拥塞控制

  • 数据链路层:主要任务是把网络层传下来的数据组装成帧,同时包括流量控制和差错检测,数据链路层的传输单位是帧

  • 物理层:主要任务是在物理媒体上实现比特流的透明传输

TCP/IP的应用层:合并应用层、表示层、会话层

5层参考模型数据封装与解封装

应用层:单位:报文

传输层:单位:报文段

网络层:单位:数据报

数据链路层:单位:帧

物理层:单位:比特

香农定理

2.物理层

物理层解决如何连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体(不同厂家生产的介质),它的任务是确定传输媒体接口有关的一些特性(定义标准,类似于水晶头规格,电压范围)

定义的特性:机械特性、电气特性、功能特性、过程特性

数据通信基础知识

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

  • 信号:数据在传输过程中的存在形式

    数字信号/离散信号,计量单位是码元

    模拟信号/连续信号

  • 信源:产生和发送数据的源头

  • 信宿:接收数据的终点

  • 信道:信号传输的媒介,一般用来表示某一个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接收信道

三种通信方式
  • 单工信道:只有一个方向,仅需一条信道
  • 半双工信道:双方都可以发送和接收,但是不能同时,类似于对讲机,需要两条信道
  • 全双工信道:双方可同时收发,需要两条信道
两种数据传输方式

串行传输

并行传输

编码与调制

信道上的信号除了可以分为模拟信道和数字信道、无线信道和有线信道之外,还可以分为基带信号和宽带信号

基带信号:将数字信号1或0直接用两种不同的电压表示,再送到数字信道(在计算机中是使用数字信号,人类是模拟信号)上去传输(基带传输),基带信号最重要的一点就是来自于信源

宽带信号:将基带信号进行调制模拟后形成频分复(载波调制)用模拟信号,再传送到模拟信道上去传输(宽带传输)。载波调制(带通调制)把信号频率范围调到较高的频段以便在信道中传输

编码方式

非归零编码:高1低0,容易,但是没有检错功能,无法判断码元的开始与结束,难以同步

归零编码:1:中间高,两边中等;0:中间低,两边中等

曼彻斯特编码:1:前高后低;0:前低后高,这种方法所占频带宽度是基带宽度的两倍,所以它的数据传输速率只有调制速率的1/2

差分曼彻斯特编码:同1异0,即码元为1,则前半段半个码元和上一个码元的后半段的电平相同,0则相反,抗干扰性强于曼彻斯特编码

数字数据调制为模拟信号

调制解调器的调制:数字信号->模拟信号

  • 调幅:0没幅度,1有幅度
  • 调频:0低频,1高频
  • 调相:调成正弦波和余弦波
  • QAM正交振幅调制,相当于调幅+调向

调制解调器的解调:模拟信号->数字信号

3.数据链路层

结点:主机和路由器

网卡实现的主要功能是物理层与数据链路层的功能。

链路:网络中两个结点之间的物理通道,主要介质为双绞线、光纤等

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

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

数据链路层 负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报,它最基本的服务是将源自于网络层的数据可靠的传输到相邻结点的目标机网络层(简单来说就是加强物理层传输原始比特流的功能),将物理层提供可能出现差错的物理连接改造成为逻辑上无差错的数据链路

  • 功能一:为网络层提供:无确认无连接服务、有确认无连接服务、有确认面向连接服务(有连接一定有确认)

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

  • 功能三:组帧

  • 功能四:流量控制

  • 功能五:差错控制

封装成帧

实际上就是将网络层的ip数据报形成帧数据部分,加上帧首部,帧尾部

这样接收端在收到物理层上交的比特流后,就可以根据首尾标记进行识别

帧首部和帧尾部包含许多信息,其中有个重要作用就是:帧定界(确定帧的界限); 帧同步:接收方应当能从接收到的二进制比特流区分帧的开始和结束

四种封装成帧方法:

1.字符计数法

2.字符填充法(帧首部SOH,帧尾部EOT):为了保障字符填充的透明传输,在控制信息的前面+转义字符

3.零比特填充法(帧的首尾部都是01111110):为了保障字符填充的透明传输,中间数据部分,只要有5个1,就立刻填入一个0,简称5110方法

4.违规编码法:曼彻斯特编码都是“高-低”,所以首尾帧用“高-高”、“低-低”定界帧的起始和结束

透明传输指不管所传的数据是什么样的比特组合,都应当能够在链路上传送,因此链路层“看不见”有什么妨碍数据传输的东西(保证传输透明,传输数据的比特组合可能和某控制信息一样(比如对数据链路层进行什么操作),但是数据链路层不管它,完全把它当作一个信息直接传递)

差错控制

差错有:位错(比特位出错)和帧错(丢失、重复、失序)

差错控制:检测编码(奇偶校验码、循环冗杂码CRC)和纠错编码

冗余编码:在数据发送前,先按照某种关系加上一定的冗余位(比如余数),构成一个符合某一规则的码字后在发送,根据规则,接收端查看收到的码字是否符合原规则,从而判断对错

CRC循环冗余码:

  • 发送端:要传的数据 / 生成多项式(一个数值) = 商…..FCS冗余码(余数);最终要发送的数据为 要穿的数据 + FCS冗余码

  • 接收端:收到的数据 / 生成多项式 = 商…0 余数为0,无差错

  • 计算冗余码:(1)加0,生成多项式G(x)的阶(即生成多项式的位数-1)为r,则加r个0;(2)模2除法,同0异1

  • 余数为0,接受,不为0,丢弃

此方法只能做到对帧的无差错接收,但是不能算作“可靠传输”,因为“可靠传输”的定义是数据链路层发送什么,接收端就接收到什么,但是此方法丢弃了部分错误的,没有完全接收

数据链路层流量控制

较高发送速度和较低接收能力不匹配会出现传输错误

数据链路层的流量控制是点对点的(接收方收不下就不回复确认),传输层的流量控制是端对端的(接收端给发送端一个窗口公告)

停止等待协议:每发送完一个帧,等待对方确认再发下一个(停止等待协议类似于特殊的滑动窗口协议,但只是发送窗口和接收窗口都只有一个)

滑动窗口协议: 发送窗口指在发送端维持一段连续的,允许发送的帧的序号(正在发送的数据),相对应的是接收窗口,滑动窗口协议解决流量控制问题和可靠传输问题

  • 后退N帧协议,发送窗口大小>1,接收窗口大小=1
  • 选择重传协议,发送窗口大小>1,接收窗口大小>1

在链路层在发送过程,发送窗口和接收窗口大小固定

停止等待协议

除了比特出差错,底层还会出现丢包问题(线路、病毒等原因导致数据包的丢失)

停止等待协议重申:每发送完一个帧,等待对方确认再发下一个(停止等待协议类似于特殊的滑动窗口协议,但只是发送窗口和接收窗口都只有一个)

有差错的情况:

1.数据帧丢失或检测到帧出错

  • 每发送一个帧,启动一个超时计时器
  • 重传时间>往返传播时延RTT
  • 超时重传

注意:(1)发完一个帧后,要保留他的副本,(2)数据帧和确认帧必须编号、(3)

2.ACK丢失(确认丢失)

同上,但是接收方丢弃重复帧,重传确认帧

3.ACK迟到

仍然是超时重传,接收方丢弃重复帧,重传确认帧(当后面发送方终于等到一开始的确认帧时,直接收下并且丢弃)

协议的优点:简单,缺点:信道利用率低(发送时间Td / (发送时间Td + RTT + 确认分组时间Ta))

滑动窗口

后退N帧

发送窗口重申:发送窗口指在发送端维持一段连续的,允许发送的帧的序号(正在发送的数据)

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

后退N帧协议,发送窗口大小>1,接收窗口大小=1

累积确认:接收方不用对于每个数据帧返回确认帧,可以隔一会返回一个确认帧,它保证这个帧,以及之前的所有帧都得到了确认

超时事件:发送方会重传所有已发送但是未被确认的帧,比如再等待1号帧,但是一直等不到,等来2,3号帧,会将其丢弃,直到重传的1号帧的到来,并且继续重传刚才已经发过的2、3号帧

滑动窗口长度:窗口大小W小于帧总类的一半

选择重传协议中的滑动窗口(信道利用率高)

和后退N帧不同的是,如果帧没有按序到达,也会将之后序号的帧暂存在接收窗口

如果接收方收到的帧序号是窗口的下界(最左边窗口对应的序号),则窗向前移动到最小序号未确认帧处

超时事件:一个超时事件发生后只重传一个帧

如果收到了窗口序号外的帧(小于窗口下界,可能因为某些原因传的慢,但是已经超时重传了),就返回一个ack

滑动窗口长度:发送窗口最好等于接收窗口 ;窗口大小W小于帧总类的一半

传输数据的链路

点对点链路应用:ppp协议、广域网

广播式链路:局域网

广播信道

介质访问控制就是采取一定措施,使得两对节点之间通信(因为广播式链路,是多个点共享信道)不会发生互相干扰的情况

静态划分信道:频分复用、时分复用、波分复用、码分复用

动态分配信道(CSMA/CD包含其中):分为轮询访问介质访问控制、随机访问介质访问控制

随机访问介质访问控制:所有用户可随机发信息,发送信息时占全部带宽

CSMA/CD协议

先听再说、边听边说

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

CS:载波监听,每个站在发送数据之前以及发送数据时,都要检测一下总线上是否有其他计算机在发送数据。其实就是检测信道上电压的摆动幅值(在站点的位置检测有没有信号进来),幅值较大,则说明信道上有人在说话,就不发送,直到检测信道上空闲才发送

MA:多点接入,表示许多计算机以多点接入的方式连在一根总线上 ,其实也说明了该协议应用于总线型网络

CD:碰撞检测,“边发送边监听”,适配器边发送数据,边检测信道上信号电压变化,以判断自己发送数据时其他站是否也在发,也说明了该协议应用于半双工网络

为什么先听后还是有可能发生冲突?因为电磁波在总线上总是以有限速率进行传播,即传播时延对载波监听的影响

检测到数据帧有错误,则确定发生了碰撞和冲突,停发

只要经过 2T 时间没有检验出碰撞,就能肯定这次不会发生碰撞(T为单程端到端的传播时延)

采用截断二进制指数规避算法确定重传时机:

1.确定基本规避时间,争用期为2T,2T <= 最小帧长 / 数据传输速率

2.定义参数k,它等于重传次数,但k不超过10,k = min[重传次数, 10]

3.从离散的整数集合[0, 2^k-1]中随机取出一个数r,重传所需要退避的时间,就是r倍的基本规避时间,即2r*T

4.当重传达到16次仍不能成功,说明网络太拥挤,则抛出此帧向高层报错

为了避免帧太短导致该协议的作用无效(传短帧后才知道发生碰撞),以太网定义了最小帧长64byte = 512bit,小于此大小为无效帧

MAC层

在局域网中,硬件地址又称为物理地址或MAC地址,它是每个适配器(网卡)都有的一个全球唯一地48位二进制地址

MAC层主要功能包括数据帧的封装和卸装

MAC帧:是以以太网V2的格式

以太网

由Xerox等公司联合开发地基带总线局域网规范,是当今现有局域网最通用的通信协议标准,使用CSMA/CD技术

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

PPP协议

局域网普遍采取多点接入技术(总线型)

广域网中通常采用点对点技术(将多个局域网互联,资源共享)

PPP协议是目前使用最广泛的数据链路层协议(拨号上网)只支持全双工

ppp协议的三个组成部分:

(1)一个将ip数据报封装到串行链路

(2)链路控制协议LCP(身份验证)

(3)网络控制协议NCP,为网络层协议建立和配置逻辑连接

PPP帧格式:零比特填充法

4.网络层

主要任务就是把分组从源端传送到目的端,为分组交换网上的不同主机提供通信服务,传输单位是数据报(数据报是比较长的数据,分组是把数据包进行切割,划分出来的片段)

功能一:路由的选择和分组转发(选最佳路径)

功能二:异构网络互联

功能三:拥塞控制

数据交换方式

两台主机通过网络核心【路由器】进行数据转发

(1)电路交换:比如电话网络,独占资源

(2)报文交换:报文是源应用发送的信息整体,无需建立连接、可靠、利用率高,且多目标,但报文大小不定,需要网络节点有较大缓存空间

(3)分组交换:大数据块分割成小数据块(把报文切割成小数据块),它相对于报文交换,存储管理更容易;但是乱序到达目的主机时,需要分组排序重组

数据报和虚电路

数据报方式为网络层提供无连接服务(因特网在使用)(无连接服务为不事先为分组的传输确定传输路径,不同分组传输路径可能不同)

  • 路由器根据分组目的地址转发分组,基于算法构建的转发表,为每个分组独立选路

虚电路方式为网络层提供连接服务(虚电路是一条源主机到目的主机类似于电路的路径(逻辑连接),路上所有结点都要维持这条虚电路的建立,并有一张虚电路表)

  • 每个分组携带虚电路号,可以使得一系列的分组沿着相同路径转发出去

路由算法和路由器概述

算法的“最佳”只能是相对于某一种特定要求下得出的比较合理的选择而已

静态路由算法:非自适应路由选择,即管理员手动配置,不适用于大型网络,适合小的、安全要求高的网络

动态路由算法:自适应路由选择

采用分层次的路由选择协议:(1)因特网规模大(2)许多单位不想让外界知道自己的路由选择协议

因此把互联网划分为许多较小的自治系统AS,一个AS的所有路由器在本自治系统内都应该相互连通;一个AS对其他AS表现出是一个单一的一致的路由选择策略(分层次是分成内部和外部)

  • 内部网关协议IGP,一个AS内使用
  • 外部网关协议EGP,AS之间使用

内部网关协议

RIP

基于距离向量的路由选择协议,最大优点是简单(适用于小规模网络)

它要求网络中每个路由器维护它从其他每个目的网络的唯一最佳距离纪录(维护的是路由表),也就是最短跳数

RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达,所以只适合小规模互联网

RIP协议的特点:

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

2.交换的信息时自己的路由表

3.固定时间间隔交换路由信息

路由器刚开始工作时,只知道直接相连的几个网络的距离(距离定义为1)

距离向量算法:

1.修改相邻路由器发来的RIP报文中所有表项,对地址为X的相邻路由器发来的RIP报文,下一跳地址改为X,并把所有“距离”字段+1

2.对修改后RIP报文的每个项目,若原路由表没有目的网络N则添加;若已经含有,且下一跳地址和原来一样,则即使跳数可能增大,但也必须发生更改;若已经含有,且下一跳地址不同,则将跳数相对较小的项目更新入路由表

3.若180s没收到相邻路由表的更新,则记为不可达路由器,距离设置为16

RIP其实是应用层的协议,使用UDP传送数据,使用UDP’无可靠保证,但是开销小

好消息传得快,坏消息传得慢

OSPF协议

使用的是迪杰斯特拉最短路径算法,适用于大规模互联网

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

30min更新一次

传递协议:IP

外部网关协议

BGP

和其他AS邻站BGP发言人交换信息,交换网络可达性信息,发生变化时更新有变化部分

不用找到最佳路径,找到较好路由选择就够了

传递协议:TCP,保证可靠的交付

IP数据报格式

在TCP/IP标准中,数据报格式中的数据常常以32位(4Byte)为单位来描述

数据报长度不能超过MTU(1500字节byte),如果超过了就分片

分片流程:

  • 数据报中有标识数据段,同一数据报分片使用同一标识
  • 数据报中有标志数据段,DF = 1禁止分片;DF = 0,允许分片,在DF = 0的条件下,MF = 1后面还有分片;MF = 0最后一块没分片
  • 数据报中有片偏移数据段,指出较长分组分片后,某片在原分组相对位置,以8B为单位,所以能得出除了最后一个分片,每个分片的长度都一定是8B的整数倍
  • ip数据报固定首部长度为20字节

ip地址

ip地址,在全世界范围内唯一的32位标识符,可以唯一标识一个主机或者路由器等设备的接口

ip编制历史阶段:

1.分类的ip地址

2.子网的划分

3.构成超网

分类的ip地址:

ip地址{<网络号>, <主机号>},如果主机连在一个网络上,则网络号是相同的,主机号不相同

分类分成5类,分类方法靠前面的四位来区分 ,分类因为各网络差异比较大,有的网络主机数多,有的少,且ip地址是32位,我们为了便于书写,常常每八位插入一个空格(但在机器中并没有这样的空格)

A类:2^7-2是因为全零指本网,全1;127指回环,2^24-2是因为全零指本机,全1指广播地址

B类:128.0.0.0不能指派,2^14-1

C类:192.0.0.0不能只派,2^21-1

特殊ip地址:

网络号全0,主机号全0,本网范围内标识本主机,只能作为源地址

网络号全0,主机号特定值,本网范围某主机,只能作为源地址

网络号全1,主机号全1,本网广播地址,只能作为目的地址

网络号特定值,主机号全0,网络地址,表示一个网络,啥也不能作

网络号特定值,主机号全1,直接广播地址,只能作为目的地址,表示对特定网络上所有主机广播

网络号127,主机号任意,用于本地软件测试

分类ip地址缺点:ip地址空间利用率有时很低;2级地址不够灵活

localhost和0.0.0.0的区别

localhost本质上是一个域名,通常被解析为127.0.0.1

  • 127.0.0.1回环地址,表达的意思其实是我们主机发出去的包,直接被自己接收,
    • 正常数据包流程:应用层-传输层-网络层-数据链路层-物理层
    • 而回环地址被网络层获取到,不会往下流
    • 而监听127.0.0.1时,同网段下主机无法通过ip地址访问
  • 0.0.0.0:监听IPV4上所有地址,再根据端口找到不同的地址
    • 比如我们监听0.0.0.0时,同网段下的主机可以通过ip地址访问
    • 当然我们输入127.0.0.1、localhost也可以访问
子网的划分

ip地址{<网络号>, <<子网号>,<主机号>>},三级的ip地址,但是就算划分子网后,对外表现仍然是一个网络,即本单位外网络看不见本单位内子网划分

子网号能否全0、全1要看情况,主机号部分仍然不能全0、全1

子网掩码:极力推荐子网掩码中使用连续的1:比如B类 11111111 11111111 11111111 00000000,子网掩码和ip地址相与,就可以得到子网网络地址

路由表中包含:目的网络地址、目的网络子网掩码、下一跳地址

使用子网分组转发

1.提取目的ip地址

2.判断是否可直接交付,用ip地址与子网掩码相与,匹配则交付

3.若1-2步骤不行,判断特定主机路由

4.若1-3步骤不行,检测路由表有无路径,也是相”与“判断

5.若1-4步骤不行,默认路由处理 0.0.0.0

6.最后还不行丢弃分组,报错

无分类编址CIDR

是否可以使用一个变长的子网掩码,而非定长的?CIDR消除了传统A、B、C类和子网划分的概念

ip地址{<网络前缀>,<主机号>}

CIDR的记法:ip地址后加上/,然后写上网络前缀的位数即可 128.14.32.0/20,则表示前20位位网络前缀

CIDR把网络前缀相同的连续ip地址组成一个CIDR地址块此时最小地址为:网络前缀保持不变,主机号全0,最大地址为:网络前缀保持不变,主机号全1

CIDR地址掩码为网络前缀的每个位,填充为1,后面的主机号位填充为0

构成超网定义:将多个子网聚合成一个较大的子网,叫作构成超网或路由聚合,使得路由器转发表不用写那么多数据

构成超网方法:将网络前缀缩短

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

在CIDR中子网号可全0、全1

ARP协议

ARP高速缓存:保存的是ip地址和mac地址的映射(对应),解决下一跳走哪的问题

(DNS)完成域名到 IP 地址的映射,(RARP)实现MAC到IP地址的映射;(ARP)实现IP到MAC.

在实际链路上传送数据帧时,最终必须使用mac地址

注意:硬件地址又称物理地址,从层次的角度,物理地址是给物理层和数据链路层使用的地址,而ip地址时网络层和以上各层使用的地址,是一种逻辑地址;以太网帧在传输过程中有关其内部的mac地址和ip地址的变化情况:源ip地址和目的ip地址不会产生变化,而源mac地址和目的地址逐网络(或逐链路)都发生变化

ARP协议的使用:

  • 检查ARP高速缓存是否已经有对应的ip地址到mac的映射表项,如果没有执行以下步骤

  • 局域网络内:某主机要发射数据帧,但是不知道目的主机的mac地址,但是直到发送主机、目的主机的ip地址,以及知道自身的物理地址,这时发射主机发送广播请求分组(全1),最后收到目的主机的单播响应分组,得到该主机的mac地址,写入ARP缓存

  • 局域网外:寄希望于默认网关(与外界沟通的路由器),跳到路由器的mac地址,然后该路由器响应发送主机的广播请求,把路由器的mac地址映射返回;然后一直传到目的主机局域网的路由器的mac地址,这时该局域网路由器发送广播请求分组(全1),最后收到目的主机的单播响应分组,得到该主机的mac地址

ICMP协议

ICMP循序主机或路由器报告差错情况和提供有关异常情况的报告

ICMP报文 + ip数据报首部 = ip数据报的数据部份 +ip数据报首部 = ip数据报

ICMP分为:ICMP差错报文和ICMP询问报文

ICMP差错报文:1.终点不可达(无法交付问题);2.时间超过(数据报生存时间为0或者数据报片没有收集完整,应用:Traceroute);3.参数问题(首部字段出问题);4.改变路由(重定向)

ICMP询问报文:1.回送请求和回答(测试目的栈是否可达,应用:ping xxip地址,测试两个主机的连通性);2.时间戳请求和回答

IPV6

32位的IPV4地址空间已经分配殆尽了,IPV6从根本解决地址耗尽问题

更大的地址空间:原来的32位 -> 128位

拓展的地址层次结构、灵活的首部格式、改进的选项。。。。。

IPV6由两大数据部分组成,基本首部和有效载荷

IPV6的表示方法为:冒号十六进制记法,允许零压缩

IPV6向IPV4过渡策略:双栈协议(同时启用IPV4和IPV6)、隧道技术(重新封装)

5.传输层

主机才会有的层次,功能有:

  • 提供进程和进程之间的通信(网络层提供主机和主机之间的逻辑通信)
  • 复用和分用
  • 对报文进行差错检测
  • 两个协议,TCP和UDP

端口号

传输层有一个端口(逻辑端口/软件端口),它可以唯一标识一个具体的进程,端口号只有本地意义

端口号长度为16bit,能表示65536个不同端口号

分为服务端口号和客户端口号

服务端口号:熟知端口号(给TCP/IP最重要的一些应用程序,0-1023,让所有用户都知道)、登记端口号(1024-49151)

客户端口号:49152-65535,仅在客户进程运行时才动态选择

重要端口号:

传输层两个好兄弟,大哥TCP和二弟UDP,大哥靠谱,二弟不靠谱

传输单元为报文段

TCP

传送数据前必须建立连接,不提供广播或多播,时延大,适用大文件

1.面向连接(虚连接)的传输控制协议

2.每一条TCP只能有两个端点,点对点

3.TCP提供可靠交付服务

4.全双工通信,发送方的发送缓存:准备发送的数据&已发送但尚未收到确认的数据;接收方的接收缓存:按序到达但违背接受应用读取&不按序到达的数据

5.面向字节流

TCP首部格式

最小长度为20字节

序号为发送的数据(报文段)的第一个字节的序号

确认号:用于接收方发送的TCP确认报文段,确认号是期待发送方下一个报文段第一个数据字节序号

数据偏移:实际上就是TCP首部长度

紧急URG:URG = 1,在发送报文段时拥有插队权力

同步SYN:建立连接时同来同步的

TCP连接管理

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

tcp连接建立采用客户服务器方式,主动发起连接的应用进程叫作客户,被动等待连接建立的应用进程叫服务器

连接建立过程:三次握手

  • 客户端发送报文段,里面无应用层数据

    SYN(同步位) = 1,ACK = 0,seq(序号) = x(随机)

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

    SYN = 1,ACK(确认位) = 1,seq = y,ack(确认号) = x + 1.

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

    SYN = 0,ACK = 1,seq = x + 1,ack = y + 1

2次不行

  • 客户端向服务器发送建立连接的请求报文段,有可能因为网络滞留了,之后等到这个滞留报文段到达服务端时,客户端早已重新发送请求连接的报文,而服务端不这么认为,服务端他以为你发了新的连接请求,此时服务端向客户端发送确认报文,而客户端收到这个响应,但是发现这个请求在之前就发过了,就会忽略,而此时服务端苦苦等待客户端的响应,这样就会造成资源浪费
  • 当然也可以概括为:并不知道客户端的接受能力是否正常

4次不行

  • 意义不大,因为此时我们都知道双方的发送和接收功能都是正常的

洪范攻击:发生在osi第四层,利用三次握手的特性,拼命向服务器发送大量的TCP SYN,也就是三次握手的第一次数据包,当服务器返回ACK后,该攻击者就不对其进行确认,让TCP处于挂起状态,服务器收不到再确认,还会重复发送ACK给攻击者,然后浪费服务器资源,消耗CPU和内存,可能导致服务器死机

连接释放过程:四次挥手(参与一条TCP连接的两个进程任何一个都可以终止该连接,连接结束后主机中的“资源”将被释放)

  • 客户端发送连接释放报文段,停止发送数据,主动关闭TCP FIN(释放位) = 1,seq(序号) = u
  • 服务器回送确认报文段,客户端到服务器这个方向的连接就释放了—-半关闭状态 ACK = 1,seq = v,ack = u+1
  • 服务器端发完数据,发送释放报文段,主动关闭TCP连接 FIN = 1,ACK = 1,seq = w,ack = u+1
  • 客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命,也就是TIME_WAIT状态)后(防止服务器未接收到确认,这时服务器可以及时再次发送释放报文段),连接彻底关闭

SYN:同步序列号,是用来建立连接的握手信号。

ack:确认序号,当ACK为1时,ack有效,当ACK为0时,ack无效。

seq:序号。

ACK:确认序号有效。

FIN: 结束标志,用来表示断开连接。

MSL:的时长被 RFC 定义为 2分钟,但在不同的 unix 实现上,这个值不并确定,我们常用的 centOS 上,它被定义为 30s,

当 TCP 连接主动关闭时,都会经过 TIME_WAIT 状态: TCP 四次握手结束后,连接双方都不再交换消息,但主动关闭的一方保持这个连接在一段时间内不可用。

TCP可靠传输

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

1.检验,与UDP一样,增加伪首部

2.序号,对应TCP首部格式的序号

3.确认号,对应TCP首部格式的确认号

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

5.冗余ACK,当比期望序号大的失序报文段到达时,发送冗余ACK,指明下一个期待字节的序号(发送方收到3个冗余ACK,则认为报文段丢失,选择重发)

TCP流量控制

同数据链路层的滑动窗口进行流量控制

但是TCP的发送窗口是根据接收方的报文段(rwnd = 400,则窗口大小为400B),动态变化其大小(在链路层在发送过程,发送窗口和接收窗口大小固定),如果设置rwnd = 0,则发送端等待接收方再次发送rwnnd > 0 的报文段,如果一直等不到(可能接收方返回的报文段丢失了),TCP连接的一方(此时仍是0窗口大小)启动计时器开始计时,一段时间结束后发送零窗口的试探报文段,然后接收方会再发一次原来要返回的报文段

TCP拥塞控制

出现条件:对资源的需求>可用资源

网络性能下降、网络吞吐量随输入负荷增大而下降

拥塞控制是全局性的过程,防止过多数据注入网络

拥塞控制的方法:

  • 慢开始:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小

  • 拥塞避免:拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口按线性规律缓慢增长。

  • 快重传:发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期

  • 快恢复:

    (1)当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把慢开始门限减半。这是为了预防网络发生拥塞,但不执行慢开始算法。

    (2)由于发送方现在认为网络很可能没有发生拥塞(如果网络发生了严重拥塞,就不会一连有好几个报文段连续到达接收方,也就不会导致接收方连续发送重复确认)。因此与慢开始不同之处就是现在不执行慢开始算法(即拥塞窗口现在不设置为1)而是把拥塞窗口的值设置为慢开始门限减半后的值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

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

接收窗口:接收方根据接收缓存设置的值,反应接收方容量

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

一个传输轮次 = 一个RTT

慢开始 + 拥塞避免

慢开始+拥塞避免+快重传+快恢复

UDP

无连接的用户数据报协议

1.传送数据前不用建立连接,收到报文后也不需要任何确认,不保证可靠交付

2.UDP是面向报文的(面对应用层交下来的报文,不拆分也不合并,保留报文边界),适合一次性传输少量数据的网络应用(够小就可以完整交付,不用拆分),适用小文件

3.无拥塞控制,适合很多实时应用

4.UDP首部开销小,8B;TCP则是20B,和ip数据报固定首部长度

它只在ip数据报服务上增加了复用分用、差错检测功能

在分用时,找不到对应端口,则向发送方发送ICMP“端口号不可达”差错报文

提供全双工服务

UDP校验时:

1.会发现有“伪首部”,它只在计算校验和时才出现,不向下传送也不向上递交

2.全0填充数据部分和校验和字段

3.伪首部+首部+数据部分采用二进制反码求和,把和,求它的反码,填入校验和字段,去掉伪首部,发送

4.接收端填上伪首部,采用伪首部+首部+数据部分采用二进制反码求和,全1无差错,否则丢弃数据报/交给应用层附上出差错的警告

二进制反码求和: 规则是从低到高位逐列进行bai计算,0和0加得0,0和1加得1,1和1加得0但要产生一个进位1,加到下一列,若最高位产生了进位,则最后得到的结果要加1。

6.应用层

应用层对应用程序的通信提供服务

应用层协议的定义:

  • 应用进程交换的报文类型,请求还是响应
  • 各种报文类型的语法,如报文中各个字段及其详细描述
  • 字段语义及其包含的信息含义
  • 进程何时,如何发送报文

应用层功能:

  • 文件传输、访问和管理
  • 电子邮件
  • 虚拟终端
  • 查询服务和远程作业登陆

有两种模型:客户服务器模型(C/S)、P2P模型

客户服务器模型(C/S):

服务器:提供计算服务的设备。1. 24小时永久提供服务;2.永久性访问地址

客户机:请求计算服务的主机,1. 与服务器通信,使用服务器提供的服务;2.间歇性接入网络;3.使用动态的ip地址;4.不与其他客户机直接通信

P2P模型:

无服务器

每个主机既可以提供服务,也可以请求服务,任意节点可以直接通讯

DNS域名解析系统

域名:www.baidu.com DNS: 域名 -> ip地址(视为一个网络电话簿)

域名自左向右,级别由低到高,分别对应三级域名、二级域名、顶级域名

交给域名服务器解析域名,域名服务器分为根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器(最近)

1.检查浏览器缓存中是否缓存过该域名对应的ip地址

2.检查本机系统是否缓存过该域名对应的ip地址

3.向本地域名解析服务系统发起域名解析的请求

  • 本地域名系统一般都是本地区的域名服务器,比如你连接的校园网,那么域名解析系统就在你的校园机房里,如果你连接的是电信、移动或者联通的网络,那么本地域名解析服务器就在本地区,由各自的运营商来提供服务

大部分解析,前三个步骤已经完成了,下面是还找不到解析结果的步骤:

4.向根域名解析服务器发起域名解析请求(总共13个,由于根域名的13个地址几乎不发生变化,所以在Local DNS的软件配置文件里内置了13个根域名)

5.

  • 根域名服务器返回gTLD域名解析服务器地址 ->
  • 向gTLD服务器发起解析请求 ->
  • gTLD服务器接收请求并返回Name Server服务器 ->
  • Name Server服务器返回IP地址给本地服务器

6.本地域名服务器缓存解析结果,并返回结果给用户

备注:gTLD:国际顶级域名

首先 在本机域名解析的缓存中查找该域名 ,若找不到 -> 发给本地域名服务器,无法解决->求助根域名服务器-> 查询顶级域名服务器 -> 查询权限域名服务器

根域名服务器:全球共有13个根域名服务器,1个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本

顶级域名:指的是.com(商业机构)、.net(网络提供商)、.edu(教育机构)、.cn(中国域名);全球共有13个.com(或者其他几个)顶级域名服务器。

权威域名(权限域名服务器):一般是指能够提供最终IP地址解析能力(最终IP地址是由这个NS来解析的)的一组服务器

域名解析查询过程:

  • 递归查询(一般主机 -> 向本地域名解析器查询的过程都是递归查询)

    • 客户端只发一次请求,要求对方给出最终结果。
  • 迭代查询(靠自己,由自己来查询根域名服务器,顶级域名服务器,一般本地域名服务器 -> 向根域名服务器的查询的迭代查询)

    • 客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。

万维网和http协议

万维网是大规模、联机式信息储藏所,无数个网络站点、网页的集合

统一资源定位符URL可以唯一标识资源(文字、视频、音频) URL: <协议>://<主机>:<端口>/<路径>

http默认80端口号

协议:http、ftp

主机:域名、ip地址

端口和路径有时可以被省略掉

http协议定义了浏览器怎么向万维网服务器请求万维网文档,以及万维网怎么把文档传送给浏览器:建立tcp连接 -> http请求报文-> http响应报文 -> 释放TCP连接

http协议的特点

  • http协议是无状态的,但是在实际工作中,一些万维网网站希望能识别用户(给用户推销产品)=>诞生了cookie小饼干,cookie是存储在用户主机的文本文件,记录一段时间内某用户的访问记录(不太敏感的数据)
  • http采用TCP作为运输层协议,但是http协议本身是无连接的 (交换http报文之前不需要建立连接)
  • http连接方式:持久连接(非流水线式(有点像停等协议)、流水线式(有点像GBN或SR协议,即后退N帧协议和选择重传协议))、非持久连接(每次传输都要三次握手)

无状态:

所谓的无状态是指协议对于事务处理没有记忆能力。服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息,于是,两种用于保持HTTP状态的技术就应运而生了,一个是Cookie,而另一个则是Session。

他保持了每次请求的独立性,每个请求包含了处理这个请求所需的完整的数据,发送请求不涉及到状态变更

无连接:

就是假如某个客户机在短时间多次次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,反而每次都不耐其烦重新响应请求。

7.其他

臭名昭著的最后一英里问题。光纤固然很快,但是要将您的家庭或办公室连接到 Internet,您的本地 ISP 需要在整个社区布线、聚合信号并将其转发到本地路由节点。实际上,根据连接类型、路由方法和部署的技术,仅这些前几跳就可能需要数十毫秒。

我们都熟悉 IPv4 和 IPv6,但 IPv{1,2,3,5} 发生了什么?IPv4 中的 4 代表 TCP/IP 协议的第 4 版,它于 1981 年 9 月发布。最初的 TCP/IP 提案耦合了这两个协议,而 v4 草案正式将两者拆分为单独的 RFC。因此,IPv4 中的 v4 是其与 TCP 关系的遗产:没有独立的 IPv1、IPv2 或 IPv3 协议。

当工作组在 1994 年开始研究“下一代互联网协议”(IPng)时,需要一个新的版本号,但 v5 已经分配给另一个实验协议:互联网流协议(ST)。事实证明,ST 从未起飞,这就是为什么很少有人听说过它。因此是 IPv6 中的 6。

慢启动

TCP三次握手之后,服务器为每个 TCP 连接初始化一个新的拥塞窗口 (cwnd) 变量,并将其初始值设置为一个保守的、系统指定的值(Linux 上的 initcwnd)。

此外,引入了一个新规则:客户端和服务器之间传输(未确认)的最大数据量是 rwnd 和 cwnd 变量中的最小值。到目前为止一切顺利,但是服务器和客户端如何确定拥塞窗口大小的最佳值呢?毕竟,网络条件一直在变化,即使在相同的两个网络节点之间,正如我们在前面的示例中看到的那样,如果我们可以使用该算法而不必为每个连接手动调整窗口大小,那就太好了。

解决方案是缓慢启动并在确认数据包时增加窗口大小:慢启动!原来cwnd的起始值设置为1个网段;RFC 2581 在 1999 年 4 月将此值更新为 4 个段;最近,RFC 6928 在 2013 年 4 月再次将该值增加到 10 个段。

新 TCP 连接的最大传输数据量是 rwnd 和 cwnd 值中的最小值;因此,现代服务器最多可以向客户端发送十个网段,此时它必须停止并等待确认。然后,对于每个接收到的 ACK,慢启动算法指示服务器可以将其 cwnd 窗口大小增加一个段——对于每个 ACK 数据包,可以发送两个新数据包。TCP 连接的这个阶段通常被称为“指数增长”算法(图 2-3),因为客户端和服务器正试图在它们之间网络路径上的可用带宽上快速收敛。

优化TCP

TCP 是一种自适应协议,旨在对所有网络对等方公平并最有效地利用底层网络。因此,优化 TCP 的最佳方法是调整 TCP 如何感知当前网络条件并根据其下层和上层的类型和要求调整其行为:无线网络可能需要不同的拥塞算法,某些应用程序可能需要自定义服务质量 (QoS) 语义以提供最佳体验。

虽然每个算法和反馈机制的具体细节会不断发展,但核心原则及其含义保持不变:

  • TCP 三向握手引入了完整的往返延迟。
  • TCP 慢启动应用于每个新连接。
  • TCP 流量和拥塞控制调节所有连接的吞吐量。
  • TCP 吞吐量由当前拥塞窗口大小调节。

推荐阅读:

如何完整优化页面速度(高级指南)


文章作者: Hello
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hello !
 上一篇
红宝书啃读note(下) 红宝书啃读note(下)
第12章BOMBOM核心是window对象,window对象在浏览器有双重身份,一个是ECMAScript的Global对象,一个就是浏览器窗口的JavaScript接口。 窗口关系 top对象始终指向最上层窗口,即浏览器窗口本身 pare
2021-12-20
下一篇 
数据结构 数据结构
线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 比如数组、链表 非线性结构一般未一对多的形式 比如树、多维数组、图结构 双向链表双向链表,又稱為双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直
2021-11-20
  目录