2.1 网络是个什么玩意儿
全世界的操作系统多的很,不是只有Windows/Linux 而已,还有苹果计算机自己的操作系统, Unix like 的操作系统也非常多!那么多的操作系统 (人种) 要如何进行网络沟通 (语言) 呢?那就得要制订共同遵守的标准才行了。这个标准是由国际组织规范的,你的系统里面只要提供可以加入该
标准的程序代码, 那你就能够透过这个标准与其他系统进行沟通!所以啰,网络是跨平台的,并不是只有 Linux 才这么做!
2.1.1 什么是网络
我们都知道,网络就是几部计算机主机或者是网络打印机之类的接口设备, 透过网络线或者是无线网络的技术,将这些主机与设备连接起来, 使得数据可以透过网络媒体(网络线以及其他网络卡等硬件)来传输的一种方式。
- 各自为政的『网络硬件与软件』技术发展: Ethernet & Token-Ring
- 以『软件』技术将硬件整合: ARPANET & TCP/IP
- 没有任何王法的因特网: Internet
- 软硬件标准制定的成功带来的影响: IEEE 标准规范
- 除了硬件之外,TCP/IP 这个 Internet 的通讯协议也是有标准的
2.1.2 计算机网络组成组件
- 节点 (node):节点主要是具有网络地址 (IP) 的设备之称
- 服务器主机 (server):提供数据以『响应』给用户的主机
- 工作站 (workstation) 或客户端 (client):任何可以在计算机网络输入的设备都可以是工作站, 若以联机发起的方向来说,主动发起联机去『要求』数据的,就可以称为是客户端 (client)。举例来说,一般 PC 打开浏览器对 Yahoo要求新闻数据,那一般 PC 就是客户端。
- 网络卡 (Network Interface Card, NIC):内建或者是外插在主机上面的一个设备, 主要提供网络联机的卡片,目前大都使用具有 RJ-45 接头的以太网络卡。一般 node 上都具有一个以上的网络卡, 以达成网络联机的功能。
- 网络接口:利用软件设计出来的网络接口,主要在提供网络地址 (IP) 的任务。 一张网卡至少可以搭配一个以上的网络接口;而每部主机内部其实也都拥有一个内部的网络接口,那就是 loopback (lo) 这个循环测试接口!
- 网络形态或拓朴 (topology):各个节点在网络上面的链接方式,一般讲的是物理连接方式。 举例来说,上图中显示的是一种被称为星形联机 (star) 的方式,主要是透过一个中间连接设备, 以放射状的方式连接各个节点的一种形态,这就是一种拓朴。
- 网关 (route) 或通讯闸 (gateway):具有两个以上的网络接口, 可以连接两个以上不同的网段的设备,例如 IP 分享器就是一个常见的网关设备。那上面的 ADSL 调制解调器算不算网关呢? 其实不太能算,因为调制解调器通常视为一个在主机内的网卡设备,我们可以在一般 PC 上面透过拨号软件, 将调制解调器仿真成为一张实体网卡 (ppp) ,因此他不太能算是网关设备啦!
-
2.1.3 计算机网络区域范围
- 由于各个节点的距离不同,联机的线材与方式也有所差异,由于线材的差异也导致网络速度的不同,让网络的应用方向也不一样。 根据这些差异,早期我们习惯将网络的大小范围定义如下:(注 6)
- 局域网络 (Local Area Network, LAN):
- 广域网 (Wide Area Network, WAN):
- 都会网络
一般来说,LAN 指的是区域范围较小的环境,例如一栋大楼或一间学校,所以在我们生活周遭有着许许多多的 LAN 存在。 那这些 LAN 彼此串接在一起,全部的 LAN 串在一块就是一个大型的 WAN 啰!简单的说,就是这样分。
2.1.4 计算机网络协议: OSI 七层协定
依据定义来说,越接近硬件的阶层为底层 (layer 1),越接近应用程序的则是高层(layer 7)。
不论是接收端还是发送端,每个一阶层只认识对方的同一阶层数据。 而整个传送的过程就好像人们在玩整人游戏一般,我们透过应用程序将数据放入第七层的包裹,再将第七层的包裹放到第六层的包裹内, 依序一直放到第一层的最大的包裹内,然后传送出去给接收端。接收端的主机就得由第一个包裹开始,依序将每个包裹拆开,然后一个一个交给对应负责的阶层来视察!这就是整人游戏…喔!是 OSI 七层协议在阶层定义方面需要注意的特色。
仔细看每个数据报的部分,上层的包裹是放入下层的数据中,而数据前面则是这个数据的表头。其中比较特殊的是第二层, 因为第二层 (数据链结层) 主要是位于软件封包 (packet) 以及硬件讯框 (frame) 中间的一个阶层, 他必须要将软件包装的包裹放入到硬件能够处理的包裹中,因此这个阶层又分为两个子层在处理相对应的数据。 因为比较特殊,所以您瞧瞧,第二层的数据格式比较不一样喔,尾端还出现一个检查码哩~
分层 | 负责内容 |
---|---|
Layer 1物理层Physical Layer | 由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串。 |
Layer 2数据链结层Data-Link Layer | 这一层是比较特殊的一个阶层,因为底下是实体的定义,而上层则是软件封装的定义。因此第二层又分两个子层在进行数据的转换动作。 在偏硬件媒体部分,主要负责的是 MAC(Media Access Control) ,我们称这个数据报裹为 MAC 讯框 (frame), MAC 是网络媒体所能处理的主要数据报裹,这也是最终被物理层编码成位串的数据。MAC 必须要经由通讯协议来取得媒体的使用权, 目前最常使用的则是 IEEE802.3 的以太网络协议。详细的 MAC 与以太网络请参考下节说明。至于偏向软件的部分则是由逻辑链接层 (logical linkcontrol, LLC) 所控制,主要在多任务处理来自上层的封包数据 (packet) 并转成 MAC 的格式, 负责的工作包括讯息交换、流量控制、失误问题的处理等等。 |
Layer 3网络层Network Layer | 这一层是我们最感兴趣的啰,因为我们提及的 IP (InternetProtocol) 就是在这一层定义的。 同时也定义出计算机之间的联机建立、终止与维持等,数据封包的传输路径选择等等,因此这个层级当中最重要的除了 IP 之外,就是封包能否到达目的地的路由 (route) 概念了! |
Layer 4传送层Transport Layer | 这一个分层定义了发送端与接收端的联机技术(如 TCP, UDP技术), 同时包括该技术的封包格式,数据封包的传送、流程的控制、传输过程的侦测检查与复原重新传送等等, 以确保各个资料封包可以正确无误的到达目的端。 |
Layer 5会谈层Session Layer | 在这个层级当中主要定义了两个地址之间的联机信道之连接与挂断,此外,亦可建立应用程序之对谈、 提供其他加强型服务如网络管理、签到签退、对谈之控制等等。如果说传送层是在判断资料封包是否可以正确的到达目标, 那么会谈层则是在确定网络服务建立联机的确认。 |
Layer 6表现层Presentation Layer | 我们在应用程序上面所制作出来的数据格式不一定符合网络传输的标准编码格式的! 所以,在这个层级当中,主要的动作就是:将来自本地端应用程序的数据格式转换(或者是重新编码)成为网络的标准格式, 然后再交给底下传送层等的协议来进行处理。所以,在这个层级上面主要定义的是网络服务(或程序)之间的数据格式的转换, 包括数据的加解密也是在这个分层上面处理。 |
Layer 7应用层Application Layer | 应用层本身并不属于应用程序所有,而是在定义应用程序如何进入此层的沟通接口,以将数据接收或传送给应用程序,最终展示给用户 |
事实上, OSI 七层协议只是一个参考的模型 (model),目前的网络社会并没有什么很知名的操作系统在使用 OSI 七层协议的联网程序代码。那…讲这么多干嘛?这是因为OSI 所定义出来的七层协议在解释网络传输的情况来说, 可以解释的非常棒,因此大家都拿 OSI 七层协议来做为网络的教学与概念的理解。至于实际的联网程序代码,那就交给 TCP/IP 这个玩意儿吧!
2.1.5 计算机网络协议: TCP/IP
虽然 OSI 七层协议的架构非常严谨,是学习网络的好材料。但是也就是因为太过严谨了,因此程序撰写相当不容易, 所以造成它在发展上面些许的困扰。而由 ARPANET发展而来的 TCP/IP 又如何呢?其实 TCP/IP 也是使用 OSI 七层协议的观念, 所以同样具有分层的架构,只是将它简化为四层,在结构上面比较没有这么严谨,程序撰写会比较容易些。后来在 1990 年代由于 email, WWW 的流行,造成 TCP/IP 这个标准为大家所接受,这也造就目前我们的网络社会啰!
既然 TCP/IP 是由 OSI 七层协议简化而来,那么这两者之间有没有什么相关性呢?它们的相关性可以图示如下, 同时这里也列出目前在这架构底下常见的通讯协议、封包格式与相关标准:
从上图中,我们可以发现 TCP/IP 将应用、表现、会谈三层整合成一个应用层,在应用层上面可以实作的程序协议有 HTTP, SMTP, DNS 等等。 传送层则没有变,不过依据传送的可靠性又将封包格式分为连接导向的 TCP 及非连接导向的 UDP 封包格式。网络层也没有变,主要内容是提供了 IP 封包,并可选择最佳路由来到达目标 IP 地址。
数据链结层与物理层则整合成为一个链结层,包括定义硬件讯号、 讯框转位串的编码等等,因此主要与硬件 (不论是区网还是广域网) 有关。
那 TCP/IP 是如何运作的呢?我们就拿妳常常连上的 Yahoo 入口网站来做个说明好了,整个联机的状态可以这样看:
- 用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;
- 应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并给予一个应用层表头,再向传送层丢去;
- 传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予一个 TCP 封包的表头,向网络层丢去;
- 网络层:将 TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来源与目标的 IP 啰),向链结层丢去;
- 链结层:如果使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,包裹到MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机上。