一、计算机网络概述

1.1计算机网络的定义
计算机网络是指将地理位置不同且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
1.2计算机网络的分类
按照网络的作用范围分: 全球区域网(GAN)**、**广域网(WAN),城域网(MAN),局域网(LAN)、个人区域网(PAN)。
**按照网络使用者分:**公用网络,专用网络。
**按照拓扑分:**星型结构、树形结构、总线型结构、环型结构、网状结构
按照传输方式分:
有线网络:通过物理介质(如双绞线、光纤)将设备连接到网络。每个设备通过网线连接到交换机或路由器,主要标准是IEEE802.3(以太网标准)。
无线网络:通过无线电波(RF信号)在设备之间传输数据。每个设备通过无线网卡连接到无线接入点(AP),主要标准是IEEE802.11、WLAN无线局域网(wireless)、WPAN无线个域网。
1.3计算机网络的组成
功能组成:
资源子网:提供共享的软件资源和硬件资源。
通信子网:提供信息交换的网络节点和通信线路。
工作方式:
边缘部分:各种端系统如主机,手机,大型或超级计算机组成。位于网络边缘,运行网络应用程序。
核心部分:互联的路由器网络。关键功能:路由和转发,其中交换机是在同一个子网内部转发数据,路由器是在不同子网之间转发数据。以数据交换的方式实现数据从源主机通过网络核心到达目的主机。
1.4计算机网络的传输方式
按照传输方向分:
单工:只能单方向传输的工作模式。
半双工:在同一时间,线路上只能允许一个方向的通信。
全双工:双方可以同时进行数据通信。
按照传输对象分:
单播:1v1。单播是点对点的通信方式,即一个发送方(源)与一个接收方(目标)之间的通信。
多播:1v多。多播是点对多点的通信方式,即一个发送方与一组接收方之间的通信。
广播:1v所有。广播是点对所有的通信方式,即一个发送方与网络中所有接收方之间的通信。
1.5计算机网络的三种数据交换
**电路交换:**整个报文从源头到终点连续的传输,直到传输完不在使用这条线时,下一个人才能传输。
**报文交换:**整个报文先传输到相邻结点,全部存储下来查找转发表,再转发到下一个节点。
**分组交换:**将一个报文分成多个分组,传送到相邻结点,再查找转发表,再转发到下一个结点。
1.6通信协议和体系结构
网络协议三要素:
**语法:**语法指网络协议中数据和控制信息的结构和格式。比如在IP协议中,数据包头部包括源地址、目标地址、版本号、头部长度等字段。
**语义:**语义指数据和控制信息的含义以及如何解释这些信息。比如在TCP协议中,标志位(如SYN、ACK、FIN等)的意义,表示连接建立、数据确认和连接终止等状态。
**时序:**时序指事件的顺序、时间关系以及数据交换的时序控制。比如在TCP协议中,确认超时时间的设定和重传机制;在HTTP协议中,请求和响应的时序。
1.7 OSI参考模型(开放式系统互联参考模型)

**应用层(Application Layer):**负责网络应用程序,如HTTP、FTP、SMTP等。
**表示层(Presentation Layer):**负责数据的格式化和加密解密。
**会话层(Session Layer):**负责建立、管理和终止会话(通信连接)。
**传输层(Transport Layer):**负责端到端的数据传输和流量控制,包括TCP和UDP协议。
**网络层(Network Layer):**负责数据包的路径选择和转发,包括IP地址的使用。
数据链路层(Data Link Layer):负责节点之间数据帧的传输和错误检测,包括MAC地址的使用,单位为帧。
**物理层(Physical Layer):**负责比特流的传输,包括电缆、接头、电压等物理特性,单位为bit。
1.8 TCP/IP参考模型

**应用层(Application Layer):**相当于OSI的应用层、表示层和会话层,负责各种网络应用程序和协议(如HTTP、FTP、SMTP等)。
**传输层(Transport Layer):**相当于OSI的传输层,负责端到端的数据传输和流量控制(TCP和UDP协议)。
**网络层(Internet Layer):**相当于OSI的网络层,负责数据包的路由选择和传输(IP协议)。
**网络接口层(Network Interface Layer):**相当于OSI的物理层和数据链路层,负责数据帧的物理传输。
1.9 TCP/IP四层模型与OSI体系结构对比

