别怕路长梦远,总有星河照耀(●’◡’●),当初那张稚嫩青涩的脸庞早已不见了模样,但是我们依然要记得来时的路。复习之余整理了一些关于计算机网络的基础知识以便查漏补缺,巩固加强(主要还是方便查阅)。在此还要感谢各位老师在我困惑中指点迷津。卑微小生,才疏学浅,还望各位同仁批评指正!时间紧迫,我们快开始吧!知足,上进,不负野心!
计算机网络是将不同地理位置的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
网络的主要类型
一、网络的地理覆盖范围分:
A、局域网:
1、属于一个组织,一个单位或一个部门所有。
2、网络一般不对外提供公共服务,管理方便,安全保密性高。
3、组建方便,投资少,见效快,使用灵活应用最普遍的计算机网络。
B、城域网:
1、一般是一个地区或一个城市。
C、广域网
1、小到一个地区,一个城市,大到一个国家,几个国家乃至全世界。
2、提供大范围的公共服务。因特网就是典型的广域网。
3、与局域网相比,广域网投资大,安全保密性差,传输速率慢。
二、按计算机网络的线路结构分:
A、总线型
1、该结构采用一条公共总线作为传输介质,每台计算机通过相应的硬件接口入网,信号沿总线进行广播式传送
2、是典型的共享传输介质的网络。从信源所发的信息会传送到介质长度所及之处,被其他所有站点看到。如果有两个以上的节点同时发送数据,可能会造成冲突,就像公路上的两车相撞一样。
优点:布线容易,增删容易,节约电缆;
缺点:
1、任何两个站点传送信息都要经过总线,总线称为传输瓶颈;当计算机站点多时,容易造成信息阻塞,传递不畅。
2、一台计算机接入总线的接口发生故障,会造成整个网络瘫痪。
3、当网络发生故障时,故障诊断和隔离困难。
B、星型
由一台中央节点和周围的从节点组成。
中央节点和从节点可以直接通信,而从节点必须经过中央节点转接才能通信。
优点:
1、可靠性高。每台计算机及其接口的故障不会影响其他计算机,不会影响整个网络,也不会造成网络瘫痪。
2、故障诊断和隔离容易,网络容易管理和维护。
3、可扩性好,配置灵活。增删改一个站点容易实现,和其他计算机没有关系
4、传输速率高。每个节点独占一条线路,消除了信息阻塞的情况。而总线和环形网络的瓶颈都在线路上。
缺点:
1、线缆使用量大。
2、布线、安装工作量大。
3、网络可靠性依赖于中央节点。如交换机或集线器选择不当,发生故障会造成全网瘫痪。
C、环型
计算机通过硬件接口入网,这些接口首尾相连成一条链路。信息传送也是广播式的,沿着一个方向(如逆时针方向)单向逐点传送。
优点:
点到点且沿一个方向单向传输,非常适合用光纤作为传输介质。
1、传输距离远,适合做主干网。
2、故障诊断容易定位。
3、初始安装容易,线缆用量少。环形线路也是一条总线,只是首尾封闭。
三、按传输介质分:
A、有线网络
1、同轴电缆:成本低,安装方便,但传输率低,抗干扰能力一般,传输距离短
2、双绞线:组建局域网时常用,优缺点类似于同轴电缆。
3、光纤:主要用于网络的主干部分,其特点是成本高,安装技术要求高,传输距离长,传输率高,抗干扰能力强,且不会受到电子监听设备的监听等,是组建高安全性网络的理想选择。
B、无线网络
1、红外线
2、微波
3、无线电
计算机网络由通信子网和资源子网组成。
• 通信子网负责数据的无差错和有序传递,其处理功能包括差错控制、流量控制、路由选择、网络互连等。
• 资源子网是计算机通信的本地系统环境,包括主机、终端和应用程序等,资源子网的主要功能是用户资源配置、数据的处理和管理、软件和硬件共享以及负载均衡等。
• 总的来说,计算机通信网就是一个由通信子网承载的、传输和共享资源子网的各类信息的系统。(✿◕‿◕✿)
为了完成计算机之间有序的信息交换,提出了通信协议的概念,其定义是相互通信的双方(或者多方)对如何进行信息交换所必须遵守的一整套规则。
协议涉及到三个要素,分别为:
1. 语法:语法是用户数据与控制信息的结构与格式,以及数据出现顺序的意义
2. 语义:用于解释比特流的每一部分的意义
3. 时序:事件实现顺序的详细说明
OSI参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
OSI定义了网络互连的七层框架:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
每一层实现各自的功能和协议,并完成与相邻层的接口通信,OSI的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种能力,它通过接口提供给更高一层。
1. 提供建立、维护和释放物理链路所需的机械、电气功能和规程等特性
2. 通过传输介质进行数据流(比特流)的物理传输、故障监测和物理层管理
3. 从数据链路层接收帧,将比特流转换成底层物理介质上的信号
4. 物理层并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程
5. 物理层提供用于建立、保持和断开物理连接的机械的、电气的、功能的和过程的条件
6. 简而言之,物理层提供有关同步和比特流在物理媒体上的传输手段
数据链路层
1. 在物理链路的两端之间传输数据
2. 在网络层实体间提供数据传输功能和控制
3. 提供数据的流量控制
4. 检测和纠正物理链路产生的差错
5. 格式化的消息称为帧
6. 数据链路层用于建立、维持和拆除链路连接,实现无差错传输的功能
7. 在点到点或点到多点的链路上,保证信息的可靠传递
8. 该层对连接相邻的通路进行差错控制、数据成帧、同步等控制
网络层
1. 负责端到端的数据的路由或交换,为透明地传输数据建立连接
2. 寻址并解决与数据在异构网络间传输相关的所有问题
3. 使用上面的传输层和下面的数据链路层的功能
4. 格式化的消息称为分组
5. 网络层规定了网络连接的建立、维持和拆除的协议
6. 它的主要功能是利用数据链路层所提供的相邻节点间的无差错数据传输功能,通过路由选择和中继功能,实现两个系统之间的连接
传输层
1. 提供无差错的数据传输
2. 接收来自会话层的数据,如果需要,将数据分割成更小的分组,向网络层传送分组并确保分组完整和正确到达它们的目的地
3. 在系统之间提供可靠的透明的数据传输,提供端到端的错误恢复和流量控制
4. 传输层完成开放系统之间的数据传送控制
5. 主要功能是开放系统之间的数据的收发确认
6. 同时还用于弥补各种通信网络的质量差异,对经过下三层之后仍然存在的传输差错进行恢复,进一步提高可靠性
7. 另外,还通过复用、分段和组合、连接和分离、分流和合流等技术措施,提高吞吐量和服务质量
会话层
1. 提供节点之间通信过程的协调
2. 负责执行会话规则(如:连接是否允许半双工或全双工通信)、同步数据流以及当故障发生时重新建立连接
3. 使用上面的表示层和下面的传输层的功能
4. 会话层依靠传输层以下的通信功能使数据传送功能在开放系统间有效地进行
5. 其主要功能是按照在应用进程之间的约定,按照正确的顺序收发数据,进行各种形式的对话
6. 控制方式可以归纳为以下两类:
7. 一是为了在会话应用中易于实现接受处理和发送处理的逐次交替变换,设置某一时刻只有一端发送数据。因此需要有交替改变发信端的传送控制。
8. 二是在类似文件传送等单方向传送大量数据的情况下,为了防备应用处理中出现意外,在传送数据的过程中需要给数据记上标记,当出现意外时,可以由记标记处重发。
表示层
1. 提供数据格式、变换和编码转换
2. 涉及正在传输数据的语法和语义
3. 将消息以合适电子传输的格式编码
4. 执行该层的数据压缩和加密
5. 从应用层接收消息,转换格式,并传送到会话层,该层常合并在应用层中
6. 表示层的主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示
7. 表示层仅对应用层信息内容的形式进行变换,而不改变其内容本身
应用层
1. 包括各种协议,它们定义了具体的面向用户的应用:如电子邮件、文件传输等
2. 应用层是OSI参考模型的最高层。其功能是实现应用进程(如用户程序、终端操作员等)之间的信息交换,还具有一系列业务处理所需要的服务功能。
(1) 分工合作,责任明确
性质相似的工作划分在同一层,性质不同的工作则划分到不同层,这样每一层的功能都是明确的,每一层都有其负责的工作范围,一旦出现问题,很容易找到问题所在的层,仅对此层加以改善即可。
(2) 对等交谈
计算机通过网络进行通信时,按照对等交谈的原则,即同一层找同层,通过各对等层的协议来进行通信,比如,两个对等的网络层使用网络协议通信。
(3) 逐层处理,层层负责。
在OSI中,两个实体通信必须涉及下一层,只有相邻层之间可以通信,下层向上层提供服务,上层通过接口调用下层的服务,层间不能有越级调用关系,每层功能的实现都是在下层提供服务的基础上完成的。即每一层都是利用下层提供的服务来完成本层功能,并在此基础上为上层提供进一步的服务。
✈低三层模型属于通信子网,涉及为用户间提供透明连接,操作主要以每条链路为基础,在节点间的各条数据链路上进行通信。由网络层来控制各条链路上的通信,但要依赖于其他节点的协调操作。
✈高三层属于资源子网,主要涉及保证信息以正确可理解形式传送。
✈传输层是高三层和低三层之间的接口,它是第一个端到端的层次,保证透明的端到端连接,满足用户的服务质量(QoS)要求,并向高三层提供合适的信息形式。
由于ISO指定的OSI参考模型过于庞大和复杂,在实现的时候造成了很大困难,所以招到了很多批评。在实际中,TCP/IP协议栈获得了更加广泛的应用。主流的操作系统基本上都采用TCP/IP协议栈。
五层协议体系结构的各层功能:
应用层:是体系结构中的最高直接为用户的应用进程提供服务,在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等。
运输层:负责向两个主机中进程之间的通信提供服务由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能:
- 复用,是多个应用层进程可同时使用下面运输层的服务
- 分用,是把收到的信息分别交付给上面应用层中相应的进程
网络层:主要包括以下两个任务:
数据链路层:常简称为链路层,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间传送数据是直接传送的(点对点),这时就需要使用专门的链路层的协议。
在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点之间的链路上“透明”地传送帧中的数据,每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
注:透明是一个很重要的术语::它表示某一个实际存在的事物看起来却好像不存在一样。"在数据链路层透明传送数据"表示无论什么样的比特组合的数据都能够通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层。或者说,数据链路层对这些数据来说是透明的。
(1)在接收数据时,控制信息使接收端能知道一个帧从哪个比特开始和到哪个比特结束。这样数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。
(2)控制信息还使接收端能检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续传送下去白白浪费网络资源。如需改正错误,就由运输层的TCP协议来完成。
物理层:在物理层上所传数据的单位是比特,物理层的任务就是透明地传送比特流。
物理层 | 原始比特流的传输,基本单位:比特 |
---|---|
数据链路层 | 建立相邻节点数据链路传输,基本单位:帧 |
网络层 | 基于IP地址的路由选路传输数据,基本单位: 数据包 |
传输层 | 常规数据传递,面向连接或者无连接,基本单位:数据段 |
会话层 | 建立会话关系 |
表示层 | 统一数据传输格式 |
应用层 | 为用户应用程序提供服务接口 |
物理层 --> 比特流 --> bit
数据链路层 --> 数据帧 --> frame
网络层 --> 数据包 --> packet
传输层 --> 数据段 --> segment
应用层 --> 消息 --> message
MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡的EPROM。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的。
MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。
只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性。
指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。
广播:
表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FFFFFFFFFFFF,所有收到该广播帧的主机都要接收并处理这个帧。
广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能,当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。
组播:
组播比广播更加高效,组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。
组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。
组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。
当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
(1)长度:32bit(4字节=4B=32bit),一共有2^32个IPv4地址。
(2)写法:4组点分十进制数,意思将一个32位的IP地址分为4段,每段由二进制转换为十进制的数来进行表示,每段数字范围为0-255。
(3)组成:一个IP地址由网络号和主机号组成。
1. 公有地址
公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责,这些IP地址分配给注册并向Inter NIC提出申请的组织机构,通过它直接访问因特网。
2. 私有地址
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
最初设计互联网时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码ID,即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机有一个主机ID与其对应。
A类IP地址
一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是"0"。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。
A类IP地址的地址范围1.0.0.1到127.255.255.254
(二进制表示为:00000001 00000000 00000000 00000001----01111111 11111111 11111111 11111110)
B类IP地址
一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是"10"。B类IP地址中网络的标识长度为16位,主机标识的长度为14位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。
B类IP地址地址范围128.0.0.1到191.255.255.254
(二进制表示为:10000000 00000000 00000000 00000001----10111111 11111111 11111111 11111110)
C类IP地址
一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是"110"。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。
C类IP地址范围192.0.0.1到223.255.255.254
(二进制表示为: 11000000 00000000 00000000 00000001----11011111 11111111 11111111 11111110)
注意:IP地址中不能以十进制127作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试
引入子网掩码,从逻辑上把一个大网络划分成一些小网络。子网掩码是由一系列的1和0构成,通过将其同IP地址做与运算来指出一个IP地址的网络号是什么。
对于传统IP地址分类来说,A类地址的子网掩码是255.0.0.0;B类地址的子网掩码是255.255.0.0;C类地址的子网掩码是255.255.255.0。
例如,如果要将一个B类网络166.111.0.0划分为多个C类子网来用的话,只要将其子网掩码设置为255.255.255.0即可,这样166.111.1.1和166.111.2.1就分属于不同的网络了。像这样,通过较长的子网掩码将一个网络划分为多个网络的方法就叫做划分子网。
超网是同子网类似的概念,它通过较短的子网掩码将多个小网络合成一个大网络。
例如,一个单位分到了8个C类地址:202.120.224.0到202.120.231.0,只要将其子网掩码设置为255.255.248.0,就能使这些C类网络相通。
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址192.168.1.2解析成主机B的MAC地址,以下为工作流程:
RARP,功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。
RARP协议工作流程:
(1)给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
(2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
(3)如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
(4)如果不存在,RARP服务器对此不做任何的响应;
(5)源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;
(6)如果一直没有收到RARP服务器的响应信息,表示初始化失败。
IP协议是TCP/IP协议族中最为核心的协议。所有的TCP、IP、ICMP、IGMP数据都以IP协议数据报格式发送。IP协议提供无连接、不可靠的数据报传送服务。
以太网最大帧长为1518B,IP报文1500B(三层)+ 帧头18B(二层)
注意:MTU不是固定1500,这要取决现场物理环境,MTU不包含帧头帧尾。
发送方先把校验和字段置为0,对首部中每个16bit(切割多个16bit)进行二进制反码求和,结果存在校验和字段中
收到一份IP数据包后同样对首部中每个16bit进行二进制码反求和,接收方计算中包含了发送方存在的首部校验和
如果传输过程无错误,接收方结算结果全为1,传输中出现错误或数据丢失校验和结果为非全1,接受者丢弃校验未通过数据
不生成错误报文,由上层发现丢失数据进行重传
Source Ip address(源IP地址)(32bit)
数据发起者的IP地址
Destination Ip address(目的IP地址)(32bit)
数据的接收者IP地址
Option(可选字段)(24bit)
24bit用于提供一些数据报可选的服务,时间戳,记录路由等
Padding(填充项)
Options一般为0或者是32bit的倍数,如果不够32bit或者32bit的倍数则由Padding补齐。
TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
IP层接收由更低层(网络接口层)发来的数据包,并把该数据包发送到更高层TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
16位源端口
16位目标端口
16位的UDP包长度(UDP头部和UDP数据的总长度字节)
16位头部校验和
1.协议开销小、效率高
2.UDP是无连接的,即发送数据之前不需要建立连接
3.UDP使用尽最大努力交付,即不保证可靠交付
4.UDP没有拥塞控制
5.UDP支持一对一、一对多、多对一和多对多交互通信
6.UDP的首部开销小,只有8个字节
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由RFC793定义。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的数据流服务,采用"带重传的肯定确认"技术来实现传输的可靠性。TCP还采用一种称为"滑动窗口"的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
一、面向连接的传输,传输数据前需要先建立连接,数据传输完毕要释放连接
二、端到端通信,不支持广播通信
三、高可靠性,确保传输数据的正确性,不出现丢失或乱序
四、全双工方式传输
五、采用字节流方式 ,即以字节为单位传输字节序列。如果字节流太长,将其分段。
六、提供紧急数据传送功能,即当有紧急数据要发送时,发送进程会立即发送,接收方收到后会暂停当前工作,读取紧急数据并做相应处理。
三次握手与四次挥手过程图:
三次握手(Three-Way Handshake)是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。
在只有两次握手的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍。这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向它发送数据。
问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,三次握手很有必要!
四次挥手(Four-Way Wavehand)指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。
试想一下,假如现在你是客户端,你想断开跟Server的所有连接该怎么做?
第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时Server也有主动权向你发送数据。故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!
1.进行第三次握手是为了防止服务器端开启一些无用的连接增加服务器开销以及防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
2.由于网络传输是有延时的(要通过网络光纤和各种中间代理服务器),在传输的过程中,比如客户端发起了SYN=1创建连接的请求(第一次握手)。
3.如果服务器端直接创建了这个连接并返回包含SYN、ACK和Seq等内容的数据包给客户端,这个数据包因为网络传输的原因丢失了,丢失之后客户端就一直没有接收到服务器返回的数据包。客户端可能设置了一个超时时间,时间到了就关闭了连接创建的请求。再重新发出创建连接的请求,而服务器端是不知道的,如果没有第三次握手告诉服务器端:客户端收的到服务器端传输的数据的话,服务器端是不知道客户端有没有接收到服务器端返回的信息的。
这个过程可理解为:
4.这样没有给服务器端一个创建还是关闭连接端口的请求,服务器端的端口就一直开着,等到客户端因超时重新发出请求时,服务器就会重新开启一个端口连接。那么服务器端上没有接收到请求数据的上一个端口就一直开着,长此以往,这样的端口多了,就会造成服务器端开销的严重浪费。
5.还有一种情况是已经失效的客户端发出的请求信息,由于某种原因传输到了服务器端,服务器端以为是客户端发出的有效请求,接收后产生错误。
6.所以我们需要第三次握手来确认这个过程,让客户端和服务器端能够及时地察觉到因为网络等一些问题导致的连接创建失败,这样服务器端的端口就可以关闭了不用一直等待。
也可以这样理解:第三次握手是客户端向服务器端发送数据,这个数据就是要告诉服务器,客户端有没有收到服务器第二次握手时传过去的数据。若发送的这个数据是"收到了"的信息,接收后服务器就正常建立TCP连接,否则建立TCP连接失败,服务器关闭连接端口,由此减少服务器开销和接收到失效请求发生的错误。
四次挥手详解:
TCP建立连接时之所以只需要"三次握手",是因为在第二次握手过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。SYN是请求连接标志,表示服务器端同意建立连接;ACK是确认报文,表示告诉客户端,服务器端收到了它的请求报文。即SYN建立连接报文与ACK确认接收报文是在同一次握手当中传输的,所以三次握手不多也不少,正好让双方明确彼此信息互通。
TCP释放连接时之所以需要四次挥手,是因为FIN释放连接报文与ACK确认接收报文是分别由第二次和第三次握手传输的。
建立连接时,被动方服务器端结束CLOSED阶段进入握手阶段并不需要任何准备,可以直接返回SYN和ACK报文,开始建立连接。
释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。
为的是确认服务器端是否收到客户端发出的ACK确认报文
当客户端发出最后的ACK确认报文时,并不能确定服务器端能够收到该段报文。所以客户端在发送完ACK确认报文之后,会设置一个时长为2MSL的计时器。
MSL指的是Maximum Segment Lifetime:一段TCP报文在传输过程中的最大生命周期。2MSL即是服务器端发出为FIN报文和客户端发出的ACK确认报文所能保持有效的最大时长。
服务器端在1MSL内没有收到客户端发出的ACK确认报文,就会再次向客户端发出FIN报文。如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,说明服务器端由于各种原因没有接收到客户端发出的ACK确认报文。
客户端再次向服务器端发出ACK确认报文,计时器重置,重新开始2MSL的计时;否则客户端在2MSL内没有再次收到来自服务器端的FIN报文,说明服务器端正常接收了ACK确认报文,客户端可以进入CLOSED阶段,完成“四次挥手”。
所以,客户端要经历时长为2SML的TIME-WAIT阶段,这也是为什么客户端比服务器端晚进入CLOSED阶段的原因。
DNS是域名系统(Domain Name System)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,可以简单地理解为将URL转换为IP地址。
域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个唯一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。
因特网采用了层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。域名空间有根域,顶层域,二级域,子域,区域之分。
每一个域名都是一个标号序列,用字母、数字和连接符组成,标号序列总长度不能超过255个字符,它由点号分割成一个个的标号,每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。
级别最低的域名写在左边,级别最高的域名写在右边
域名服务主要是基于UDP实现的,服务器的端口号为53
域名解析总体可分为两大步骤:
第一个步骤是本机向本地域名服务器发出一个DNS请求报文,报文里携带需要查询的域名。
第二个步骤是本地域名服务器向本机回应一个DNS响应报文,里面包含域名对应的IP地址。
从下面对jocent.me进行域名解析的报文中可明显看出这两大步骤:
具体的流程可描述如下:
1. 主机10.74.36.90先向本地域名服务器10.74.1.11进行递归查询
2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器dns.me的IP地址
4. 本地域名服务器向顶级域名服务器dns.me进行查询
5. 顶级域名服务器me告诉本地域名服务器,下一步查询权限服务器dns.jocent.me 的IP地址
6. 本地域名服务器向权限服务器dns.jocent.me进行查询
7. 权限服务器dns.jocent.me告诉本地域名服务器所查询的主机的IP地址
8. 本地域名服务器最后把查询结果告诉10.74.36.90
整个 DNS 格式主要分为 3 部分内容,即基础结构部分、问题部分、资源记录部分:
1. 事务 ID:DNS 报文的 ID 标识,对于请求报文和其对应的应答报文,该字段的值是相同的,通过它可以区分 DNS 应答报文是对哪个请求进行响应的
2. 标志:DNS 报文中的标志字段
3. 问题计数:DNS 查询请求的数目
4. 回答资源记录数:DNS 响应的数目
5. 权威名称服务器计数:权威名称服务器的数目
6. 附加资源记录数:额外的记录数目(权威名称服务器对应 IP 地址的数目)
1. QR(Response):查询请求/响应的标志信息。查询请求时,值为0;响应时,值为 1。
2. Opcode:操作码。其中,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。
3. AA(Authoritative):授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
4. TC(Truncated):表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。
5. RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。
6. RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。
7. Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。
8. rcode(Reply code):返回码字段,表示响应的差错状态。
1. 当值为 0 时,表示没有错误;
2. 当值为 1 时,表示报文格式错误,服务器不能理解请求的报文;
3. 当值为 2 时,表示域名服务器失败,因为服务器的原因导致没办法处理这个请求;
4. 当值为 3 时,表示名字错误,只有对授权域名解析服务器有意义,指出解析的域名不存在;
5. 当值为 4 时,表示查询类型不支持,即域名服务器不支持查询类型;
6. 当值为 5 时,表示拒绝,一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。
2. 问题部分
问题部分指的是报文格式中查询问题区域(Queries)部分。该部分是用来显示 DNS 查询请求的问题,通常只有一个问题。该部分包含正在进行的查询信息,包含查询名(被查询主机名字)、查询类型、查询类。
1. 查询名:一般为要查询的域名,有时也会是 IP 地址,用于反向查询
2. 查询类型:DNS 查询请求的资源类型,通常查询类型为 A 类型,表示由域名获取对应的 IP 地址
3. 查询类:地址类型,通常为互联网地址,值为 1
3. 资源记录部分
资源记录部分是指DNS报文格式中的最后三个字段,包括回答问题区域字段、权威名称服务器区域字段、附加信息区域字段。
1. 域名:DNS 请求的域名
2. 类型:资源记录的类型,与问题部分中的查询类型值是一样的
3. 类:地址类型,与问题部分中的查询类值是一样的
4. 生存时间:以秒为单位,表示资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间,它同时也可以表明该资源记录的稳定程度,稳定的信息会被分配一个很大的值
5. 资源数据长度:资源数据的长度
6. 资源数据:表示按查询段要求返回的相关资源记录的数据
NAT 网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
NAT将自动修改IP报文的源IP地址和目的IP地址,IP地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文的数据部分进行修改,以匹配IP头中已经修改过的源IP地址。否则,在报文数据部分嵌入IP地址的应用程序就不能正常工作。
①如图这个Client的网关设定为NAT主机,所以当要连上Internet的时候,该封包就会被送到NAT主机,这个时候的封包头部的源IP为192.168.1.100。
②透过这个NAT主机,它会将Client的对外联机封包的源IP伪装成PPP0(拨号),这个接口具有公共IP。因为是公共IP了,所以这个封包就可以连上Internet,同时NAT主机并且会记忆这个联机的封包是由哪一个Client端传送来的。
③由Internet传送回来的封包,当然由NAT主机来接收,NAT主机会去查询原本记录的路由信息,并将目标IP由 PPP0上面的公共IP改回原来的192.168.1.100。
④最后则由NAT主机将该封包传送给原先发送封包的Client。
DHCP动态主机配置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:1.给内部网络或网络服务供应商自动分配IP地址,2.给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
简单快速
客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
灵活
HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态
HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP使用统一资源标识符URI来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。
URL,全称是Uniform Resource Locator,中文“统一资源定位符”,是互联网上用来标识某一处资源的地址。
✈以下面这个URL为例,介绍下普通URL的各部分组成:
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
从上面的URL可以看出,一个完整的URL包括以下几部分:
一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。
请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。请求方法比较多:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,最常用的是GET和POST。
空行
通过一个空行,告诉服务器请求头部到此为止
请求数据
HTTP响应由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接
- 浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
- 释放 TCP连接
- 浏览器将该 html 文本并显示内容
如果我们在客户端(客户端)浏览器输入 http://www.baidu.com
,而baidu.com
为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:
在计算机网络系统中,交换概念的提出改进了共享工作模式。我们以前介绍过的Hub集线器就是一种共享设备,Hub本身不能识别目的地址,当同一局域网内的A主机给B主机传输数据时,数据包在以Hub为架构的网络上是以广播方式传输的,由每台终端通过验证数据包头的地址信息来确定是否接收,也就是说,在这种工作方式下,同一时刻网络上只能传输一组数据帧的通信, 如果发生碰撞还得重试。这种方式就是共享网络带宽。
如前所述,交换机拥有条很高带宽的背部总线和内部交换矩阵。交换机上所有的端口都挂接在这条背部总线上。控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,并通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在,则广播到所有的端口,接收端口回应后交换机会“学习”到新的地址,并把它添加到内部MAC地址表中。
使用交换机也可以把网络“分段”,通过对照MAC地址表,交换机只允许必要的网络流量通过交换机。通过交换机的过滤和转发,可以有效地隔离广播风暴,减少误包和错包的出现,避免共享冲突。
交换机的主要功能有两部分,建立虚连接和转发信息。
当两个站点间有信息包要传输时,在这两站点间临时建立条点对点的连接,信息包发送完后,就立即拆除这个连接。在交换机内部保存了一张地址表,用来存储它所连接的各站点所在的交换机端口号和MAC地址之间的对应关系。交换机从一个端口收到信息包,识别出包中的目的站MAC地址,查地址表, 得到目的站所在的端口,就可在两个端口间建立一条虚连接,再将信息包从源端口转发到目的端口,包发送完后, 这条虚连接就不存在了。
总之,交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。交换机可以学习MAC地址,并将其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。
为了保证企业网络中关键应用的可持续性,在进行网络拓扑结构设计和规划时,冗余常常是我们考虑的重要因素之一。 在如今的网络工程设计中,冗余设计是考验一个网络是否稳定的关键环节,链路冗余使网络具有了容错功能,具有冗余性的设计对于网络的可靠性是极其重要的。
产生广播风暴
广播风暴也叫网络广播风暴,即一个数据包或帧被传送到本地网段(由广播域定义)上的每个节点就是广播,网络上的广播帧由于被转发,数量急剧增加而出现正常网络通信的反常现象。
广播风暴会占用相当可观的网络带宽,导致正常数据包无法正常运行。当广播数据充斥网络无法处理并占用大量网络带宽,导致正常业务不能运行,这就发生了广播风暴,造成局域网局部或整个网络瘫痪。
如图所示就是一个存在环路的局域网络,假设B1、B2和B3都还没有学习到A的MAC地址,因为A还没有发送过任何数据。当A发送了一个数据帧,最初三个交换机都接收了这个数据帧,记录A的地址在LAN1上,并排队等待将这个数据帧转发到LAN2上。其中一个交换机首先成功地将数据帧发送到LAN2上,假设这个网桥是B1,那么B2和B3将再次收到这个数据帧,因为BI对B2和B3来说是透明的。这个数据帧就好像是A在LAN2上发送的一样。于是B2和B3记录A在LAN2上,排队等待将这个新接收到的数据帧转发到LAN1上,假设这时B2成功地将最初的数据帧转发到LAN2上,那么B1和B3都接收到这个数据帧,并排队等待转发这个数据帧到LAN1上。 如此反复,数据帧就在环路中不断循环,更糟糕的是每次成功的转发都会导致网络中出现两个新的数据帧,从而形成严重的广播风暴。
出现帧的复制现象
广播风暴不断旋转时,同一个广播帧被反复在网段上传递,交换机就要拿出更多的时间处理这个不断被复制的广播帧,从而使整个网络的性能急剧下降,甚至瘫痪,而主机也正忙于处理这些相同的广播帧,因为它们在不断地被发送到主机的网络接口卡上,这就影响了主机的正常工作,在严重时甚至会使主机死机。
MAC地址表不稳定
交换机之所以比集线器(Hub)速率快,就是因为交换机的内存里有一个MAC地址表和端口映射的缓存——MAC地址表, 但是在发生广播风暴的时候,由于广播风暴是在两个相反的方向上旋转的,所以会影响到MAC地址表的正常工作。
如果网络不存在物理上的环路,就不会有上述问题存在,然而当网络结构复杂时,要保证网络中没有任何环路是很困难的,并且在许多对可靠性要求高的网络中,为了保证不向断的网络服务,需要采用物理环路的冗余备份,因此,保证网络不存在环路是不现实的。
IEEE提出了个很好的解决办法,
那就是802.1D协议标准规定的STP(生成树协议的英文缩写),该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树形网络,从而避免报文在环路网络中的增生和无限循环。
STP (Spanning Tree Protocol,生成树协议)就是用来解决网络的环路。STP通过一定的算法,使得任意两个节点间有且只有一条路径连接, 而其他的冗余链路则被自动阻塞, 作为备份链路。只有当活动链路失败时,备份链路才会被激活,从而恢复设备之间的连接,保证网络的畅通。
STP操作对于终端来说是透明的,而不管终端连在LAN的某一部分还是多个部分。当创建网络时,网络中所有节点存在多条路径。生成树中的算法计算出最佳路径,因为每个VLAN是一个逻辑LAN部分,所以网管员能使STP一次工作在最多64个VLAN中。如果要配置超过64个VLAN,网管员需要将其他VLAN的STP禁止,因为默认的STP只能支持1–64个VLAN。
运行生成树算法的网桥/交换机在规定的问隔(默认2秒)内通过网桥协议数据单元(BPDU)的组播帧与其他交换机交换配置信息,其工作的过程如下:
启用生成树协议的交换机,其接口处于以下几种状态:
STP中定义了根桥(Root Bridge)、根端口(Root Port)、指定端口(Designated Port)、路径开销(Path Cost)等,目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。
生成树算法会特意阻塞可能导致环路的冗余路径,以确保网络中所有目的地之间只有一条逻辑路径,但要实现这些功能,网桥之间必须要进行一些信息的交流,这些信息交流单元就称为网桥协议数据单元BPDU帧。
- BPDU是一种二层报文,目的MAC地址是多播地址:01-80-C2-00-00-00,所有支持STP的网桥都会接收并处理收到的BPDU报文,该报文的数据区里携带了用于生成树计算的所有有用信息。
- 阻塞的路径不再接收和转发用户数据包,但是会接收用来防止环路的网桥协议数据单元BPDU帧。如果网络拓扑发生变化,需要启用阻塞路径来抵消网络电缆或交换机故障的影响,STP就会重新计算路径,将必要的端口解除阻塞,使冗余路径进入活动状态。
每个BPDU都包含4个重要字段:
1.根桥的BID
2.转发根桥BPDU 的网桥的BID
3.到达根桥的开销
4.转发根桥BPDU 的网桥的端口ID
1.根端口:最靠近根桥的交换机端口
2.指定端口:网络中获准转发流量的、除根端口之外的所有端口
3.非指定端口:为防止环路而被置于阻塞状态的所有端口
4.禁用端口:是处于管理性关闭状态的交换机端口
5.端口开销:端口开销值与给定路径上的每个交换机端口的端口速度相关联
6.路径开销:路径开销是到根桥的路径上所有端口开销的总和
7.到根桥的最佳路径:交换机到根桥的所有路径中最短的一条路径
8.BPDU(网桥协议数据单元):是运行STP交换机之间交换的消息帧
交换机完成启动后,生成树便立即确定。如果交换机端口直接从阻塞转换到转发状态,但交换机此时并不了解所有拓扑信息时,该端口可能会暂时造成数据环路。为此,STP引入了5种端口状态:
端口处于各种端口状态的时间长短取决于BPDU计时器,BPDU计时器状态:
STP端口状态的转换过程有以下5种:
选举根桥
●根桥的选举在交换机完成启动时或网络中检测到路径故障时触发。一开始,所有交换机端口都配置为阻塞状态,此状态默认情况下会持续20s。
●由于生成树技术允许网络的端与端之间最多有7台交换机,因此整个根桥的选举过程能够在14s内完成,此时间短于交换机端口处于阻塞状态的时间。
●交换BPDU,每2s发送一次,选取BID最小的网桥为根桥。
选举根端口
●除根桥外的其余每台交换机都需具有一个根端口(到根桥的路径开销最低的端口)。
●如果当同一交换机上有两个以上的端口到根桥的路径开销相同时,做出如下选择:
选举指定端口和非指定端口
●交换网络中的每个网段只能有一个指定端口。
●当两台交换机交换BPDU帧时,它们会检查收到的BPDU帧内的发送方BID,BID较小的交换机会将其端口配置为指定角色,BID较大的交换机将其交换机端口配置为非指定角色(阻塞状态)。
STP给透明网桥带来了新生。但是,随着应用的深入和网络技术的发展,它的缺点在应用中也被暴露了出来,STP的缺陷主要表现在收敛速度上:当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为转发延迟,协议默认值是15s。在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。
为了解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度都是转发延迟,这样就可以保证在拓扑变化的时候不会产生临时环路。但是,这个看似良好的解决方案实际上带来的却是至少两倍转发延迟的收敛时间。
RSTP在STP基础上做了三点重要改进,使得收敛速度快得多(最快1s以内)。
路由器(Router)用于连接多个逻辑上分开的网络。所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另个子网时,可通过路由器来完成,因此,路由器具有判断网络地址和选择路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网。路由器只接受源站或其他路由器的信息,属于网络层的一种互联设备, 它不关心各子网使用的硬件设备,但要求运行与网络层协议相一致的软件。一般说来,异种网络互联与多个子网互联都应采用路由器来完成。
路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据路由表 (Routing Table),供路由选择时使用。路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表可以是由系统管理员固定设置好的、也可以由系统动态修改,可以由路由器自动调整、也可以由主机控制。
当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它直接把IP分组送到网络上对方就能收到,而要送给不同IP子网上的主机时,它要选择一个使到达目的子网上的路由器,把IP分组送给该路由器,由路由器负责把IP分组送到目的地。如果没有找到这样的路由器,主机就把IP分组送给一个称为默认网关(default gateway)的路由器上。默认网关是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的IP地址。
路由器转发IP分组时,只根据IP分组目的IP地址的网络号部分,选择合适的端口,把IP分组送出去。同主机一样,路由器也要判定端口所接的是否是目的子网。如果是,就直接把分组通过端口送到网络上,否则就要选择下一个路由器来传送分组。路由器也有它的默认网关,用来传送不知道往哪儿送的IP分组。这样,通过路由器把知道如何传送的IP分组正确转发出去,不知道的IP分组送给默认网关路由器,这样一级一级地传送,IP分组最终将送到目的地,送不到目的地的IP分组则被网络丢弃了。
路由动作包括两项基本内容:寻行和转发
路由转发协议和路由选择协议是相互配合又相互独立的概念, 前者使用后者维护的路由表,同时后者要利用前者提供的功能来发布路由协议数据分组。
典型的路由选择方式有两种:静态路由和动态路由
静态路由是在路由器中设置的固定的路由表。除非网络管理员干预,否则静态路由不会发生变化。由于静态路由不能对网络的改变做出反映,因而一般用于网络规模不大、拓扑结构固定的网络中。
静态路由的优点是简单、高效、可靠,在所有的路由中,静态路由的优先级最高。当动态路由与政由发生冲突时,以静态路由为准。
动态路由是网络中的路由器之间相互通信、传递路由信息、利用收到的路由信息更新路由器表的过程,它能实时地适应网络结构的变化。如果路由更新信息表明发生了网络变化路由这择软件就会重新计算路由,并发出新的路由更新信息,这些信息通过各个网络,引起各路由器重新启动其路由算法并更新各自的路由表以动态地反映网络网络拓扑变化。
动态路由适用于网络规模大、网络拓扑复杂的网络,当然,各种动态路由协议会不同程度地占用网络带宽和CPU资源静志路由和动态路由有各自的特点和适用范围,因此在网络中动态路由通常作为静态路由的补充。
当一个分组在路由器中进行寻径时,路由器首先查找静态路由,如果查到则根据相应的静态路由转发分组,否则即再查找动态路由。
RIP路由协议
RIP协议是由施乐在20世纪70年代设计开发的,是Internet中常用的路由协议。RIP采用距离向量算法,即路由器根据距离选择路由,所以也称为距离向量协议。路由器收集所有可到达目的地的不同路径,并且保存有关到达每个目的地的最少站点数的路经信息,除了到达目的地的最佳路径之外,任何其他信息均予以丢弃,同时路由器也把所收集的路由信息用RIP协议通知相邻的其他路由器,这样,正确的路由信息就逐渐扩散到了全网。
RIP使用非常广泛,它简单、可靠、便于配置,但是RIP只适用于小型的同构网络,因为它允许的最大站点数为15,任何超过15个站点的目的地均被标记为不可达,而且RIP每隔30s一次的路由信息广播也是造成网络的广播风暴的重要原因之一。
RIPv1特点:
(1)有类别路由协议,不支持VLSM和CIDR
(2)广播更新路由信息
(3)不支持认证
- RIPv1的报文:包括 Request 和 Response ,Request 报文在RIP路由器接入网络时发送,用于请求对端的所有RIP路由信息,Response 报文周期30s发送,携带本路由器所有的有效的RIP路由。
- 在支持触发更新时也会发送 Response 报文更新或删除路由。
- RIPv1的报文最大有512byte = 8byte(UDP) + 4byte(RIP header) + 20byte(一条RIP路由) * 25,所以一个RIPv1报文最大只能携带25条路由。
RIPv2特点:
(1)无类别路由协议,在更新路由时可以发送路由的掩码,支持VLSM和CIDR
(2)支持组播和广播更新,组播地址为224.0.0.9
(3)支持明文和MD5密文认证
(4)路由信息更加丰富,支持携带掩码和下一跳,支持携带路由标记
- RIPv2的报文:组播224.0.0.9发送,使用组播更安全,效率更高,只有运行RIPv2的路由器接受并处理。包括 Request 和 Response,Request 报文在RIP路由器接入网络时发送,用于请求对端的所有RIP路由信息,Response 报文周期30s发送,携带本路由器所有的有效的RIP路由。
- 在支持触发更新时也会发送 Response 报文更新或删除路由。
- RIPv1的报文最大有512byte = 8byte(UDP) + 4byte(RIP header) + 20byte(一条RIP路由) * 25,所以一个RIPv1报文最大只能携带25条路由。
- RIPv2将认证字段放在了一条路由中,使用第一条路由携带认证字段,所以如果开启了认证,则一个RIPv2报文最大只能携带24条路由。
RIP的主要特征
RIP路由互相学习过程解析
RIP协议运行前R1、R2、R3的路由表中只有直连路由的信息
- R1将网络1的路由信息发给R2,R2学到了网络1并将度量值标记为1跳,即经过一台路由可以到达,下一跳是R1。
- 路由R2将网络1的路由信息发给R3和R5,R3和R5都学到了网络1,并将度量值标记为2跳,即经过两台路由可以到达,下一跳是路由R2;R3和R5都将网络1发给R4,R4也学到网络1,并将度量值标记为3跳,下一跳路由是R3或R5,即从两台路由都能到达,R4去往网络1的数据将负载均衡。此时所有的路由都拥有一致的认识和正确的路由表,这时网络被称作已收敛。
- 此时,当网络1断开,R1将网络1不可达的信息发送给R2,R2将网络1不可达的信息发送给R3和R5,R4还不知道网络1不可达的信息,就在这个时候R4发送了一个更新给R5,认为通过R3可以到达网络1;当然也可能是发送给R3,告诉它通过R5可以到达网络1。
- 这里假设是第一种情况,R5收到通过R4可以到达网络1的更新后,更新自己的路由表,并将网络1可达的信息发送给了R2,R2更新自己的路由表并发送给R3和R1。R3更新自己的路由表并发送给R4,至此,路由环路形成。
距离矢量路由环路的解决方法有如下五种:
OSPF协议使用最短路径优先算法SPF来计算生成路由表,其参考值为链路成本(Cost)
链路成本的定义是基于链路带宽的,带宽越高则链路成本越低,带宽越低则链路成本越高。
OSPF引入分层路由的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域”,主干的部分称为“主干区域”。多区域的OSPF必须存在一个主干区域,主干区域负责收集非主干区域发出的汇总路由信息,并将这些信息返回给到各区域。
1. 建立路由器的邻居关系
2. 进行必要的DR/BDR选举
3. 链路状态数据库的同步
4. 产生路由表
5. 维护路由信息
选举DR和BDR
总结:
(●’◡’●)****❀★内容持续更新中(●’◡’●)****❀★