多图杀猫,流量党渗入
以下内容总结自鸟哥的 Linux 私房菜 -- 服务器(第三版),同时推荐喜欢Linux的同学们学习阅读。

分层 | 负责内容 |
|---|---|
Layer 1物理层Physical Layer | 由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串。 |
Layer 2数据链结层Data-Link Layer | 这一层是比较特殊的一个阶层,因为底下是实体的定义,而上层则是软件封装的定义。因此第二层又分两个子层在进行数据的转换动作。 在偏硬件媒体部分,主要负责的是 MAC (Media Access Control) ,我们称这个数据报裹为 MAC 讯框 (frame), MAC 是网络媒体所能处理的主要数据报裹,这也是最终被物理层编码成位串的数据。MAC 必须要经由通讯协议来取得媒体的使用权, 目前最常使用的则是 IEEE 802.3 的以太网络协议。详细的 MAC 与以太网络请参考下节说明。 至于偏向软件的部分则是由逻辑链接层 (logical link control, LLC) 所控制,主要在多任务处理来自上层的封包数据 (packet) 并转成 MAC 的格式, 负责的工作包括讯息交换、流量控制、失误问题的处理等等。 |
Layer 3网络层Network Layer | 这一层是我们最感兴趣的啰,因为我们提及的 IP (Internet Protocol) 就是在这一层定义的。 同时也定义出计算机之间的联机建立、终止与维持等,数据封包的传输路径选择等等,因此这个层级当中最重要的除了 IP 之外,就是封包能否到达目的地的路由 (route) 概念了! |
Layer 4传送层Transport Layer | 这一个分层定义了发送端与接收端的联机技术(如 TCP, UDP 技术), 同时包括该技术的封包格式,数据封包的传送、流程的控制、传输过程的侦测检查与复原重新传送等等, 以确保各个数据封包可以正确无误的到达目的端。 |
Layer 5会谈层Session Layer | 在这个层级当中主要定义了两个地址之间的联机信道之连接与挂断,此外,亦可建立应用程序之对谈、 提供其他加强型服务如网络管理、签到签退、对谈之控制等等。如果说传送层是在判断资料封包是否可以正确的到达目标, 那么会谈层则是在确定网络服务建立联机的确认。 |
Layer 6表现层Presentation Layer | 我们在应用程序上面所制作出来的数据格式不一定符合网络传输的标准编码格式的! 所以,在这个层级当中,主要的动作就是:将来自本地端应用程序的数据格式转换(或者是重新编码)成为网络的标准格式, 然后再交给底下传送层等的协议来进行处理。所以,在这个层级上面主要定义的是网络服务(或程序)之间的数据格式的转换, 包括数据的加解密也是在这个分层上面处理。 |
Layer 7应用层Application Layer | 应用层本身并不属于应用程序所有,而是在定义应用程序如何进入此层的沟通接口,以将数据接收或传送给应用程序,最终展示给用户。 |

接头名称\蕊线顺序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
568A | 白绿 | 绿 | 白橙 | 蓝 | 白蓝 | 橙 | 白棕 | 棕 |
568B | 白橙 | 橙 | 白绿 | 蓝 | 白蓝 | 绿 | 白棕 | 棕 |