1.10计算机网络性能参数
**1)速率:**数据的传送速率,单位是bit/s
**2)带宽:**在计算机网络中,网络带宽表示单位时间内网络中某信道所能通过的"最高数据率",单位bit/s
**3)吞吐量:**表示发送端与接收端之间实际传送的数据速率(bit/s)
**4)时延:**指数据从网络的一端传送到另一端所需的时间。
1.发送时延:是主机或路由器发送数据帧所需要的时间。公式为:数据帧长度(bit)/发送速率(bit/s)。
2.传播时延:是电磁波在信道中传播一定的距离需要花费的时间。公式为:信道长度(m)/电磁波在信道上的传播速率(m/s)。
3.处理时延:主机或路由器在收到分组时要花费一定的时间进行处理。
4.排队时延:在分组进入路由器后要先在输入队列中排队等待处理。
**5)往返时间:**从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
**6)信道利用率:**指某信道有百分之几的时间是有数据通过。
1.信道利用率并非越高越好,因为当利用率增大时,该信道引起的时延也迅速增加。
二、物理层
**物理层的作用:**连接不同设备,传输比特流。该层为上层协议提供了一个传输数据可靠的物理媒体。简单来说,物理层确保原始数据可在各种物理媒体上传输。
2.1物理层的四大特性
**机械特性:**机械特性描述了物理连接设备的物理形状、尺寸和外部结构。
**电气特性:**电气特性描述了物理层传输信号的电气属性,包括电压、电流、阻抗等。
**功能特性:**功能特性描述了物理层提供的基本功能,如比特传输、信道建立、维护和释放等。
**过程特性:**过程特性描述了物理层执行的操作过程和步骤,包括信号的生成、传输和接收过程。
2.2物理层的两种信号
**模拟信号:**模拟信号是一种连续的信号,表示数据的波形在时间和幅度上都是连续的。它可以表示无限数量的值。
模拟信号适用于需要传输连续数据的场景,如音频和视频广播,但易受噪声干扰。
**数字信号:**数字信号是一种离散的信号,表示数据的波形在时间和幅度上都是离散的。它使用二进制数(0和1)来表示信息。
数字信号适用于数据通信和计算机网络,因为其抗噪声能力强,易于处理和存储。现代通信系统越来越多地使用数字信号进行数据传输。
2.3物理层的调制和编码
**调制:**调制是将信号转换为模拟信号。
**编码:**编码是将信号转换为数字信号。
**编码的过程:**采样、量化、编码。
区别:
1.数据可以通过编码手段转换为数字信号,也可以通过调制手段将数据转换为模拟信号。
2.数字数据可以通过数字发送器转化为数字信号(编码),也可以通过调制器转化为模拟信号(调制)。
3.模拟信号可以通过PCM编码器转化为数字信号(编码),也可以通过放大器调制器转化为模拟信号(调制)。
2.4物理层的传输介质
**双绞线:**双绞线由两根相互绝缘的铜线按一定规则绞合在一起,以减少电磁干扰。常用于局域网(LAN)和电话系统。
双绞线的类型:
1.屏蔽双绞线(STP, Shielded Twisted Pair):每对线或整个电缆有屏蔽层,抗干扰能力强,但成本较高。
2.非屏蔽双绞线(UTP, Unshielded Twisted Pair):成本低,灵活性高,但抗干扰能力较差。
双绞线的制作标准:
1.568B:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕
2.568A:13、26调换。绿白、绿、橙白、蓝、蓝白、橙、棕白、棕
**光纤:**光纤使用光脉冲传输数据,由玻璃或塑料制成的细长纤维。广泛应用于电信和有线电视网络。
光纤的类型:
1.单模光纤(Single-Mode Fiber, SMF):中心纤芯很细(芯径一般为9或10μm),只能传一种模式的光。因此,其模间色散很小,适用于远程通讯,但还存在着材料色散和波导色散,这样单模光纤对光源的谱宽和稳定性有较高的要求,即谱宽要窄,稳定性要好。距离100km。
2.多模光纤(Multi-Mode Fiber, MMF):芯较粗(50或62.5μm),可传多种模式的光。但其模间色散较大,这就限制了传输数字信号的频率,而且随距离的增加会更加严重。例如:600MB/KM的光纤在2KM时寸则只有300MB的带宽了。因此,多模光纤传输的距离就比较近,一般只有几公里。距离2km。
**同轴电缆:**同轴电缆由一根中心导体、一层绝缘层、一个编织屏蔽层和外护套组成。应用与有线电视系统和宽带互联网接入。
**无线:**无线传输利用无线电波进行数据传输,无需物理连接。无线信号频率IEEE802.11。
2.5物理层的三大部分
**源系统:**发送数据的一端。比如计算机、手机或其他终端设备。
**传输系统:**传输过程中的各种传输介质。比如双绞线、光纤、电缆或无线电波。
**目的系统:**接收数据的一端。比如计算机、服务器或其他终端设备。
2.6物理层的四种信道复用技术
复用技术:复用技术是指一种传输路径上综合多路信道,然后恢复原机制或解除终端各复用技术的过程。简单来说,是将多种不同信号在同一信道上进行传输,复用技术主要是用于解决不同信号传输应该如何区分。
**信道的基本概念:**信道是往一个方向传输信息的媒体,一条通信电路包含一个发送信道和一个接受信道。
**1.频分多路复用(Frequency Division Multiplexing, FDM):**FDM通过将不同的信号分配到不同的频率段来实现多路复用。每个信号在不同的频率上同时传输。应用:主要用于传统的广播电视、无线电通信和有线电视系统。
**2.时分多路复用(Time Division Multiplexing, TDM):**TDM通过将时间划分为多个时隙,每个时隙分配给不同的信号。在同一传输介质上,不同的信号在不同的时间段内传输。应用:主要用于数字电话系统、光纤通信和数据通信系统。
**3.码分多路复用(Code Division Multiplexing, CDM):**CDM使用不同的代码来区分和复用信号。每个信号通过不同的伪随机码编码后在同一频谱上传输,接收端通过相应的伪随机码解码出所需的信号。应用:主要用于蜂窝移动通信系统,如CDMA技术。
**4.波分多路复用(Wavelength Division Multiplexing, WDM):**WDM是一种FDM的特殊形式,主要用于光纤通信。它通过将不同的光信号分配到不同的波长来实现多路复用。应用:主要用于长距离和高容量的光纤通信系统。
2.7物理层的数据传输方式
通过同时间传输数量分:
串行传输:使用一条数据线,将数据一位一位依次传输,每一位数据占据一个固定的时间长度。只需要少数几条线就可以在系统间交换信息,特别适用于计算机和计算机、外设子间的远距离通信。
并行传输:并行传输指的是数据已成组的方式,在多条并行信道上同时进行传输,是在传输中有多个数据位同时在设备上进行传输。
通过数据报文的双方行为分:
同步传输:同步传输是在发送方和接收方之间建立一个同步时钟信号,通过这个时钟信号同步发送和接收数据。数据在固定的时间间隔内被发送,接收方根据同步时钟信号按时接收数据,类似QQ的在线传输。
异步传输:异步传输中,数据是以字符或字节为单位传输的,每个字符前后加上起始和停止位进行分隔。发送方和接收方无需共享时钟信号,接收方通过起始位检测数据传输的开始,类似QQ的离线传输。
通过传输的信号分:
基带传输:传输数字信号叫基带传输。
频带传输:传输模拟信号叫频带传输,传输范围300-3400Hz。
按照传输方向分:
单工:只能单方向传输的工作模式。
半双工:在同一时间,线路上只能允许一个方向的通信。
全双工:双方可以同时进行数据通信。
按照传输对象分:
单播:1v1。单播是点对点的通信方式,即一个发送方(源)与一个接收方(目标)之间的通信。
多播:1v多。多播是点对多点的通信方式,即一个发送方与一组接收方之间的通信。
广播:1v所有。广播是点对所有的通信方式,即一个发送方与网络中所有接收方之间的通信。
三、数据链路层
3.1数据链路层概述
数据链路层 是在物理层和网络层之间的协议,提供相邻节点的可靠数据传输。数据链路层在不可靠的物理介质上提供可靠的传输。
3.2数据链路层的三个基本问题
"帧"是数据链路层数据的基本单位:

**封装成帧:**封装成帧是指将网络层传下来的数据封装成帧,以便在数据链路层进行传输。每一个帧都包含数据部分和控制信息部分。
1.帧头(Header):包括源地址和目的地址,用于标识发送方和接收方。
2.数据字段(Payload/Data):承载实际的数据信息。
3.帧尾(Trailer):通常包含差错检测信息,如CRC(循环冗余校验)
透明传输:"透明"是指即使控制字符在帧数据中,但是要当做不存在去处理。即在控制字符前加上转义字符ESC。

