⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0110network_basic.htm

📁 鸟哥LINUX 学习课本
💻 HTM
📖 第 1 页 / 共 5 页
字号:
Access Control (MAC)</font> ,也常常被我们称为<font color="#000066">硬件地址( Hardware Address )</font>。让我们翻回到 OSI 七层协议里面的<a href="#before_osi_data_connect">数据连接层</a>,在该层级中说明,每个框包( frame ) 要传送出去,必须要以硬件地址为传输的来源与目标,这就是网络卡与网络卡之间数据传输的最底层信息了。例如同样上面的图示,假设PC 1 要将数据传送到 PC 2 上面去时,那么数据封包就必须要先取得 PC 2 主机的网络卡的MAC 之后,才能够将数据传送给 PC2 呢!这个部分就需要在数据连接层来进行说明了。<br>&#160; <br><hr width="100%"><a name="Networklayer_data_link"></a><font color="#000099">数据连接层</font><br> <br>在 TCP/IP 与 OSI 七层协议那个小节当中,我们知道网络世界上面使用来辨识计算机主机的是IP ,这个 IP 是在 OSI 的第三层,也就是网络层的东西。而由上面的实体层的介绍,我们也可以知道其实数据封包由这个主机到下一个主机,使用的是MAC 这个网络卡卡号 ( Hardware address ) 来进行传送的,那么 IP 与 MAC 有什么关系啊?!举个例子来说,同样的以上面图二为例好了,假设PC 1 的 IP 是 192.168.1.1 而 PC2 的 IP 是 192.168.1.2 ,那么数据要由 PC1 传送到 PC 2 的时后,到底是怎么进行传送的?其实也不难啦!因为数据要传送就得知道网络卡卡号,因此PC1 必须要先知道 PC2 的 Hardware Address 之后,才能将数据由 PC1 的网络卡传送给PC2 的网络卡上。也就是说, <font color="#000066">IP 必须要与 MAC ( 就是Hardware address 啦 ) 对应起来才行</font>!这个时候,就需要使用到 <font color="#000066">AddressResolution Protocol (ARP)</font> 协定了。底下我们就介绍一下 MAC 的格式,以及ARP 的内容。<br> <ul><li><a name="Networklayer_data_link_MAC"></a><b><font color="#000066">关于MAC:</font></b></li><br>在目前我们使用的以太网络卡上面,其实在出厂的时后就已经焊死一个网络卡的卡号在上面了,因为这个卡号是跟随着硬件的,所以一般我们也称为硬件地址(<font color="#000066">Hardware address</font>),而且每一张网络卡上面的卡号都不会重复!事实上,他是被称为<font color="#000066">MediaAccess Control, MAC </font>的啦!MAC 的格式是六组 16 进位 (bytes) 的数据组合起来的,所以他共占掉6 bytes ,基本的格式为:<ul><font color="#000066" face="SimSun">aa:bb:cc:dd:ee:ff</font></ul>MAC 是以太网络当中,数据传输的重要依据喔!此外,MAC 在未来架设防火墙的时后,用来管制某张特定的网络卡是否能够通过封包过滤规则的重要设定内容!所以,请先对MAC 有一个完整的了解吶。那么在 Linux 与 Windows 2000 底下,要怎么知道我的网络卡MAC 呢?<table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">1. 在 Linux底下:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> ifconfig</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">eth0&#160;&#160;&#160;&#160;&#160;Link encap:Ethernet&#160; </font><font color="#ffff00">HWaddr <b>00:05:D3:43:E4:80</b></font></font><br><font size="-1" color="#ffffff" face="SimSun">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;inet addr:192.168.1.100&#160; Bcast:192.168.1.255&#160; Mask:255.255.255.0</font><br><font size="-1" color="#ffffff" face="SimSun">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;UP BROADCAST RUNNING MULTICAST&#160; MTU:1500&#160; Metric:1</font><br><font size="-1" color="#ffffff" face="SimSun">.....</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" color="#ffffcc" face="SimSun">2. 在 Windows2000 底下:</font><br><font size="-1" face="SimSun"><font color="#ffffff">C:\&gt; </font><font color="#ffff00">ipconfig/all</font></font><p><font size="-1" color="#ffffff" face="SimSun">Windows 2000IP Configuration</font><br><font size="-1" color="#ffffff" face="SimSun">.....</font><br><font size="-1" face="SimSun"><font color="#ffffff">&#160;&#160;&#160;&#160;&#160;&#160;&#160;Physical Address. . . . . . . . . :</font><b><font color="#ffff00"> 00-05-D3-43-E4-80</font></b></font><br><font size="-1" color="#ffffff" face="SimSun">.....</font></p></td></tr></tbody></table>如同上面所示,在 Linux 底下,主要的格式是以『:』隔开的,在 Windows 底下,则是以『-』来隔开!无论如何,反正记得他是六组16进位的数据组成的就是了!使用的观察方式可以直接以ifconfig 以及 ipconfig 来下达指令。<br> <li><a name="Networklayer_data_link_ARP"></a><b><font color="#000066">关于Address Resolution Protocol, ARP:</font></b></li><br>现今最常用的网络传输是使用 TCP/IP 来进行的,所以每一部主机当然要有一个IP 才行!然而我们知道数据其实是使用 MAC 在不同的网络卡之间互相传递,因此,必须要设定一个IP 与 MAC 对应的方法才行,此时就有 ARP 协定的产生了。ARP 这个协议在目前主要的操作系统里面都存在着,例如Linux 主机里面就有一个 ARP table 来纪录 IP 与 MAC 的对应信息。所以,当前面图二中,PC 1 (192.168.1.1) 要将数据传送到 PC2(192.168.1.2) ,那么 PC1 就会参考自己本身系统内的arp table ,找到 192.168.1.2 对应的 MAC 之后,再将数据传送到那个 MAC 去!<br>&nbsp;</ul><font color="#000066">ARP table 主要记录的是 IP 与 MAC 的对应</font>,那么ARP 表格是怎么产生的呢?这就需要讨论到<a name="Networklayer_data_link_logical_broadcast"></a><b><font color="#000066">逻辑广播( logical broadcast ) </font></b>的动作了!请注意,逻辑广播与 Physicalbroadcast ( 物理广播 ) 是不一样的, Physical broadcast 是主机想要在网络共享媒体上面传送数据时,用来确认网络媒体是否可以利用的一个动作,而逻辑广播的动作之一则是在找到IP 与 MAC 的对应,也就是说『<font color="#000066">物理广播主要是针对在同一个物理网段内的共享网络媒体之动作,逻辑广播主要是针对网络层的软件地址而言来进行的动作</font>』,不样将两者搞混了。好了,那么主机是怎么建立ARP table 的呢?我们同样以 PC 1 ( 192.168.1.1 ) 要传送数据给 PC 2 (192.168.1.2) 为例好了:<br> <ol><li>在 PC1 首次进行数据传输的时候,由于 ARP table 当中没有相关的数据 ( 因为刚刚连上网络嘛!) ,所以 PC 1 不知道 192.168.1.2 这个 IP 对应的是那个 MAC ,当然也就无法传递数据了。这个时候PC 1 就会对『<font color="#000066">同一网域的全部计算机进行逻辑广播( logicalbroadcast )</font>』,此时 PC 1 会发送一个带有本身的 MAC 与目标 IP (在这个例子中,也就是192.168.1.2 ) 的逻辑广播封包给网域内的全部计算机( 在图二的例子中,包括 PC2 ~ PC 5 均会收到这个逻辑广播封包 ) ;</li><br> <li>在 PC 2 ~ PC 5 接到这个逻辑广播封包之后,由于这个逻辑广播封包的要求响应是192.168.1.2 ,因为 PC 3 ~ PC 5 并不是这个 IP 的所有人,因此就会将这个逻辑广播封包丢弃不理。而PC 2 收到这个逻辑广播封包时发现该封包要求的 IP 是自己的,此时他就会发送一个回应封包( 该响应封包里面就含有 PC2 自己的 MAC ) 给 PC 1&#160; ;</li><br> <li>PC 1 在收到这个响应封包之后,就知道了 PC2 这个 192.168.1.2 IP 对应的 MAC了,此时 PC 1 这部主机的 ARP table 就会主动的将 IP 与 MAC 的对应给他写入表格中啦!而既然已经知道了IP 对应 MAC 了,因此 PC1 就可以开始将资料传送给 PC 2 了!</li><br> <li>未来,当 PC 1 要将资料再传给 PC 2 时,他会先由自己本身的 ARP table 里面去找寻是否有该主机的IP 对应的 MAC 信息,如果找到了 PC 2 (192.168.1.2) 对应的 MAC ,那么 PC1 将不会发送逻辑广播封包,而是直接依据 ARP table 里面的信息来将数据直接传送给PC 2 的网络卡呢!也就是说:</li><ul><li><font color="#000066">如果 ARP table 有纪录的话,那么数据就会直接的传送到该目的地去,而不会进行『逻辑广播』;</font></li><li><font color="#000066">如果 ARP table 没有纪录的话,那么主机就又会对全部的同一网域内的计算机进行『逻辑广播』。</font></li></ul>&nbsp;</ol>此外,请特别注意,<font color="#000066">ARP table 是动态的信息</font>,他会随时随着您的网域里面计算机的IP 更动而变化,所以,即使您常常更动您的计算机 IP,不要担心,因为 ARP table会自动的重新对应 IP 与 MAC 的表格内容!( 所以每次重新开机,原先 ARP table的内容就不见去啰! )那么我怎么查出来目前我的 Linux 主机里面的 ARP table的纪录呢?呵呵!可以使用 arp 这个指令喔!<a name="Networklayer_data_link_arp_comm"></a><table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">arp [-and] hostname</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> arp -s hostname(IP) Hardware_address</font></font><br><font size="-1" color="#ff6666" face="SimSun">参数说明:</font><br><font size="-1" color="#ffff99" face="SimSun">-a :显示出目前主机所有的IP 对应 MAC 状态</font><br><font size="-1" color="#ffff99" face="SimSun">-n :将主机名称以IP 的型态显示</font><br><font size="-1" color="#ffff99" face="SimSun">-d :将 hostname的 hardware_address 由 ARP table 当中删除掉</font><br><font size="-1" color="#ffff99" face="SimSun">-s :设定某个IP 或 hostname 的 MAC 到 ARP table 当中</font><br><font size="-1" color="#ff6666" face="SimSun">范例:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">arp</font></font><br><font size="-1" color="#ffffff" face="SimSun">Address&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HWtype&#160; HWaddress&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Flags Mask&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Iface</font><br><font size="-1" color="#ffffff" face="SimSun">localhost&#160;&#160;&#160;&#160;&#160;&#160;&#160;ether&#160;&#160; 08:00:20:C5:89:4D&#160;&#160; C&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;eth0</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">arp -n</font></font><br><font size="-1" color="#ffffff" face="SimSun">Address&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HWtype&#160; HWaddress&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Flags Mask&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Iface</font><br><font size="-1" color="#ffffff" face="SimSun">192.168.1.1&#160;&#160;&#160;&#160;&#160;ether&#160;&#160; 08:00:20:C5:89:4D&#160;&#160; C&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;eth0</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> arp -s 192.168.1.100&#160;&#160; 01:00:2D:23:A1:0E</font></font></td></tr></tbody></table>一般来说,使用 arp 这个指令就可以查到您的 Linux 主机上面的 arp 表了!善用Linux 的指令吧!当然, Windows 2000 里面也同时存在一个 arp 的指令,可以尝试看看喔!<br> <br>在谈完了 OSI 七层协议里面的实体层与数据连接层之后,接下来就是最重要的网络层了!不过,因为网络层里面的

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -