-
ARP原理概述——基于WinPcap发送ARP请求数据包获取远程MAC地址
2020-12-04 00:33:20ARP原理概述——基于WinPcap发送ARP请求数据包获取远程MAC地址ARP协议ARP概述ARP工作原理ARP数据包格式编写程序发送ARP请求获取本机和远程IP的MAC注意: ARP协议 ARP概述 互联网中,IP地址的作用是屏蔽物理网络地址...ARP协议
ARP概述
互联网中,IP地址的作用是屏蔽物理网络地址的差异,方便访问和数据传输,为上层用户提供一种统一的地址格式。但是地层的物理网络还是得通过物理地址发送和接收信息。那么当两台主机进行通信的时候其实还是需要知道MAC地址的。ARP(Address Resolution Protocol)是以太网中常用的经IP地址与MAC地址进行映射的方法。
ARP工作原理
以太网的一个特点就是支持广播而且MAC地址长度是固定的,ARP协议的设计与实现很好的利用了这个特点。在一个以太网中,主机A想要获取主机B的MAC地址的话,工作过程如图所示:
(1)主机A检查自己的高速缓存区(图中的cache表)中的ARP表,看是否能找到B的IP与MAC映射关系,如果能找到就解析结束,找不到进入步骤(2).
(2)主机A广播一个带有B的IP地址的请求包,请求B的IP地址与MAC地址映射关系。这个包中还包含A自身的IP地址与MAC地址。
(3)以太网上所有主机都会收到这个请求包,然后将A的IP地址与MAC地址的映射关系存到各自的高速缓存区
(4)主机B收到以后回送带有自身IP地址与MAC地址映射关系的包
(5)A收到主机B的回复后将B的IP地址与MAC地址映射关系存入自己的高速缓存区
注意,这个过程中的“主机”也可以是路由器。ARP数据包格式
编写程序发送ARP请求获取本机和远程IP的MAC
这个程序的整个过程可以大体分为两步:
(1)向本机发送ARP请求获取本机MAC地址
(2)通过本机的IP与MAC地址,向远程主机发送ARP请求,然后获取对方MAC地址
需要用到的头文件有:#include <stdio.h> #include <tchar.h> #include <stdio.h> #include <tchar.h> #include <iostream> #include <WinSock2.h> #include <Windows.h> #include <conio.h> #ifndef HAVE_REMOTE #define HAVE_REMOTE #endif #include <pcap.h> #include <remote-ext.h> #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "packet.lib") #pragma comment(lib, "wpcap.lib") #define _AFXDLL using namespace std;
注意,#define HAVE_REMOTE 这一句一定要写到#include<pcap.h>之前
接下来是用到的一些数据结构和功能函数
//以太网数据报结构 typedef struct Ethernet_head { u_char DestMAC[6]; //目的MAC地址 6字节 u_char SourMAC[6]; //源MAC地址 6字节 u_short EthType; }; //ARP数据报头结构 typedef struct ARPFrame_t { unsigned short HardwareType; //硬件类型 unsigned short ProtocolType; //协议类型 unsigned char HardwareAddLen; //硬件地址长度 unsigned char ProtocolAddLen; //协议地址长度 unsigned short OperationField; //操作字段 unsigned char SourceMacAdd[6]; //源mac地址 unsigned long SourceIpAdd; //源ip地址 unsigned char DestMacAdd[6]; //目的mac地址 unsigned long DestIpAdd; //目的ip地址 }; //arp包结构 struct ArpPacket { Ethernet_head ed; ARPFrame_t ah; }; //线程参数 struct sparam { pcap_t *adhandle; char *ip; unsigned char *mac; char *netmask; }; struct gparam { pcap_t *adhandle; }; struct sparam sp;//发送线程参数 struct gparam gp;//接收线程参数 char *myBroad;//本机广播地址 unsigned char *m_MAC=new unsigned char[6];//本机MAC地址 char *m_IP;//本机IP地址 char *m_mask;//本机网络掩码 #define IPTOSBUFFERS 12 void ifprint(pcap_if_t *d);//打印网卡信息 char *iptos(u_long in);//主机序到网络序的转换函数 int GetSelfMac(pcap_t *adhandle, const char *ip_addr, unsigned char *ip_mac);//获取自身MAC DWORD WINAPI SendArpPacket(LPVOID lpParameter);//发送ARP线程 DWORD WINAPI GetLivePC(LPVOID lpParameter);//接收回复线程
主函数内容如下:
int _tmain(int argc, _TCHAR* argv[]) { pcap_if_t *alldevs; pcap_if_t *d; pcap_addr_t *a; int num = 0; char errbuf[PCAP_ERRBUF_SIZE]; struct tm *ltime; time_t local_tv_sec; char timestr[16]; struct pcap_pkthdr *header = new pcap_pkthdr; const u_char *pkt_data = new u_char; int res; //获取本机设备列表 if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1) { //错误处理 fprintf(stderr, "Error in pcap_findalldevs: %s\n", errbuf); } //显示接口列表 for (d = alldevs; d != NULL; d = d->next) { /* 设备名(Name) */ printf("%s\n", d->name); /* 设备描述(Description) */ if (d->description) printf("\tDescription: %s\n", d->description); printf("\n"); } //选择设备 d = alldevs; cout << "输入选择的设备号:" << endl; cin >> num; for (int i = 0; i < num - 1; i++) d = d->next; ifprint(d); //打开指定的网络接口 pcap_t *adhandle; if ((adhandle = pcap_open_live(d->name, 65536, PCAP_OPENFLAG_PROMISCUOUS, 1000, errbuf)) == NULL) { fprintf(stderr, "\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name); pcap_freealldevs(alldevs); return -1; } printf("\nlistening on %s...\n", d->description); GetSelfMac(adhandle, m_IP, m_MAC); printf("MyMAC: %02x:%02x:%02x:%02x:%02x:%02x\n", *m_MAC, *(m_MAC+1), *(m_MAC+2), *(m_MAC+3), *(m_MAC+4), *(m_MAC+5)); HANDLE sendthread; //发送ARP包线程 HANDLE recvthread; //接受ARP包线程 sp.adhandle = adhandle; sp.ip = m_IP; sp.netmask = m_mask; sp.mac = m_MAC; gp.adhandle = adhandle; sendthread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)SendArpPacket, &sp, 0, NULL); recvthread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)GetLivePC, &gp, 0, NULL); pcap_freealldevs(alldevs); CloseHandle(sendthread); CloseHandle(recvthread); while (1); return 0; }
打印本机信息函数
/* 打印所有可用信息 */ void ifprint(pcap_if_t *d) { pcap_addr_t *a; /* IP addresses */ for (a = d->addresses; a; a = a->next) { printf("\tAddress Family: #%d\n", a->addr->sa_family); switch (a->addr->sa_family) { case AF_INET: printf("\tAddress Family Name: AF_INET\n"); if (a->addr) { m_IP = iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr); printf("\tIP Address: %s\n", m_IP); } if (a->netmask) { m_mask = iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr); printf("\tNetmask: %s\n", m_mask); } if (a->broadaddr) { myBroad = iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr); printf("\tBroadcast Address: %s\n", myBroad); } if (a->dstaddr) printf("\tDestination Address: %s\n", iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr)); break; default: //printf("\tAddress Family Name: Unknown\n"); break; } } printf("\n"); }
网络序和主机序转换函数
这部分我是在WinPcap的官方指导文档里找到的,对具体理解IP地址格式很有帮助char *iptos(u_long in) { static char output[IPTOSBUFFERS][3 * 4 + 3 + 1]; static short which; u_char *p; p = (u_char *)∈ which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1); sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]); return output[which]; }
获取自己的MAC地址
#define ETH_ARP 0x0806 //以太网帧类型表示后面数据的类型,对于ARP请求或应答来说,该字段的值为x0806 #define ARP_HARDWARE 1 //硬件类型字段值为表示以太网地址 #define ETH_IP 0x0800 //协议类型字段表示要映射的协议地址类型值为x0800表示IP地址 #define ARP_REQUEST 1 //ARP请求 #define ARP_REPLY 2 //ARP应答 #define HOSTNUM 255 //主机数量 // 获取自己主机的MAC地址 int GetSelfMac(pcap_t *adhandle, const char *ip_addr, unsigned char *ip_mac) { unsigned char sendbuf[42]; //arp包结构大小 int i = -1; int res; Ethernet_head eh; //以太网帧头 ARPFrame_t ah; //ARP帧头 struct pcap_pkthdr * pkt_header; const u_char * pkt_data=new u_char; //将已开辟内存空间 eh.dest_mac_add 的首 6个字节的值设为值 0xff。 memset(eh.DestMAC, 0xff, 6); //目的地址为全为广播地址 memset(eh.SourMAC, 0x0f, 6); memset(ah.DestMacAdd, 0x0f, 6); memset(ah.SourceMacAdd, 0x00, 6); //htons将一个无符号短整型的主机数值转换为网络字节顺序 eh.EthType = htons(ETH_ARP); ah.HardwareType = htons(ARP_HARDWARE); ah.ProtocolType = htons(ETH_IP); ah.HardwareAddLen = 6; ah.ProtocolAddLen = 4; ah.SourceIpAdd = inet_addr("100.100.100.100"); //随便设的请求方ip ah.OperationField = htons(ARP_REQUEST); ah.DestIpAdd = inet_addr(ip_addr); memset(sendbuf, 0, sizeof(sendbuf)); memcpy(sendbuf, &eh, sizeof(eh)); memcpy(sendbuf + sizeof(eh), &ah, sizeof(ah)); printf("%s", sendbuf); if (pcap_sendpacket(adhandle, sendbuf, 42) == 0) { printf("\nPacketSend succeed\n"); } else { printf("PacketSendPacket in getmine Error: %d\n", GetLastError()); return 0; } while ((res = pcap_next_ex(adhandle, &pkt_header, &pkt_data)) >= 0) { if (*(unsigned short *)(pkt_data + 12) == htons(ETH_ARP) && *(unsigned short*)(pkt_data + 20) == htons(ARP_REPLY) && *(unsigned long*)(pkt_data + 38) == inet_addr("100.100.100.100")) { for (i = 0; i < 6; i++) { ip_mac[i] = *(unsigned char *)(pkt_data + 22 + i); } printf("获取自己主机的MAC地址成功!\n"); break; } } if (i == 6) { return 1; } else { return 0; } }
发送与监听线程
bool flag; DWORD WINAPI SendArpPacket(LPVOID lpParameter) { sparam *spara = (sparam *)lpParameter; pcap_t *adhandle = spara->adhandle; char *ip = spara->ip; unsigned char *mac = spara->mac; char *netmask = spara->netmask; printf("ip_mac:%02x-%02x-%02x-%02x-%02x-%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); printf("自身的IP地址为:%s\n", ip); printf("地址掩码NETMASK为:%s\n", netmask); printf("\n"); unsigned char sendbuf[42]; //arp包结构大小 Ethernet_head eh; ARPFrame_t ah; //赋值MAC地址 memset(eh.DestMAC, 0xff, 6); //目的地址为全为广播地址 memcpy(eh.SourMAC, mac, 6); memcpy(ah.SourceMacAdd, mac, 6); memset(ah.DestMacAdd, 0x00, 6); eh.EthType = htons(ETH_ARP);//帧类型为ARP3 ah.HardwareType = htons(ARP_HARDWARE); ah.ProtocolType = htons(ETH_IP); ah.HardwareAddLen = 6; ah.ProtocolAddLen = 4; ah.SourceIpAdd = inet_addr(ip); //请求方的IP地址为自身的IP地址 ah.OperationField = htons(ARP_REQUEST); //向局域网内广播发送arp包 unsigned long myip = inet_addr(ip); unsigned long mynetmask = inet_addr(netmask); unsigned long hisip = htonl((myip & mynetmask)); //向指定IP主机发送 char desIP[16]; printf("输入目标IP:"); scanf("%s", &desIP); //char* desIP = "192.168.43.55"; ah.DestIpAdd = htonl(inet_addr(desIP)); //构造一个ARP请求 memset(sendbuf, 0, sizeof(sendbuf)); memcpy(sendbuf, &eh, sizeof(eh)); memcpy(sendbuf + sizeof(eh), &ah, sizeof(ah)); //如果发送成功 if (pcap_sendpacket(adhandle, sendbuf, 42) == 0) { printf("\nPacketSend succeed\n"); } else { printf("PacketSendPacket in getmine Error: %d\n", GetLastError()); } flag = TRUE; return 0; } DWORD WINAPI GetLivePC(LPVOID lpParameter) //(pcap_t *adhandle) { gparam *gpara = (gparam *)lpParameter; pcap_t *adhandle = gpara->adhandle; int res; unsigned char Mac[6]; struct pcap_pkthdr * pkt_header; const u_char * pkt_data; while (true) { if ((res = pcap_next_ex(adhandle, &pkt_header, &pkt_data)) >= 0) { if (*(unsigned short *)(pkt_data + 12) == htons(ETH_ARP)) { ArpPacket *recv = (ArpPacket *)pkt_data; if (*(unsigned short *)(pkt_data + 20) == htons(ARP_REPLY)) { printf("-------------------------------------------\n"); printf("IP地址:%d.%d.%d.%d MAC地址:", recv->ah.SourceIpAdd & 255, recv->ah.SourceIpAdd >> 8 & 255, recv->ah.SourceIpAdd >> 16 & 255, recv->ah.SourceIpAdd >> 24 & 255); for (int i = 0; i < 6; i++) { Mac[i] = *(unsigned char *)(pkt_data + 22 + i); printf("%02x ", Mac[i]); } printf("\n"); } } } Sleep(10); } return 0; }
注意:
代码逻辑整体应该没啥问题,但是在实际运行的时候,由于我的接收线程是在while循环里不停的接收,所以有可能收到很多相同的来自本机的回复,也就是在获取本机MAC地址的时候的回复信息。你输入的目标IP的回复可能需要一段时间才能显示出来,甚至有可能有时候你等半天也看不到你想要的那个回复,如果这样的话建议关闭程序重新运行多试几次。
出现这个问题的原因目前不明,其实我自己也觉得很奇怪为什么会收到那么多相同的回复,而且我该发现如果我在接收线程的循环最后不加上那个Sleep(10),那么程序运行以后就会在pkt_data那里发生溢出,貌似是由于瞬间接收到太多包导致写入溢出。但如果我不循环接收的话那么一般是还没有收到ARP回复信息线程就关闭了。
我到最后也没想到为什么会这样,也不知道如何解决,如果评论区有大佬看出来问题了的话可以指点一下! -
浅析交换机工作原理
2020-12-08 18:22:03一、概述 交换技术是一个具有简化、低价、高性能和高端口密集特点的交换产品,体现了桥接技术的复杂交换技术在OSI参考模型的第二层。 与桥接器一样,交换机按每一个包中的MAC地址相对简单地决策信息转发。而... -
以太网链路聚合技术 LACP 配置
2010-07-03 10:44:17第一节 链路聚合概述 第二节 链路聚合工作原理 第三节 LACP协议 第四节 以太网端口汇聚配置方法 第五节 以太网端口汇聚显示和调试方法 -
以太网 突破最大帧长_「思唯网络学院」HCIA-RS笔记 以太网交换技术,需要的可收藏...
2020-12-31 23:44:26交换机工作原理3.VLAN的管理和实现4.STP生成树协议基础概念一,以太网的概述和数据链路层1.数据链路层包含的接入技术:局域网LAN:以太网ethernet、令牌环广域网WAN:X.25、FR、ATM无线接入网:WLAN、GPRS、WCDMA、...学习要点:
1 以太网和数据链路层
2.交换机工作原理
3.VLAN的管理和实现
4.STP生成树协议基础概念
一,以太网的概述和数据链路层
1.数据链路层包含的接入技术:
局域网LAN:以太网ethernet、令牌环
广域网WAN:X.25、FR、ATM
无线接入网:WLAN、GPRS、WCDMA、CDMA2000
以太网标准:IEEE 802.3
2. 共享式以太网,传输介质同轴电缆,总线型布线。
交换式以太网,传输介质双绞线和光纤,基于星形拓扑布线。
采用双绞线布线,使用星形拓扑组网,如果使用的中心节点设备是HUB,这种也属于共享式以太
网。
以太网规格标准:
10Base-T
100Base-TX
1000Base-FX
例:10表示最大传输速率10Mbps,Base表示基带传输技术(传输介质中只传输一种类型的信号,
数字信号),
T表示传输介质类型UTP,FX一般指光纤。
STP: 屏蔽型双绞线
UTP:非屏蔽型双绞线
RJ45:双绞线接口电信标准
双绞线的布线标准TIA/EIA--568A 568B
直连线——两端都是按照568B
交叉线——一端568A,一端568B
双绞线最大理论传输距离100米。
3.HUB和交换机的区别:
HUB集线器工作在物理层,交换机工作在数据链路层。内部转发结构不一样。
HUB是共享式传输,半双工工作模式。
交换机是交换式传输,全双工工作模式。
冲突域:发生冲突所影响到的网络范围。
HUB的所有端口都属于一个冲突域。
交换机的每个端口是一个冲突域。
CSMA/CD 是一种介质访问控制协议,也是一种MAC的算法,目的是解决共享网络上的冲突问题。
CSMA/CD——载波侦听多路访问冲突检测。
目前全双工的交换式以太网已经不使用CSMA/CD。
无线局域网使用半双工通信,采用CSMA/CA算法机制。
CSMA/CD工作原理:先听后说,边听边说。
如果连续检测16次,发现线路是忙碌状态,则放弃发送,并返回目标不可达的消息。
4.数据链路层封装——Frame 帧
以太网环境中,数据帧的最小长度是64字节。MTU——最大传输单元,以太网MTU默认是1500字
节。
数据帧实际部分总共长度要求最小64字节,其中DATA字段最小46字节,不够46字节使用Padding位
进行填充,
DATA最小46字节+目的MAC地址6字节+源MAC地址6字节+TYPE2字节+FCS4字节=64字节
MAC地址
长度总共48bit,前24bit是生产厂商编码,后24bit由生产厂商进行分配。MAC地址使用16进制数表
示。
MAC地址表
交换机动态学习MAC地址表项:通过源端口进入的数据帧的源MAC地址进行学习并记录。
交换机二层转发原则:
如果MAC地址表有目的MAC地址的记录,则按照表项映射的端口,使用单播形式转发到对应端口。
如果MAC地址表没有目的MAC地址的记录,则除了数据帧的入端口,向其他所有端口进行广播泛
洪。
交换机三种转发模式:
直通转发(快速转发):交换机不必等到接收到一个完整数据帧才进行转发,一旦发现数据帧的
有效地址即可转发。
优点就是转发效率高,速度快。缺点是无法进行帧校验。
存储转发:收到一个完整数据帧后,再进行转发。优点是可以对帧错误进行检测,缺点是延迟
大。
分段转发:类似于快速转发,但是要求必须最小收到64字节长度的帧后,才可以进行立即转发。
二层交换环境的广播问题
交换机本身是转发广播的,广播域的大小影响网络的性能。
交换机端口自动协商:
1.端口速率:10M/100M/Auto
2.工作模式:全双工/半双工/Auto
端口默认是自动协商模式
开启交换机流量控制功能:在交换机端口视图下,配置flow-control。默认此功能不开启。
端口聚合(链路聚合):逻辑上把多个相似物理接口捆绑成一个逻辑端口使用。
主要特点:提高带宽,线路冗余、负载均衡。
端口聚合的条件:配置聚合的成员端口和对端设备的端口,必须保持相同的配置参数(双工模
式、速率)。
配置端口聚合Eth-Trunk:
[SW1]int Eth-Trunk 1
创建Eth-trunk逻辑端口
interface GigabitEthernet0/0/23
eth-trunk 1
interface GigabitEthernet0/0/24
eth-trunk 1
分别添加物理接口到Eth-trunk 1中,表示逻辑聚合端口Eth-Trunk 1包含两个物理接口。
[SW1]dis int Eth-Trunk 1 查看Eth-Trunk 1的状态和信息
基于端口的端口镜像
一个交换机只能配置一个镜像端口(连接网管设备的端口),支持多个端口镜像到一个端口。
基本配置:
[SW1]observe-port 1 interface g0/0/10
创建一个观察端口,序号为1,G0/0/10端口成为观
察端口
[SW1]int g0/0/11
[SW1-GigabitEthernet0/0/11]port-mirroring to observe-port 1 both
把端口G0/0/11作为被镜像端口映射到观察端口1上,both表示同时监控inbound和outbound的流
量。
二,VLAN的基础概念和实现
VLAN——虚拟局域网,一种跨越物理网络结构的一个逻辑网络。
一个VLAN=一个逻辑子网=一个广播域
VLAN的划分方式:端口划分(静态VLAN)、MAC划分、基于IP子网划分。
同一VLAN内可以直接通信,不同的VLAN之间不能直接通信。VLAN的封装标准
IEEE 802.1Q 定义了如何在原始数据帧中插入标签(VLAN 信息)。
客户机发出的数据帧是不携带VLAN标签的(Untagged Frame),交换机在数据帧中插入一个4字节的Tag。
Tag标签报文中的TPID字段0x8100表示使用的是802.1Q封装方式,VLAN ID表示数据帧来自哪个VLAN。
交换机出厂默认存在VLAN 1,且不能删除,所有端口默认都属于VLAN 1
同一交换机下,连接客户机的端口,在不同VLAN间的标签传递过程:
- 交换机的端口从客户机收到一个Untagged frame,然后把此端口的PVID作为标签插入到这个Untagged帧中。
2.交换机端口收到一个Tagged Frame,查看Tag中的VLAN ID,和自己的PVID做对比,如果不相同,则丢弃;
如果相同,则去掉标签,发出数据帧到对端设备(客户机)。
注:交换机内部传递数据帧都是携带标签的。
华为交换机端口的类型:
1.Access 用于连接终端、主机
2.Trunk 中继端口,允许多个VLAN通过,通常用做连接交换机
3.Hybrid 混合模式,可以连接客户机,也可以连接交换机
华为交换机默认的端口类型是Hybrid,思科交换机没有Hybrid模式。
[SW1]display port vlan 查看交换机的端口模式及相关参数
VLAN基本配置:
[SW1]vlan 10 新建VLAN 10
[SW1]vlan batch 20 30 40 建立多个VLAN
[SW1]dis vlan 查看交换机的VLAN信息
端口加入VLAN方式一:
interface GigabitEthernet0/0/3
port link-type access
进入接口视图下
修改接口的类型为access
把此接口添加到VLAN 10
port default vlan 10
端口加入VLAN方式二:
[SW1-vlan2]port g0/0/1
VLAN视图下添加端口,前提是端口已经是Access模式
连续多个端口添加到VLAN中:
使用端口组的方式配置
[SW1]port-group 1 创建端口组1
[SW1-port-group-1]group-member GigabitEthernet 0/0/11 to GigabitEthernet 0/0/20 添加
端口到组1
[SW1-port-group-1]port link-type access 把端口组1配置成Access模式
[SW1-port-group-1]port default vlan 3
把端口组1的所有端口添加到VLAN中
删除VLAN
华为交换机直接删除VLAN,VLAN内的端口自动返回VLAN1内。
思科交换机必须保证VLAN内没有端口,才可以删除。
Access端口的默认VLAN就是这个端口的PVID (表示这个端口是属于哪个VLAN的)
Access端口只能用作连接终端设备和主机,且只能属于一个VLAN。
interface Eth-Trunk1
port link-type trunk
进入到Eth-trunk 1的接口视图下
修改端口类型为Trunk
华为交换机的Trunk链路默认只允许VLAN 1通过,思科交换机默认Trunk允许所有VLAN通过。
Trunk端口用来连接交换机,不能用于连接客户端主机。
interface Eth-Trunk1
port link-type trunk
port trunk allow-pass vlan 10 设置允许VLAN 10通过
注意Trunk端口的PVID和Access端口PVID的区别
数据帧通过Trunk链路转发对标签的处理过程:
1.客户机发出一个Untagged Frame,交换机Access端口收到这个帧后,根据自己的PVID给这个帧打
上标签。
2.交换机根据MAC地址表将这个Tagged Frame发送到目标接口,如果此目标接口是Trunk端口,
Trunk端口首先检查
允许通过的VLAN 列表,看是否允许此VLAN 通过,如果不允许,则丢弃此数据帧。
3.如果Trunk端口允许此VLAN通过,则比较Trunk端口的PVID(默认是VLAN 1),如果这个Tagged Frame的VLAN ID与Trunk端口的PVID不相同,则不做任何处理,直接带标签发送此帧出去;如果这个Tagged Frame的
VLAN ID与Trunk端口的PVID相同,则去掉标签进行发送。
出厂默认设置下,VLAN 1的数据是不带标签通过VLAN 发送。
注意:如修改Trunk端口的PVID,对端的设备的Trunk端口也必须保持PVID一致。
[SW2-GigabitEthernet0/0/24]port trunk pvid vlan 99 修改Trunk端口的PVID
Hybrid端口的作用
1.hybrid端口作为Access用,用来连接客户机。
修改access端口为hybrid,必须首先还原端口的默认配置。
[SW1-GigabitEthernet0/0/1]undo port default vlan
[SW1-GigabitEthernet0/0/1]port link-type hybrid
interface GigabitEthernet0/0/1
port hybrid pvid vlan 2
添加hybrid端口到VLAN 2中
对于VLAN 2的数据帧,去掉标签发送出去
port hybrid untagged vlan 2
2.hybrid端口作为Trunk用,用来连接交换机
修改Trunk端口为Hybrid,必须还原端口的默认配置。
interface GigabitEthernet0/0/24
port hybrid tagged vlan 3
对于VLAN 3的数据帧是带标签发送出去
Hybrid端口带标签发送数据帧,相当于对于Tagged Frame进行透传,与Trunk端口允许带着标签传送
的VLAN作用相同。
3.hyvrid端口实现二层环境下,不同VLAN间的互访。
interface GigabitEthernet0/0/2
port hybrid untagged vlan 2 to 3 数据帧中带有VLAN 2和VLAN 3标签的,去掉标签发送出去
(连接客户机)
interface GigabitEthernet0/0/24
port hybrid tagged vlan 2 to 3 数据帧中带有VLAN2和VLAN3标签的,带标签发送出去(透传
方式,连接交换机)
注:多个交换机的VLAN环境中,即使某个交换机下没有某个VLAN的接口,也需要建立此VLAN,否
则交换机不识别来自其他交换机的此VLAN信息。
三,VLAN间的路由
1.单臂路由
二层交换机上实现不同VLAN间的访问,通过上行的路由器实现路由转发功能,二层交换机和路由
器之间只有一条物理链路,通过在路由器的物理接口上配置多个逻辑子接口实现。
单臂路由不适用于大型网络环境,或者流量比较大的、VLAN数量较多的网络环境。
配置思路:
二层交换机通过一条Trunk链路连接到路由器,在路由器的物理端口上配置多个逻辑子接口,每个
子接口对应一个VLAN,相当于每个VLAN的网关。
单臂路由器逻辑子接口的配置:
interface GigabitEthernet0/0/0.10
dot1q termination vid 10
ip address 192.168.10.1 255.255.255.0
址)
进入子接口视图
指定子接口为802.1Q的封装并对应VLAN 10
子接口配置IP地址(对应的VLAN的网关地
arp broadcast enable
子接口开启ARP广播功能
注:子接口先配置封装,再配置IP地址。
2.三层交换机实现VLAN路由
华为交换机不支持在物理端口上直接设置IP地址,需要建立VLAN虚拟接口(VLANIF),然后配置IP地址,相应的物理接口添加到此VLAN中。
三层链路连接配置:
[SW3]vlan 100
创建一个VLAN
interface GigabitEthernet0/0/24
port link-type access
port default vlan 100
连接对端三层设备的物理接口添加至此VLAN中
interface Vlanif100
进入并创建VLAN虚接口
ip address 23.1.1.2 255.255.255.0 给VLANIF配置IP地址
单个三层交换机实现VLAN路由:
给每个VLAN配置VLANIF接口并设置IP地址,此IP地址就是对应VLAN内的主机的网关地址。
每个VLANIF接口相当于三层交换机的直连接口,自动生成直连路由。
注:VLAN内至少又一个物理接口为up,VLANIF才能UP,否则是down的状态。
三层交换机根据路由表来实现不同VLAN间的数据转发。
四,生成树协议基础
STP——Spanning Tree Protocol
RSTP——快速生成树
MSTP——多生成树
1.冗余交换网络出现的问题
交换环路、广播风暴、MAC地址表不稳定、多帧复制(同样数据帧收到多份,导致交换机出错)
2.消除二层环路
冗余的交换网络下,使用生成树协议来消除二层的环路。既保证冗余环境的正常工作,又能解决
环路风险。
生成树协议从逻辑上断开环路,通过计算,使某个接口不进行数据的转发。
网络发生变化,生成树开始进行计算,直到计算完毕,网络状态稳定所用的时间叫做生成树的收
敛时间。
3.生成树的基本计算过程
BPDU——网桥协议数据单元。主要分成两类:配置BPDU和拓扑变更BPDU
第一,在一个广播域选举一个根网桥 (基于标准STP协议定义,不考虑VLAN环境)
根网桥选举原则:首先比较交换机的优先级,优先级相同的情况下,比较MAC地址,MAC地址值小
的优先。
网桥ID=优先级+交换机MAC
优先级值越小越优先,交换机默认优先级32768 (取值范围0-65535)
第二,在每个非根网桥上选举一个根端口
根端口:到达根网桥开销最小的端口。
第三,在每个网段上选举一个指定端口
根网桥上的所有端口都是指定端口。
首先比较到达根网桥的开销值,COST值小的优先;
如果开销相同,比较端口所在的交换机的网桥ID,值小的优先;
如果网桥ID相同,则比较端口ID,值小的优先。
端口ID=端口优先级+端口编号
端口优先级默认128
最后,剩下的非指定端口进行阻塞。
[SW1]display stp brief
查看生成树的接口角色状态信息
STP端口角色
根端口——转发状态
指定端口——转发状态
预备端口——丢弃(阻塞)状态 (不转发任何数据,但是监听BPDU)
STP端口状态
STP定义了五种端口状态:
Disable(禁用)——端口被关闭,不转发数据,也不学习MAC地址。
Blocking(阻塞)——端口启用的初始状态,不转发任何数据,不学习MAC,不发送BPDU,只接收
BPDU。
Listening(侦听)——不转发数据,不学习MAC,开始发送和接收BPDU,参与生成树的计算。
Learning(学习)——不转发数据,开始学习MAC地址表,发送和接收BPDU,进行生成树计算。
Forwarding(转发)——正常转发数据,学习MAC地址,发送接收BPDU,进行生成树计算。
转发延迟时间:默认15秒
总共经历两个转发延迟,LSN——LRN——FWD
转发延迟时间的作用
为了防止网络中可能产生临时环路风险。但是导致生成树计算收敛缓慢。
RSTP协议(快速生成树)解决了收敛时间过长的问题。
边缘端口和非边缘端口
边缘端口——连接客户机的端口
非边缘端口——连接交换机的端口
默认全部端口都是非边缘端口,连接主机的端口需要手动配置为边缘端口。
边缘端口从Blocking状态直接转为Forwarding状态。
生成树协议基本配置:
[SW1]stp mode ?
修改生成树协议
mstp Multiple Spanning Tree Protocol (MSTP) mode
rstp Rapid Spanning Tree Protocol (RSTP) mode
stp Spanning Tree Protocol (STP) mode
手动配置指定根网桥:
将指定根网桥的交换机的优先级设置为最优(值最小)。
优先级的值必须配置成4096的倍数:
0 4096 8192 12288 16384 20480 24576 28672
32768 36864 40960 45056 49152 53248 57344 61440
根网桥可配置成主根网桥和备用根网桥。
生成树计时器(默认值):
Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Hello时间:生成树稳定状态下,发送BPDU的周期时间,默认每2秒发送一次。
MaxAge:最大生存期,BPDU在交换机保存的有效时间,默认超过20秒,将会删除掉BPDU。
FwDly:转发延迟时间,默认15秒,STP端口从Blocking到Forwarding总共经历两个转发延迟。
MaxHop:限制生成树网络的规模, 默认支持20个交换机,BPDU能传递的交换机的最大数量。
边缘端口的配置:
[SW3-GigabitEthernet0/0/1]stp edged-port enable
接口视图下,指定端口为边缘端口
[SW3-GigabitEthernet0/0/1]stp edged-port disable 关闭边缘端口特性
欢迎关注我的头条号,私信交流,学习更多网络技术!
-
计算机网络概述
2018-03-08 16:02:27掌握网络通信的基本原理和TCP/IP协议原理。 掌握路由器和以太网交换机的原理和... 掌握IP路由和路由协议的基本工作原理和配置方法。 承担中低端路由器的安装、配置和维护工作。 处理路由器的网络连接和软件配置方面。 -
路由协议概述
2018-03-08 16:02:27掌握网络通信的基本原理和TCP/IP协议原理。 掌握路由器和以太网交换机的原理和... 掌握IP路由和路由协议的基本工作原理和配置方法。 承担中低端路由器的安装、配置和维护工作。 处理路由器的网络连接和软件配置方面。 -
交换机的基本原理与配置
2020-10-19 23:33:55以太网格式三、交换机的工作原理1.交换机以太网接口的工作模式:四、交换机的命令行配置1.配置前的准备2.SecureCRT软件的配置3.管理设别的方式4.Vlan概述1.常用的端口类型2.相同Vlan通信与不同Vlan通信单臂路由实验 ...文章目录
前言
一、数据链路层功能
数据链路层位于网络层与物理层之间
数据链路层的功能:
1.数据链路的建立、维护与拆除
2.帧包装、帧传输、帧同步
3.帧的差错恢复
4.流量控制二、以太网
以太网工作在数据链路层以太网MAC地址: 用来识别一个以太网上的某个单独的设备或一组设备
注:MAC地址是全球唯一的1.以太网格式
以太网帧格式:Ethernet ||帧格式三、交换机的工作原理
交换机工作原理:
1.基于源MAC地址学习
2.基于目标MAC地址转发
3.对于没有目标MAC地址表项的帧,向本Vlan的其他所有接口转发
4.收到广/组播帧,向本Vlan的其他所有接口转发
5.同一MAC地址被多个接口学习到,选择后学习到的接口
6.同一接口可以学习到多个MAC地址1.交换机以太网接口的工作模式
单工:两个数据站之间只能沿单一方向传输数据
半双工:两个数据站之间可以双向数据传输,但不能同时进行
全双工:两个数据站之间可双向且同时进行数据传输
交换机以太网接口速效率
1.接口连接时要进行协商
2.协商失败则无法正常通信
注:百兆交换机和千兆交换机要协商好,要不然数据通信不了四、交换机的命令行配置
1.配置前的准备
Console电缆
物理连接:1.计算机COM口 2.交换机/路由器Console口
软件连接:1.超级终端 2.其他软件
2.SecureCRT软件的配置
协议:Protocol
端口号:Port
波特率:Baud rate
数据位:Data bits
奇偶校验位:Parity
停止位:Stop bits
流控(下面的选项一般都不选):Flow Control
注:只有端口号Port要选择变,其他都是一个定值3.管理设别的方式
带内管理:指的是网络管理控制信息于用户承载业务的网络是同一个逻辑通道。即使用到带宽的管理方式。
带内管理的方式:WEB、Telnet(telnet时用的外网的IP)带外管理:指的是网络管理控制信息与用户承载业务的网络不是同一个逻辑通道,即使用内网的管理方式,不占用带宽。
带外管理的方式:Console、Telnet(telnet时用的是内网的IP)4.Vlan概述
Vlan(虚拟局域网)
pc到pc之间是在物理局域网中,可以正常通信,但是设置完Vlan时就是给每个pc设置了一个虚拟局域网,每个PC都是一个单独的个体不能通信(因为它们不在同一个虚拟局域网中是不能通信的)华为支持Vlan数量是1-4094
一个Vlan=一个广播域=逻辑网络(子网)
Vlan作用:分段 灵活性 安全性Vlan的运作
1.每个逻辑的Vlan就像一个独立的物理桥
2.交换机上的每一个端口都可以分配给不同的Vlan(交换机每个接口只能属于一个Vlan)
3.默认的情况下,所有端口都属于Vlan11.常用的端口类型
常用的端口类型是:access、trunk、hybrid
access:接口类型,一个接口属于一个Vlan。连接对象是PC机int e0/0/1 #接口1设置为10兆接口 port link-type access #接口类型设置位access port default vlan 2 #把这接口划分到Vlan中
trunk:单条链路承载多Vlan的数据流量。连接对象是交换机
port trunk allow-pass vlan 10 20 30 #允许Vlan10 20 30的流量通过 undo port trunk allow-pass vlan 1 #去除Vlan 1的流量
hybrid:混合接口,可以选择以access还是trunk接口属性工作。
port hybrid pvid vlan 2 #把这个hybrid分到Vlan2中 port hybrid untagged vlan 2 #脱标签,(PC机不能收到带有标签的命令)
//设置接口类型,vlan流量命令 Port link-type ? #选择接口类型 access:int e0/0/0 #设置选择10兆接口 port link-type access #连接对象是access设置接口类型 port default vlan 2 #把这个接口划分到Vlan2中 port trunk allow-pass vlan 10 20 30 #设置允许特定流量通过 all(放行所有) undo port trunk allow-pass vlan 10 #去除特定流量 hybrid:port hybrid pvid vlan 2 #把这hybrid分到vlan2中 port hybrid untagged vlan 2 #PC机不收有标签的命令,脱标签 clear configuration interface e0/0/3 #消除接口下的所有命令 untagged:出交换机会指定标签解除一张列表 tagged:当某些指定Vlan(有相应标签)经过交换机时,无条件放行的一张列表 **注:同一个Vlan只能存在于untagged和tagged表中其中一个**
2.相同Vlan通信与不同Vlan通信
相同Vlan通信:
·情况一:同一台交换机相同Vlan通信,查看MAC地址表,将打了相同Pvid标签数据包转发到对应的端口上起
·情况二:跨交换机,通过trunk技术实现多Vlan数据通信,可以帮助我们实现相同的Vlan通信。不同Vlan通信(不同网段):
·单臂路由
组成:一台二层交换机和一台路由·三层交换
组成:三层交换机·Vlan封装的方式:802.1q
5.STP生成树
1.环路引起的问题
1.环路引起的问题一:广播风暴
环路引起的问题二:MAC地址表不稳定
2.STP生成树协议
生成树协议的作用:
因为当有环路存在时,广播的发送会引起全网的广播风暴,因此需要打破环路生成的条件,而生成树协议就是解决二层广播风暴的重要手段,另外我们会阻塞一些端口,打破环路生成条件,当链路出现问题时,这些被阻塞的端口可以过渡到转发状态,实现链路的备份作用。3.BPDU网桥协议
1.BPDU(Bridge Protocol Data Unit)网桥协议数据单元
对于参与STP的所有SW,他们都通过数据消息的交换来获取网络中其他SW的信息,这种消息就被称为BRDU。
BPDU是直接封装在二层的协议2.BPDU的功能:
1.选举根网桥
2.确定冗余路径的位置
3.通过阻塞特定端口来避免环路
4.通告网络的拓扑变更
5.监控生成树的状态3.BPDU的两种类型:
1.配置BPDU–通常由根网桥以周期性间隔发出,包括STP参数,用于进行各种选举。
2.TCNBPDU–这种BPDU是交换机检测到拓扑发送变更时所产生的。4.选举根交换机的规则
lowest BID=网桥优先级(32768)+MAC地址(越小越优)
交换机默认网桥优先级是327685.设置成根网桥的两种方法
//1.修改网桥优先级命令 [SW1]stp Priority 0(数值需要设定为4096的倍数) //2.设置此网桥为根网桥 [SW1]stp root primary(优先级将变为0) display stp #查看根网桥命令 CLST Root/ERPC #表示根网桥
6.端口角色:
RP:根网桥。每个非根网桥上有且只有一个,选举到达根网桥上路径开销值最小的成为根网桥
DP:指定端口。根网桥上每个端口都是指定端口,非根网桥上需要转发数据的端口也是指定端口
AP:预备端口。该接口状体为blocking状态,只收BPDU,不发BPDU端口状态描述:
Disabled(禁用状态): 不转发数据帧,不学习MAC地址表,不参与生成树计算
Discarding(阻塞状态): 不转发数据帧,不学习MAC地址表,接收并处理BPDU,不发送BPDU
Listening(侦听状态): 不转发数据帧,不学习MAC地址表,参与生成树计算,接收并发送BPDU
Learning(学习状态):不转发数据帧,学习MAC地址表,参与生成树计算,接收并发送BPDU
Forwarding(转发状态):转发数据帧,学习MAC地址表,参与生成树计算,接收斌发送BPDU端口由Blocking过渡到Forwarding有50s延时,
Blocking到Listening有20s老化时间,
Listening到Learning有15s过渡时间,
Learning到Forwarding有15s过渡时间。7.选举根端口、指定端口的规则
1.Lowest path cost to root bridge(到达根最小路径开始) 2.Lowest sender BID(最小的发送方BID) 3.Lowest sender port ID(最小的发送发PID) 端口优先级(默认128)+发送方端口号 [SW1-Ethernet0/0/2]stp port priority 0(16的倍数) #修改网桥接口优先级命令 display stp brief #查看端口状态命令
1.单臂路由项目
要求:
用单臂路由实现Vlan通信
拓扑图:
1.PC1、PC2基本配置
2.LSW1交换机配置# sysname SW1 # vlan batch 101 to 102 # cluster enable ntdp enable ndp enable # drop illegal-mac alarm # diffserv domain default # drop-profile default # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password simple admin local-user admin service-type http # interface Vlanif1 # interface MEth0/0/1 # interface Ethernet0/0/1 port hybrid pvid vlan 101 port hybrid untagged vlan 101 # interface Ethernet0/0/2 port hybrid pvid vlan 102 port hybrid untagged vlan 102 # interface Ethernet0/0/3 # interface Ethernet0/0/4 # interface Ethernet0/0/5 # interface Ethernet0/0/6 # interface Ethernet0/0/7 # interface Ethernet0/0/8 # interface Ethernet0/0/9 # interface Ethernet0/0/10 # interface Ethernet0/0/11 # interface Ethernet0/0/12 # interface Ethernet0/0/13 # interface Ethernet0/0/14 # interface Ethernet0/0/15 # interface Ethernet0/0/16 # interface Ethernet0/0/17 # interface Ethernet0/0/18 # interface Ethernet0/0/19 # interface Ethernet0/0/20 # interface Ethernet0/0/21 # interface Ethernet0/0/22 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 101 to 102 # interface GigabitEthernet0/0/2 # interface NULL0 # user-interface con 0 idle-timeout 0 0 user-interface vty 0 4 # return
3.R1路由器配置
# sysname R1 # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password cipher P`;s###JuDbL^B&WSBiQ[:[# local-user admin service-type http # firewall zone Local priority 16 # interface Ethernet0/0/0 # interface Ethernet0/0/1 # interface Serial0/0/0 link-protocol ppp # interface Serial0/0/1 link-protocol ppp # interface Serial0/0/2 link-protocol ppp # interface Serial0/0/3 link-protocol ppp # interface GigabitEthernet0/0/0 # interface GigabitEthernet0/0/0.1 vlan-type dot1q 101 ip address 192.168.101.1 255.255.255.0 # interface GigabitEthernet0/0/0.2 vlan-type dot1q 102 ip address 192.168.102.1 255.255.255.0 # interface GigabitEthernet0/0/1 # interface GigabitEthernet0/0/2 # interface GigabitEthernet0/0/3 # wlan # interface NULL0 # user-interface con 0 idle-timeout 0 0 user-interface vty 0 4 user-interface vty 16 20 # return
4.测试 PC1到PC2网关
PC1到PC2 IP地址
2.hybrid项目
要求:
1.相同Vlan之间相互通信;
2.所有pc机都可以访问ftp服务器。拓扑图:
1.LSW2交换机配置# sysname SW2 # vlan batch 1101 to 1102 1105 # cluster enable ntdp enable ndp enable # drop illegal-mac alarm # diffserv domain default # drop-profile default # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password simple admin local-user admin service-type http # interface Vlanif1 # interface MEth0/0/1 # interface Ethernet0/0/1 port hybrid pvid vlan 1101 port hybrid untagged vlan 1101 1105 # interface Ethernet0/0/2 port hybrid pvid vlan 1102 port hybrid untagged vlan 1102 1105 # interface Ethernet0/0/3 # interface Ethernet0/0/4 # interface Ethernet0/0/5 # interface Ethernet0/0/6 # interface Ethernet0/0/7 # interface Ethernet0/0/8 # interface Ethernet0/0/9 # interface Ethernet0/0/10 # interface Ethernet0/0/11 # interface Ethernet0/0/12 # interface Ethernet0/0/13 # interface Ethernet0/0/14 # interface Ethernet0/0/15 # interface Ethernet0/0/16 # interface Ethernet0/0/17 # interface Ethernet0/0/18 # interface Ethernet0/0/19 # interface Ethernet0/0/20 # interface Ethernet0/0/21 # interface Ethernet0/0/22 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 2 to 4094 # interface GigabitEthernet0/0/2 # interface NULL0 # user-interface con 0 idle-timeout 0 0 user-interface vty 0 4 # port-group q # return
2.LSW3交换机配置
# sysname SW3 # vlan batch 1101 to 1102 1105 # cluster enable ntdp enable ndp enable # drop illegal-mac alarm # diffserv domain default # drop-profile default # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password simple admin local-user admin service-type http # interface Vlanif1 # interface MEth0/0/1 # interface Ethernet0/0/1 port hybrid pvid vlan 1101 port hybrid untagged vlan 1101 1105 # interface Ethernet0/0/2 port hybrid pvid vlan 1102 port hybrid untagged vlan 1102 1105 # interface Ethernet0/0/3 port hybrid pvid vlan 1105 port hybrid untagged vlan 1101 to 1102 1105 # interface Ethernet0/0/4 # interface Ethernet0/0/5 # interface Ethernet0/0/6 # interface Ethernet0/0/7 # interface Ethernet0/0/8 # interface Ethernet0/0/9 # interface Ethernet0/0/10 # interface Ethernet0/0/11 # interface Ethernet0/0/12 # interface Ethernet0/0/13 # interface Ethernet0/0/14 # interface Ethernet0/0/15 # interface Ethernet0/0/16 # interface Ethernet0/0/17 # interface Ethernet0/0/18 # interface Ethernet0/0/19 # interface Ethernet0/0/20 # interface Ethernet0/0/21 # interface Ethernet0/0/22 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 2 to 4094 # interface GigabitEthernet0/0/2 # interface NULL0 # user-interface con 0 idle-timeout 0 0 user-interface vty 0 4 # port-group hybr # return2
3.Server1 FTP
3.1 选择文件根目录——启动监听端口号
3.2 客户端信息——FtpClient——输入FTP服务器地址:192.168.101.254——登录——实现本地文件传输到服务器文件列表
4.不同Vlan间,IP地址是不能通信的
5.相同Vlan,IP地址可以通信
6.pc机地址测试FTP服务器IP地址都可以通
3.Trunk项目
1.LSW4交换机配置
要求:
1.交换机与交换机之间用trunk
2.相同Vlan间通信# sysname SW4 # vlan batch 101 to 102 # cluster enable ntdp enable ndp enable # drop illegal-mac alarm # diffserv domain default # drop-profile default # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password simple admin local-user admin service-type http # interface Vlanif1 # interface MEth0/0/1 # interface Ethernet0/0/1 port hybrid pvid vlan 101 port hybrid untagged vlan 101 # interface Ethernet0/0/2 port hybrid pvid vlan 102 port hybrid untagged vlan 102 # interface Ethernet0/0/3 # interface Ethernet0/0/4 # interface Ethernet0/0/5 # interface Ethernet0/0/6 # interface Ethernet0/0/7 # interface Ethernet0/0/8 # interface Ethernet0/0/9 # interface Ethernet0/0/10 # interface Ethernet0/0/11 # interface Ethernet0/0/12 # interface Ethernet0/0/13 # interface Ethernet0/0/14 # interface Ethernet0/0/15 # interface Ethernet0/0/16 # interface Ethernet0/0/17 # interface Ethernet0/0/18 # interface Ethernet0/0/19 # interface Ethernet0/0/20 # interface Ethernet0/0/21 # interface Ethernet0/0/22 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 2 to 4094 # interface GigabitEthernet0/0/2 # interface NULL0 # user-interface con 0 idle-timeout 0 0 user-interface vty 0 4 # return
2.LSW5交换机配置
# sysname SW5 # vlan batch 101 to 102 # cluster enable ntdp enable ndp enable # drop illegal-mac alarm # diffserv domain default # drop-profile default # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password simple admin local-user admin service-type http # interface Vlanif1 # interface MEth0/0/1 # interface Ethernet0/0/1 port hybrid pvid vlan 101 port hybrid untagged vlan 101 # interface Ethernet0/0/2 port hybrid pvid vlan 102 port hybrid untagged vlan 102 # interface Ethernet0/0/3 # interface Ethernet0/0/4 # interface Ethernet0/0/5 # interface Ethernet0/0/6 # interface Ethernet0/0/7 # interface Ethernet0/0/8 # interface Ethernet0/0/9 # interface Ethernet0/0/10 # interface Ethernet0/0/11 # interface Ethernet0/0/12 # interface Ethernet0/0/13 # interface Ethernet0/0/14 # interface Ethernet0/0/15 # interface Ethernet0/0/16 # interface Ethernet0/0/17 # interface Ethernet0/0/18 # interface Ethernet0/0/19 # interface Ethernet0/0/20 # interface Ethernet0/0/21 # interface Ethernet0/0/22 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 2 to 4094 # interface GigabitEthernet0/0/2 # interface NULL0 # user-interface con 0 idle-timeout 0 0 user-interface vty 0 4 # return
3.测试 PC3 192.168.1.10——PC4 192.168.1.20 不同Vlan
4.PC3 192.168.1.10 —— PC6 192.168.1.30 相同Vlan
-
ARP 攻击原理
2006-09-20 10:42:00ARP协议概述&ARP攻击的原理&ARP解决思路ARP应该是一直以来捆绕着众多网管朋友的一个难题,我在工作中也经常遇到,也因此搜集了很多关于ARP方面的资料跟防御工具,希望对朋友们有些帮助。一.ARP协议概述:P数据包常...ARP协议概述&ARP攻击的原理&ARP解决思路
ARP应该是一直以来捆绕着众多网管朋友的一个难题,我在工作中也经常遇到,也因此搜集了很多关于ARP方面的资料跟防御工具,希望对朋友们有些帮助。
一.ARP协议概述:
P数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。
ARP工作时,送出一个含有所希望的IP地址的以太网广播数据包。目的地主机,或另一个代表该主机的系统,以一个含有IP和以太网地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。
如果有一个不被信任的节点对本地网络具有写访问许可权,那么也会有某种风险。这样一台机器可以发布虚假的ARP报文并将所有通信都转向它自己,然后它就可以扮演某些机器,或者顺便对数据流进行简单的修改。ARP机制常常是自动起作用的。在特别安全的网络上, ARP映射可以用固件,并且具有自动抑制协议达到防止干扰的目的
二.ARP的工作原理:以太网设备比如网卡都有自己全球唯一的MAC地址,它们是以MAC地址来传输以太网数据包的,但是它们却识别不了我们IP包中的IP地址,所以我们在以太网中进行IP通信的时候就需要一个协议来建立IP地址与MAC地址的对应关系,以使IP数据包能发到一个确定的地方去。这就是ARP(Address Resolution Protocol,地址解析协议)。
讲到此处,我们可以在命令行窗口中,输入
arp –a
来看一下效果,类似于这样的条目
210.118.45.100 00-0b-5f-e6-c5-d7 dynamic
就是我们电脑里存储的关于IP地址与MAC地址的对应关系,dynamic表示是临时存储在ARP缓存中的条目,过一段时间就会超时被删除(xp/2003系统是2分钟)。
这样一来,比如我们的电脑要和一台机器比如210.118.45.1通信的时候,它会首先去检查arp缓存,查找是否有对应的arp条目,如果没有,它就会给这个以太网络发ARP请求包广播询问210.118.45.1的对应MAC地址,当然,网络中每台电脑都会收到这个请求包,但是它们发现210.118.45.1并非自己,就不会做出相应,而210.118.45.1就会给我们的电脑回复一个ARP应答包,告诉我们它的MAC地址是xx-xx-xx-xx-xx-xx,于是我们电脑的ARP缓存就会相应刷新,多了这么一条:
210.118.45.1 xx-xx-xx-xx-xx-xx dynamic
为什么要有这么一个ARP缓存呢,试想一下如果没有缓存,我们每发一个IP包都要发个广播查询地址,岂不是又浪费带宽又浪费资源?
而且我们的网络设备是无法识别ARP包的真伪的,如果我们按照ARP的格式来发送数据包,只要信息有效计算机就会根据包中的内容做相应的反应
三.ARP攻击的原理
在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下所示。
主机 IP地址 MAC地址
A 192.168.16.1 aa-aa-aa-aa-aa-aa
B 192.168.16.2 bb-bb-bb-bb-bb-bb
C 192.168.16.3 cc-cc-cc-cc-cc-cc
D 192.168.16.4 dd-dd-dd-dd-dd-dd
我们以主机A(192.168.16.1)向主机B(192.168.16.2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.16.2的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。对目标A进行欺骗,A去Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如果进行欺骗的时候,把C的MAC地址骗为DD-DD-DD-DD-DD-DD,于是A发送到C上的数据包都变成发送给D的了。这不正好是D能够接收到A发送的数据包了么,嗅探成功。
A对这个变化一点都没有意识到,但是接下来的事情就让A产生了怀疑。因为A和C连接不上了。D对接收到A发送给C的数据包可没有转交给C。
做“man in the middle”,进行ARP重定向。打开D的IP转发功能,A发送过来的数据包,转发给C,好比一个路由器一样。不过,假如D发送ICMP重定向的话就中断了整个计划。
D直接进行整个包的修改转发,捕获到A发送给C的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从A发送来的。不过,C发送的数据包又直接传递给A,倘若再次进行对C的ARP欺骗。现在D就完全成为A与C的中间桥梁了,对于A和C之间的通讯就可以了如指掌了。
中了ARP后的一些现象:
1:能PING通网内其它客户机,但PING不通路由,上不了网(连接到INTERNET)。
2:能PING通网内其它客户机,同样PING不通路由,但能上网(能连接到INTERNET)。
3:当中毒的机器向网关路由发出请求时,网关路由的ARP缓存还未到刷新时间,网关路由内的ARP缓存表中保存的是客户机还未中毒前的MAC地址。而这个MAC地址,与客户机当前请求的MAC(被病毒修改过)不一致,客户机的连接请求被网关拒绝。即发生与网关断流。
4:当中毒的源头机器向局域网发出假MAC广播时,网关路由也接收到了此消息,并将这些假MAC地址与其IP相对应,并建立新的ARP缓存。导致客户机与服务器断开连接。
四.ARP解决思路
1、不要把你的网络安全信任关系建立在IP基础上或MAC基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
2、设置静态的MAC-->IP对应表,不要让主机刷新你设定好的转换表。
在网关路由上对客户机使用静态MAC绑定。ROUTE OS软路由的用户可以参照相关教程,或是在IP--->ARP列表中一一选中对应项目单击右键选择“MAKE STATIC”命令,创建静态对应项。
用防火墙封堵常见病毒端口:134-139,445,500,6677,5800,5900,593,1025,1026,2745,3127,6129 以及P2P下载
3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
5、使用"proxy"代理IP的传输。
6、使用硬件屏蔽主机。设置好你的路由,确保IP地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
7、管理员定期用响应的IP包中获得一个rarp请求,然后检查ARP响应的真实性。
8、管理员定期轮询,检查主机上的ARP缓存。
9、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。
10:在客户机上进行网关IP及其MAC静态绑定,并修改导入如下注册表:
(A)禁止ICMP重定向报文
ICMP的重定向报文控制着Windows是否会改变路由表从而响应网络设备发送给它的ICMP重定向消息,这样虽然方便了用户,但是有时也会被他人利用来进行网络攻击,这对于一个计算机网络管理员来说是一件非常麻烦的事情。通过修改注册表可禁止响应ICMP的重定向报文,从而使网络更为安全。
修改的方法是:打开注册表编辑器,找到或新建“HKEY_LOCAL_Machine/System/CurrentControlSet/Services/TCPIP/Paramters”分支,在右侧窗口中将子键“EnableICMPRedirects”(REG_DWORD型)的值修改为0(0为禁止ICMP的重定向报文)即可。
(B)禁止响应ICMP路由通告报文
“ICMP路由公告”功能可以使他人的计算机的网络连接异常、数据被窃听、计算机被用于流量攻击等,因此建议关闭响应ICMP路由通告报文。
修改的方法是:打开注册表编辑器,找到或新建“HKEY_LOCAL_Machine/System/CurrentControlSet/Services/TCPIP/Paramters/Interfaces”分支,在右侧窗口中将子键“PerformRouterDiscovery”
-
ARP协议及欺骗原理
2009-12-12 17:57:001 ARP协议概述IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或... -
《TCP/IP详解 卷一 : 协议》 第一章 概述
2019-03-28 17:02:56一个动画看懂网络原理之令牌环网的工作原理http://www.wonggang.com/8151.html 以太网是这样通信的,每台电脑位于同一个主干中都可以向主干线路中发信息串。假如a吧,它先监听主干线路上有没有人在发信息,如果有... -
网桥原理及源代码详解
2012-07-04 10:18:10* 该代码在FB中提供桥接功能,不过他只是在以太网接口上工作,能提供多个逻辑桥 * ,我们称为组,组是由一组有相同组ID的接口组成,组ID的范围在1到2^16-1之间. * 打开桥的功能是通过sysctl net.link.ether.bridge=1... -
ARP协议及欺骗原理(1)
2008-11-03 00:17:231 ARP协议概述 IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的... -
最全的ARP欺骗攻击原理深入分析
2008-11-11 23:00:001、ARP协议概述IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或... -
网桥原理及源代码详解(转)
2007-08-09 22:25:12网桥原理及源代码详解(转)[@more@]* 解析ie_minix */[color=green]/* 概述:* 该代码在FB中提供桥接功能,不过他只是在以太网接口上工作,能提供多个逻辑桥* ,我们称为组,组是由一组有相同组ID... -
MP(Multi-Link PPP)原理和实验
2020-12-15 17:31:38概述: MP是Multi-Link PPP的缩写,是将多个物理链路的PPP(注意是PPP链路)捆绑在同一个逻辑端口,旨在增加链路的带宽,只要是支持PPP的物理链路都可以启用MP,互相捆绑在同一个逻辑端口Dialer口。MP允许将IP等网络... -
网络分析技术揭秘:原理、实践与WinPcap深入解析.吕雪峰(带详细书签).pdf
2019-01-30 23:58:051.6 网络分析器的工作原理 11 1.6.1 以太网简介 11 1.6.2 理解开放系统互连(OSI)模型 11 1.6.3 了解CSMA/CD协议 15 1.6.4 IP、ICMP、TCP与UDP协议 16 1.6.5 硬件 17 1.6.6 欺骗交换机 19 1.7 嗅探器的检测... -
华为认证 HCNA(HCDA)认证 全套教学PPT
2014-09-12 16:06:38以太网设备工作原理.ppt Module 4-广域网技术基本原理与实现 FR原理与配置.ppt HDLC原理与配置.ppt PPP原理与配置.ppt Module 5-网络安全基础 Eudemon产品基本功能特性与配置.ppt 防火墙产品基础.ppt ... -
中级-05-云网络基础课程
2019-12-27 16:09:32目录 第1章 概述 ...1.3交换机与路由器工作原理 1.3.1 以太网交换机 1.3.2 二层交换机 1.3.3 三层交换机 1.3.4 路由器工作原理 1.3.5 路由协议介绍 第2章 网络管理 2.1 IPv4与IPv6 2.1.1 IP地址... -
《TCP/IP详解》笔记——网络接口层
2018-06-03 16:49:24在TCP/IP详解笔记——TCP/IP基本工作原理概述,简述了TCP/IP的四层协议以及各层的作用及常用协议,数据传输中的封装和拆封过程,举例说明主机A至主机B在局域网和广域网传输概述。接下来几节将详细讲解TCP/IP各层协议... -
华为认证HCNA-RS(HCDA)全套PPT
2016-12-09 11:30:553-2 以太网设备工作原理.pdf 3-3 以太网端口技术.pdf 3-4 VLAN技术原理与配置.pdf 3-5 VLAN路由.pdf 3-6 STP原理与配置.pdf 3-7 VRRP原理与配置.pdf 4.HCNA-R&S(HCDA) 广域网技术基本原理与实现 4-1 HDLC原理与配置.... -
H3CNE ppt.zip
2020-07-26 11:04:41第11章 以太网交换机工作原理 第12章 配置VLAN 第13章 生成树协议 第14章 交换机端口安全技术 第15章 配置链路聚合 第16章 IP子网划分 第17章 DNS 第18章 文件传输协议 第19章 DHCP 第20章 IPv6基础 第21章 IP路由... -
华为认证HCNA-R&S(HCDA)全套PPT
2015-11-14 14:53:243-2 以太网设备工作原理.pdf 3-3 以太网端口技术.pdf 3-4 VLAN技术原理与配置.pdf 3-5 VLAN路由.pdf 3-6 STP原理与配置.pdf 3-7 VRRP原理与配置.pdf 4.HCNA-R&S(HCDA) 广域网技术基本原理与实现 4-1 HDLC... -
cisco网络专题教程(5)
2008-03-20 20:04:24专题5-交换机工作原理和虚拟局域网 本专题内容: 通过学习本专题掌握交换机的工作原理、虚拟局域网的工作原理及其配置。 一、交换机原理 1、概述 九十年代初,随着计算机性能的提高及通信量的聚增,传统... -
cisco网络专题教程(1)
2008-03-17 03:07:32通过学习本专题掌握OSI七层参考模型,以太网工作原理,Cisco建网三层模型,以及综合布线基础。 一、OSI参考模型 1、概述 OSI(Open System Interconnection,开放系统互联)模型是由国际标准化组织(ISO)定义的... -
CONGATEC 蓝图:工业物联网分析架构层级
2020-03-03 21:36:26当今的工业工程师需要将 IT 和 OT 技术集成到一台机械中的蓝图。这些系统必须集成 IT 网络和处理功能,同时保持确定性、安全性和可靠性。...这些系统基于工作负载整合与以太网时间敏感网络(以太网 TSN)的原理。 -
计算机网络基础视频教程(第一部分)
2018-03-04 12:35:08计算机网络基础3.2.OSI七层模型各层功能详解及以太网工作原理 计算机网络基础3.3.TCP-IP协议参考模型详解 计算机网络基础4.1.TCP-IP协议栈详述 计算机网络基础4.2.使用Sniffer进行TCP-IP协议栈分析 计算机网络基础... -
计算机网络基础视频教程(第三部分)
2018-03-04 12:39:32计算机网络基础3.2.OSI七层模型各层功能详解及以太网工作原理 计算机网络基础3.3.TCP-IP协议参考模型详解 计算机网络基础4.1.TCP-IP协议栈详述 计算机网络基础4.2.使用Sniffer进行TCP-IP协议栈分析 计算机网络基础...