欢迎来到我的博客!
没错,你见证了这个博客的历史,这将是我的第一篇博客。本博客由Hexo搭建,并使用了BUTTERFLY的博客主题。接下来,我将简单介绍一下我所持有的网站,以及开始我的博客之旅! 关于博客目前,本网站整体框架由Hexo搭建,并使用其官方主题。而我所写的博客,仅用到了Markdown语言编写。截止到2024年2月20日,这是我进入高中后创下的第二个网站。 由于Gitee Pages的停止运营,使本网站不得不再次托管在github上,但是已经使用了Netlify进行加速。 后期有考虑更改域名……但也是后期的事情,所以现在不考虑,反正就算更改了网址我也会告诉你们的(或放在这里) 我的联系方式由于隐私需要,在此不提供任何社交软件联系方式,如有需要可以通过邮件联系我: 联 系 我 当然,你也可以直接通过邮件:ndyian@foxmail.com来联系我。
ARP地址解析协议
什么是ARP我们知道,交换机只通过MAC地址来寻找目标主机。可是MAC地址仅在局域网内有效,当出了局域网后将失去作用。因此我们引入了IP,用来标记不同的局域网。 如何通过IP地址来寻找MAC地址呢?这就是我们的ARP地址解析协议。 ARP缓存与MAC地址表类似,在我们的计算机中同样存在着一张ARP缓存表。这张表中清楚的记录了主机IP与MAC地址的映射关系,以便于二层网络设备通过MAC地址寻找主机。 如果还并不了解交换机工作原理,请先看以下章节 交换机基础工作原理 ARP工作流程设想现有两台计算机PC1、PC2分别接在交换机SW1的F0/1、F0/2两个端口上。 PC1向PC2发送信息接下来PC1对PC2进行PING测试,也就是ICMP协议。此时计算机会查找ARP缓存表,若未找到,则会暂停ICMP数据包的发送进程,重新封包一份用来询问目标MAC地址的数据包。也就是说必须先完成ARP查找才能发送数据。 SW1接收到信息此时交换机接收到来自F0/1口发来的数据包。交换机拆包后,找到了源(PC1)MAC地址、IP地址和目的(PC2)IP地址。还有一个非常重要的信息便是目的MAC地址。因为必须要有目的MAC地址交换机才能发送数据。 那么问题来了,我不知道PC2的MAC地址,ARP怎么才能问到目标MAC? 没错,广播。 当MAC地址全为F时,便是广播地址(即FFFF:FFFF:FFFF)。 也就是说,PC1封装ARP数据包时自动带上了目的MAC地址,也就是广播地址,让这个数据包发送到此交换机所连接的所有设备,以此来询问目标主机的MAC地址 PC2接收到ARP询问当其他PC接收到来自交换机转发的ARP询问时,拆包后发现目的IP地址并不是自己的IP地址便会丢弃这个包。如果是,就接收此数据包,并记录在自己的ARP缓存中。那么此时PC2接收到从F0/2口广播来的ARP数据包,拆包后发现目的IP地址是自己,便会接收此包并记录在ARP缓存中,这样在数据传回PC1告诉自己MAC地址的时候就不需要发送广播,而是根据PC1给的IP地址和MAC地址单播回应即可。 PC2回应ARP现在PC2查找到了刚刚记录的ARP缓存,将源(PC2)IP地址、MAC地址和目标(PC1)IP地址、MAC地址封装在包内,通过F0/2口回送给交换机。交换机接收到数据包后拆包,发现目的MAC地址与IP地址后,查找自己的MAC地址表,将信息单播回送到F0/1端口。 PC1接收ARPPC1接收到了问来的目标(PC2)MAC地址,并记录在自己的ARP缓存中。现在可以将完整的地址信息封装在ICMP的包内了。 这样,我们就完成了ARP问询流程。 本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。PC2的MAC地址一旦确定,PC1就能向PC2发送IP通信了。 跨网段ARP因为ARP协议本身工作机制就是只能解析跟自己的网卡在同一个网段的IP地址它所对应的MAC地址,它不能够跨网段去做解析,也是因为它是一个二层协议。如果遇到跨网段的IP,那么就需要将数据交给网关去做三层的路由转发。所以跨网段的通信只需要通过ARP去解析到网关的MAC地址就可以了。 图文实验拓补结构 发送PING命令此时计算机查找arp发现为空。 停止ICMP的发送,先完成ARP。 在这里我们发现,数据包中的源MAC地址是PC1本机的0000.0000.1111,目的MAC地址则是全为F的广播地址(在这里属于二层广播),以达到询问MAC地址的目的。 交换机接收ARP 左侧为入端口信息,右侧为出端口信息。 交换机拆包后发现目的MAC为广播地址,则将此包发送给所有端口。此处只有F0/2有设备,因此只转发给了F0/2端口。 PC2接收ARP PC2接收到数据包后发现是自己的IP地址,接收数据包并记录PC1的ARP缓存。 左侧为入端口信息,右侧为出端口信息。 可以在右侧看到,现在PC2将此数据包的目的MAC地址和IP地址改为了0000.0000.1111,192.168.1.1。也就是PC1的MAC地址和IP地址。现在PC2就可以用单播的形式回包给PC1来告诉自己的MAC地址了。 PC1接收回包 PC1接收到回包,并将其记录在ARP缓存中。 PC1发送ICMP包 重新封装ICMP包,将目的MAC地址写入后发送。 至此,ARP工作完成。
交换机的基础工作原理
交换机的工作原理是网络中最基础的一个部分。我在这里同样不会讲的非常专业,只会以简单的方式讲述原理过程。如果需要了解更专业的知识请查阅网络设备基础教科书。 需要了解的基础知识交换机是一个工作在第二层的网络设备,其基础工作原理非常简单。 假设现在有两台计算机PC1、PC2,连接着一台交换机Sw1。如下图所示: 如果现在PC1向PC2发送了个信息。那么首先我们就要知道,发送的信息内包含着什么东西。交换机不识别IP地址,它通过MAC地址(物理地址)寻找目标主机。MAC地址存在于计算机的网卡中,是在出厂时就烧录进去的16进制编码,你可以把它理解为网卡的身份证号,所以全球唯一。 既然要给目标主机发送信息,那么就必然要告诉交换机目标主机的地址是什么。就好比你在网购的时候需要填写你家的地址,快递员通过你的地址才能把快递送到你家。同时,快递单上也会记录着商家发货地的地址。 所以PC1发送的信息中,就必然包含了源主机的MAC地址和目标主机的MAC地址。 实际上来讲,PC1并不知道目标主机的MAC地址。在还没有完全掌握计算机网络之前,请允许一些错误的理解存在,以便于我们更好的学习计算机网络基础。在后续的章节中,我将纠正这个错误。 那么问题来了,交换机是怎么知道这个端口上连接的是哪一台设备呢? MAC地址表建立过程我们知道,集线器的工作原理是将收到的信息转发到所有的端口,这样就能让目标主机接收到信息。可是交换机实现了点对点精准发送,代替了集线器的存在,所以交换机肯定会知道哪一台设备连接在交换机的哪一个端口上。那么请先思考一下,交换机是如何认识这些设备的。 首先,我们要了解在交换机中存在着一张表,就是MAC地址表。这张表中记录着每个端口与MAC地址的映射关系,以便于交换机能寻找到目标主机。 回到刚才的设想,PC1向PC2发送了一条消息,那么这条消息就包含有PC1的MAC地址(源MAC地址)和PC2的MAC地址(目标MAC地址)。交换机在接收到这条消息时,就会知道接收到这个消息的端口对应的是哪一台设备。也就是说,在此时交换机已经学习到了PC1的MAC地址与所在端口,并记录在了MAC地址表中。 接下来的问题就是如何知道目标主机的MAC地址了。 这时交换机会发现在MAC地址表中并不存在目标主机的MAC地址,那么交换机就会选择群发。也就是向除了PC1所连接端口外的所有端口发送信息,从而确保目标主机能接收到信息(这种操作叫flooding)。那么当PC2接收到信息时,发现这是我(PC2)的信息,就会选择接收,并向交换机回送信息,告诉交换机我(PC2)收到了信息。(如果其他设备收到了这个信息,在拆开后发现不是自己的MAC地址,就会忽略这条信息。)此时交换机收到了PC2回送来的信息,那么就会学习到PC2所在的端口是哪一个,并记录在MAC地址表中。 以此类推,这样就完成了MAC地址表的建立。 这里为了解释交换机如何建立MAC地址表,拟定了一个情景PC1向PC2发送了一条信息。实际情况并非如此,并不是主机间必须进行通信交换机才能学习到MAC地址。事实上是当网卡驱动加载之后交换机就学习到了主机的MAC地址。读者如果仔细观察就会发现,Windows系统启动过程还没完成,交换机技术就学习到了主机的MAC地址。 关于MAC地址表建立时的一些问题交换机的MAC地址表记录的条目数量是有限的,那么当MAC地址表记满的时候,是否还可以正常通信呢? 让我们沿用刚刚的设想,只不过把交换机换成MAC地址表建满的交换机。现在有一台新的计算机PC3连接在这台交换机上,并向PC2发送了信息。交换机接收到了来自PC3的信息并提取到了源MAC地址和目的MAC地址,可此时交换机无法将PC3的MAC地址存入到MAC地址表内,但可以找到PC2的MAC地址。于是交换机正常的将信息传递给了PC2。PC2在接收到信息后,向交换机回送信息表示自己已收到来自PC3的信息,这样就完成了通讯。 如果PC2要向PC3发送消息呢? 同样的,PC2将信息发送到交换机后,交换机在MAC地址表中查找对应设备。在发现查不到PC3的MAC地址时,就会进行群发,PC3也能正常接收到信息并回送给交换机,只不过无法进行记录。如果这样每次给PC3发送消息都要群发的话,就会损失大量性能。 因此,在交换机MAC地址表满的情况下可以正常通讯,只不过会浪费其性能。
网络的发展
前言我也查询了关于计算机网络的发展史,网上的回答鱼龙混杂,多,且细致,而且偏向于理论考试性质。但是我想在这里,呈现一篇比较简单的故事,来阐述整个计算机网络的发展史。 时间线1957 苏联发射斯普特尼克一号 1957年,苏联发射了世界上第一颗人造卫星斯普特尼克一号,同时也在美国引发了斯普特尼克危机等一系列事件。 1958 美国建立ARPA组织 1958年,美国为了扭转这一局面,创建了国防部高级研究规划署,简称阿帕(ARPA)。 1962 美国诞生阿帕网 1962年,美国高级研究规划署和其核心机构IPTO提出了全新的分散的指挥系统概念,并将其命名为阿帕网。 1969 阿帕网正式启用 1969年,人类互联网史上首个包含了5个字母的单词,从洛杉矶向斯坦福大学计算机传递,login。 本部分的时间或许并不那么准确,因为在网上我也并不能找到一个准确的答案。但我们只需了解发生了什么就好,不必在意非常精确的时间。 网络的发展史本篇发展史将不强调具体发生的时间,如需了解更精确的时间内容,请查阅网络发展基础教科书。 为什么要诞生网络? 这个问题就要追溯至美苏冷战时期,当时因为苏联发射了世界上第一颗人造卫星斯普特尼克一号,使美国产生危机感,于是立即建立了一个组织,并命名为阿帕(ARPA)。 是的,苏联这个举动让美国害怕了。美国害怕他们的重要信息存在一台电脑上,如果这台电脑所在的地方被苏联一颗炮弹轰下来直接炸毁,那么重要的情报和信息都将毁于一旦。于是美国开始想办法,他们想如果信息不只存在一台电脑上,把信息存在多台不同位置的电脑上,那么就算苏联一颗炮弹轰下来,炸毁了其中一台电脑,其他电脑上仍然存在这个数据,后续恢复起来也会比较方便。这也就是美国高级研究规划署和其核心机构IPTO提出的分散指挥系统概念,阿帕网(ARPANET)。 理论存在,那么实践开始! 美国开始连接加利福尼亚大学洛杉矶分校、斯坦福研究所、加利福尼亚大学圣巴巴拉分校和犹他大学四所学校。如果单一的指挥系统被摧毁,整个国家的军事指挥将陷入瘫痪。因此,ARPA决定开发一个分散的网络系统,即使部分节点被摧毁,其余节点仍能维持通信。 慢慢的,阿帕网从最初的四个节点发展到全球性的互联网,极大地改变了人们的通信方式和工作方式。 网络设备的发展从一开始的一无所有,到现在的家家户户接入网络,肯定少不了一些非常重要的网络设备。但一开始并不存在交换机和路由器这样的网络设备,那么这些设备是如何发展起来的呢? 复杂的网络拓补结构我们再次回到一开始的阿帕网,当时美国连接了四所大学,所使用的走线形式非常复杂。假设我现在拥有两台设备PC1、PC2,那么我就需要用一根线将两台设备连接。现在我又多出一台设备PC3需要与PC1、PC2相连,那么就需要用两根线来连接。如果再增加一台设备,那么要用三根线与其他设备相连,以此类推。(如下图所示)如果一直按照这个方式连接下去,那么随着设备的增多,所需要的网线数量就会远远超出预期,因此就需要找别的办法去弥补这个问题。 网络工程师们为了解决这个问题,想到如果所有设备都连接在一条线上,是不是就会方便许多? 总线型拓补结构于是,总线形拓补结构应运而生。 所有的设备都插在同一根线上,先在总线上预留好插口,那么所有需要连接的计算机只需要直接将线插在总线上已预留好的插口上就可以了。 但同样的,会产生一些问题。 我们知道,信息在网线中传播是通过电流的变化,也就是0和1。在初中物理我们学过电流,电流在电线中就像水流一般,只要看到分支便会进入。那么同样的,网线也是如此。假设其中一个节点向另一个节点发送信息,信息通过分支传递到总线后开始往两边传递,倘若这时又有一个节点发出了信息,那么电流就会相撞干扰,从而影响一部分信息的发送,这也就是丢包。 这是最主要的问题。除此之外,总线型结构还有着安全性较差、故障隔离和诊断困难等问题。设想我如果需要移动原本插在总线上的设备,那么就需要掀起整块地板,到其他地方重新预留插口,太过于费时费力。于是网络工程师们又想出了一个新的办法。 将所有网络设备插在同一个设备上,并通过这个设备来进行转发。且这个设备又非常小巧,移动方便。 说到这里,肯定会有人认为是交换机。那你就大错特错了!这个时候还没有交换机呐! 集线器这个东西叫做集线器,也就是HUB。它具有着转发信息,增强信号的功能。 这样,每增加一个设备,只需要新增一个连接。 我们都知道,电线是存在电阻的,你可以把它理解为电流在电线中移动,但是电线存在一个力不让电流继续移动,那么这个力我们就称之为电阻。目前还并不存在没有电阻的电线(除非它是超导doge),所以网线的传输距离同电线一样,是有限的。双绞线的最大传输距离不会超过100m,超过100m后信号衰弱,便会出现丢包的情况。那么集线器的出现就是为了解决这个问题。它可以使发送进来的信号恢复到原来的状态,也就是将信号增强到原本的状态。你可以把它理解为有两个人A和B正在传话,但是距离太远,A已经听不见B在说什么,于是这个时候又走过来一个人C,刚好站在了A和B的中间,C能听到B讲话,也能听到A讲话,于是他就成为了两人的传话人。同时,集线器也解决了所有信号在同一条网线中传输引起的干扰问题。 但还是有一些问题产生了。 集线器是工作原理是将接收到的信息转发给所有连接着的端口,也就意味着所有连接着集线器的电脑都将接收到信息。那么数据的安全性就无法得到保证。还有一个问题就是负载问题。我们设想有越来越多的设备插到集线器上,也就意味着一台电脑发送信息,那么集线器需要把信息转发给所有的电脑。这样就会产生大量的性能损失,使网络越来越卡。 交换机于是,交换机,它来了! 交换机的出现很好的解决了这两个问题,使信息实现点对点精准发送。它的出现,解决了计算机网络中通信的大部分问题,并沿用至今。 至于交换机的基础工作原理,请移步至下面这个章节: 交换机基础工作原理 路由器为什么需要路由器这个东西?我有交换机还不够嘛? 我们知道交换机只通过MAC地址寻址,并不通过IP地址。那么当网络规模扩大、复杂性增加的情况下,交换机将无法正常工作。在局域网内大规模组网中,交换机确实是非常重要且不可或缺的设备。但当交换机需要夸局域网通信时,将变得不现实。虽然MAC地址是全球唯一地址,但是当设备增多后,交换机内的MAC表也将变的难以维护,寻找路径起来也会变得更加麻烦。还可能会因为连接顺序不合理导致经过不必要的设备或形成环路。 所以路由器就在此应运而生。 值得注意的是,这里指的路由器并不是家里连接WiFi用的无线路由器,而是一种专门的网络设备。 路由器的作用,就是找到两个网络之间的更优路径,适用于多个网络的互联与数据转发。同时,为了更好的区分不同网络和网络中的设备,引入了IP地址这个概念。设想我们现在有一个学校A和一个学校B,学校A内的其中一台计算机A1希望与学校B内的其中一台计算机B1进行通信。光靠MAC地址将无法找到跨局域网的另外一台设备,所以我们为两个学校分配了不同的网段。现假设网络分配如下: 学校A(192.168.1.0/24) 设备A1 192.168.1.1/24 学校B(192.168.2.0/24) 设备B1 192.168.2.1/24 请注意,IP地址作为逻辑地址只是当做某个设备的临时标识,更便于我们使用。当电脑关机后,IP地址将会改变(通常情况下),最终通信还是需要由MAC地址来完成。 当计算机A1发送信息给B1时,信息发送到学校A的交换机。交换机接收到信息后查找MAC地址表来确认需要发往哪里。当交换机找不到地址时,则会把信息转发给路由器所在的端口。路由器网关接收到信息后查找路由表,确认信息该发往哪里。最后在学校B的交换机内找到B1的MAC地址,并将数据发送给B1,这样就完成了一次跨网络的传输。 如何通过IP地址寻找MAC地址?ARP解析将在以下章节讲述: ARP地址解析协议
紫夜CQB战术公会
简介紫夜公会专注于研究CQB战术,即室内近距离作战(Close Quarter Battle)。拥有着一套完整的作战体系与课程,在游玩游戏的同时能体验到最真实的游戏体验与队友配合。 教官力量 .staff-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 25px; padding: 20px 0; } .staff-card { background: linear-gradient(145deg, #ffffff, #f5f5f5); border-radius: 20px; padding: 30px 25px 25px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.02); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; text-align: center; } .staff-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 100px; background: linear-gradient(135deg, #6b8afd15 0%, #ff72e215 100%); border-radius: 20px 20px 100% 100%; opacity: 0.8; } .staff-card:hover { transform: translateY(-5px); box-shadow: 0 15px 30px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.03); } .staff-card img { width: 140px; height: 140px; border-radius: 50%; margin: -15px auto 25px; display: block; object-fit: cover; border: 4px solid #fff; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15); transition: transform 0.3s ease; position: relative; z-index: 1; } .staff-card:hover img { transform: scale(1.05); } .staff-card h3 { color: #2c3e50; margin: 5px 0; font-size: 1.5em; font-weight: 600; text-align: center; position: relative; } .staff-card h3::after { content: ''; display: block; width: 50px; height: 3px; background: linear-gradient(90deg, #6b8afd 0%, #ff72e2 100%); margin: 8px auto; border-radius: 2px; } .staff-card p { color: #5a6c7d; font-size: 1em; line-height: 1.6; text-align: center; margin: 15px 0; } .staff-note { font-style: italic; color: #8c9bab; margin-top: 15px; font-size: 0.9em; text-align: center; padding: 10px; background: rgba(107, 138, 253, 0.05); border-radius: 10px; } .staff-role { display: inline-block; padding: 6px 15px; background: linear-gradient(135deg, #6b8afd 0%, #ff72e2 100%); color: #fff; border-radius: 20px; font-size: 0.85em; margin: 0 auto; position: relative; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 10px rgba(107, 138, 253, 0.2), 0 2px 4px rgba(255, 114, 226, 0.1); letter-spacing: 0.5px; font-weight: 500; transform: translateY(0); border: 2px solid rgba(255, 255, 255, 0.8); } 紫夜会长 瑾殇Ghost 瑾殇,被紫夜队员亲切称为"老壁灯",简称"老登"。原特警,现刑侦交警。是紫夜的总教官,与舰长一起讨论针对于严阵以待这款游戏的战术,保证在全静默状态下能处理完成任务。 喜爱钓鱼,还特别喜欢放鸽子,还喜欢玩棍子,还喜欢开车!!!(全网通缉) 紫夜副会长 舰长Captain 舰长,又叫卡皮条(Captain),紫夜副会,是紫夜的执政教官、总教官。与瑾殇一起讨论针对于严阵以待这款游戏的战术,保证在全静默状态下能处理完成任务。 紫夜总教 鲨鱼SharkPepper 鲨鱼,紫夜尖兵,紫夜课程总教官兼考核官,负责一切队员的考核任务。 紫夜副教 狐狸飞FoxFly 狐狸,又叫飞飞,紫夜新训教官兼尖兵课程教官,负责一切队员的所有训练任务。 紫夜人事 菠萝蜜BLM 菠萝蜜,紫夜人事,管理紫夜人员变动以及请假等相关事项。 紫夜教官 鲶大禹NDYian 鲶禹,全称鲶大禹,通常称鲶鱼。紫夜尖兵,新训总负责人,紫夜技术顾问,负责新训队员入门课程,紫夜外宣,本网站作者。 加入我们新人在入队之前需要接受新训,可在紫夜新训组中找以下队员参与新训课程: 鲶大禹NDYian 狐狸飞FoxFly 鲨鱼SharkPepper Prime 瑾殇Ghost 我们的所有课程均免费,不需要收取任何费用。我们只是单纯热爱此游戏而已。 我们有娱乐与战术两种打法,但如果要打战术,就必须好好打,不可以在打战术的时候捣乱。情节严重者将会被开除队籍。 如果要加入我们,请先做好以下章节的准备工作(QQ群号已放在下面这个章节): 紫夜新训须知 加入要求只要你有严阵以待这款游戏,会基本的键位,那我们无其他任何要求。无时间限制,想玩就来玩,没有强制性的时间要求。
紫夜新训须知
本篇详细介绍了加入我们的qq群以及新人必装模组,并附有模组安装教程。
紫夜战术公会公告细则
由于紫夜规定繁多,因此在这里对于这些说明作出详细解释,各位可根据自己想要了解的部分,在左侧目录栏中跳转到对应细则,还望各位能耐心观看!
关于VScode字体那些事
这两天我发现一款字体,叫Monaco,这是一款应用在苹果系统上的编程字体。毕竟编程字体要求等宽,这样代码整齐,不容易视觉疲劳。其实Windows系统上的VScode默认的Consolas字体同样也满足这个要求,只不过我个人更喜欢苹果的Monaco字体。 但是Monaco字体在Windows系统上不是自带的,于是我就去安装了字体,并在VScode内进行了修改。但是每当我重启电脑后,字体便不再生效,只有重新安装字体后才会生效。 这样肯定太麻烦了啊,我总不能电脑不关机,或者每次开机都得重新装一遍字体吧。 于是我在知乎上找到了一篇帖子,是与我一样的情况,并有大佬给出了回复。 我当时还不相信是因为这个原因,毕竟字体的安装不管你用什么身份,都应该是能够正常使用的。但没想到我抱着试一试的心态去以管理员身份重装字体,结果成功了! 没有错!只要你是以管理员身份安装的字体,它就不会出现当电脑重启后字体在VScode中不生效的问题。



