阿q访问 我是网卡,住在一个机箱里的主板上,负责整个电脑的网络通讯。没有我这个地方就是个信息孤岛,太没意思了~ 上周末,服务器关机维护这是我难得的休息时间我要去睡午觉,睡午觉 刚一闭眼,CPU一车间的Q就来拜访了。 你小子怎么样,我听见你在背后说我坏话了!今天怎么想起找我了。 你是个大忙人,而且总是在三大殿里说吧,有什么事吗 q尴尬地笑了笑,很有礼貌那我就开门见山了现在不是年底吗我们的工厂最近接受了评估我想学点网络知识,所以来找你请教 就是这样我们谈谈吧过来里面坐我招待了阿q,在门里坐下 刚坐下,阿q忍不住问了一句兄弟,你的网卡是怎么用的听说可以捕捉其他主机传过来的数据包能给我看看吗 唉,现在不行,我叹了口气。 这是什么。 我抬起头,开始给q讲我的故事。 枢纽时代 很久很久以前,那时候网络里所有的电脑都是由一个叫Hub Hub的家伙连接的通过集线器,我们所有人在物理上形成了一个星形网络,这个网络被命名为以太网那时候我们的传输速度可以达到10Mbps当年,已经很了不起了! 这家伙,集线器,不知道该说他傻还是懒他从不关心谁把数据发给谁他只是一个没有感情的转发机器,工作在物理层,把接收到的信号经过一个增强过程后发送到所有端口 这样,我们在逻辑上就变成了一个公交网络总线是一种公共资源,由连接到它的所有主机共享当有人在传输数据时,其他人必须等待,否则数据会冲突,完全混乱 为了大家能和平相处,也没有必要为了争台词而不开心,我们制定了一套规则:CSMA/CD。 每次发送数据前,我都要监听线路是否空闲如果别人在传输数据,我必须等待至于要等多久,我不知道,因为是随机值 当我有空的时候,我可以发送数据。但是,在发送的同时,我还是要检查是否有冲突,因为可能别人和我一样,认为他们是在业余时间发送数据! 这就是CSMA/光盘载波侦听多路访问/冲突检测的起源。 但是,如果数据的长度太短,我会很快发送完结果先头部队还在路上,然后我就找不到什么冲突了为了处理这种情况,我们必须考虑到,即使在极端的情况下,我们仍然可以检测到冲突 我们的网络能支持的最远距离是2500米在极端情况下,冲突只有在到达最远的一端时才会发生碰撞信号要在我发最后一位之前发回,所以是5000米一次 线路上的信号来回跑需要57.6微秒,我们的传输速度是10Mbps我可以在往返时间内发送576bit,即72字节除了8字节的帧前同步码和帧开始,其余的以太网帧长度不能少于64字节,这样即使是最远端的冲突也能被传输回来并及时检测到 有了这个协议,每个人都可以专心工作,不用去争取。 我说你为什么至少要发送64个字节还有这段历史!你如何发送和接收数据说到这里,Q打断了我 那就听我继续给你讲 数据发送和接收过程 我每天的工作就是收发数据包操作系统把数据给我后,我会把数据封装成以太网帧,按照以太网的数据格式发送出去 帧的报头包含接收者和发送者的地址我们称之为MAC地址,也就是我们每个网卡的ID号从我们出生的那一刻就决定了 发件人是我的MAC地址,收件人地址我不知道!运营协议栈部门交给我的数据包只有IP地址,这个我们不知道我们只使用MAC地址来发送和接收数据帧 为了解决这个问题,我们开发了一套协议:ARP,地址解析协议,来实现这两个地址之间的转换不知道IP对应的MAC地址时,发个广播这个广播的发件人地址填我的,然后收件人地址就是FF:FF:FF:FF:FF:FF这是一个特殊的MAC地址我们同意每个人都应该接收广播,而不是丢弃它 这个广播充满了IP地址谁收到后找到和自己匹配的就回答我,这样我就可以知道对方的MAC地址,然后就可以交流了 当然,为了避免每次查询浪费时间,我会把查询到的记录缓存起来,以便下次直接使用。 但是,这样做存在安全风险如果有人假装是真正的收件人,回复我的信,我也分不清这就是所谓的ARP欺骗 唉,等等,你最好告诉我你是怎么捕捉到别人的通讯数据的我对这个更感兴趣q又打断了我 因为hub那家伙闭着眼睛到处转发,不管是谁发的数据,大家都能看到。 正因为如此,每天都有大量的数据在总线中流动,但我一般不会全部抓起来交给你,否则你的CPU人很可能会骂死我所以每次我得到一个数据帧,我都会检查它的接收者是不是我,如果不是,我就直接丢弃它当然,我前面提到的广播消息是个例外 我能捕捉到别人通信数据的秘密在于:我提供了一种工作模式,叫做混杂模式在这种模式下,我会捕捉我在总线上看到的所有数据帧,并将其交给您的CPU进行处理一般一些抓包软件会让我这么做,但是一些流氓软件和病毒木马经常让我抓包别人的数据包,这样就可以嗅探到网络中其他主机的通信 我不喜欢这样,因为每次我打开滥交模式,你的CPU和我都忙得要死,主板上的粉丝都会抓狂。 原来如此然后你就可以打开滥交模式给我看第一手了可以看到别人的交流数据,太刺激了!q又打断了我 别急,听我说就好,不要一直打断我,而且现在没电了,我看你也表现不出来。 好好好,你继续,继续,我不打断。 交换时间 不知道从什么时候开始,即使我开启了滥交模式,也无法捕捉到别人的数据包,因为我发现网络中的数据包只与我相关。 后来发现不光是我的网卡,别人的也是。 原来hub那家伙退休了,一个叫Switch的新老板接替了他的位置。 这个大人物名不虚传他不仅简单地把人连接在一起,还学会了用表格记录他们的MAC地址和连接的端口号我每次收到数据都只是转发到相应的端口,而不是像hub一样到处转发 啊那家伙真忙!,阿q露出了失望的表情 这也是一件好事交换大佬不用到处转发数据去占线路,相当于隔离了冲突域我在连接的线路上只有自己的数据,没有别人的数据,不会和其他主机传输的数据发生冲突不仅如此,我们连的网线也升级了 隔离冲突域+全双工通信,现在已经不用CSMA/CD了,因为不会有冲突,可以随意发送数据太酷了!我们的传输速度也是日新月异,从10Mbps到100Mbps,再到1000Mbps,越来越快,这是以前无法想象的 q点点头说:牛逼,NIC哥!塞翁失马,焉知非福。 之后,CPU六号车间的小刘出现在门口,只见他满头大汗地说:Q哥,我到处找不到你,原来你在这里赶紧回去,领导叫我们去出差 待续 郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。 |