**差错检测:**奇偶校验,循环冗余校验(CRC)
**1.奇偶校验:**在数据中加入一个奇偶校验位,以确保数据中1的个数为奇数或偶数。这种方法简单但检测能力有限,当出错两位时,检测不到错误。
**2.循环冗余校验(CRC):**一种强大的检错码,将数据视为一个多项式,通过除法运算得到校验码,并在接收端进行校验。CRC能检测出多种常见的错误模式。
3.3以太网数据帧中的MAC和LLC
以太网(Ethernet)数据帧的结构由多个字段组成,其中包括MAC(介质访问控制,Media Access Control)和LLC(逻辑链路控制,Logical Link Control)部分。这两个部分在数据链路层起着关键作用。
**MAC(Media Access Control):**MAC层是数据链路层的子层,负责控制硬件设备如何访问物理介质并传输数据。在以太网数据帧中,MAC层字段如下:
1.目的MAC地址:6字节,用于指定接收数据帧的设备的物理地址。
2.源MAC地址:6字节,用于指定发送数据帧的设备的物理地址。
3.类型/长度:2字节,用于指示数据帧中的数据字段的类型或长度。当该字段的值小于等于1500时,表示数据字段的长度;当该字段的值大于等于1536时,表示数据字段的类型,例如IPv4(0x0800)、ARP(0x0806)等。
**LLC(Logical Link Control):**LLC层也是数据链路层的子层,主要用于多路复用、流量控制和错误检测。在以太网数据帧中,LLC字段包括:
1.DSAP:1字节,用于指定目的服务访问点(Service Access Point)。
2.SSAP:1字节,用于指定源服务访问点。
3.控制字段:1或2字节,用于控制帧的类型,如信息帧、监督帧和无编号帧等。

3.4数据链路层的冲突域和广播域
**冲突域:**冲突域是指在网络中,数据帧可能发生冲突的物理区域。换句话说,在同一个冲突域内,如果有两个设备同时发送数据,这些数据帧可能会在网络中发生碰撞(collision),导致数据传输失败,必须重新发送。
1.集线器:集线器工作在物理层,它会将接收到的数据帧广播到所有端口,因此所有连接到集线器的设备都共享同一个冲突域。如果两个设备同时发送数据,碰撞就会发生。
2.交换机:交换机工作在数据链路层,每个端口都有独立的冲突域,这意味着连接到不同端口的设备之间不会发生冲突。交换机的每个端口都可以独立地发送和接收数据,从而减少冲突的发生。
**广播域:**广播域是指一个网络区域内,广播帧可以传播到的所有设备。广播帧是一种特殊的数据帧,它会被发送到网络中的所有设备。
1.交换机:交换机在同一个局域网(LAN)内转发广播帧,因此直连到同一交换机的所有设备都属于同一个广播域。
2.路由器:路由器工作在网络层,它会隔离广播域。广播帧不会通过路由器传播到其他网络,这意味着路由器的每个接口都属于不同的广播域。
区别与联系
冲突域:
1.集线器共享同一个冲突域。
2.交换机的每个端口是独立的冲突域。
广播域:
1.交换机在同一局域网内共享一个广播域。
2.路由器隔离广播域,每个接口是独立的广播域
3.5虚拟局域网(VLAN)
虚拟局域网(VLAN,Virtual Local Area Network)是一种将物理局域网(LAN)划分为多个逻辑网络的技术。VLAN允许网络管理员将单个交换机或交换机组内的设备划分为不同的广播域,以实现更好的网络管理、安全性和性能。
VLAN的特点和优点:
1.**隔离广播域:**每个VLAN都是一个独立的广播域,因此广播流量不会跨越VLAN传播,减少了广播风暴的风险。
2.**提高安全性:**VLAN可以将敏感数据和设备隔离在不同的VLAN中,从而限制未经授权的访问。例如,可以将财务部门和研发部门的设备放在不同的VLAN中。
3.**灵活的网络管理:**VLAN允许网络管理员根据功能、部门或项目组对设备进行分组,而不必考虑设备的物理位置。这使得网络重组和扩展更加灵活和方便。
4.**优化性能:**通过划分VLAN,可以减少每个广播域中的设备数量,从而减少广播流量,提高网络性能。
划分VLAN的方式:
1.基于端口:
Trunk端口:用于交换机与交换机之间传输多个VLAN的流量。Trunk端口会对传输的帧进行VLAN标签,并在接收端去掉标签。
Access端口:用于连接终端设备pc端,只传输一个VLAN,不进行VLAN标签处理。
Hybrid端口:混合模式端口能够同时处理属于单个VLAN的未标记流量和多个VLAN的标记流量。这在需要灵活的网络设计和管理时非常有用,尤其是在复杂的网络环境中。
**2.基于MAC地址:**通过设备的MAC地址将设备分配到VLAN。这种方式不依赖于设备的物理连接位置,但配置和管理较为复杂。
**3.基于协议:**根据传输的网络协议类型(如IP、IPX等)来划分VLAN。
**4.基于子网:**根据设备的IP地址或子网划分VLAN。这种方式常用于需要根据逻辑网络拓扑进行VLAN划分的场景。
3.6 CSMA/CD
CSMA/CD 代表载波监听多路访问/碰撞检测,是广播信道中采用一种随机访问技术的竞争型访问方法,具有多目标地址的特点。总线型网络传输数据。
CSMA/CD 的四大要点:
**1.载波监听 (先听后发):**设备在发送数据之前,先监听网络介质以确定是否有其他设备在传输数据。如果介质空闲,设备可以发送数据;如果介质忙碌,设备会等待。
2.多路访问 (边听边发):多个设备可以共享同一个通信介质。这意味着多个设备可以同时访问网络,但需要一种机制来管理它们的访问,以防止数据碰撞。
**3.碰撞检测 (冲突检测):**在数据传输过程中,设备持续监控网络信号,以检测是否有其他设备在同时传输数据。如果检测到碰撞,设备会停止发送数据,并执行碰撞处理步骤。
**4.碰撞处理和重传(延迟后发):**当检测到碰撞时,设备立即停止发送数据,并向网络发送一个"拥塞信号"通知其他设备。然后,设备等待一个随机的退避时间后再次尝试发送数据。这个随机等待时间随着每次碰撞而增加,通常使用二进制指数退避算法来计算。
3.7 PPP点对点协议
点对点协议(Point-to-Point Protocol,PPP)是一种数据链路层通信协议,主要用于在点对点链路上传输多种网络层协议的数据。它最常用于通过电话线、串行线和其他类型的点对点连接来连接网络。
PPP最初设计是为两个对等节点之间的IP流量传输提供一种封装协议。
PPP提供以下几个主要功能:链路建立和配置,身份验证,封装多个协议,错误检测,链路控制协议(LCP),网络控制协议(NCP)。
3.8 CRC循环冗余校验
循环冗余校验(Cyclic Redundancy Check,CRC)是一种用于检测数据传输或存储过程中错误的算法。CRC通过在数据传输前计算一个固定长度的校验码,并在接收端进行验证,从而保证数据的完整性和准确性。
CRC的优点:
**1.高效性:**CRC计算简单高效,适合硬件实现,能快速完成校验码的计算。
**2.检测能力强:**CRC能够有效检测多种类型的错误,包括单比特错误、双比特错误和突发错误。
**3.广泛应用:**CRC被广泛应用于各种通信协议、存储设备和文件传输等领域,如以太网、USB、磁盘存储、数据压缩等。
四、网络层
4.1网络层的作用
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。数据交换技术是报文交换(基本上被分组所替代):采用储存转发方式,数据交换单位是分组。
网络层的主要功能和作用包括: 路由选择、逻辑地址分配和管理、数据包转发、分组和重组、拥塞控制、差错处理和诊断。
4.2网络层协议
网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议------IP协议(因特网互联协议)。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。
ARP(Address Resolution Protocol, 地址解析协议**):**将网络层的32位IP地址解析为数据链路层的48位MAC地址(物理地址)。
RARP(Reverse Address Resolution Protocol, 逆地址解析协议**):**将数据链路层的48位MAC地址解析为网络层的32位IP地址。
ICMP(Internet Control Message Protocol, 因特网报文协议**)**:通过ICMP传输控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,比如ping。
IGMP(Internet Group Management Protocol, 因特网组管理协议**)**:用于管理网路协议多播组成员的一种通信协议。IP主机和相邻的路由器利用IGMP来创建多播组的组成员。组播方式解决了单播情况下数据的重复拷贝及带宽的重复占用,也解决了广播方式下带宽资源的浪费。
4.3 IP地址详解
IP网际协议是 Internet 网络层最核心的协议。它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异;当网络中主机使用IP协议连接时,无需关注网络细节,于是形成了虚拟网络。

