📄 0110network_basic.htm
字号:
关于网路的分层我们最喜欢拿 <span class=text_import2>OSI (Open system Interconnection)</span>
七层协定来说明喔!
事实上, OSI 七层协定只是一个参考的模型 (model),不过,由于 OSI 所定义出来的七层协定相当良好,
所以拿来当作网路连线解释真是太棒了!底下就来说说吧!<br /><br />
<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr bgcolor=lightblue align=center><td width="150">分层</td><td>负责内容</td></tr>
<tr><td align=center>Layer 1<br />实体层<br />Physical Layer, PHY</td>
<td>在这个层级当中主要定义了最基础的网路硬体标准,包括各种网路线、各种无线连线方式,各种设备规范、
以及各种接头的规则,还有传输讯号的电压等等,反正与硬体有关的标准大多都在这个层级当中定义的!</td></tr>
<tr bgcolor=lightgreen><td align=center>Layer 2<br />资料连接层<br />Data-Link Layer</td>
<td><a name=arp></a>由于传送资料的网路媒体是以是电子讯号进行传送,所以我们的资料要使用这样的讯号传送时,
就需要制订各种网路型态的讯框 (frame) 了,才能确保资料可以在不同的网路媒体进行传送的动作。
所以,在这一层当中就制订了 frame 的格式以及通过网路的方式。
包括讯框的资料格式、错误控制、流量控制、检查资料传输错误的方法等等,都在这里控制。
既然与讯框有关,当然这个层级就与前面提到的 MAC 有很强烈的相关性棉!<br /><br />
但我们知道事实上目前的 Internet 使用的其实是 IP 来进行连线的啊!但硬体资料却是由讯框所传送的。
为了要将两者对应 (MAC 与 IP 的对应),就必须要经由 <span class=text_import2>Address Resolution Protocol (ARP)</span>
这个协定来帮忙解析出对应才行!</td></tr>
<tr><td align=center>Layer 3<br />网路层<br />Network Layer</td>
<td>这一层是我们最感兴趣的棉~因为我们提及的 IP (Internet Protocol) 就是在这一层定义的,
同时也定义出电脑之间的连线建立、终止与维持等,资料封包 (packet) 的传输路径选择等等,
因此这个层级当中最重要的除了 IP 之外,就是封包能否到达目的地的路由 (route) 概念了!
此外,这一个网路层可以涵盖实体层与资料连结层,通常我们不需要设定硬体与相关 MAC 的资料,
就是因为网路层已经 (有点类似) 隐藏了底下两层,让我们只要设定好 IP 就能够上网呐!
IP 与 route 的部分我们会在下一小节加以介绍的。</td></tr>
<tr bgcolor=lightgreen><td align=center>Layer 4<br />传送层<br />Transport Layer</td>
<td>这一个分层定义了发送端与接收端的连线技术(如 TCP 技术),
同时包括该技术的封包格式,资料封包的传送、流程的控制、传输过程的侦测检查与复原重新传送等等,
以确保各个资料封包可以正确无误的到达目的端。</td></tr>
<tr><td align=center>Layer 5<br />会谈层<br />Session Layer</td>
<td>在这个层级当中主要定义了两个位址之间的连线通道之连接与挂断,此外,亦可建立应用程式之对谈、
提供其他加强型服务如网路管理、签到签退、对谈之控制等等。如果说传送层是在判断资料封包是否可以正确的到达目标,
那么会谈层则是在确定网路服务建立连线的确认,例如三向交握。这部分我们会在底下的 TCP 技术当中做个说明。</td></tr>
<tr bgcolor=lightgreen><td align=center>Layer 6<br />表现层<br />Presentation Layer</td>
<td>我们在应用程式上面所制作出来的资料格式不一定符合网路传输的标准编码格式的!
所以,在这个层级当中,主要的动作就是∶将来自本地端应用程式的资料格式转换(或者是重新编码)成为网路的标准格式,
然后再交给底下传送层等的协定来进行处理。所以,在这个层级上面主要定义的是网路服务(或程式)之间的资料格式的转换,
包括资料的加解密也是在这个分层上面处理。</td></tr>
<tr><td align=center>Layer 7<br />应用层<br />Application Layer</td>
<td>完全与程式有关的棉,包括定义出档案的读取、复制、开启、关闭等等,
常见的程式包括有浏览器、资料库处理系统与电子邮件系统等等。</td></tr>
</table><br />
事实上,在上述的七层协定当中,前两层(实体与资料连接层)主要就是由一些硬体标准所规范出来的,
像我们前一小节提到的乙太网路之 MAC 讯框相关的格式,以及一些类似乙太网路线接头规范、
<a href="#csmacd">CSMA/CD</a> 的技术等等,都是在前两层进行规范的。<br /><br />
至于网路层与传送层则与 TCP/IP 有关。我们知道目前的 Internet 相关的 IP 与 TCP 封包格式是由
Internet Network Information Center (INTERNIC) 所统一整理与维护的,至于
TCP/IP 的标准则主要以 Request For Comment (RFC) 技术报告的形式公开。
而会谈、表现与应用层则主要与作业系统及应用程式有关了。<br /><br />
那么这七层到底是如何运作的呢?我们以常见的 WWW 浏览器来进行说明好了。
假设你想要由奇摩雅虎(tw.yahoo.com)下载一个大于 10Mbytes 的档案,
那么你必须要由你的主机打开浏览器,并且输入相关的网址列后才能开始下载,对吧!
不过,我们知道由于网路媒体的关系,标准乙太网路的硬体最大仅能支援 1500 bytes 的讯框大小,
而我要去奇摩雅虎时,必须要知道奇摩雅虎那部主机的 IP 才行,而我们的浏览器使用的是 TCP
的封包格式。这样一层一层下来,你可以将各个分层想成是一个一个的大袋子,
而且每个袋子都必须要包含在下一个袋子内,例如 IP 的袋子必须要装在 MAC 讯框的袋子内。<br />
<ul>
<li>所以,由于最后被传送的袋子(实体层)的限制,我必须要将 10Mbytes 的档案先切成数个小包,
然后将这些小包给他包到 TCP 的袋子内,这个袋子记载了我的资料内容。</li>
<li>然后这个袋子还要装到 IP 这个袋子内,IP 这个袋子会记录我的住址以及要传送到的目的地的住址,</li>
<li>最后再将这个 IP 的袋子装到 MAC 的讯框袋子内,
这个袋子就记录了可以在同一区域内传递袋子的网卡卡号了。</li>
</ul>
之后这个 MAC 的大袋子就会被带到下个传递点去,
当然啦, MAC 这个袋子的传递是需要符合 <a href="#csmacd">CSMA/CD</a> 以及乙太网路的相关定义的喔!
当传到目的地后,对方会一个袋子一个袋子的解开,最后拿到他们的资料。不过,由于我的 10Mbytes
已经被分成多个小袋子了,所以每个小袋子内需要有序号,这样当所有的小袋子都到达目的地后,
对方才可以依照这些序号将所有小袋子内的资料给他整合成为原来的资料啊!<br /><br />
所以啊,这些分层可以使用底下的图示来看∶<br /><br />
<center>
<img src="0110network_basic/osi_7layer.png"
title="OSI 七层协定的相关性" alt="OSI 七层协定的相关性"><br />
图七、OSI 七层协定的相关性
</center><br />
<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题一∶请找出您 Linux 主机上面的网路卡硬体位址(Hardware Address, 或 MAC),
如果已经连上网路的话,请找出您区域网路内其他电脑的网路卡卡号。<br /><br />
答∶<ul>
在 Linux 底下网路卡的装置代号一般是 eth0 ,所以想要了解您的网路卡卡号时,可以使用∶
『 ifconfig eth0 』这个指令来查阅,在出现的资料中第一行最右边搜寻 HWaddr 的后面接的那串咚咚,就是你的卡号。
至于其他的卡号与 IP 的对应方面,直接输入『 arp -n 』应该就可以查阅的到相关的对应表棉!
更多说明请先使用 man 来查询,后续章节我们也会继续加以介绍的。
</ul>
</td></tr></table>
</div>
</div>
<hr><a NAME="ipandmac"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">IP 与 MAC</span><br />
<div class=block1>
我们现在知道要有网路的话,必须要有网路相关的硬体,而目前最常见的网路硬体介面为乙太网路,
包括网路线、网路卡、Hub/Switch 等等。而乙太网路上面的传输使用网路卡卡号为基准的 MAC 讯框,
配合 <a href="#csmacd">CSMA/CD</a> 的监听技术来传送讯框,这是硬体部分。那么在软体部分,我们知道 Internet
其实就是 TCP/IP 这个通讯协定的通称,Internet 是由 INTERNIC 所统一管理的,
但其实他仅是负责分配 Internet 上面的 IP 以及提供相关的 TCP/IP 技术文件而已,
另外,在 TCP/IP 上面还有很多的应用程式,包括 FTP, HTTP, EMAIL 等等的技术!
底下我们就先来谈一谈最底层的 MAC 与 IP 吧!<br /><br />
<hr><a NAME="ipandmac_mac"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span
class="text_h2">传输单位与 MAC</span><br />
<div class=block2>
想一想,如果没有电的话,我们的网路是否能够通行无阻?当然不行!
因为网路其实就是电子讯号的传送啊!如果没有电,当然就没有办法传送讯息了。而电子讯号只有
0 跟 1 啊,所以在网路单位的计算上,一般通常是以二进位的 bit 为单位的。那么这个
bit 与我们通常用来计算档案大小的单位 bytes 有什么关连性?其实∶<br />
<ul><span class=text_import2><b><font face="细明体">1byte = 8bits</font></b></span></ul>
所以啦,一般来说,我们看到的网路提供者<span class=text_import2> (Internet
Services Provider, ISP)</span> 所宣称他们的 ADSL 传输速度可以达到 下行/上行
2Mbps/128Kbps ( Kbits per second) 时,那个 Kb 指的可不是 bytes 而是 bits
喔!所以 2M/128K 在实际的档案大小传输速度上面,最大理论的传输为 256KBps/16
KBps(KBytes per second),所以正常下载的速度约在每秒 100~200 KBytes 之间呐!
同样的道理,在网路卡或者是一些网路媒体的广告上面,他们都会宣称自己的产品可以自动辨识传输速度为
10/100 Mbps ( Mega-bits per second),呵呵!该数值还是得再除以 8 才是我们一般常用的档案容量计算的单位
bytes 喔!这样可以了解传输单位的意义了吗?!<br /><br />
那么 MAC 呢?MAC 是 Media Access Control (媒体存取控制),我们在前小节的
<a href="#fig_mac">图三</a>已经介绍过该讯框的资料格式,
且 MAC 常用来做为硬体位址 (Hardware address) 的代称。我们自己主机上面的 MAC 很好解决,
假设您的网路卡仅有一张,则 Linux 系统内网卡的代号预设由 eth0 开始编号,
因此当你输入 ifconfig eth0 这个指令时,就会出现如下的讯息了∶<br />
<table class="term"><tr><td class="term"><pre>
<span class=term_hd>在 Linux 环境下</span>
[root@linux ~]# <span class=term_command>ifconfig eth0</span>
eth0 Link encap:Ethernet <span class=term_write>HWaddr 00:01:03:43:E5:34</span>
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::201:3ff:fe43:e534/64 Scope:Link
UP BROADCAST RUNNING MULTICAST <span class=term_write>MTU:1500</span> Metric:1
.....
<span class=term_hd>在 Windows 环境下</span>
C:\Documents and Settings\admin..> <span class=term_command>ipconfig /all</span>
....
Physical Address. . . . . . . . . : <span class=term_write>00-01-03-43-E5-34</span>
....
</pre></td></tr></table>
<a name=arp2></a>
事实上,这个 MAC 几乎都是焊死在网路卡上面的,所以不能够被修改。
不过,近来有些笔记型电脑上面的网路卡可以透过软体来进行 MAC 的修改棉~
好,在我们的主机上网路卡可以透过 ifconfig 来查询到 MAC ,但我们知道讯框是在两张网路卡之间传讯的,
那我如何知道其他主机的网路卡卡号呢?此时就得要透过
<a href="#arp">ARP (Address Resolution Protocol)</a> 的帮忙了。
由于 TCP/IP 的通讯协定内大多仅需要了解 IP 即可,但讯框却是透过 MAC 来传递,
因此 IP 与 MAC 就得要透过一个解析的功能棉!那就是 ARP 啦!<br /><br />
当我们的主机想要找出目标 IP 时,就会对整个区域网路进行广播封包(broadcast)的传送,
这个广播封包可以对所有区域网路内的电脑要求回报他的 IP 与 MAC ,
当目标 IP 看到这个广播封包时,就会回应您主机相关的 MAC 资讯,如果非目标主机接到这个封包,
就会主动的忽略!如此一来,你就可以取得目标主机的 MAC 棉!
而这个目标主机的 MAC 就会被记录到你的主机内的 ARP table (ARP table 在记忆体中),
不过还是要再次的提醒, MAC 是不能跨路由的,请参考图四的相关说明喔!
如果想要查阅你的 ARP 记录,可以使用 arp 这个指令即可。<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>arp -[nd] hostname</span>
[root@linux ~]# <span class=term_command>arp -s hostname(IP) Hardware_address</span>
<span class=term_say>参数∶
-n ∶将主机名称以 IP 的型态显示
-d ∶将 hostname 的 hard
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -