## 2.4 TCP/IP 的傳輸層相關封包與數據
網絡層的 IP 封包只負責將數據送到正確的目標主機去,但這個封包到底會不會被接受,或者是有沒有被正確的接收, 那就不是 IP 的任務啦!那是傳送層的任務之一。從 [圖 2.1-4](#fig2.1-4) 我們可以看到傳送層有兩個重點, 一個是連接導向的 TCP 封包,一個是非連接導向的 UDP 封包,這兩個封包很重要啊!數據能不能正確的被送達目的, 與這兩個封包有關喔!
* * *
### 2.4.1 可靠聯機的 TCP 協議
在前面的 OSI 七層協議當中,在網絡層的 IP 之上則是傳送層,而傳送層的數據打包成什么? 最常見的就是 TCP 封包了。這個 TCP 封包數據必須要能夠放到 IP 的數據袋當中才行喔! 所以,我們將[圖 2.1-4](#fig2.1-4) 簡化一下,將 MAC, IP 與 TCP 的封包數據這樣看:

圖 2.4-1、各封包之間的相關性
想當然爾,TCP 也有表頭數據來記錄該封包的相關信息啰?沒錯啦~ TCP 封包的表頭是長這個樣子的:
| 4 bits | 6 bits | 6 bits | 8 bits | 8 bits |
| --- | --- |
| Source Port | Destination Port |
| Sequence Number |
| Acknowledge Number |
| Data Offset | Reserved | Code | Window |
| Checksum | Urgent Pointer |
| Options | Padding |
| Data |
圖 2.4-2、TCP 封包的表頭資料
上圖就是一個 TCP 封包的表頭數據,各個項目以 Source Port, Destination Port 及 Code 算是比較重要的項目,底下我們就分別來談一談各個表頭數據的內容吧!
* Source Port & Destination Port (來源埠口 & 目標端口)
什么是埠口(port)?我們知道 IP 封包的傳送主要是藉由 IP 地址連接兩端, 但是到底這個聯機的通道是連接到哪里去呢?沒錯!就是連接到 port 上頭啦! 舉例來說,鳥哥的網站有開放 WWW 服務器,這表示鳥站的主機必須要啟動一個可以讓 client 端連接的端口,這個端口就是 port (中文翻譯成為埠口)。同樣的,客戶端想要連接到鳥哥的鳥站時,就必須要在 client 主機上面啟動一個 port ,這樣這兩個主機才能夠利用這條『通道』來傳遞封包數據喔!這個目標與來源 port 的紀錄,可以說是 TCP 封包上最重要的參數了!
* Sequence Number (封包序號)
由于 TCP 封包必須要帶入 IP 封包當中,所以如果 TCP 數據太大時(大于 IP 封包的容許程度), 就得要進行分段。這個 Sequence Number 就是記錄每個封包的序號,可以讓收受端重新將 TCP 的數據組合起來。
* Acknowledge Number (回應序號)
為了確認主機端確實有收到我們 client 端所送出的封包數據,我們 client 端當然希望能夠收到主機方面的響應,那就是這個 Acknowledge Number 的用途了。 當 client 端收到這個確認碼時,就能夠確定之前傳遞的封包已經被正確的收下了。
* Data Offset (資料補償)
在圖 2.4-2 倒數第二行有個 Options 字段對吧!那個 Options 的字段長度是非固定的,而為了要確認整個 TCP 封包的大小,就需要這個標志來說明整個封包區段的起始位置。
* Reserved (保留)
未使用的保留字段。
* Code (Control Flag, 控制標志碼)
當我們在進行網絡聯機的時候,必須要說明這個聯機的狀態,好讓接收端了解這個封包的主要動作。 這可是一個非常重要的句柄喔!這個字段共有 6 個 bits ,分別代表 6 個句柄,若為 1 則為啟動。分別說明如下:
* URG(Urgent):若為 1 則代表該封包為緊急封包, 接收端應該要緊急處理,且圖 2.4-1 當中的 Urgent Pointer 字段也會被啟用。
* ACK(Acknowledge):若為 1 代表這個封包為響應封包, 則與上面提到的 Acknowledge Number 有關。
* PSH(Push function):若為 1 時,代表要求對方立即傳送緩沖區內的其他對應封包,而無須等待緩沖區滿了才送。
* RST(Reset):如果 RST 為 1 的時候,表示聯機會被馬上結束,而無需等待終止確認手續。這也就是說, 這是個強制結束的聯機,且發送端已斷線。
* SYN(Synchronous):若為 1,表示發送端希望雙方建立同步處理, 也就是要求建立聯機。通常帶有 SYN 標志的封包表示『主動』要連接到對方的意思。
* FIN(Finish):若為 1 ,表示傳送結束,所以通知對方數據傳畢, 是否同意斷線,只是發送者還在等待對方的響應而已。
其實每個項目都很重要,不過我們這里僅對 ACK/SYN 有興趣而已,這樣未來在談到防火墻的時候,你才會比較清楚為啥每個 TCP 封包都有所謂的『狀態』條件!那就是因為聯機方向的不同所致啊!底下我們會進一步討論喔! 至于其他的數據,就得請您自行查詢網絡相關書籍了!
* Window (滑動窗口)
主要是用來控制封包的流量的,可以告知對方目前本身有的緩沖器容量(Receive Buffer) 還可以接收封包。當 Window=0 時,代表緩沖器已經額滿,所以應該要暫停傳輸數據。 Window 的單位是 byte。
* Checksum(確認檢查碼)
當數據要由發送端送出前,會進行一個檢驗的動作,并將該動作的檢驗值標注在這個字段上; 而接收者收到這個封包之后,會再次的對封包進行驗證,并且比對原發送的 Checksum 值是否相符,如果相符就接受,若不符就會假設該封包已經損毀,進而要求對方重新發送此封包!
* Urgent Pointer(緊急資料)
這個字段是在 Code 字段內的 URG = 1 時才會產生作用。可以告知緊急數據所在的位置。
* Options(任意資料)
目前此字段僅應用于表示接收端可以接收的最大數據區段容量,若此字段不使用, 表示可以使用任意資料區段的大小。這個字段較少使用。
* Padding(補足字段)
如同 IP 封包需要有固定的 32bits 表頭一樣, Options 由于字段為非固定, 所以也需要 Padding 字段來加以補齊才行。同樣也是 32 bits 的整數。
談完了 TCP 表頭數據后,再來讓我們了解一下這個表頭里面最重要的端口信息吧!
* 通訊端口
在上圖的 TCP 表頭數據中,最重要的就屬那 16 位的兩個咚咚,亦即來源與目標的端口。由于是 16 位,因此目標與來源端口最大可達 65535 號 (2 的 16 次方)! 那這個埠口有什么用途呢?上面稍微提到過,網絡是雙向的,服務器與客戶端要達成聯機的話, 兩邊應該要有一個對應的埠口來達成聯機信道,好讓數據可以透過這個信道來進行溝通。
那么這個埠口怎么打開呢?就是透過程序的執行!舉例來說,鳥哥的網站上,必須要啟動一個 WWW 服務器軟件, 這個服務器軟件會主動的喚起 port 80 來等待客戶端的聯機。你想要看我網站上的數據,就得要利用瀏覽器, 填入網址,然后瀏覽器也會啟動一個埠口,并將 TCP 的表頭填寫目標端口為 80 ,而來源端口是你主機隨機啟動的一個埠口, 然后將 TCP 封包封裝到 IP 后,送出到網絡上。等鳥站主機接收到你這個封包后,再依據你的埠口給予回應。
這么說你或許不好理解,我們換個說法好了。假如 IP 是網絡世界的門牌,那么這個埠口就是那個門牌號碼上建筑物的樓層! 每個建筑物都有 1~65535 層樓,你需要什么網絡服務,就得要去該對應的樓層取得正確的資料。但那個樓層里面有沒有人在服務你呢? 這就得要看有沒有程序真的在執行啦。所以,IP 是門牌,TCP 是樓層,真正提供服務的, 是在該樓層的那個人 (程序)!
**Tips:** 曾經有一個朋友問過我說:『一部主機上面這么多服務,那我們跟這部主機進行聯機時,該主機怎么知道我們要的數據是 WWW 還是 FTP 啊?』就是透過埠口啊!因為每種 Client 軟件他們所需要的數據都不相同,例如上面提到的瀏覽器所需要的數據是 WWW ,所以該軟件默認就會向服務器的 port 80 索求數據;而如果你是使用 filezilla 來進行與服務器的 FTP 數據索求時, filezilla 當然預設就是向服務器的 FTP 相關埠口 (預設就是 port 21) 進行連接的動作啦!所以當然就可以正確無誤的取得 Client 端所需要的數據了
再舉個例子來說,一部主機就好像是一間多功能銀行,該銀行內的每個負責不同業務的窗口就好像是通訊端口, 而我們民眾就好像是 Client 端來的封包。當你進入銀行想要繳納信用卡賬單時, 一到門口服務人員就會指示你直接到該窗口去繳納,當然,如果你是要領錢,服務人員就會請你到領錢的窗口去填寫數據, 你是不會跑錯的對吧! ^_^。萬一跑錯了怎么辦?呵呵!當然該窗口就會告訴你『我不負責這個業務,你請回去!』, 呵呵!所以該次的聯機就會『無法成功』咯!

* 特權埠口 (Privileged Ports)
你現在了解了埠口的意義后,再來想想,網絡既然是雙向的,一定有一個發起端。問題是,到底要聯機到服務器取得啥玩意兒? 也就是說,哪支程序應該在哪個端口執行,以讓大家都知道該埠口就是提供哪個服務,如此一來,才不會造成廣大用戶的困擾嘛! 所以啰,Internet 上面已經有很多規范好的固定 port (well-known port), 這些 port number 通常小于 1024 ,且是提供給許多知名的網絡服務軟件用的。 在我們的 Linux 環境下,各網絡服務與 port number 的對應默認給他寫在 /etc/services 檔案內喔! 底下鳥哥列出幾個常見的 port number 與網絡服務的對應:
| 端口 | 服務名稱與內容 |
| --- | --- |
| 20 | FTP-data,文件傳輸協議所使用的主動數據傳輸端口 |
| 21 | FTP,文件傳輸協議的命令通道 |
| 22 | SSH,較為安全的遠程聯機服務器 |
| 23 | Telnet,早期的遠程聯機服務器軟件 |
| 25 | SMTP,簡單郵件傳遞協議,用在作為 mail server 的埠口 |
| 53 | DNS,用在作為名稱解析的領域名服務器 |
| 80 | WWW,這個重要吧!就是全球信息網服務器 |
| 110 | POP3,郵件收信協議,辦公室用的收信軟件都是透過他 |
| 443 | https,有安全加密機制的WWW服務器 |
另外一點比較值得注意的是,小于 1024 以下的埠口要啟動時, 啟動者的身份必須要是 root 才行,所以才叫做特權埠口嘛!這個限制挺重要的,大家不要忘記了喔! 不過如果是 client 端的話,由于 client 端都是主動向 server 端要數據, 所以 client 端的 port number 就使用隨機取一個大于 1024 以上且沒有在用的 port number。
* Socket Pair
由于網絡是雙向的,要達成聯機的話得要服務器與客戶端均提供了 IP 與埠口才行。 因此,我們常常將這個成對的數據稱之為 Socket Pair 了!
* 來源 IP + 來源埠口 (Source Address + Source Port)
* 目的 IP + 目的埠口 (Destination Address + Destination Port)
由于 IP 與埠口常常連在一起說明,因此網絡尋址常常使用『 IP:port 』來說明,例如想要連上鳥哥的網站時, 正確的鳥哥網站寫法應該是:『 linux.vbird.org:80 』才對!
* * *
### 2.4.2 TCP 的三向交握
TCP 被稱為可靠的聯機封包,主要是透過許多機制來達成的,其中最重要的就是三向交握的功能。 當然, TCP 傳送數據的機制非常復雜,有興趣的朋友請自行參考相關網絡書籍。 OK,那么如何藉由 TCP 的表頭來確認這個封包有實際被對方接收,并進一步與對方主機達成聯機? 我們以底下的圖示來作為說明。

圖 2.4-3、三向交握之封包連接模式
在上面的封包連接模式當中,在建立聯機之前都必須要通過三個確認的動作, 所以這種聯機方式也就被稱為三向交握(Three-way handshake)。 那么我們將整個流程依據上面的 A, B, C, D 四個階段來說明一下:
* A:封包發起
當客戶端想要對服務器端聯機時,就必須要送出一個要求聯機的封包,此時客戶端必須隨機取用一個大于 1024 以上的端口來做為程序溝通的接口。然后在 TCP 的表頭當中,必須要帶有 SYN 的主動聯機(SYN=1),并且記下發送出聯機封包給服務器端的序號 (Sequence number = 10001) 。
* B:封包接收與確認封包傳送
當服務器接到這個封包,并且確定要接收這個封包后,就會開始制作一個同時帶有 SYN=1, ACK=1 的封包, 其中那個 acknowledge 的號碼是要給 client 端確認用的,所以該數字會比(A 步驟)里面的 Sequence 號碼多一號 (ack = 10001+1 = 10002), 那我們服務器也必須要確認客戶端確實可以接收我們的封包才行,所以也會發送出一個 Sequence (seq=20001) 給客戶端,并且開始等待客戶端給我們服務器端的回應喔!
* C:回送確認封包
當客戶端收到來自服務器端的 ACK 數字后 (10002) 就能夠確認之前那個要求封包被正確的收受了, 接下來如果客戶端也同意與服務器端建立聯機時,就會再次的發送一個確認封包 (ACK=1) 給服務器,亦即是 acknowledge = 20001+1 = 20002 啰。
* D:取得最后確認
若一切都順利,在服務器端收到帶有 ACK=1 且 ack=20002 序號的封包后,就能夠建立起這次的聯機了。
也就是說,你必須要了解『網絡是雙向的』這個事實! 所以不論是服務器端還是客戶端,都必須要透過一次 SYN 與 ACK 來建立聯機,所以總共會進行三次的交談! 在設定防火墻或者是追蹤網絡聯機的問題時,這個『雙向』的概念最容易被忽略, 而常常導致無法聯機成功的問題啊!切記切記!
**Tips:** 鳥哥上課談到 TCP 最常做的事就是,叫一個同學起來,實際表演三向交握給大家看!
1\. 鳥哥說:A同學你在不在?
2\. A同學說:我在!那鳥哥你在不在?
3\. 鳥哥說:我也在
此時兩個人就確認彼此都可以聽到對方在講啥,這就是可靠聯機啦! ^_^

* * *
### 2.4.3 非連接導向的 UDP 協議
UDP 的全名是:『User Datagram Protocol, 用戶數據流協議』,UDP 與 TCP 不一樣, UDP 不提供可靠的傳輸模式,因為他不是面向連接的一個機制,這是因為在 UDP 的傳送過程中,接受端在接受到封包之后,不會回復響應封包 (ACK) 給發送端,所以封包并沒有像 TCP 封包有較為嚴密的檢查機制。至于 UDP 的表頭資料如下表所示:
| 16 bits | 16 bits |
| --- | --- |
| Source Port | Destination Port |
| Message Length | Checksum |
| Data |
圖 2.4-4、UDP 封包的表頭資料
TCP 封包確實是比較可靠的,因為通過三向交握嘛!不過,也由于三向交握的緣故, TCP 封包的傳輸速度會較慢。 至于 UDP 封包由于不需要確認對方是否有正確的收到數據,故表頭數據較少,所以 UDP 就可以在 Data 處填入更多的資料了。同時 UDP 比較適合需要實時反應的一些數據流,例如影像實時傳送軟件等, 就可以使用這類的封包傳送。也就是說, UDP 傳輸協議并不考慮聯機要求、聯機終止與流量控制等特性, 所以使用的時機是當數據的正確性不很重要的情況,例如網絡攝影機!
另外,很多的軟件其實是同時提供 TCP 與 UDP 的傳輸協議的,舉例來說,查詢主機名的 DNS 服務就同時提供了 UDP/TCP 協議。由于 UDP 較為快速,所以我們 client 端可以先使用 UDP 來與服務器聯機。 但是當使用 UDP 聯機卻還是無法取得正確的數據時,便轉換為較為可靠的 TCP 傳輸協議來進行數據的傳輸啰。 這樣可以同時兼顧快速與可靠的傳輸說!
**Tips:** 那么上課時怎么介紹 UDP 呢?很簡單喔!鳥哥就會說:『現在老師就是在進行 UDP 的傳送,因為老師一直講一直講, 俺也沒有注意到你有沒有聽到,也不需要等待你的響應封包!就這樣一直講!當然,你沒有聽到鳥哥講啥,我也不會知道...』

* * *
### 2.4.4 網絡防火墻與 OSI 七層協定
由上面的說明當中,我們知道數據的傳送其實就是封包的發出與接受的動作啦!并且不同的封包上面都有不一樣的表頭 (header),此外,封包上面通常都會具有四個基本的信息,那就是 socket pair 里面提到的『來源與目的 IP 以及來源與目的端的 port number』 。當然啦,如果是可靠性聯機的 TCP 封包,還包含 Control Flag 里面的 SYN/ACK 等等重要的信息呢!好了,開始動一動腦筋,有沒有想到『網絡防火墻』的字眼啊?
封包過濾式的網絡防火墻可以抵擋掉一些可能有問題的封包, Linux 系統上面是怎么擋掉封包的呢?其實說來也是很簡單,既然封包的表頭上面已經有這么多的重要信息, 那么我就利用一些防火墻機制與軟件來進行封包表頭的分析,并且設定分析的規則,當發現某些特定的 IP 、特定的埠口或者是特定的封包信息(SYN/ACK等等),那么就將該封包給他丟棄, 那就是最基本的防火墻原理了!
舉例來說,大家都知道 Telnet 這個服務器是挺危險的,而 Telnet 使用的 port number 為 23 ,所以,當我們使用軟件去分析要送進我們主機的封包時, 只要發現該封包的目的地是我們主機的 port 23 ,就將該封包丟掉去!那就是最基本的防火墻案例啦! 如果以 OSI 七層協議來說,每一層可以抵擋的數據有:
* 第二層:可以針對來源與目標的 MAC 進行抵擋;
* 第三層:主要針對來源與目標的 IP ,以及 ICMP 的類別 (type) 進行抵擋;
* 第四層:針對 TCP/UDP 的埠口進行抵擋,也可以針對 TCP 的狀態 (code) 來處理。
更多的防火墻信息我們會在[第九章防火墻](http://linux.vbird.org/linux_server/0250simple_firewall.php)與[第七章認識網絡安全](http://linux.vbird.org/linux_server/0210network-secure.php)當中進行更多的說明喔!
* * *
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