IP协议使得复杂的实际网络变为一个虚拟互联的网络;并且解决了在虚拟网络中数据报传输路径的问题。

IP地址和MAC地址的区别:
1.IP地址是一个逻辑地址,MAC地址是物理地址
2.MAC地址是唯一的但是IP地址不是唯一的
3.MAC地址主要是工作在第二层,IP地址在网络层
4.MAC地址是48位,IP地址一般是32位(v6是128位)
5.IP地址的分配取决于网络拓扑,MAC地址分配取决于制造商。
4.4 IP协议的转发流程

4.5 IP地址的分类
IP版本:v4/v6
- ipv4占用空间32bit=4Byte,1Byte=8bit;表现形式为十进制
- ipv6占用空间128bit=16Byte;表现形式为16进制
- ipv4地址作用:区分不同的节点(门牌号)和解析MAC地址
- ipv4地址组成:192.168.100.1;网络号+主机号
网络号定义:标识某一个网段的地址
主机号定义:标识某一台设备的地址

A类(8网络号+24主机号)、B类(16网络号+16主机号)、C类(24网络号+8主机号)可以用于标识网络中的主机或路由器,D类地址作为组广播地址,E类是地址保留。
**子网掩码:**子网掩码用来区分网络部分和主机部分。它也是一个32位的二进制数,用十进制点分格式表示。子网掩码中的连续1表示网络部分,连续0表示主机部分。比如,子网掩码 255.255.255.0(11111111.11111111.11111111.00000000)表示前24位为网络部分,后8位为主机部分。
4.6子网划分
**VLSM(Variable Length Subnet Masking,可变长子网掩码)**是一种灵活的子网划分方法,允许网络管理员根据需要为每个子网分配不同长度的子网掩码。VLSM能够更有效地利用IP地址空间,减少浪费。
**子网划分:**将一个大型网络划分为多个较小子网络(子网)的方法,类似一块豆腐切成很多块。通过子网划分,可以更高效地利用IP地址空间、提高网络的安全性和管理性。


4.7网络地址转换NAT技术
NAT的主要目的是解决IPv4地址短缺问题,同时提供一定程度的网络安全性。NAT在路由器或防火墙设备上实现,能够将私有网络地址转换为公共网络地址,并且在数据包通过设备时修改IP头信息。
NAT 工作原理:
1.从内网出去的IP数据报,将其IP地址替换为NAT服务器拥有的合法的公共IP地址,并将替换关系记录到NAT转换表中;
2.从公共互联网返回的IP数据报,依据其目的的IP地址检索NAT转换表,并利用检索到的内部私有IP地址替换目的IP地址,然后将IP数据报转发到内部网络。