由于网络卡卡号是跟着网络卡走的,并不会因为重灌操作系统而改变, 所以防火墙软件大多也能够针对网络卡来进行抵挡的工作喔! 不过抵挡网卡仅能在局域网络内进行而已,因为 MAC 不能跨 router 嘛!!
前面谈到网络线时,我们知道八蕊的网络线实际上仅有两对被使用,一对是用在传送,另一对则是在接收。 如果两端的 PC 同时支持全双工时,那表示 Input/Output 均可达到 10/100Mbps, 亦即数据的传送与接收同时均可达到 10/100bps 的意思,总带宽则可达到 20/200Mbps 啰 (其实是有点语病的,因为 Input 可达 10/100Mbps, output 可达 10/100Mbps , 而不是 Input 可直接达到 20/200Mbps 喔!)如果你的网络环境想要达到全双工时, 使用共享媒体的 Hub 是不可能的,因为网络线脚位的关系,无法使用共享媒体来达到全双工的! 如果你的 switch 也支持全双工模式,那么在 switch 两端的 PC 才能达到全双工喔!
目前因特网社会的 IP 有两种版本,一种是目前使用最广泛的 IPv4 (Internet Protocol version 4, 因特网协定第四版), 一种则是预期未来会热门的 IPv6 。IPv4 记录的地址由于仅有 32 位,预计在 2020 年前后就会分发完毕,如此一来, 新兴国家或者是新的网络公司,将没有网络可以使用。为了避免这个问题发生,因此就有 IPv6 的产生。 IPv6 的地址可以达到 128 位,可以多出 2 的 96 次方倍的网址数量,这样的 IP 数量几乎用不完啦!虽然 IPv6 具有前瞻性,但目前主流媒体大多还是使用 IPv4 ,因此本文主要谈到的 IP 都指 IPv4 而言喔!(注13)
我们在前一小节谈到 MAC 的封装,那么 IP 封包的封装也得要来了解一下,才能知道 IP 到底是如何产生的啊! IP 封包可以达到 65535 bytes 这么大,在比 MAC 大的情况下,我们的操作系统会对 IP 进行拆解的动作。至于 IP 封装的表头数据绘制如下:(下图第一行为每个字段的 bit 数)
4 bits | 4 bits | 8 bits | 3 bits | 13 bits |
|---|
Version | IHL | Type of Service | Total Length | |
|---|---|---|---|---|
Identification | Flags | Fragmentation Offset | ||
Time To Live | Protocol | Header Checksum | ||
Source Address | ||||
Destination Address | ||||
Options | Padding | |||
Data | ||||
在上面的图示中有个地方要注意,那就是『每一行所占用的位数为 32 bits』, 各个表头的内容分别介绍如下:
你只要知道 IP 表头里面含有: TTL, Protocol, 来源地址与目标地址也就够了!而这个 IP 表头的来源与目标 IP ,以及那个判断通过多少路由器的 TTL ,就能了解到这个 IP 将被如何传送到目的端吶。后续各小节我们将介绍 IP 的组成与范围,还有 IP 封包如何传送的机制 (路由) 等等。
好了,那么除了这个预留的 IP 网段的问题之外,还有没有什么其他的怪东西呢?当然是有啦!不然鸟哥干嘛花时间来唬 XX 呢?没错,还有一个奇怪的 Class A 的网域,那就是 lo 这个奇怪的网域啦 (注意:是小写的 o 而不是零喔)!这个 lo 的网络是当初被用来作为测试操作系统内部循环所用的一个网域,同时也能够提供给系统内部原本就需要使用网络接口的服务 (daemon) 所使用。
简单的说,如果你没有安装网络卡在的机器上面, 但是你又希望可以测试一下在你的机器上面设定的服务器环境到底可不可以顺利运作,这个时候怎么办, 嘿嘿!就是利用这个所谓的内部循环网络啦!这个网段在 127.0.0.0/8 这个 Class A,而且默认的主机 (localhost) 的 IP 是 127.0.0.1 呦!所以啰,当你启动了你的 WWW 服务器,然后在你的主机的 X-Window 上面执行 http://localhost 就可以直接看到你的主页啰!而且不需要安装网络卡呢!测试很方便吧!
此外,你的内部使用的 mail 怎么运送邮件呢?例如你的主机系统如何 mail 给 root 这个人呢?嘿嘿!也就是使用这一个内部循环啦!当要测试你的 TCP/IP 封包与状态是否正常时,可以使用这个呦!(所以哪一天有人问你嘿!你的主机上面没有网络卡, 那么你可以测试你的 WWW 服务器设定是否正确吗?这个时候可得回答:当然可以啰!使用 127.0.0.1 这个 Address 呀! ^_^ )
ICMP 的全名是『 Internet Control Message Protocol, 因特网讯息控制协议 』。 基本上,ICMP 是一个错误侦测与回报的机制,最大的功能就是可以确保我们网络的联机状态与联机的正确性! ICMP 也是网络层的重要封包之一,不过,这个封包并非独立存在,而是纳入到 IP 的封包中!也就是说, ICMP 同样是透过 IP 封包来进行数据传送的啦!因为在 Internet 上面有传输能力的就是 IP 封包啊! ICMP 有相当多的类别可以侦测与回报,底下是比较常见的几个 ICMP 的类别 (Type):
类别代号 | 类别名称与意义 |
|---|---|
0 | Echo Reply (代表一个响应信息) |
3 | Destination Unreachable (表示目的地不可到达) |
4 | Source Quench (当 router 的负载过高时,此类别码可用来让发送端停止发送讯息) |
5 | Redirect (用来重新导向路由路径的信息) |
8 | Echo Request (请求响应消息) |
11 | Time Exceeded for a Datagram (当数据封包在某些路由传送的现象中造成逾时状态,此类别码可告知来源该封包已被忽略的讯息) |
12 | Parameter Problem on a Datagram (当一个 ICMP 封包重复之前的错误时,会回复来源主机关于参数错误的讯息) |
13 | Timestamp Request (要求对方送出时间讯息,用以计算路由时间的差异,以满足同步性协议的要求) |
14 | Timestamp Reply (此讯息纯粹是响应 Timestamp Request 用的) |
15 | Information Request (在 RARP 协议应用之前,此讯息是用来在开机时取得网络信息) |
16 | Information Reply (用以响应 Infromation Request 讯息) |
17 | Address Mask Request (这讯息是用来查询子网 mask 设定信息) |
18 | Address Mask Reply (响应子网 mask 查询讯息的) |
在前面的 OSI 七层协议当中,在网络层的 IP 之上则是传送层,而传送层的数据打包成什么? 最常见的就是 TCP 封包了。这个 TCP 封包数据必须要能够放到 IP 的数据袋当中才行喔! 所以,我们将图 2.1-4 简化一下,将 MAC, IP 与 TCP 的封包数据这样看:

想当然尔,TCP 也有表头数据来记录该封包的相关信息啰?没错啦~ TCP 封包的表头是长这个样子的:
Source Port | Destination Port | ||
|---|---|---|---|
Sequence Number | |||
Acknowledge Number | |||
Data Offset | Reserved | Code | Window |
Checksum | Urgent Pointer | ||
Options | Padding | ||
Data | |||
上图就是一个 TCP 封包的表头数据,各个项目以 Source Port, Destination Port 及 Code 算是比较重要的项目,底下我们就分别来谈一谈各个表头数据的内容吧!
TCP 被称为可靠的联机封包,主要是透过许多机制来达成的,其中最重要的就是三向交握的功能。 当然, TCP 传送数据的机制非常复杂,有兴趣的朋友请自行参考相关网络书籍。 OK,那么如何藉由 TCP 的表头来确认这个封包有实际被对方接收,并进一步与对方主机达成联机? 我们以底下的图示来作为说明。

在上面的封包连接模式当中,在建立联机之前都必须要通过三个确认的动作, 所以这种联机方式也就被称为三向交握(Three-way handshake)。 那么我们将整个流程依据上面的 A, B, C, D 四个阶段来说明一下:
也就是说,你必须要了解『网络是双向的』这个事实! 所以不论是服务器端还是客户端,都必须要透过一次 SYN 与 ACK 来建立联机,所以总共会进行三次的交谈! 在设定防火墙或者是追踪网络联机的问题时,这个『双向』的概念最容易被忽略, 而常常导致无法联机成功的问题啊!切记切记!
UDP 的全名是:『User Datagram Protocol, 用户数据流协议』,UDP 与 TCP 不一样, UDP 不提供可靠的传输模式,因为他不是面向连接的一个机制,这是因为在 UDP 的传送过程中,接受端在接受到封包之后,不会回复响应封包 (ACK) 给发送端,所以封包并没有像 TCP 封包有较为严密的检查机制。至于 UDP 的表头资料如下表所示:
16 bits | 16 bits |
|---|
Source Port | Destination Port |
|---|---|
Message Length | Checksum |
Data | |
TCP 封包确实是比较可靠的,因为通过三向交握嘛!不过,也由于三向交握的缘故, TCP 封包的传输速度会较慢。 至于 UDP 封包由于不需要确认对方是否有正确的收到数据,故表头数据较少,所以 UDP 就可以在 Data 处填入更多的资料了。同时 UDP 比较适合需要实时反应的一些数据流,例如影像实时传送软件等, 就可以使用这类的封包传送。也就是说, UDP 传输协议并不考虑联机要求、联机终止与流量控制等特性, 所以使用的时机是当数据的正确性不很重要的情况,例如网络摄影机!
另外,很多的软件其实是同时提供 TCP 与 UDP 的传输协议的,举例来说,查询主机名的 DNS 服务就同时提供了 UDP/TCP 协议。由于 UDP 较为快速,所以我们 client 端可以先使用 UDP 来与服务器联机。 但是当使用 UDP 联机却还是无法取得正确的数据时,便转换为较为可靠的 TCP 传输协议来进行数据的传输啰。 这样可以同时兼顾快速与可靠的传输说!