2.2 TCP/IP 的链接层相关协议
TCP/IP 最底层的链接层主要与硬件比较有关系,因此底下我们主要介绍一些 WAN 与 LAN 的硬件。 同时会开始介绍那重要的 CSMA/CD 的以太网络协议,以及相关的硬件与 MAC 讯框格式等。那就开始来聊聊啰!
2.2.1 广域网络使用的设备
· 传统电话拨接:透过 ppp 协议
早期网络大概都只能透过调制解调器加上电话线以及计算机的九针串行端口 (以前接鼠标或游戏杆的插孔),然后透过 Point-to-Point Protocol (PPP 协议) 配合拨接程序来取得网络 IP 参数,这样就能够上网了。不过这样的速度非常慢,而且当电话拨接后, 就不能够讲电话了!因为 PPP 支持 TCP/IP, NetBEUI, IPX/SPX 等通讯协议,所以使用度非常广!
· 整合服务数字网络 (Integrated Services Digital Network, ISDN)
也是利用现有的电话线路来达成网络联机的目的,只是联机的两端都需要有 ISDN 的调制解调器来提供联机功能。 ISDN 的传输有多种通道可供使用,并且可以将多个信道整合应用,因此速度可以成倍成长。基本的 B 信道速度约为 64Kbps, 但如美国规格使用 23 个以上的通道来达成联机,此时速度可达 1.5Mbps 左右。不过台湾这玩意儿比较少见。
· 非对称数位用路回路 (Asymmetric Digital Subscriber Line, ADSL):透过 pppoe 协议
也是透过电话线来拨接后取得 IP 的一个方法,只不过这个方式使用的是电话的高频部分,与一般讲电话的频率不同。 因此妳可以一边使用 ADSL 上网同时透过同一个电话号码来打电话聊天。在台湾,由于上传/下载的频宽不同, 因此才称为非对称的回路。ADSL 同样使用调制解调器,只是他透过的是 PPPoE (PPP over Ethernet) 的方法! 将 PPP 仿真在以太网络卡上,因此你的主机需要透过一张网络卡来连接到调制解调器,并透过拨接程序来取得新的接口 (ppp0) 喔!
· 缆线调制解调器 (Cable modem)
主要透过有线电视 (台湾所谓的第四台) 使用的缆线作为网络讯号媒体,同样需要具备调制解调器来连接到 ISP,以取得网络参数来上网。 Cable modem 的频宽主要是分享型的,所以通常具有区域性,并不是你想装就能装的哩!
2.2.2 局域网络使用的设备-以太网络
在局域网络的环境中,我们最常使用的就是以太网络。当然啦,在某些超高速网络应用的环境中, 还可能会用到价格相当昂贵的光纤信道哩。只是如同前面提到的,以太网络因为已经标准化了,设备设置费用相对低廉, 所以一般你会听到什么网络线或者是网络媒体,几乎都是使用以太网络来架设的环境啦! 只是这里还是要提醒您,整个网络世界并非仅有以太网络这个硬件接口喔! 事实上,想了解整个以太网络的发展,建议你可以直接参考风信子与张民人先生翻译的 『Switched & Fast 以太网络』一书,该书内容相当的有趣,挺适合阅读的吶。 底下我们仅做个简单的介绍而已。
以太网络的速度与标准
以太网络的流行主要是它成为国际公认的标准所致。早先 IEEE 所制订的以太网络标准为 802.3 的 IEEE 10BASE5 ,这个标准主要的定义是:『10 代表传输速度为 10Mbps,BASE 表示采用基频信号来进行传输,至于 5 则是指每个网络节点之间最长可达 500 公尺。』
由于网络的传输信息就是 0 与 1 啊,因此,数据传输的单位为每秒多少 bit , 亦即是 M bits/second, Mbps 的意思。那么为何制订成为 10Mbps 呢? 这是因为早期的网络线压制的方法以及相关的制作方法,还有以太网络卡制作的技术并不是很好, 加上当时的数据传输需求并没有像现在这么高,所以 10Mbps 已经可以符合大多数人的需求了。
Tips:
我们看到的网络提供者 (Internet Services Provider, ISP) 所宣称他们的 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 喔!
早期的网络线使用的是旧式的同轴电缆线,这种线路在现在几乎已经看不到了。取而代之的是类似传统电话线的双绞线 (Twisted Pair Ethernet) ,IEEE 并将这种线路的以太网络传输方法制订成为 10BASE-T 的标准。 10BASE-T 使用的是 10 Mbps 全速运作且采用无遮蔽式双绞线 (UTP) 的网络线。此外, 10BASE-T 的 UTP 网络线可以使用星形联机(star), 也就是以一个集线器为中心来串连各网络设备的一个方法,图 2.1-1 就是星形联机的一个示意图。
不同于早期以一条同轴电缆线连结所有的计算机的 bus 联机,透过星形联机的帮助, 我们可以很简单的加装其它的设备或者是移除其它设备,而不会受到其它装置的影响,这对网络设备的扩充性与除错来说, 都是一项相当棒的设计!也因此 10BASE-T 让以太网络设备的销售额大幅提升啊!
后来 IEEE 更制订了 802.3u 这个支持到 100Mbps 传输速度的 100BASE-T 标准,这个标准与 10BASE-T 差异不大, 只是双绞线线材制作需要更精良,同时也已经支持使用了四对绞线的网络线了, 也就是目前很常见的八蕊网络线吶!这种网络线我们常称为等级五 (Category 5, CAT5) 的网络线。 这种传输速度的以太网络就被称为 Fast ethernet 。至于目前我们常常听到的 Gigabit 网络速度 1000 Mbps 又是什么吶?那就是 Gigabit ethernet 哩!只是 Gigabit ethernet 的网络线就需要更加的精良。
名称 | 速度 | 网络线等级 |
以太网络(Ethernet) | 10Mbps | - |
高速以太网络(Fast Ethernet) | 100Mbps | CAT 5 |
超高速以太网络(Gigabit Ethernet) | 1000Mbps | CAT 5e/CAT 6 |
为什么每当传输速度增加时,网络线的要求就更严格呢?这是因为当传输速度增加时,线材的电磁效应相互干扰会增强, 因此在网络线的制作时就得需要特别注意线材的质料以及内部线蕊心之间的缠绕情况配置等, 以使电子流之间的电磁干扰降到最小,才能使传输速度提升到应有的 Gigabit 。 所以说,在以太网络世界当中,如果你想要提升原有的 fast ethernet 到 gigabit ethernet 的话, 除了网络卡需要升级之外,主机与主机之间的网络线, 以及连接主机线路的集线器/交换器等,都必须要提升到可以支持 gigabit 速度等级的设备才行喔!
以太网络的网络线接头 (跳线/并行线)
前面提到,网络的速度与线材是有一定程度的相关性的,那么线材的接头又是怎样呢? 目前在以太网络上最常见到的接头就是 RJ-45 的网络接头,共有八蕊的接头,有点像是胖了的电话线接头, 如下所示:
而 RJ-45 接头又因为每条蕊线的对应不同而分为 568A 与 568B 接头,这两款接头内的蕊线对应如下表:
接头名称\蕊线顺序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
568A | 白绿 | 绿 | 白橙 | 蓝 | 白蓝 | 橙 | 白棕 | 棕 |
568B | 白橙 | 橙 | 白绿 | 蓝 | 白蓝 | 绿 | 白棕 | 棕 |
事实上,虽然目前的以太网络线有八蕊且两两成对,但实际使用的只有 1,2,3,6 蕊而已, 其它的则是某些特殊用途的场合才会使用到。但由于主机与主机的联机以及主机与集线器的联机时, 所使用的网络线脚位定义并不相同,因此由于接头的不同网络线又可分为两种:
· 跳线:一边为 568A 一边为 568B 的接头时称为跳线,用在直接连结两部主机的网络卡。
并行线:两边接头同为 568A 或同为 568B 时称为并行线,用在连结主机网络卡与集线器之间的线材;
2.2.3 以太网络的传输协议:CSMA/CD
整个以太网络的重心就是以太网络卡啦!所以说,以太网络的传输主要就是网络卡对网络卡之间的数据传递而已。 每张以太网络卡出厂时,就会赋予一个独一无二的卡号,那就是所谓的 MAC (Media Access Control) 啦! 理论上,网卡卡号是不能修改的,不过某些笔记型计算机的网卡卡号是能够修改的呦! 那么以太网络的网卡之间数据是如何传输的呢?那就得要谈一下 IEEE 802.3 的标准 CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 了!我们以下图来作为简介,下图内的中心点为集线器, 各个主机都是联机到集线器,然后透过集线器的功能向所有主机发起联机的。
图 2.2-2、CSMA/CD联机示意图,由 A 发送资料给 D 时,注意箭头方向
集线器是一种网络共享媒体,什么是网络共享媒体啊?想象一下上述的环境就像一个十字路口,而集线器就是那个路口! 这个路口一次只允许一辆车通过,如果两辆车同时使用这个路口,那么就会发生碰撞的车祸事件啊!那就是所谓的共享媒体。 也就是说,网络共享媒体在单一时间点内, 仅能被一部主机所使用。
理解了共享媒体的意义后,再来,我们就得要讨论,那么以太网络的网卡之间是如何传输的呢?我们以上图中的 A 要发给 D 网卡为例好了,简单的说, CSMA/CD 搭配上述的环境,它的传输情况需要有以下的流程:
1. 监听媒体使用情况 (Carrier Sense):A 主机要发送网络封包前,需要先对网络媒体进行监听,确认没有人在使用后, 才能够发送出讯框;
2. 多点传输 (Multiple Access):A 主机所送出的数据会被集线器复制一份,然后传送给所有连接到此集线器的主机! 也就是说, A 所送出的数据, B, C, D 三部计算机都能够接收的到!但由于目标是 D 主机,因此 B 与 C 会将此讯框数据丢弃,而 D 则会抓下来处理;
3. 碰撞侦测 (Collision Detection):该讯框数据附有检测能力,若其它主机例如 B 计算机也刚好在同时间发送讯框数据时, 那么 A 与 B 送出的数据碰撞在一块 (出车祸) ,此时这些讯框就是损毁,那么 A 与 B 就会各自随机等待一个时间, 然后重新透过第一步再传送一次该讯框数据。
了解这个程序很重要吗?我们就来谈谈:
· 网络忙碌时,集线器灯号闪个不停,但我的主机明明没有使用网络:
透过上述的流程我们会知道,不管哪一部主机发送出讯框,所有的计算机都会接收到!因为集线器会复制一份该数据给所有计算机。 因此,虽然只有一部主机在对外联机,但是在集线器上面的所有计算机灯号就都会闪个不停!
· 我的计算机明明没有被入侵,为何我的数据会被隔壁的计算机窃取:
透过上述的流程,我们只要在 B 计算机上面安装一套监听软件,这套软件将原本要丢弃的讯框数据捉下来分析,并且加以重组, 就能够知道原本 A 所送出的讯息了。这也是为什么我们都建议重要数据在因特网上面得要『加密』后再传输!
· 既然共享媒体只有一个主机可以使用,为何大家可以同时上网:
这个问题就有趣了,既然共享媒体一次只能被一个主机所使用,那么万一我传输 100MB 的档案,集线器就得被我使用 80 秒 (以 10Mbps 传输时),在这期间其它人都不可以使用吗?不是的,由于标准的讯框数据在网络卡与其它以太网络媒体一次只能传输 1500bytes,因此我的 100MB 档案就得要拆成多个小数据包,然后一个一个的传送,每个数据包传送前都要经过 CSMA/CD 的机制。 所以,这个集线器的使用权是大家抢着用的!即使只有一部主机在使用网络媒体时,那么这部主机在发送每个封包间, 也都是需要等待一段时间的 (96 bit time)!
· 讯框要多大比较好?能不能修改讯框?:
如上所述,那么讯框的大小能不能改变呢?因为如果讯框的容量能够增大,那么小数据包的数量就会减少, 那每个讯框传送间的等待就可以减少了!是这样没错,但是以太网络标准讯框确实定义在 1500 bytes, 但近来的超高速以太网络媒体有支持 Jumbo frame (巨型讯框,注10) 的话,那么就能够将讯框大小改为 9000bytes 哩!但不是很建议大家随便修改啦!为什么呢?2.2.5 MTU 那小节再说。
2.2.4 MAC 的封装格式
上面提到的 CSMA/CD 传送出去的讯框数据,其实就是 MAC 啦!MAC 其实就是我们上面一直讲到的讯框 (frame) 啰! 只是这个讯框上面有两个很重要的数据,就是目标与来源的网卡卡号,因此我们又简称网卡卡号为 MAC 而已。 简单的说,你可以把 MAC 想成是一个在网络线上面传递的包裹,而这个包裹是整个网络硬件上面传送数据的最小单位了。 也就是说,网络线可想成是一条『一次仅可通过一个人』的独木桥, 而 MAC 就是在这个独木桥上面动的人啦!接下来,来看一看 MAC 这个讯框的内容吧!
图 2.2-3、以太网络的 MAC 讯框
上图中的目的地址与来源地址指的就是网卡卡号 (hardware address, 硬件地址),我们前面提到,每一张网卡都有一个独一无二的卡号, 那个卡号的目的就在这个讯框的表头数据使用到啦!硬件地址最小由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF (16 进位法), 这 6 bytes 当中,前 3bytes 为厂商的代码,后 3bytes 则是该厂商自行设定的装置码了。
在 Linux 当中,你可以使用 ifconfig 这个指令来查阅你的网络卡卡号喔!特别注意,在这个 MAC 的传送中,他仅在局域网络内生效,如果跨过不同的网域 (这个后面 IP 的部分时会介绍),那么来源与目的的硬件地址就会跟着改变了。 这是因为变成不同网络卡之间的交流了嘛!所以卡号当然不同了!如下所示:
图 2.2-4、同一讯框在不同网域的主机间传送时,讯框的表头变化
例如上面的图标,我的数据要由计算机 A 通过 B 后才送达 C ,而 B 计算机有两块网络卡,其中 MAC-2 与 A 计算机的 MAC-1 互通,至于 MAC-3 则与 C 计算机的 MAC-4 互通。但是 MAC-1 不能与 MAC-3 与 MAC-4 互通,为啥?因为 MAC-1 这块网络卡并没有与 MAC-3 及 MAC-4 使用同样的 switch/hub 相接嘛!所以,数据的流通会变成:
1. 先由 MAC-1 传送到 MAC-2 ,此时来源是 MAC-1 而目的地是 MAC-2;
2. B 计算机接收后,察看该讯框,发现目标其实是 C 计算机,而为了与 C 计算机沟通, 所以他会将讯框内的来源 MAC 改为 MAC-3 ,而目的改为 MAC-4 ,如此就可以直接传送到 C 计算机了。
也就是说,只要透过 B (就是路由器) 才将封包送到另一个网域 (IP 部分会讲) 去的时候, 那么讯框内的硬件地址就会被改变,然后才能够在同一个网域里面直接进行讯框的流通啊!
Tips:
由于网络卡卡号是跟着网络卡走的,并不会因为重灌操作系统而改变, 所以防火墙软件大多也能够针对网络卡来进行抵挡的工作喔! 不过抵挡网卡仅能在局域网络内进行而已,因为 MAC 不能跨 router 嘛!!
· 为什么资料量最小要 46 最大为 1500 bytes 呢?
讯框内的数据内容最大可达 1500bytes 这我们现在知道了,那为何要规范最小数据为 46bytes 呢?这是由于 CSMA/CD 机制所算出来的! 在这个机制上面可算出若要侦测碰撞,则讯框总数据量最小得要有 64bytes ,那再扣除目的地址、来源地址、检查码 (前导码不算) 后, 就可得到数据量最小得要有 46bytes 了!也就是说,如果妳要传输的数据小于 46byes ,那我们的系统会主动的填上一些填充码, 以补齐至少 46bytes 的容量才行!