4.8网络层的路由
**IP路由:**路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。路由就是引导IP报文路径转发的信息(告诉路由器到达目的网络应该怎么走)。
**路由器:**路由器是网络层的基本设备,负责在不同网络之间转发数据包的设备。一个端口代表一个网段,路由器中存放着通往各个网段的表格,叫做路由表。
**路由表:**路由表是路由器内部的一张表格,记录了到达各个目的地网络的路径。每条记录包括目的地网络、子网掩码、下一跳地址和接口等信息。路由器根据路由表来决定如何转发数据包。
**自治系统AS:**是一个由一个或多个网络组成的集合,这些网络在一个共同的管理实体下,使用一种单一且明确的内部路由策略,就是一组被统一管理的路由器。自治系统的主要特点是它们通过一个统一的策略对外表现为一个单一的路由实体。每个自治系统都有一个唯一的自治系统号码(ASN),由互联网号码分配局(IANA)或其区域互联网注册机构(RIR)分配。
自治系统的作用主要包括:
**1.路由管理:**自治系统内部使用内部网关协议(IGP)如OSPF或EIGRP来管理内部路由,确保网络内各节点间的数据传输畅通。
**2.外部路由:**自治系统之间使用外部网关协议(EGP),最常见的是边界网关协议(BGP),来交换路由信息,确保不同自治系统之间的通信。
**3.政策控制:**自治系统可以根据自身的策略,控制进出网络的数据流。例如,可以设置优先级、流量过滤、路径选择等策略。
路由获取方式:
**1.静态路由:**静态路由由网络管理员手动配置,指定固定的路径到达特定的目标网络。这种方式适用于小型或稳定的网络环境,路径不会频繁变化。
**2.默认路由:**默认路由是一种特殊的静态路由,用于匹配所有未在路由表中明确列出的目标地址。当路由器没有找到匹配的具体路由时,会使用默认路由进行转发。
**3.动态路由:**动态路由允许路由器根据网络拓扑的变化自动调整和更新路由表,从而选择最佳的路径来传输数据。与静态路由不同,动态路由依赖于路由协议来发现和维护网络路径,并且能够自动适应网络的变化,如链路故障、节点增加或减少等。
4.9动态路由协议
**动态路由协议基本原理:**通过自动发现和维护网络路径,以确保数据能够通过最佳路径传输。动态路由协议可以根据网络拓扑的变化(例如链路故障、节点增加或减少)动态调整路由表。
衡量动态路由协议主要性能指标:
1、路由计算的正确性---确保网络是无环的
2、路由收敛时间---当网络变化的时候能够第一时间感知到
3、占用设备资源---运行某个动态路由协议之后,不会对设备造成性能极大消耗
4、协议自身的安全性---能够对所有路由信息进行加密,被人截获也无所谓
5、适用网络规模---支持几千上万的网络设备
路由信息协议 RIP(Routing Information Protocol):基于距离矢量的路由协议,较小的AS(自治系统),适合小型网络。
RIP协议特性:
1.RIP在度量路径时采用的是跳数(每个路由器维护自身到其他每个路由器的距离记录)。
2.RIP的费用定义在源路由器和目的子网之间。。
3.RIP被限制的网络直径不超过15跳。
4.和隔壁交换所有的信息,30主动一次(广播)。
开放最短路径优先协议OSPF(Open Shortest Path First): 是一种链路状态协议,使用Dijkstra算法来计算最短路径树,生成路由表,较大规模的AS,适用于大型复杂的网络。
OSPF协议优点:
1.安全。
2.支持多条相同费用路径。
3.支持区别化费用度量。
4.支持单播路由和多播路由。
5.分层路由。
RIP和OSPF的区别:
1.RIP是基于距离矢量的协议,OSPF是基于链路状态的协议。
2.RIP适用于中小型网络拓扑,OSPF适用于较大规模的网络。
3.OSPF支持可变长度子网掩码(VLSM) ,RIPv1不支持(v2支持)。
4.OSPF的收敛速度比RIP的更加迅速。
**混合路由协议EIGRP(Enhanced Interior Gateway Routing Protocol):**是一种Cisco专有的高级距离矢量协议,结合了距离矢量和链路状态的优点。使用距离矢量算法进行初始路径发现,使用链路状态算法进行路径维护和优化。
**边界网关协议BGP(Border Gateway Protocol):**主要用于自治系统之间的路由选择,是互联网的核心路由协议,支持复杂的路由策略和路径控制。
五、传输层
5.1传输层的概述
传输层是端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。

**端口号:**类似于门牌号,用于区分网络中不同服务和应用程序的数字标识符。范围从 0 到 65535。
**1.知名端口号:**范围从 0 到 1023,通常保留给常用服务。

**2.注册端口号:**范围从 1024 到 49151,通常用于用户或应用程序安装的特定服务。
MySQL (3306):用于 MySQL 数据库服务。
PostgreSQL (5432):用于 PostgreSQL 数据库服务。
**3.动态和/或私有端口号:**范围从 49152 到 65535,通常用于客户端应用程序的临时通信。它们不会被注册或保留,常用于短暂的会话。
5.2 TCP协议详解
**TCP(Transmission Control Protocol,传输控制协议):**是一个面向连接的、可靠的传输层协议,用于在网络中传输数据。

TCP协议的特点:
**1.面向连接:**在传输数据之前,通信双方必须先建立一个TCP连接。这个连接由三次握手过程建立,确保双方都准备好进行数据传输。
**2.可靠传输:**TCP通过确认、重传和超时机制,确保数据可靠传输。每个数据包都需要接收方的确认(ACK),否则发送方会重传数据。
**3.流量控制:**TCP使用滑动窗口机制来控制发送方的数据发送速度,防止接收方因处理不过来而丢失数据。
**4.拥塞控制:**TCP通过拥塞避免和控制算法(如慢启动、拥塞避免、快重传和快恢复)来防止网络拥塞。
**5.有序传输:**TCP确保数据按发送顺序到达接收方,即使数据包乱序到达,TCP也会重新排序。
TCP报文段结构:


TCP首部:
**序号字段:**TCP的序号是对每个应用层数据的每个字节进行编号。
**确认序号字段:**期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。用ack_seq标识;
TCP段的首部长度最短是20B ,最长为60字节。但是长度必须为4B的整数倍。
5.3 UDP协议详解
**UDP(User Datagram Protocol,用户数据报协议):**是一个简单的、无连接的传输层协议,用于在网络中传输数据。与TCP不同,UDP不提供可靠性、数据包重传、流量控制和有序传输等功能,因而传输速度较快,适用于对实时性要求高但对数据完整性要求较低的应用场景。

UDP协议的特点:
**1.无连接:**UDP是无连接的协议,在传输数据之前无需建立连接,也无需维持连接状态。
**2.不可靠传输:**UDP不保证数据的可靠性,数据包可能会丢失、重复或乱序到达,不提供确认和重传机制。
**3.面向报文:**UDP以报文(数据报)为单位进行传输,每个数据报是一个独立的传输单元,具有固定的边界。
**4.低开销:**由于不需要维护连接状态和重传机制,UDP的传输开销较低,适用于高性能和实时性要求高的应用。
UDP数据报结构:
UDP头部仅占8字节,传输数据时没有确认机制。

5.4 TCP与UDP的比较
TCP(Transmission Control Protocol,传输控制协议)与UDP(User Datagram Protocol,用户数据报协议)都是传输层协议,但有显著差异:

5.5 TCP的三次握手(建立连接)
TCP三次握手和四次挥手使用指令:


**1.第一次握手:**客户端发送一个SYN(同步序列编号)报文段给服务器,表示请求建立连接。
**2.第二次握手:**服务器收到SYN报文后,回复一个SYN-ACK(同步序列编号和确认序列编号)报文段,表示同意连接。
**3.第三次握手:**客户端收到SYN-ACK报文后,发送一个ACK(确认序列编号)报文段给服务器,表示连接建立完成。
一旦连接建立,客户端和服务器就可以开始传输数据。每个TCP数据包包含一个序列号和确认号,用于保证数据的有序和可靠传输。
5.6 TCP四次挥手(关闭连接)

1.**第一次挥手:**客户端发送一个FIN(结束标志)报文段,表示不再发送数据,但仍可接收数据。
2.**第二次挥手:**服务器收到FIN报文段后,发送一个ACK报文段,确认收到客户端的请求。
3.**第三次挥手:**服务器发送一个FIN报文段,表示服务器也不再发送数据,但仍可接收数据。
4.**第四次挥手:**客户端收到FIN报文段后,发送一个ACK报文段,确认收到服务器的请求,连接关闭。
六、应用层
6.1应用层的作用和原理
为操作系统或网络应用程序提供访问网络服务的接口。
工作原理:
**1.建立连接:**某些应用层协议(如HTTP、FTP)需要在客户端和服务器之间建立连接。
**2.数据传输:**应用程序将数据打包并通过传输层发送到目标应用程序。传输层负责可靠性和数据完整性。
**3.数据格式化:**应用层协议定义了数据格式,确保发送方和接收方都能理解数据内容。
**4.会话管理:**应用层协议负责管理会话的开始、维持和结束,确保通信的一致性和有效性。
**5.数据解码和处理:**接收方应用程序将接收到的数据解码并处理,执行相应的操作。
包含的主要协议:FTP(文件传输协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(超文本传输协议)。
6.2 DNS详解
**DNS(Domain Name System:域名系统;C/S,UDP,端口53):**解决IP地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的域名到IP地址的映射。
工作原理:
**1.用户查询:**用户在浏览器中输入域名(如baidu.com),浏览器会向本地DNS解析器发送查询请求。
**2.本地解析器查询:**本地DNS解析器检查缓存,如果缓存中有该域名的记录,则直接返回IP地址;否则,向根DNS服务器发送查询请求。
**3.根DNS服务器:**根DNS服务器返回顶级域(如.com)的权威DNS服务器地址。
**4.顶级域DNS服务器:**本地解析器向顶级域DNS服务器发送查询请求,顶级域DNS服务器返回对应的权威DNS服务器地址。
**5.权威DNS服务器:**本地解析器向权威DNS服务器发送查询请求,权威DNS服务器返回该域名对应的IP地址。
**6.返回结果:**本地解析器将IP地址返回给用户的浏览器,浏览器使用该IP地址与目标服务器建立连接。
**域名解析的顺序:**用户查询(baidu.com)---本地解析器查询---根DNS服务器---顶级域DNS服务器---权威DNS服务器---返回结果
DNS的结构:
域名由点、字母和数字组成,分为顶级域(com,cn,net,gov,org)、二级域(baidu,taobao,qq,alibaba)、三级域(www)

DNS查询类型分:

**1.迭代查询:**DNS服务器返回下一级DNS服务器的地址,由本地DNS解析器逐级查询。
**2.递归查询:**本地DNS解析器代表客户端向其他DNS服务器发起查询,直到得到最终结果。
6.3 DHCP详解
**DHCP(Dynamic Configuration Protocol:动态主机配置协议,端口68):**为临时接入局域网的用户自动分配IP地址。应用UDP协议的应用层协议。
DHCP的优点:
**1.自动化配置:**无需手动为每个设备配置IP地址,简化网络管理。
**2.避免IP地址冲突:**DHCP服务器确保分配的IP地址唯一,避免冲突。
**3.灵活性:**支持设备动态加入或离开网络,自动分配和回收IP地址。
**4.集中管理:**网络管理员可以集中管理和监控IP地址分配。
DHCP与其他协议的比较:

6.4 HTTP详解
**HTTP(HyperText Transfer Protocol,超文本传输协议,端口80):**是用于在Web浏览器和Web服务器之间传输超文本的协议。HTTP是无状态的应用层协议,主要功能是定义了客户端(通常是浏览器)和服务器之间如何传递信息的格式和规范。
HTTP请求方法:
**1.GET:**请求指定资源。通常用于获取数据。
**2.POST:**提交数据到服务器。通常用于表单提交。
**3.PUT:**上传资源到服务器。通常用于更新数据。
**4.DELETE:**删除指定资源。
**5.HEAD:**类似GET,但只请求响应头,不请求响应体。
**6.OPTIONS:**请求服务器支持的HTTP方法。
**7.PATCH:**对资源进行部分修改。


HTTP状态码

6.5 HTTPS详解
**HTTPS(HyperText Transfer Protocol Secure,超文本传输协议安全版,端口443):**是HTTP的安全版本,通过SSL或TLS在客户端(如浏览器)和服务器之间传输数据时提供加密和认证。
HTTPS的优势:
**1.数据加密:**使用对称加密和公钥加密保护数据,防止窃听。
**2.数据完整性:**使用消息验证码(MAC)确保数据在传输过程中未被篡改。
**3.身份验证:**通过SSL/TLS证书验证服务器身份,防止中间人攻击和伪装。
七、网络安全
7.1网络安全的概述
网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

7.2网络攻击概述
网络攻击是指对计算机信息系统、基础设施、计算机网络或个人计算机设备等的任何类型的进攻动作。
计算机网络攻击主要可以分为主动攻击和被动攻击:
**主动攻击:**是指攻击者主动发起的,旨在修改、破坏、伪造数据或干扰系统正常运行的攻击行为。其特点是对系统或数据进行直接干预,造成显著的破坏或影响。
主要包括以下几种形式:
1.**数据修改:**攻击者篡改数据,使其不再可靠。例如,篡改电子邮件内容、修改数据库记录等。
2.**伪装:**攻击者冒充合法用户或系统进行操作。例如,伪装成银行网站获取用户密码。
3.**拒绝服务攻击(DoS/DDoS):**攻击者通过大量请求压垮服务器,使其无法为正常用户提供服务。
4.**重放攻击(Replay Attack):**攻击者截获并重放之前传输的数据包,以获取非法访问权限。
5.**中间人攻击(MITM):**攻击者在通信双方之间进行拦截和篡改数据,获取或修改敏感信息。
**被动攻击:**是指攻击者在不改变系统或数据的情况下,偷偷窃取信息或监视通信内容的行为。其特点是不对系统或数据进行直接干预,因此较难被发现。
主要包括以下几种形式:
**1.窃听:**攻击者通过监听网络通信获取敏感信息。例如,截获电子邮件内容、监听网络流量等。
**2.流量分析:**攻击者通过分析网络流量模式,推测出有价值的信息。例如,通过分析流量高峰期确定关键操作时间。
**3.被动信息收集:**攻击者通过观察和收集系统公开信息,推测出系统的结构和弱点。例如,通过公开的IP地址、域名信息等,了解系统的基本情况。

7.3加密和解密
**加密:**将明文(可读数据)转换为密文(不可读数据)的过程,以防止未授权访问。加密算法和密钥是加密过程中的两个核心要素。
加密的类型:
对称加密(Symmetric Encryption)
- 使用相同的密钥进行加密和解密。
- 优点:加密速度快,适用于大数据量加密。
- 缺点:密钥管理困难,需要安全地共享密钥。
- 常见算法:AES、DES、3DES、RC4。
非对称加密(Asymmetric Encryption)
- 使用一对密钥进行加密和解密:公钥(公开)和私钥(保密)。
- 公钥用于加密,私钥用于解密,反之亦然。
- 优点:无需共享密钥,密钥管理更方便。
- 缺点:加密速度较慢,不适合大数据量加密。
- 常见算法:RSA、ECC(椭圆曲线加密)、DSA(数字签名算法)。
**解密:**将密文还原为明文的过程,需要使用正确的密钥和算法。解密过程必须与加密过程匹配,以确保数据的完整性和准确性。
**数字签名:**是一种用于验证数字信息真实性和完整性的技术,通过加密算法生成和验证。
数字签名的特点:
1. 身份认证
数字签名可以确认信息发送者的身份。只有拥有相应私钥的发送者才能生成有效的数字签名,从而确保消息来源的真实性。
2. 数据完整性
数字签名能够检测数据在传输过程中是否被篡改。任何对签名消息的修改都会导致签名验证失败,从而提示接收者数据可能已被篡改。
3. 不可否认性
签名者不能否认其对信息进行过签名。由于只有签名者拥有生成签名的私钥,因此签名者无法否认对签名数据的责任。
4. 加密与哈希算法的结合
数字签名通常结合了加密算法和哈希函数。哈希函数用于生成消息摘要,而加密算法(如RSA或ECC)则用于对消息摘要进行加密生成签名。
5. 公钥基础设施(PKI)支持
数字签名通常依赖于公钥基础设施(PKI)进行管理和分发公钥证书,确保签名的公钥是可信的,从而保证签名的有效性。

八、演示案例
8.1DNS欺骗详解
8.1.1DNS详解
DNS(Domain Name System)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。
DNS特点:分散和分层的机制来实现域名空间的委派授权以及域名与地址相转换的授权。
人直接去记忆IP地址数串是相当困难的(像是电话号码,记忆常用的几个还行,太多了会疯掉的),而域名就相当于是IP地址的助记符号。平时在访问网站时只需要输入域名就可以,通过DNS服务能够将域名"翻译"成计算机可以理解的IP地址,这大大方便了人们对互联网的访问。
当我们在浏览器地址栏中输入某个Web服务器的域名时。用户主机首先用户主机会首先在自己的DNS高速缓存中查找该域名所应的IP地址

如果他没有找到,则会向网络中的某台DNS服务器查询,DNS服务器中有域名和IP地映射关系的数据库。当DNS服务器收到DNS查询报文后,在其数据库中查询,之后将查询结果发送给用户主机。

现在,用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了。

DNS最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明,原始的技术规范在882号因特网标准草案(RFC 882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。
8.1.2域名
域名(英语:Domain Name),又称网域,是由一串用点分隔的字符串组成的Internet上某一台计算机或计算机组的名称(如:www.baidu.com),用于在数据传输时对计算机的定位标识。
全球域名的最高管理机构是ICANN (Internet Corporation for Assigned Names and Numbers),即互联网名称与数字地址分配机构,总部在美国加利福尼亚。ICANN负责管理全世界域名系统的运作。
域名采用分层的管理模式,可以分为:一级域名(或称顶级域名)、二级域名、三级域名、四级域名等等。

8.1.3域名服务器
在整个互联网世界中,域名的数量相当庞大。靠一台域名服务器无法完成这个互联网上所有主机的映射。在实际中,DNS使用了大量的域名服务器,所有这些服务器形成了一个有层次结构的分布式数据库。这也是分布式数据库在实际应用中的一个精彩范例。
下面通过一个具体的例子看一下这些域名服务器的协同工作过程。当我们在浏览器中输入www.sina.com.cn时,DNS程序就把DNS请求发送至根域名服务器,因为该域名的顶级域是.cn,因此该DNS请求会发到负责该顶级域.cn的顶级域名服务器。依次类推,该DNS请求依次经过权限域名服务器、本地域名服务器,直到解析出对应的IP地址为止。

8.1.4DNS协议报文格式
DNS分为查询请求和查询响应,请求和响应的报文结构基本相同。

表中显示了DNS的报文格式。其中,事务 ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这6个字段是DNS的报文首部,共12个字节。整个DNS报文格式主要分为3部分内容,即基础结构部分、问题部分、资源记录部分。
(1)基础结构部分
DNS报文的基础结构部分指的是报文首部

**事务ID:**DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段- 的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。
**标志Flags:**DNS 报文中的标志字段。
**问题计数:**DNS 查询请求的数目。
**回答资源记录数:**DNS 响应的数目。
**权威名称服务器计数:**权威名称服务器的数目。
**附加资源记录数:**额外的记录数目(权威名称服务器对应 IP 地址的数目)。
(2)基础结构部分中的标志字段又分为若干个字段。

**QR(Response):**查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。
**Opcode:**操作码。其中,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。
**AA(Authoritative):**授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
**TC(Truncated):**表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。
**RD(Recursion Desired):**期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。
**RA(Recursion Available):**可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。
**Z:**保留字段,在所有的请求和应答报文中,它的值必须为 0。
**rcode(Reply code):**返回码字段,表示响应的差错状态。当值为 0 时,表示没有错误;当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。
(3)问题部分
问题部分指的是报文格式中查询问题区域(Queries)部分。该部分是用来显示 DNS 查询请求的问题,通常只有一个问题。该部分包含正在进行的查询信息,包含查询名(被查询主机名字)、查询类型、查询类。

**查询名:**一般为要查询的域名,有时也会是 IP 地址,用于反向查询。
**查询类型:**DNS 查询请求的资源类型。通常查询类型为 A 类型,表示由域名获取对应的 IP 地址。
**查询类:**地址类型,通常为互联网地址,值为 1。
(4)资源记录部分
资源记录部分是指 DNS 报文格式中的最后三个字段,包括回答问题区域字段、权威名称服务器区域字段、附加信息区域字段。这三个字段均采用一种称为资源记录的格式。

**域名:**DNS 请求的域名。
**类型:**资源记录的类型,与问题部分中的查询类型值是一样的。
**类:**地址类型,与问题部分中的查询类值是一样的。
**生存时间:**以秒为单位,表示资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间。它同时也可以表明该资源记录的稳定程度,稳定的信息会被分配一个很大的值。
**资源数据长度:**资源数据的长度。
**资源数据:**表示按查询段要求返回的相关资源记录的数据。
资源记录部分只有在DNS响应包中才会出现。
8.1.5域名解析
域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析。在域名解析过程中,有两种查询方式,分别为递归查询和迭代查询。
(1)递归查询
在递归查询模式下,DNS服务器接收到主机请求,必须使用一个准确的查询结果回复给主机。如果DNS服务器本地没有存储查询DNS信息,则该服务器会询问其他服务器,并将返回的查询结果提交给主机。简言之,就是主机只查询一次,等DNS服务器的响应结果就行,剩下所有的事情都交给DNS服务器来处理。
(2)迭代查询
在迭代查询模式下,DNS服务器会向主机提供其他能够解析查询请求的DNS服务器IP地址,当主机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉主机另一台DNS服务器IP地址,主机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。
(3)递归查询+迭代查询
在DNS实际运作模式中,一般采用递归查询+迭代查询相结合的模式。即是主机向本地DNS服务器的查询采用的是递归查询,而本地DNS服务器向根域名服务器的查询采用迭代查询。

8.1.6DNS欺骗
(1)DNS欺骗原理
DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址。这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。
DNS欺骗其实并不是真的"黑掉"了对方的网站, 而是冒名顶替、招摇撞骗。
当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了。欺骗后便会为客户机器提供错误的IP地址指向,例如你打开百度的网址却成了另外的一个未知网页,试想如果跳转的页面被无声无息地挂着马又会多糟糕。
正常情况:

经过DNS欺骗后的情况:

(2)实验环境
目标主机:192.168.111.129
Mac:00-0C-29-3D-FC-B2
网关:192.168.111.2
Mac:00-50-56-e1-de-1e
Kali:192.168.111.128
Mac:00-0c-29-95-b8-c7

(3)开始实验
1.首先输入vim /etc/ettercap/etter.dns ,在配置文件下输入*.com A 192.168.230.133


注:
这是把所以.com的域名欺骗成攻击者的ip,也可以指定网站域名,在攻击机做中间人后,目标机先访问这里的dns,A代表ipv4,AAA代表ipv
2.输入ettercap -G ,进入ettercap工具,点击对勾

3.扫描局域网存活主机

4.查看局域网存活主机

5.配置攻击目标:网关放target2,目标主机放target1


6.开始攻击先进行arp欺骗

7.可以看到目标机的网关mac地址已是kali的mac地址了

8.开始dns欺骗


9.然后双击dns

10.目标尝试ping以下任意域名,可以看到变成了kali的ip,为此实验成功。

11.假如需要修改的主页,路径如下:/var/www/html,替换index.html,到这里中间人dns攻击实验就结束了。

(4)dns防御
(1)使用最新版本的DNS服务器软件,及时安装补丁
(2)关闭DNS服务器的递归功能
(3)限制区域传输范围
(4)限制动态更新
(5)采用分层的DNS体系结构
(6)保护内网设备,DNS攻击一般都是从内网中发起的,如果你的内网设备很安全,那么也就不存在被感染的风险
8.2ARP欺骗详解
8.2.1ARP详解
地址解析协议ARP(Address Resolution Protocol),是根据IP地址获取物理地址(MAC地址)的网络协议,在局域网(LAN)中广泛使用。ARP是互联网协议套件中的一个关键组件,使局域网内的设备能够通过IP地址发现其他设备的MAC地址。
ARP的工作过程:
**1.ARP请求:**当设备希望与同一局域网内的另一台设备通信时,它会向网络中的所有设备广播一个ARP请求数据包。这个数据包包含目标设备的IP地址。
**2.ARP回复:**具有匹配IP地址的设备会发送一个ARP回复数据包,包含其MAC地址。
**3.更新ARP表:**请求设备接收到MAC地址后,会更新其ARP表(IP地址到MAC地址的映射缓存),然后可以直接使用该MAC地址与目标设备通信。
ARP欺骗原理:
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
当局域网中一台机器,反复向其他机器,特别是向网关,发送这样无效假冒的ARP应答信息包时,严重的网络堵塞就会开始。由于网关MAC地址错误,所以从网络中计算机发来的数据无法正常发到网关,自然无法正常上网。这就造成了无法访问外网的问题,由于很多时候网关还控制着我们的局域网LAN上网,所以这时我们的LAN访问也就出现问题了。
8.2.2开始实验
(1)实验环境
win7ip:192.168.222.130
Mac:00-0C-29-3D-FC-B2
Kali ip:192.168.222.129
Mac:00-0C-29-95-b8-c7
网关ip:192.168.222.2
Mac:00-50-56-ec-3d-6d
(2)查看arp缓冲区

(3)步骤
- 对目标主机进行ARP欺骗,声称自己是网关。
- 转发目标的NAT数据到网关,维持目标的外出数据。
- 对网关进行ARP欺骗,声称自己是目标主机。
- 转发网关的NAT数据到目标主机,维持目标的接收数据。
- 监听劫持或者修改目标的进入和外出数据,从而实现攻击。
(4)查看当前局域网还存在那些主机,以确定要攻击的主机的ip地址。
fping -g 192.168.222.0/24

nmap -sn 192.168.222.0/24

(5)断网攻击arpspoof -i 网卡 -t 目标ip 网关
arpspoof -i eth0 -t 192.168.222.130 192.168.222.2

之前的:

之后的:

可以看到目标网关跟kali一样了,并且断网成功,之前是可以上网。


(6)攻击利用
- Arp欺骗:目标ip的流量经过我的网卡,从网关出去。
- Arp断网:目标ip的流量经过我的网卡
- 设置ip流量转发,让用户不会出现断网现象
方法一:vim letc/sysctl.conf#修改配置文件允许流量转发,修改/etc/sysctl.conf文件,使得net.ipv4.ip_forward = 1;等于0为不转发。然后更新。


将net.ipv4.ip_forward=1的注释(#)去掉,修改完成之后,重启服务,目标就可以上网了。


方法二:echo 1 > /proc/sys/net/ipv4/ip_forward但是在arp缓存区中还在。
cat /proc/sys/net/ipv4/ip_forward


(7)进行arp欺骗可以进行内网截获图片,win7和网关通信的数据包都会流经kali,那么可以在kali中利用driftnet工具,用win7上网可以捕获win7机器正在浏览的图片,但局限于http。
Driftnet -i eth0

Driftnet是一个监听网络流量并从它观察到的TCP流中提取图像的程序。

(8)HTTP账户密码获取ettercap:大个基于ARP地址欺骗方式的网络嗅探工具,主要适用于交换局域网络。
Ettercap -Tq -i eth0


注:
借助于EtterCap嗅探软件,渗透测试人员可以检测网络内明文数据通讯的安全性,及时采取措施,避免敏感的用户名/密码等数据以明文的方式进行传输。ettercap几乎是每个渗透测试人员必备的工具之一。