- 論壇徽章:
- 1
|
TCP/IP協(xié)議基礎(chǔ)
--------------------------------------------------------------------------------
1、TCP/IP協(xié)議棧
四層模型
TCP/IP這個(gè)協(xié)議遵守一個(gè)四層的模型概念:應(yīng)用層、傳輸層、互聯(lián)層和網(wǎng)絡(luò)接口層。
網(wǎng)絡(luò)接口層
模型的基層是網(wǎng)絡(luò)接口層。負(fù)責(zé)數(shù)據(jù)幀的發(fā)送和接收,幀是獨(dú)立的網(wǎng)絡(luò)信息傳輸單元。網(wǎng)絡(luò)接口層將幀放在網(wǎng)上,或從網(wǎng)上把幀取下來。
互聯(lián)層
互聯(lián)協(xié)議將數(shù)據(jù)包封裝成internet數(shù)據(jù)報(bào),并運(yùn)行必要的路由算法。
這里有四個(gè)互聯(lián)協(xié)議:
網(wǎng)際協(xié)議IP:負(fù)責(zé)在主機(jī)和網(wǎng)絡(luò)之間尋址和路由數(shù)據(jù)包。
地址解析協(xié)議ARP:獲得同一物理網(wǎng)絡(luò)中的硬件主機(jī)地址。
網(wǎng)際控制消息協(xié)議ICMP:發(fā)送消息,并報(bào)告有關(guān)數(shù)據(jù)包的傳送錯(cuò)誤。
互聯(lián)組管理協(xié)議IGMP:被IP主機(jī)拿來向本地多路廣播路由器報(bào)告主機(jī)組成員。
傳輸層
傳輸協(xié)議在計(jì)算機(jī)之間提供通信會(huì)話。傳輸協(xié)議的選擇根據(jù)數(shù)據(jù)傳輸方式而定。
兩個(gè)傳輸協(xié)議:
傳輸控制協(xié)議TCP:為應(yīng)用程序提供可靠的通信連接。適合于一次傳輸大批數(shù)據(jù)的情況。并適用于要求得到響應(yīng)的應(yīng)用程序。
用戶數(shù)據(jù)報(bào)協(xié)議UDP:提供了無連接通信,且不對(duì)傳送包進(jìn)行可靠的保證。適合于一次傳輸小量數(shù)據(jù),可靠性則由應(yīng)用層來負(fù)責(zé)。
應(yīng)用層
應(yīng)用程序通過這一層訪問網(wǎng)絡(luò)。
網(wǎng)絡(luò)接口技術(shù)
IP使用網(wǎng)絡(luò)設(shè)備接口規(guī)范NDIS向網(wǎng)絡(luò)接口層提交幀。IP支持廣域網(wǎng)和本地網(wǎng)接口技術(shù)。
串行線路協(xié)議
TCP/IPG一般通過internet串行線路協(xié)議SLIP或點(diǎn)對(duì)點(diǎn)協(xié)議PPP在串行線上進(jìn)行數(shù)據(jù)傳送。(是不是我們平時(shí)把它稱之為異步通信,對(duì)于要拿LINUX提供建立遠(yuǎn)程連接的朋友應(yīng)該多研究一下這方面的知識(shí))?
2、ARP
要在網(wǎng)絡(luò)上通信,主機(jī)就必須知道對(duì)方主機(jī)的硬件地址(我們不是老遇到網(wǎng)卡的物理地址嘛)。地址解析就是將主機(jī)IP地址映射為硬件地址的過程。地址解析協(xié)議ARP用于獲得在同一物理網(wǎng)絡(luò)中的主機(jī)的硬件地址。
解釋本地IP地址(要了解地址解析工作過程的朋友看好了)
主機(jī)IP地址解析為硬件地址:
(1)當(dāng)一臺(tái)主機(jī)要與別的主機(jī)通信時(shí),初始化ARP請(qǐng)求。當(dāng)該IP斷定IP地址是本地時(shí),源主機(jī)在ARP緩存中查找目標(biāo)主機(jī)的硬件地址。
(2)要是找不到映射的話,ARP建立一個(gè)請(qǐng)求,源主機(jī)IP地址和硬件地址會(huì)被包括在請(qǐng)求中,該請(qǐng)求通過廣播,使所有本地主機(jī)均能接收并處理。
(3)本地網(wǎng)上的每個(gè)主機(jī)都收到廣播并尋找相符的IP地址。
(4)當(dāng)目標(biāo)主機(jī)斷定請(qǐng)求中的IP地址與自己的相符時(shí),直接發(fā)送一個(gè)ARP答復(fù),將自己的硬件地址傳給源主機(jī)。以源主機(jī)的IP地址和硬件地址更新它的ARP緩存。源主機(jī)收到回答后便建立起了通信。
解析遠(yuǎn)程IP地址
不同網(wǎng)絡(luò)中的主機(jī)互相通信,ARP廣播的是源主機(jī)的缺省網(wǎng)關(guān)。
目標(biāo)IP地址是一個(gè)遠(yuǎn)程網(wǎng)絡(luò)主機(jī)的話,ARP將廣播一個(gè)路由器的地址。
(1)通信請(qǐng)求初始化時(shí),得知目標(biāo)IP地址為遠(yuǎn)程地址。源主機(jī)在本地路由表中查找,若無,源主機(jī)認(rèn)為是缺省網(wǎng)關(guān)的IP地址。在ARP緩存中查找符合該網(wǎng)關(guān)記錄的IP地址(硬件地址)。
(2)若沒找到該網(wǎng)關(guān)的記錄,ARP將廣播請(qǐng)求網(wǎng)關(guān)地址而不是目標(biāo)主機(jī)的地址。路由器用自己的硬件地址響應(yīng)源主機(jī)的ARP請(qǐng)求。源主機(jī)則將數(shù)據(jù)包送到路由器以傳送到目標(biāo)主機(jī)的網(wǎng)絡(luò),最終達(dá)到目標(biāo)主機(jī)。
(3)在路由器上,由IP決定目標(biāo)IP地址是本地還是遠(yuǎn)程。如果是本地,路由器用ARP(緩存或廣播)獲得硬件地址。如果是遠(yuǎn)程,路由器在其路由表中查找該網(wǎng)關(guān),然后運(yùn)用ARP獲得此網(wǎng)關(guān)的硬件地址。數(shù)據(jù)包被直接發(fā)送到下一個(gè)目標(biāo)主機(jī)。
(4)目標(biāo)主機(jī)收到請(qǐng)求后,形成ICMP響應(yīng)。因源主機(jī)在遠(yuǎn)程網(wǎng)上,將在本地路由表中查找源主機(jī)網(wǎng)的網(wǎng)關(guān)。找到網(wǎng)關(guān)后,ARP即獲取它的硬件地址。
(5)如果此網(wǎng)關(guān)的硬件地址不在ARP緩存中,通過ARP廣播獲得。一旦它獲得硬件地址,ICMP響應(yīng)就送到路由器上,然后傳到源主機(jī)。
ARP緩存
為減少廣播量,ARP在緩存中保存地址映射以備用。ARP緩存保存有動(dòng)態(tài)項(xiàng)和靜態(tài)項(xiàng)。動(dòng)態(tài)項(xiàng)是自動(dòng)添加和刪除的,靜態(tài)項(xiàng)則保留在CACHE中直到計(jì)算
機(jī)重新啟動(dòng)。
ARP緩存總是為本地子網(wǎng)保留硬件廣播地址(0xffffffffffffh)作為一個(gè)永久項(xiàng)。
此項(xiàng)使主機(jī)能夠接受ARP廣播。當(dāng)查看緩存時(shí),該項(xiàng)不會(huì)顯示。
每條ARP緩存記錄的生命周期為10分鐘,2分鐘內(nèi)未用則刪除。緩存容量滿時(shí),刪除最老的記錄。
加入靜態(tài)(永久)記錄
通過添加靜態(tài)ARP項(xiàng)可減少ARP請(qǐng)求訪問主機(jī)的次數(shù)。
ARP包的結(jié)構(gòu)
ARP結(jié)構(gòu)的字段如下:
硬件類型--使用的硬件(網(wǎng)絡(luò)訪問層)類型。
協(xié)議類型--解析過程中的協(xié)議使用以太類型的值。
硬件地址長度--硬件地址的字節(jié)長度,對(duì)于以太網(wǎng)和令牌環(huán)來說,其長度為6字節(jié)。
協(xié)議地址長度--協(xié)議地址字節(jié)的長度,IP的長度是4字節(jié)。
操作號(hào)--指定當(dāng)前執(zhí)行操作的字段。
發(fā)送者的硬件地址--發(fā)送者的硬件地址。
發(fā)送者的協(xié)議地址--發(fā)送者的協(xié)議地址。
目的站硬件地址--目標(biāo)者的硬件地址。
目的站協(xié)議地址--目標(biāo)者的協(xié)議地址。
3、ICMP和IGMP
internet控制消息協(xié)議ICMP是用于報(bào)告錯(cuò)誤并代表IP對(duì)消息進(jìn)行控制。
IP運(yùn)用互聯(lián)組管理協(xié)議IGMP來告訴路由器,某一網(wǎng)絡(luò)上指導(dǎo)組中的可用主機(jī)。
ICMP
ICMP源抑制消息:當(dāng)TCP/IP主機(jī)發(fā)送數(shù)據(jù)到另一主機(jī)時(shí),如果速度達(dá)到路由器或者鏈路的飽和狀態(tài),路由器發(fā)出一個(gè)ICMP源抑制消息。
ICMP數(shù)據(jù)包結(jié)構(gòu)
類型:一個(gè)8位類型字段,表示ICMP數(shù)據(jù)包類型。
代碼:一個(gè)8位代碼域,表示指定類型中的一個(gè)功能。如果一個(gè)類型中只有一種功能,代碼域置為0。
檢驗(yàn)和:數(shù)據(jù)包中ICMP部分上的一個(gè)16位檢驗(yàn)和。
指定類型的數(shù)據(jù)隨每個(gè)ICMP類型變化的一個(gè)附加數(shù)據(jù)。
IGMP
IGMP信息傳給別的路由器以使每個(gè)支持多路廣播的路由器獲知哪個(gè)主機(jī)組和哪個(gè)網(wǎng)絡(luò)中。
IGMP包結(jié)構(gòu)
版本:IGMP的版本,值一般為0x1h。
類型:IGMP消息的類型。0x1h類型稱為主機(jī)成員請(qǐng)求,在多路廣播路由器上用于指定多級(jí)組中的任何成員輪詢一個(gè)網(wǎng)絡(luò)。0x2h類型稱為主機(jī)成員報(bào)告,在主機(jī)上用于發(fā)布指定組中的成員情況或?qū)σ粋(gè)路由器的主機(jī)成員請(qǐng)求進(jìn)行回答。
未用:未用的域名被發(fā)送者置零且被接收者忽略。
檢驗(yàn)和:IGMP頭的一個(gè)16位檢驗(yàn)和。
組地址:主機(jī)用該組地址在一個(gè)主機(jī)成員請(qǐng)求中存儲(chǔ)IP多路廣播地址。在主機(jī)成員請(qǐng)求中,組地址被全置零,而且硬件級(jí)的多路廣播地址被用來標(biāo)示主機(jī)組。
4、IP
IP是一個(gè)無連接的協(xié)議,主要就是負(fù)責(zé)在主機(jī)間尋址并為數(shù)據(jù)包設(shè)定路由,在交換數(shù)據(jù)前它并不建立會(huì)話。因?yàn)樗槐WC正確傳遞,另一方面,數(shù)據(jù)在被收到時(shí),IP不需要收到確認(rèn),所以它是不可靠的。
有一些字段,在當(dāng)數(shù)據(jù)從傳輸層傳下來時(shí),會(huì)被附加在數(shù)據(jù)包中,我們來看一下這些字段:
源IP地址:用IP地址確定數(shù)據(jù)報(bào)發(fā)送者。
目標(biāo)IP地址:用IP地址確定數(shù)據(jù)報(bào)目標(biāo)。
協(xié)議:告知目的機(jī)的IP是否將包傳給TCP或UDP。
檢查和:一個(gè)簡單的數(shù)學(xué)計(jì)算,用來證實(shí)收到的包的完整性。
TTL生存有效時(shí)間:指定一個(gè)數(shù)據(jù)報(bào)被丟棄之前,在網(wǎng)絡(luò)上能停留多少時(shí)間(以秒計(jì))。它避免了包在網(wǎng)絡(luò)中無休止循環(huán)。路由器會(huì)根據(jù)數(shù)據(jù)在路由器中駐留的時(shí)間來遞減TTL。其中數(shù)據(jù)報(bào)通過一次路由器,TTL至少減少一秒。
根據(jù)我們前面提到關(guān)于ARP的知識(shí),如果IP地址目標(biāo)為本地地址時(shí),IP將數(shù)據(jù)包直接傳給那個(gè)主機(jī);如果目標(biāo)地址為遠(yuǎn)程地址的話,IP在本地的路由表中查找遠(yuǎn)程主機(jī)的路由(看來好象我們平時(shí)撥114一樣)。如果找到一個(gè)路由,IP用它傳送數(shù)據(jù)包。如果沒找到呢,就會(huì)將數(shù)據(jù)包發(fā)送到源主機(jī)的缺省網(wǎng)關(guān),也稱之為路由器。(很多時(shí)候一直在搞網(wǎng)關(guān)和路由器的定義,其實(shí)我覺得在學(xué)的時(shí)候不一定死摳概念,現(xiàn)在硬件和軟件結(jié)合的產(chǎn)品越來越多了,一時(shí)很分清的,只要我們運(yùn)用的時(shí)候可以解決實(shí)際問題嘛。)
這樣當(dāng)路由器收到一個(gè)包后,該包向上傳給IP:
(1)如果交通阻塞(聽起來蠻可怕的),包在路由器中停滯,TTL至少減1或更多。要是它降到0的話,包就會(huì)被拋棄。
(2)如果對(duì)于下一網(wǎng)絡(luò)來說包太大的話,IP會(huì)將它分割成若干個(gè)小包。
(3)如果包被分解,IP為每個(gè)新包制造一個(gè)新頭,其中包括:一個(gè)標(biāo)志,用來顯示其它小包在其后;一個(gè)小包ID,用來確定所有小包是一起的;一個(gè)小包偏移,用來告訴接收主機(jī)怎么重新組合它們。
(4)IP計(jì)算一個(gè)新的檢驗(yàn)和。
(5)IP獲取一個(gè)路由的目標(biāo)硬件地址。
(6)IP轉(zhuǎn)發(fā)包。
在下一主機(jī),包被發(fā)送到TCP或UDP。每個(gè)路由器都要重復(fù)該過程。直到包到達(dá)最終目的地。當(dāng)包到達(dá)最終目的地后,IP將小包組裝成原來的包。
5、TCP
TCP是一種可靠的面向連接的傳送服務(wù)。它在傳送數(shù)據(jù)時(shí)是分段進(jìn)行的,主機(jī)交換數(shù)據(jù)必須建立一個(gè)會(huì)話。它用比特流通信,即數(shù)據(jù)被作為無結(jié)構(gòu)的字節(jié)流。
通過每個(gè)TCP傳輸?shù)淖侄沃付樞蛱?hào),以獲得可靠性。如果一個(gè)分段被分解成幾個(gè)小段,接收主機(jī)會(huì)知道是否所有小段都已收到。通過發(fā)送應(yīng)答,用以確認(rèn)別的主機(jī)收到了數(shù)據(jù)。對(duì)于發(fā)送的每一個(gè)小段,接收主機(jī)必須在一個(gè)指定的時(shí)間返回一個(gè)確認(rèn)。如果發(fā)送者未收到確認(rèn),數(shù)據(jù)會(huì)被重新發(fā)送;如果收到的數(shù)據(jù)包損壞,接收主機(jī)會(huì)舍棄它,因?yàn)榇_認(rèn)未被發(fā)送,發(fā)送者會(huì)重新發(fā)送分段。
端口
SOCKETS實(shí)用程序使用一個(gè)協(xié)議端口號(hào)來標(biāo)明自己應(yīng)用的唯一性。端口可以使用0到65536之間的任何數(shù)字。在服務(wù)請(qǐng)求時(shí),操作系統(tǒng)動(dòng)態(tài)地為客戶端的應(yīng)用程序分配端口號(hào)。
套接字
套接字在要領(lǐng)上與文件句柄類似,因?yàn)槠涔δ苁亲鳛榫W(wǎng)絡(luò)通信的終結(jié)點(diǎn)。一個(gè)應(yīng)用程序通過定義三部分來產(chǎn)生一個(gè)套接字:主機(jī)IP地址、服務(wù)類型(面向連接的服務(wù)是TCP,無連接服務(wù)是UDP)、應(yīng)用程序所用的端口。
TCP端口
TCP端口為信息的傳送提供定地點(diǎn),端口號(hào)小于256的定義為常用端口。
TCP的三次握手
TCP對(duì)話通過三次握手來初始化。三次握手的目的是使數(shù)據(jù)段的發(fā)送和接收同步;告訴其它主機(jī)其一次可接收的數(shù)據(jù)量,并建立虛連接。
我們來看看這三次握手的簡單過程:
(1)初始化主機(jī)通過一個(gè)同步標(biāo)志置位的數(shù)據(jù)段發(fā)出會(huì)話請(qǐng)求。
(2)接收主機(jī)通過發(fā)回具有以下項(xiàng)目的數(shù)據(jù)段表示回復(fù):同步標(biāo)志置位、即將發(fā)送的數(shù)據(jù)段的起始字節(jié)的順序號(hào)、應(yīng)答并帶有將收到的下一個(gè)數(shù)據(jù)段的字節(jié)順序號(hào)。
(3)請(qǐng)求主機(jī)再回送一個(gè)數(shù)據(jù)段,并帶有確認(rèn)順序號(hào)和確認(rèn)號(hào)。
TCP滑動(dòng)窗口
TCP滑動(dòng)窗口用來暫存兩臺(tái)主機(jī)間要傳送的數(shù)據(jù),有點(diǎn)類似CACHE。
每個(gè)TCP/IP主機(jī)有兩個(gè)滑動(dòng)窗口:一個(gè)用于接收數(shù)據(jù),另一個(gè)用于發(fā)送數(shù)據(jù)。
6、UDP
用戶數(shù)據(jù)報(bào)協(xié)議UDP提供了無連接的數(shù)據(jù)報(bào)服務(wù)。它適用于無須應(yīng)答并且通常一次只傳送少量數(shù)據(jù)的應(yīng)用軟件。
UDP端口
端口作為多路復(fù)用的消息隊(duì)列使用。
15 NETSTAT 網(wǎng)絡(luò)狀態(tài)
53 DOMAIN 域名服務(wù)器
69 TFTP 平凡文件傳送協(xié)議
137 NETBIOS-NS NETBIOS命令服務(wù)
138 NETBIOS-DGM NETBIOS數(shù)據(jù)報(bào)服務(wù)
161 SNMP SNMP網(wǎng)絡(luò)監(jiān)視器
IP地址分配
1、IP地址
IP地址標(biāo)識(shí)著網(wǎng)絡(luò)中一個(gè)系統(tǒng)的位置。我們知道每個(gè)IP地址都是由兩部分組成的:網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。其中網(wǎng)絡(luò)號(hào)標(biāo)識(shí)一個(gè)物理的網(wǎng)絡(luò),同一個(gè)網(wǎng)絡(luò)上所有主機(jī)需要同一個(gè)網(wǎng)絡(luò)號(hào),該號(hào)在互聯(lián)網(wǎng)中是唯一的;而主機(jī)號(hào)確定網(wǎng)絡(luò)中的一個(gè)工作端、服務(wù)器、路由器其它TCP/IP主機(jī)。對(duì)于同一個(gè)網(wǎng)絡(luò)號(hào)來說,主機(jī)號(hào)是唯一的。每個(gè)TCP/IP主機(jī)由一個(gè)邏輯IP地址確定。
網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)
IP地址有兩種表示形式:二進(jìn)制表示(1和0太多了就搞不清)和點(diǎn)分十進(jìn)制表示。每個(gè)IP地址的長度為4字節(jié),由四個(gè)8位域組成,我們通常稱之為八位體。八位體由句點(diǎn).分開,表示為一個(gè)0-255之間的十進(jìn)制數(shù)。一個(gè)IP地址的4個(gè)域分別標(biāo)明了網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。
2、地址類型
為適應(yīng)不同大小的網(wǎng)絡(luò),internet定義了5種IP地址類型。
可以通過IP地址的前八位來確定地址的類型:
類型 IP形式 網(wǎng)絡(luò)號(hào) 主機(jī)號(hào)
A類 w.x.y.z w x.y.z
B類 w.x.y.z w.x y.z
C類 w.x.y.z w.x.y z
我們來看一下這5類地址:
A類地址:可以擁有很大數(shù)量的主機(jī),最高位為0,緊跟的7位表示網(wǎng)絡(luò)號(hào),余24位表示主機(jī)號(hào),總共允許有126個(gè)網(wǎng)絡(luò)。
B類地址:被分配到中等規(guī)模和大規(guī)模的網(wǎng)絡(luò)中,最高兩位總被置于二進(jìn)制的10,允許有16384個(gè)網(wǎng)絡(luò)。
C類地址:被用于局域網(wǎng)。高三位被置為二進(jìn)制的110,允許大約200萬個(gè)網(wǎng)絡(luò)。
D類地址:被用于多路廣播組用戶,高四位總被置為1110,余下的位用于標(biāo)明客戶機(jī)所屬的組。
E類地址是一種僅供試驗(yàn)的地址。
3、地址分配指南
在分配網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)時(shí)應(yīng)遵守以下幾條準(zhǔn)則:
(1)網(wǎng)絡(luò)號(hào)不能為127。大家知道該標(biāo)識(shí)號(hào)被保留作回路及診斷功能,還記得平時(shí)ping
127.0.0.1?
(2)不能將網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的各位均置1。如果每一位都是1的話,該地址會(huì)被解釋為網(wǎng)內(nèi)
廣播而不是一個(gè)主機(jī)號(hào)。(TCP/IP是一個(gè)可廣播的協(xié)議嘛)
(3)相應(yīng)于上面一條,各位均不能置0,否則該地址被解釋為“就是本網(wǎng)絡(luò)”。
(4)對(duì)于本網(wǎng)絡(luò)來說,主機(jī)號(hào)應(yīng)該是唯一。(否則會(huì)出現(xiàn)IP地址已分配或有沖突之類的錯(cuò)誤)
分配網(wǎng)絡(luò)號(hào)
對(duì)于每個(gè)網(wǎng)絡(luò)以及廣域連接,必須有唯一的網(wǎng)絡(luò)號(hào),主機(jī)號(hào)用于區(qū)分同一物理網(wǎng)絡(luò)中的不同主機(jī)。如果網(wǎng)絡(luò)由路由器連接,則每個(gè)廣域連接都需要唯一的網(wǎng)絡(luò)號(hào)。
分配主機(jī)號(hào)
主機(jī)號(hào)用于區(qū)分同一網(wǎng)絡(luò)中不同的主機(jī),并且主機(jī)號(hào)應(yīng)該是唯一的。所有的主機(jī)包括路由器間的接口,都應(yīng)該有唯一的網(wǎng)絡(luò)號(hào)。路由器的主機(jī)號(hào),要配置成工作站的缺省網(wǎng)關(guān)地址。
有效的主機(jī)號(hào)
A類:w.0.0.1--w.255.255.254
B類:w.x.0.1--w.x.255.254
C類:w.x.y.1--w.x.y.254
4、子網(wǎng)屏蔽和IP地址
TCP/IP上的每臺(tái)主機(jī)都需要用一個(gè)子網(wǎng)屏蔽號(hào)。它是一個(gè)4字節(jié)的地址,用來封裝或“屏蔽”IP地址的一部分,以區(qū)分網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。當(dāng)網(wǎng)絡(luò)還沒有劃分為子網(wǎng)時(shí),可以使用缺省的子網(wǎng)屏蔽;當(dāng)網(wǎng)絡(luò)被劃分為若干個(gè)子網(wǎng)時(shí),就要使用自定義的子網(wǎng)屏蔽了。
缺省值
我們來看看缺省的子網(wǎng)屏蔽值,它用于一個(gè)還沒有劃分子網(wǎng)的網(wǎng)絡(luò)。即使是在一個(gè)單段網(wǎng)絡(luò)上,每臺(tái)主機(jī)也都需要這樣的缺省值。
它的形式依賴于網(wǎng)絡(luò)的地址類型。在它的4個(gè)字節(jié)里,所有對(duì)應(yīng)網(wǎng)絡(luò)號(hào)的位都被置為1,于是每個(gè)八位體的十進(jìn)制值都是255;所有對(duì)就主機(jī)號(hào)的位都置為0。例如:C類網(wǎng)地址192.168.0.1和相應(yīng)的缺省屏蔽值255.255.255.0。
確定數(shù)據(jù)包的目的地址
我們說把屏蔽值和IP地址值做“與”的操作其實(shí)是一個(gè)內(nèi)部過程,它用來確定一個(gè)數(shù)據(jù)包是傳給本地還是遠(yuǎn)程網(wǎng)絡(luò)上的主機(jī)。其相應(yīng)的操作過程是這樣的:當(dāng)TCP/IP初始化時(shí),主機(jī)的IP地址和子網(wǎng)屏蔽值相“與”。在數(shù)據(jù)包被發(fā)送之前,再把目的地址也和屏蔽值作“與”,這樣如果發(fā)現(xiàn)源IP地址和目的IP地址相匹配,IP協(xié)議就知道數(shù)據(jù)包屬于本地網(wǎng)上的某臺(tái)主機(jī);否則數(shù)據(jù)包將被送到路由器上。
注:我們知道“與”操作是將IP地址中的每一位與子網(wǎng)屏蔽中相應(yīng)的位按邏輯與作比較。
建立子網(wǎng)
1、 子網(wǎng)簡介
一個(gè)網(wǎng)絡(luò)實(shí)際上可能會(huì)有多個(gè)物理網(wǎng)段,我們把這些網(wǎng)段稱之為子網(wǎng),其使用的IP地址是由某個(gè)網(wǎng)絡(luò)號(hào)派生而得到的。
將一個(gè)網(wǎng)絡(luò)劃分成若干個(gè)子網(wǎng),需要使用不同的網(wǎng)絡(luò)號(hào)或子網(wǎng)號(hào)。當(dāng)然了,劃分子網(wǎng)有它的優(yōu)點(diǎn),通過劃分子網(wǎng),每個(gè)單位可以將復(fù)雜的物理網(wǎng)段連接成一個(gè)網(wǎng)絡(luò),并且可以:
(1) 混合使用多種技術(shù),比如以太網(wǎng)和令牌環(huán)網(wǎng)。(最流行的兩種接口都支持了哦)
(2) 克服當(dāng)前技術(shù)的限制,比如突破每段主機(jī)的最大數(shù)量限制。
(3) 通過重定向傳輸以及減少廣播等傳輸方式以減輕網(wǎng)絡(luò)的擁擠。
實(shí)現(xiàn)子網(wǎng)劃分
在動(dòng)手劃分子網(wǎng)之前,我們一定要先分析一下自己的需求以及將來的規(guī)劃。一般情況下我們遵循這樣的準(zhǔn)則:
(1) 確定網(wǎng)絡(luò)中的物理段數(shù)量。(就是子網(wǎng)個(gè)數(shù)嘛)
(2) 確定每個(gè)子網(wǎng)需要的主機(jī)數(shù)。注意一個(gè)主機(jī)至少一個(gè)IP地址。
(3) 基于此需求,定義:整個(gè)網(wǎng)絡(luò)的子網(wǎng)屏蔽、每個(gè)子網(wǎng)唯一的子網(wǎng)號(hào)和每個(gè)子網(wǎng)的主機(jī)號(hào)范圍。
子網(wǎng)屏蔽位
在定義一個(gè)子網(wǎng)屏蔽之前,確定一下將來需要的子網(wǎng)數(shù)量及每子網(wǎng)的主機(jī)數(shù)是必不可少的一步。因?yàn)楫?dāng)更多的位用于子網(wǎng)屏蔽時(shí),就有更多的可用子網(wǎng)了,但每個(gè)子網(wǎng)中的主機(jī)數(shù)將減少。(這和定義IP地址的概念正好相反)
2、定義子網(wǎng)屏蔽
將網(wǎng)絡(luò)劃分成若干個(gè)子網(wǎng)時(shí),必須要定義好子網(wǎng)屏蔽。我們來看看定義的步驟:
(1)確定物理網(wǎng)段也就是子網(wǎng)的個(gè)數(shù),并將這個(gè)數(shù)字轉(zhuǎn)換成二進(jìn)制數(shù)。比如B類地址,分6個(gè)子網(wǎng)就是110。
(2)計(jì)算物理網(wǎng)段數(shù)(子網(wǎng)數(shù))的二進(jìn)制位數(shù),這里是110,所以需要3位。
(3)以高位順序(從左到右)將這個(gè)反碼轉(zhuǎn)換成相應(yīng)的十進(jìn)制值,因?yàn)樾枰?位,就將主機(jī)號(hào)前3位作為子網(wǎng)號(hào),這里是11100000,所以屏蔽就是255.255.254.0。
3、定義子網(wǎng)號(hào)
子網(wǎng)號(hào)與子網(wǎng)屏蔽的位數(shù)相同。
(1)列出子網(wǎng)號(hào)按高到低的順序使用的位數(shù)。例如子網(wǎng)屏蔽使用了3位,二進(jìn)制值是11100000。
(2)將最低的一位1轉(zhuǎn)換成十進(jìn)制,用這個(gè)值來定義子網(wǎng)的增量。這個(gè)例子中是1110,所以增量是32。
(3)用這個(gè)增量迭加從0開始的子網(wǎng)號(hào),直到下一個(gè)值為256。這個(gè)例子中就是w.x.32.1-w.x.63.254、w.x.64.1-w.x.127.254等。
4、定義子網(wǎng)中的主機(jī)號(hào)
從上面的例子看出,一旦定義了子網(wǎng)號(hào),就已經(jīng)確定了每個(gè)子網(wǎng)的主機(jī)號(hào)了。我們?cè)谧雒看卧隽亢蟮贸龅闹当砻髁俗泳W(wǎng)中主機(jī)號(hào)范圍的起始值。
確定每個(gè)子網(wǎng)中的主機(jī)數(shù)目
(1)計(jì)算主機(jī)號(hào)可用的位數(shù)。例如在B類網(wǎng)中用3位定義了網(wǎng)絡(luò)號(hào),那么余下的13位定義了主機(jī)號(hào)。
(2)將這個(gè)余下的位數(shù)也就是主機(jī)號(hào)轉(zhuǎn)換為十進(jìn)制,再減去1。例如13位值1111111111111轉(zhuǎn)換為十進(jìn)制的話就是8191,所以這個(gè)網(wǎng)絡(luò)中每個(gè)子網(wǎng)的主機(jī)數(shù)就是8190了。
--------------------------------------------------------------------------------
實(shí)現(xiàn)IP路由
1、IP路由簡介
路由就是選擇一條數(shù)據(jù)包傳輸路徑的過程。當(dāng)TCP/IP主機(jī)發(fā)送IP數(shù)據(jù)包時(shí),便出現(xiàn)了路由,且當(dāng)?shù)竭_(dá)IP路由器還會(huì)再次出現(xiàn)。路由器是從一個(gè)物理網(wǎng)向另一個(gè)物理網(wǎng)發(fā)送數(shù)據(jù)包的裝置,路由器通常被稱為網(wǎng)關(guān)。對(duì)于發(fā)送的主機(jī)和路由器而言,必須決定向哪里轉(zhuǎn)發(fā)數(shù)據(jù)包。在決定路由時(shí),IP層查詢位于內(nèi)存中的路由表。
(1)當(dāng)一個(gè)主機(jī)試圖與另一個(gè)主機(jī)通信時(shí),IP首先決定目的主機(jī)是一個(gè)本地網(wǎng)還是遠(yuǎn)程網(wǎng)。
(2)如果目的主機(jī)是遠(yuǎn)程網(wǎng),IP將查詢路由表來為遠(yuǎn)程主機(jī)或遠(yuǎn)程網(wǎng)選擇一個(gè)路由。
(3)若未找到明確的路由,IP用缺省的網(wǎng)關(guān)地址將一個(gè)數(shù)據(jù)傳送給另一個(gè)路由器。
(4)在該路由器中,路由表再次為遠(yuǎn)程主機(jī)或網(wǎng)絡(luò)查詢路由,若還未找到路由,該數(shù)據(jù)包將發(fā)送到該路由器的缺省網(wǎng)關(guān)地址。
每發(fā)現(xiàn)一條路由,數(shù)據(jù)包被轉(zhuǎn)送下一級(jí)路由器,稱為一次“跳步”,并最終發(fā)送至目的主機(jī)。
若未發(fā)現(xiàn)任何一個(gè)路由,源主機(jī)將收到一個(gè)出錯(cuò)信息。
--------------------------------------------------------------------------------
TCP/IP協(xié)議介紹
TCP/IP的通訊協(xié)議
這部分簡要介紹一下TCP/IP的內(nèi)部結(jié)構(gòu),為討論與互聯(lián)網(wǎng)有關(guān)的安全問題打下基礎(chǔ)。TCP/IP協(xié)議組之所以流行,部分原因是因?yàn)樗梢杂迷诟鞣N各樣的信道和底層協(xié)議(例如T1和X.25、以太網(wǎng)以及RS-232串行接口)之上。確切地說,TCP/IP協(xié)議是一組包括TCP協(xié)議和IP協(xié)議,UDP(User Datagram Protocol)協(xié)議、ICMP(Internet Control Message Protocol)協(xié)議和其他一些協(xié)議的協(xié)議組。
TCP/IP整體構(gòu)架概述
TCP/IP協(xié)議并不完全符合OSI的七層參考模型。傳統(tǒng)的開放式系統(tǒng)互連參考模型,是一種通信協(xié)議的7層抽象的參考模型,其中每一層執(zhí)行某一特定任務(wù)。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數(shù)據(jù)鏈路層、網(wǎng)路層、傳輸層、話路層、表示層和應(yīng)用層。而TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這4層分別為:
應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。
傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又校@一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。
互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(IP)。
網(wǎng)絡(luò)接口層:對(duì)實(shí)際的網(wǎng)絡(luò)媒體的管理,定義如何使用實(shí)際網(wǎng)絡(luò)(如Ethernet、Serial Line等)來傳送數(shù)據(jù)。
TCP/IP中的協(xié)議
以下簡單介紹TCP/IP中的協(xié)議都具備什么樣的功能,都是如何工作的:
1. IP
網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。
IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)。
高層的TCP和UDP服務(wù)在接收數(shù)據(jù)包時(shí),通常假設(shè)包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個(gè)有效的主機(jī)發(fā)送來的。IP確認(rèn)包含一個(gè)選項(xiàng),叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對(duì)于一些TCP和UDP的服務(wù)來說,使用了該選項(xiàng)的IP包好象是從路徑上的最后一個(gè)系統(tǒng)傳遞過來的,而不是來自于它的真實(shí)地點(diǎn)。這個(gè)選項(xiàng)是為了測試而存在的,說明了它可以被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。那么,許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問題并且會(huì)被非法入侵。
2. TCP
如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向‘上’傳送到TCP層。TCP將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號(hào)和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動(dòng)程序和物理介質(zhì),最后到接收方。
面向連接的服務(wù)(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發(fā)送和接收域名數(shù)據(jù)庫),但使用UDP傳送有關(guān)單個(gè)主機(jī)的信息。
3.UDP
UDP與TCP位于同一層,但對(duì)于數(shù)據(jù)包的順序錯(cuò)誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面向查詢---應(yīng)答的服務(wù),例如NFS。相對(duì)于FTP或Telnet,這些服務(wù)需要交換的信息量較小。使用UDP的服務(wù)包括NTP(網(wǎng)落時(shí)間協(xié)議)和DNS(DNS也使用TCP)。
欺騙UDP包比欺騙TCP包更容易,因?yàn)閁DP沒有建立初始化連接(也可以稱為握手)(因?yàn)樵趦蓚(gè)系統(tǒng)間沒有虛電路),也就是說,與UDP相關(guān)的服務(wù)面臨著更大的危險(xiǎn)。
4.ICMP
ICMP與IP位于同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關(guān)通向目的地址的路徑信息。ICMP的‘Redirect’信息通知主機(jī)通向其他系統(tǒng)的更準(zhǔn)確的路徑,而‘Unreachable’信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接‘體面地’終止。PING是最常用的基于ICMP的服務(wù)。
5. TCP和UDP的端口結(jié)構(gòu)
TCP和UDP服務(wù)通常有一個(gè)客戶/服務(wù)器的關(guān)系,例如,一個(gè)Telnet服務(wù)進(jìn)程開始在系統(tǒng)上處于空閑狀態(tài),等待著連接。用戶使用Telnet客戶程序與服務(wù)進(jìn)程建立一個(gè)連接?蛻舫绦蛳蚍⻊(wù)進(jìn)程寫入信息,服務(wù)進(jìn)程讀出信息并發(fā)出響應(yīng),客戶程序讀出響應(yīng)并向用戶報(bào)告。因而,這個(gè)連接是雙工的,可以用來進(jìn)行讀寫。
兩個(gè)系統(tǒng)間的多重Telnet連接是如何相互確認(rèn)并協(xié)調(diào)一致呢?TCP或UDP連接唯一地使用每個(gè)信息中的如下四項(xiàng)進(jìn)行確認(rèn):
源IP地址---發(fā)送包的IP地址。
目的IP地址---接收包的IP地址。
源端口---源系統(tǒng)上的連接的端口。
目的端口---目的系統(tǒng)上的連接的端口。
端口是一個(gè)軟件結(jié)構(gòu),被客戶程序或服務(wù)進(jìn)程用來發(fā)送和接收信息。一個(gè)端口對(duì)應(yīng)一個(gè)16比特的數(shù)。服務(wù)進(jìn)程通常使用一個(gè)固定的端口,例如,SMTP使用25、Xwindows使用6000。這些端口號(hào)是‘廣為人知’的,因?yàn)樵诮⑴c特定的主機(jī)或服務(wù)的連接時(shí),需要這些地址和目的地址進(jìn)行通訊。
--------------------------------------------------------------------------------
TCP/IP遠(yuǎn)程訪問操作
TCP/IP網(wǎng)絡(luò)通信軟件包使用遠(yuǎn)程訪問的命令,這些命令首先是由UC Berkely為Arpanet開發(fā)的。它允許您遠(yuǎn)程注冊(cè)到另一個(gè)系統(tǒng)中,并從一個(gè)系統(tǒng)復(fù)制文件到另一個(gè)系統(tǒng)。您能取得關(guān)于一個(gè)系統(tǒng)的信息,比如當(dāng)前誰正在注冊(cè)使用。調(diào)用一個(gè)系統(tǒng)的地址時(shí),這些遠(yuǎn)程命令使用域名或IP地址。和TCP/IP遠(yuǎn)程訪問命令一樣,域名地址開始好是為在Arpanet上使用而設(shè)計(jì)。
許多TCP/IP命令可以和用在Internet上的網(wǎng)絡(luò)通信功能相比較。例如,用TCP/IP命令rlogin可以遠(yuǎn)程注冊(cè)到一個(gè)系統(tǒng),它和telnet相似。rcp命令能遠(yuǎn)程復(fù)制文件,它執(zhí)行和ftp相同的功能。TCP/IP命令的不同之處是它們提供給用戶的易用和易控制性。您能很容易地訪問在不同的Unix或Linux系統(tǒng)中的帳號(hào),并且能控制訪問這些帳號(hào)但沒有提供口令的用戶。事實(shí)上您能提供給不同的用戶提供關(guān)于您的帳號(hào)的一種組權(quán)限。
一、TCP/IP網(wǎng)絡(luò)系統(tǒng)信息:rwho,uptime和ping
這些命令是一些TCP/IP命令,通過它們,您能從網(wǎng)絡(luò)中的不同系統(tǒng)上取得信息。您能找到誰正在注冊(cè),得到另一個(gè)系統(tǒng)中用戶的信息,或查詢一個(gè)系統(tǒng)是否正在運(yùn)行。例如,rwho命令和who命令的功能很相似。它顯示網(wǎng)絡(luò)中的每個(gè)系統(tǒng)的當(dāng)前注冊(cè)的用戶。
$rwho
violet robert:tty1 Sept 10 10:34
garnet chris:tty2 Sept 10 09:22
命令ruptime可以顯示網(wǎng)絡(luò)中的每個(gè)系統(tǒng)的信息。此信息能顯示出每個(gè)系統(tǒng)是如何執(zhí)行。ruptime顯示系統(tǒng)是否運(yùn)行,它運(yùn)行了多久,系統(tǒng)中的用戶數(shù)和系統(tǒng)在最后5、10和15分鐘內(nèi)的系統(tǒng)負(fù)荷。
$ruptime
violet up 11+04:10, 8 users, load 1.20 1.10
garnet up 11+04:10, 20 users, load 1.50 1.30
命令ping能檢測出系統(tǒng)是否啟動(dòng)和運(yùn)行。ping命令加上您想檢測的系統(tǒng)名做為參數(shù),下面的例子將檢測violet是否啟動(dòng)并連接在網(wǎng)絡(luò)中。
$ping violet
violet is alive
$
如果您想檢測的系統(tǒng)已經(jīng)關(guān)機(jī),將得到一個(gè)如下的響應(yīng)。這種情況下,garnet是關(guān)閉并沒有連接到網(wǎng)絡(luò)中。
$ping garnet
no answer from garnet
$
二、遠(yuǎn)程訪問權(quán)限:.rhosts
您能用.rhosts文件控制使用TCP/IP命令對(duì)您帳號(hào)的訪問。用戶能用標(biāo)準(zhǔn)的編輯器象Vi來創(chuàng)建他們帳號(hào)中的.rhosts文件。它必須位于用戶的主目錄。下面的例子中,使用者顯示文件.rhosts文件的內(nèi)容。
$cat.rhosts
garnet chris
ciolet robert
使用.rhosts文件是一種允許用戶不提供口令而訪問您的系統(tǒng)的簡單方法。如果需要禁止此用戶訪問,只須簡單地從文件.rhost中刪除系統(tǒng)各和用戶注冊(cè)名。如果一個(gè)用戶的注冊(cè)名和系統(tǒng)名在文件.rhost中,那么此用戶即呆不提供口令直接訪問系統(tǒng)。并不是所有的遠(yuǎn)程注冊(cè)操作都需要這種訪問形式(您能用輸入口令的方式來替代);但一些遠(yuǎn)程命令要求有.rhosts文件,象遠(yuǎn)程復(fù)制文件或遠(yuǎn)程執(zhí)行Linux命令。如果您想在遠(yuǎn)程系統(tǒng)的帳號(hào)中招待這些命令,此帳號(hào)的.rhosts文件中必須有您 的注冊(cè)名和系統(tǒng)名。
通過.rhosts對(duì)某一系統(tǒng)進(jìn)行訪問時(shí),也允許您使用TCP/IP命令直接訪問系統(tǒng)中您的其他帳號(hào)。您不需要先注冊(cè)到這些帳號(hào)中?梢园严到y(tǒng)中您的其他帳號(hào)做為當(dāng)前注冊(cè)帳號(hào)的擴(kuò)展。不管文件牌佻 的哪個(gè)賬號(hào)下,都可以用frcp命令從一個(gè)目錄復(fù)制到另一個(gè)目錄。用命令rsh,可以在您的其他帳號(hào)中招待任何Linux命令。
三、遠(yuǎn)程注冊(cè):rlogin
您可能在網(wǎng)絡(luò)中的不同系統(tǒng)上都有自己的帳號(hào),或者可以訪問別人在另一個(gè)系統(tǒng)上的帳號(hào)。要訪問別的系統(tǒng)中的帳號(hào),首先要注冊(cè)到您的系統(tǒng)中,接著通過網(wǎng)絡(luò)遠(yuǎn)程注冊(cè)到帳號(hào)所在的系統(tǒng)中。用命令rlogin可以遠(yuǎn)程注冊(cè)支別的系統(tǒng)。命令的參數(shù)應(yīng)是一個(gè)系統(tǒng)名。命令將把您連接到另一個(gè)系統(tǒng)中并開始注冊(cè)的過程.
用rlogin的注冊(cè)過程和一般的注冊(cè)過程有所不同,用rlogin時(shí)用戶不被提示輸入注冊(cè)名。rlogin假設(shè)您的本地系統(tǒng)中的注冊(cè)名和遠(yuǎn)程系統(tǒng)中的一致。所以象上面執(zhí)行rlogin命令時(shí),您將馬上被提示輸入口令。輸入口令后,您即可進(jìn)入遠(yuǎn)程系統(tǒng)各的帳號(hào)。
用rlogin假設(shè)注冊(cè)各是相同的,因?yàn)榇蠖鄶?shù)的人用rlogin訪問別的系統(tǒng)中的注冊(cè)名一般和本地的注冊(cè)名是相同的。然而,當(dāng)遠(yuǎn)程系統(tǒng)中的注冊(cè)名和本地系統(tǒng)的不同時(shí),選項(xiàng)1-允許您輸入遠(yuǎn)程系統(tǒng)帳戶的不同的注冊(cè)名。語法如下所示:
$rlogin sys tem-name -1 login-name
在下面的例子中,用戶使用注冊(cè)名robert注冊(cè)到violet的系統(tǒng)中。
$rlogin violet-1 robert
password
$
: 一旦注冊(cè)到遠(yuǎn)程系統(tǒng)中,您能執(zhí)行任何命令?梢杂胑xit、CTRL-d或logout(TCSH或C-shell)結(jié)束連接。
四、遠(yuǎn)程復(fù)制文件:rcp
您能用命令rcp從遠(yuǎn)程系統(tǒng)復(fù)制文件到本地系統(tǒng)中。rcp執(zhí)行文件傳輸?shù)墓δ埽牟僮骱蚦p命令很相似,但它是通過網(wǎng)絡(luò)連接到另一系統(tǒng)。執(zhí)行命令rcp時(shí)要求遠(yuǎn)程系統(tǒng)的。rhosts文件中有您的本地系統(tǒng)名和注冊(cè)各。命令rcp用關(guān)鍵字rcp開頭,參數(shù)為源文件名和復(fù)制的目標(biāo)文件名。為了指定文件在遠(yuǎn)程系統(tǒng)中,您需要在文件名前放置一個(gè)系統(tǒng)名,兩者之間用冒號(hào)分隔,如下所示:
$rcp sys tem-name:source-file slystem-name:copy-file
當(dāng)復(fù)制一個(gè)文件到遠(yuǎn)程系統(tǒng)中時(shí),復(fù)制的目標(biāo)文件是遠(yuǎn)程文件,它要求帶有系統(tǒng)名。而源文件在您的本機(jī)系統(tǒng)中,不要求系統(tǒng)名:
$rcp source-file remote-sys tem-name:copy-file
在下面的例子中,用戶從自己的系統(tǒng)中復(fù)制文件weather到遠(yuǎn)程系統(tǒng)violet并重命名為monday.
$rcp weather violet:Monday
從遠(yuǎn)程系統(tǒng)中復(fù)制一個(gè)文件到本地時(shí),源文件是遠(yuǎn)程文件,它要求帶有系統(tǒng)名。而復(fù)制的目標(biāo)文件在您的本機(jī)系統(tǒng)中,不要求系統(tǒng)名:
$rcp remote-sys tem-name:source-file copy-file
在下面的例子中,用戶從遠(yuǎn)程系統(tǒng)之間復(fù)制整個(gè)目錄。rcp命令加上-r選項(xiàng)將從一個(gè)系統(tǒng)復(fù)制一個(gè)目錄和它的子目錄到另一個(gè)系統(tǒng)。象cp命令一樣,rcp要求一個(gè)源目錄和復(fù)制目錄。在遠(yuǎn)程系統(tǒng)中的目錄要求系統(tǒng)名和一個(gè)以分隔系統(tǒng)名和目錄名的冒號(hào),以及目錄名。當(dāng)從您的系統(tǒng)復(fù)制目錄到一個(gè)遠(yuǎn)程系統(tǒng),則在遠(yuǎn)程系統(tǒng)中的復(fù)制目錄需要遠(yuǎn)程系統(tǒng)名。
$rcp -r source-directory remote-sys tem-name:copy-directory
在下面的例子中,使用者把目錄letters復(fù)制到遠(yuǎn)程系統(tǒng)violet中的目錄oldnotes中。
$rcp-r letters violet ldnotes
當(dāng)從您的系統(tǒng)復(fù)制一個(gè)遠(yuǎn)程系統(tǒng)中的目錄到本地時(shí),在遠(yuǎn)程系統(tǒng)中的源目錄需要遠(yuǎn)程系統(tǒng)名。
$rcp-r remote-sys tem-name:source-directory copy-directory
在下面的例子中,使用者把遠(yuǎn)程系統(tǒng)violet中的目錄birthdays復(fù)制到本地的目錄party中。
$rcp-r violet:birthdays party
同時(shí),您可以用星號(hào)指定名字,或用圓點(diǎn)引用當(dāng)前目錄。對(duì)于Shell的特殊字符,是由您的本地系統(tǒng)進(jìn)行解釋轉(zhuǎn)換,而不是遠(yuǎn)程系統(tǒng)。為了使遠(yuǎn)程系統(tǒng)解釋轉(zhuǎn)換一個(gè)特定字符,您必須通進(jìn)某種方式引用它。為了復(fù)制遠(yuǎn)程系統(tǒng)種所有帶擴(kuò)展名.c的文件到您的系統(tǒng)中,您需要用特殊字符-星號(hào):*.c來指定所有的帶擴(kuò)展名.c的文件。您必須注意引用星號(hào)的方式。下面的例子中,在系統(tǒng)violet中的帶.c擴(kuò)展名的文件被復(fù)制到使用者的系統(tǒng)中。注意,星號(hào)是通過一個(gè)反斜杠引用。而最后的圓點(diǎn),表示當(dāng)前的目錄,并沒被引用。它是由您的本地系統(tǒng)解釋并轉(zhuǎn)換的。
$rcp violet:\*.c
下面的例子中,目錄report將從使用者的本地系統(tǒng)復(fù)制到遠(yuǎn)程系統(tǒng)的當(dāng)前目錄中。注意圓點(diǎn)被引用,它將被遠(yuǎn)程系統(tǒng)解釋轉(zhuǎn)換。
$rcp -r reports violet:\.
五、遠(yuǎn)程執(zhí)行:rsh
您可能需要在遠(yuǎn)程系統(tǒng)中執(zhí)行一個(gè)命令。rsh命令將在遠(yuǎn)程Linux系統(tǒng)上執(zhí)行一個(gè)命令并把結(jié)果顯示到您的系統(tǒng)中。當(dāng)然,您的系統(tǒng)名和注冊(cè)名必須在遠(yuǎn)程系統(tǒng)的.rhosts文件中,命令rsh有兩個(gè)一般的參數(shù),一個(gè)系統(tǒng)名和一個(gè)Linux命令。語法如下所示:
$rsh remote-sytem-neame Linux-command
在下面的例子中,rsh命令將在遠(yuǎn)程系統(tǒng)violet中執(zhí)行一個(gè)ls命令以列出在violet中目錄/home/robert中的文件。
$rsh violet ls /home/robert
除非是引用特定字符,否則它將被本李系統(tǒng)解釋轉(zhuǎn)換,對(duì)于控制標(biāo)準(zhǔn)輸出的特殊字符更是如此,象重定向或管道字符。下面的例了中列出遠(yuǎn)程系統(tǒng)上的文件,并把它們送到本系統(tǒng)中的標(biāo)準(zhǔn)輸出。重定向操作由本地系統(tǒng)解釋,并把輸出改向到本地系統(tǒng)中的文件myfiles中。
$rsh violet ls /home/robert>;myfiles
如您引用一個(gè)特定字符,它將成為Linux命令的一部分被遠(yuǎn)程系統(tǒng)解釋。引用重定向操作符將允許您在遠(yuǎn)程系統(tǒng)中執(zhí)行重定向操作。下面的例子中,引用一個(gè)重定向操作符。它變成Linux命令的一部分,包括命令的參數(shù),文件名myfile。命令ls產(chǎn)生一列文件名并把它們重定向到遠(yuǎn)程系統(tǒng)中的一個(gè)文件myfile中。
$rsh violet ls /home/robert'>;'myfiles
對(duì)于管道操作也是如此。下面例子中第一個(gè)命令輸出一列文件到本地的打印機(jī)中。標(biāo)準(zhǔn)的輸出能過管道輸出到您的在線打印機(jī)中。第二個(gè)命令中,一列文件將輸出遠(yuǎn)程系統(tǒng)的打印機(jī)上。管道線被遠(yuǎn)程系統(tǒng)解釋。輸送標(biāo)準(zhǔn)輸出到遠(yuǎn)程系統(tǒng)的打印機(jī)上。
--------------------------------------------------------------------------------
(安全篇)
TCP/IP的層次不同提供的安全性也不同,例如,在網(wǎng)絡(luò)層提供虛擬私用網(wǎng)絡(luò),在傳輸層提供安全套接服務(wù)。下面將分別介紹TCP/IP不同層次的安全性和提高各層安全性的方法。
一、Internet層的安全性
對(duì)Internet層的安全協(xié)議進(jìn)行標(biāo)準(zhǔn)化的想法早就有了。在過去十年里,已經(jīng)提出 了一些方案。例如,“安全協(xié)議3號(hào)(SP3)”就是美國國家安全局以及標(biāo)準(zhǔn)技術(shù)協(xié) 會(huì)作為“安全數(shù)據(jù)網(wǎng)絡(luò)系統(tǒng)(SDNS)”的一部分而制定的!熬W(wǎng)絡(luò)層安全協(xié)議(NLS P)”是由國際標(biāo)準(zhǔn)化組織為“無連接網(wǎng)絡(luò)協(xié)議(CLNP)”制定的安全協(xié)議標(biāo)準(zhǔn)。 “集成化NLSP(I-NLSP)”是美國國家科技研究所提出的包括IP和CLNP在內(nèi)的統(tǒng)一 安全機(jī)制。SwIPe是另一個(gè)Intenet層的安全協(xié)議,由Ioannidis和Blaze提出并實(shí) 現(xiàn)原型。所有這些提案的共同點(diǎn)多于不同點(diǎn)。事實(shí)上,他們用的都是IP封裝技術(shù)。 其本質(zhì)是,純文本的包被加密,封裝在外層的IP報(bào)頭里,用來對(duì)加密的包進(jìn)行In ternet上的路由選擇。到達(dá)另一端時(shí),外層的IP報(bào)頭被拆開,報(bào)文被解密,然后 送到收?qǐng)?bào)地點(diǎn)。
Internet工程特遣組(IETF)已經(jīng)特許Internet協(xié)議安全協(xié)議(IPSEC)工作組對(duì)IP安 全協(xié)議(IPSP)和對(duì)應(yīng)的Internet密鑰管理協(xié)議(IKMP)進(jìn)行標(biāo)準(zhǔn)化工作。IPSP的主 要目的是使需要安全措施的用戶能夠使用相應(yīng)的加密安全體制。該體制不僅能在 目前通行的IP(IPv4)下工作,也能在IP的新版本(IPng或IPv6)下工作。該體制應(yīng) 該是與算法無關(guān)的,即使加密算法替換了,也不對(duì)其他部分的實(shí)現(xiàn)產(chǎn)生影響。此 外,該體制必須能實(shí)行多種安全政策,但要避免給不使用該體制的人造成不利影 響。按照這些要求,IPSEC工作組制訂了一個(gè)規(guī)范:認(rèn)證頭(Authentication Hea der,AH)和封裝安全有效負(fù)荷(Encapsulating Security Payload,ESP)。簡言之, AH提供IP包的真實(shí)性和完整性,ESP提供機(jī)要內(nèi)容。
IP AH指一段消息認(rèn)證代碼(Message Authentication Code,MAC),在發(fā)送IP包之 前,它已經(jīng)被事先計(jì)算好。發(fā)送方用一個(gè)加密密鑰算出AH,接收方用同一或另一 密鑰對(duì)之進(jìn)行驗(yàn)證。如果收發(fā)雙方使用的是單鑰體制,那它們就使用同一密鑰; 如果收發(fā)雙方使用的是公鑰體制,那它們就使用不同的密鑰。在后一種情形,AH 體制能額外地提供不可否認(rèn)的服務(wù)。事實(shí)上,有些在傳輸中可變的域,如IPv4中 的time-to-live域或IPv6中的hop limit域,都是在AH的計(jì)算中必須忽略不計(jì)的。 RFC 1828首次規(guī)定了加封狀態(tài)下AH的計(jì)算和驗(yàn)證中要采用帶密鑰的MD5算法。而與 此同時(shí),MD5和加封狀態(tài)都被批評(píng)為加密強(qiáng)度太弱,并有替換的方案提出。
IP ESP的基本想法是整個(gè)IP包進(jìn)行封裝,或者只對(duì)ESP內(nèi)上層協(xié)議的數(shù)據(jù)(運(yùn)輸狀 態(tài))進(jìn)行封裝,并對(duì)ESP的絕大部分?jǐn)?shù)據(jù)進(jìn)行加密。在管道狀態(tài)下,為當(dāng)前已加密 的ESP附加了一個(gè)新的IP頭(純文本),它可以用來對(duì)IP包在Internet上作路由選擇。 接收方把這個(gè)IP頭取掉,再對(duì)ESP進(jìn)行解密,處理并取掉ESP頭,再對(duì)原來的IP包 或更高層協(xié)議的數(shù)據(jù)就象普通的IP包那樣進(jìn)行處理。RFC 1827中對(duì)ESP的格式作了 規(guī)定,RFC 1829中規(guī)定了在密碼塊鏈接(CBC)狀態(tài)下ESP加密和解密要使用數(shù)據(jù)加 密標(biāo)準(zhǔn)(DES)。雖然其他算法和狀態(tài)也是可以使用的,但一些國家對(duì)此類產(chǎn)品的進(jìn) 出口控制也是不能不考慮的因素。有些國家甚至連私用加密都要限制。
AH與ESP體制可以合用,也可以分用。不管怎么用,都逃不脫傳輸分析的攻擊。人 們不太清楚在Internet層上,是否真有經(jīng)濟(jì)有效的對(duì)抗傳輸分析的手段,但是在 Internet用戶里,真正把傳輸分析當(dāng)回事兒的也是寥寥無幾。
1995年8月,Internet工程領(lǐng)導(dǎo)小組(IESG)批準(zhǔn)了有關(guān)IPSP的RFC作為Internet標(biāo) 準(zhǔn)系列的推薦標(biāo)準(zhǔn)。除RFC 1828和RFC 1829外,還有兩個(gè)實(shí)驗(yàn)性的RFC文件,規(guī)定 了在AH和ESP體制中,用安全散列算法(SHA)來代替MD5(RFC 1852)和用三元DES代 替DES(RFC 1851)。
在最簡單的情況下,IPSP用手工來配置密鑰。然而,當(dāng)IPSP大規(guī)模發(fā)展的時(shí)候,就需要在Internet上建立標(biāo)準(zhǔn)化的密鑰管理協(xié)議。這個(gè)密鑰管理協(xié)議按照IPSP安全條例的要求,指定管理密鑰的方法。
因此,IPSEC工作組也負(fù)責(zé)進(jìn)行Internet密鑰管理協(xié)議(IKMP),其他若干協(xié)議的標(biāo)準(zhǔn)化工作也已經(jīng)提上日程。其中最重要的有:
IBM 提出的“標(biāo)準(zhǔn)密鑰管理協(xié)議(MKMP)”
SUN 提出的“Internet協(xié)議的簡單密鑰管理(SKIP)”
Phil Karn 提出的“Photuris密鑰管理協(xié)議”
Hugo Krawczik 提出的“安全密鑰交換機(jī)制(SKEME)”
NSA 提出的“Internet安全條例及密鑰管理協(xié)議”
Hilarie Orman 提出的“OAKLEY密鑰決定協(xié)議”
在這里需要再次強(qiáng)調(diào)指出,這些協(xié)議草案的相似點(diǎn)多于不同點(diǎn)。除MKMP外,它們都要求一個(gè)既存的、完全可操作的公鑰基礎(chǔ)設(shè)施(PKI)。MKMP沒有這個(gè)要求,因?yàn)樗俣p方已經(jīng)共同知道一個(gè)主密鑰(Master Key),可能是事先手工發(fā)布的。SK IP要求Diffie-Hellman證書,其他協(xié)議則要求RSA證書。
1996年9月,IPSEC決定采用OAKLEY作為ISAKMP框架下強(qiáng)制推行的密鑰管理手段, 采用SKIP作為IPv4和IPv6實(shí)現(xiàn)時(shí)的優(yōu)先選擇。目前已經(jīng)有一些廠商實(shí)現(xiàn)了合成的 ISAKMP/OAKLEY方案。
Photuris以及類Photuris的協(xié)議的基本想法是對(duì)每一個(gè)會(huì) 話密鑰都采用Diffie-Hellman密鑰交換機(jī)制,并隨后采用簽名交換來確認(rèn)Diffie --Hellman參數(shù),確保沒有“中間人”進(jìn)行攻擊。這種組合最初是由Diffie、Oos chot和Wiener在一個(gè)“站對(duì)站(STS)”的協(xié)議中提出的。Photuris里面又添加了一 種所謂的“cookie”交換,它可以提供“清障(anti-logging)”功能,即防范對(duì) 服務(wù)攻擊的否認(rèn)。 Photuris以及類Photuris的協(xié)議由于對(duì)每一個(gè)會(huì)話密鑰都采用Diffie-Hellman密 鑰交換機(jī)制,故可提供回傳保護(hù)(back-traffic protection,BTP)和完整轉(zhuǎn)發(fā)安 全性(perfect-forward secrecy,PFS)。實(shí)質(zhì)上,這意味著一旦某個(gè)攻擊者破解 了長效私鑰,比如Photuris中的RSA密鑰或SKIP中的Diffie-Hellman密鑰,所有其 他攻擊者就可以冒充被破解的密碼的擁有者。但是,攻擊者卻不一定有本事破解 該擁有者過去或未來收發(fā)的信息。
值得注意的是,SKIP并不提供BTP和PFS。盡管它采用Diffie-Hellman密鑰交換機(jī) 制,但交換的進(jìn)行是隱含的,也就是說,兩個(gè)實(shí)體以證書形式彼此知道對(duì)方長效 Diffie--Hellman 公鑰,從而隱含地共享一個(gè)主密鑰。該主密鑰可以導(dǎo)出對(duì)分組 密鑰進(jìn)行加密的密鑰,而分組密鑰才真正用來對(duì)IP包加密。一旦長效Diffie-Hel lman密鑰泄露,,則任何在該密鑰保護(hù)下的密鑰所保護(hù)的相應(yīng)通信都將被破解。 而且SKIP是無狀態(tài)的,它不以安全條例為基礎(chǔ)。每個(gè)IP包可能是個(gè)別地進(jìn)行加密 和解密的,歸根到底用的是不同的密鑰。
SKIP不提供BTP和PFS這件事曾經(jīng)引起IPSEC工作組內(nèi)部的批評(píng),該協(xié)議也曾進(jìn)行過 擴(kuò)充,試圖提供BTP和PFS。但是,擴(kuò)充后的SKIP協(xié)議版本其實(shí)是在BTP和PFS功能 的提供該協(xié)議的無狀態(tài)性之間的某種折衷。實(shí)際上,增加了BTP和PFS功能的SKIP 非常類似于Photuris以及類Photuris的協(xié)議,唯一的主要區(qū)別是SKIP(仍然)需要 原來的Diffie-Hellman證書。這一點(diǎn)必須注意:目前在Internet上,RSA證書比其 他證書更容易實(shí)現(xiàn)和開展業(yè)務(wù)。
大多數(shù)IPSP及其相應(yīng)的密鑰管理協(xié)議的實(shí)現(xiàn)均基于Unix系統(tǒng)。任何IPSP的實(shí)現(xiàn)都 必須跟對(duì)應(yīng)協(xié)議棧的源碼糾纏在一起,而這源碼又能在Unix系統(tǒng)上使用,其原因 大概就在于此。但是,如果要想在Internet上更廣泛地使用和采納安全協(xié)議,就 必須有相應(yīng)的DOS或Windows版本。而在這些系統(tǒng)上實(shí)現(xiàn)Internet層安全協(xié)議所直 接面臨的一個(gè)問題就是,PC上相應(yīng)的實(shí)現(xiàn)TCP/IP的公共源碼資源什么也沒有。為 克服這一困難,Wagner和Bellovin實(shí)現(xiàn)了一個(gè)IPSEC模塊,它象一個(gè)設(shè)備驅(qū)動(dòng)程序 一樣工作,完全處于IP層以下。
Internet層安全性的主要優(yōu)點(diǎn)是它的透明性,也就是說,安全服務(wù)的提供不需要 應(yīng)用程序、其他通信層次和網(wǎng)絡(luò)部件做任何改動(dòng)。它的最主要的缺點(diǎn)是: Intern et層一般對(duì)屬于不同進(jìn)程和相應(yīng)條例的包不作區(qū)別。對(duì)所有去往同一地址的包, 它將按照同樣的加密密鑰和訪問控制策略來處理。這可能導(dǎo)致提供不了所需的功 能,也會(huì)導(dǎo)致性能下降。針對(duì)面向主機(jī)的密鑰分配的這些問題,RFC 1825允許(甚 至可以說是推薦) 使用面向用戶的密鑰分配,其中,不同的連接會(huì)得到不同的加 密密鑰。但是,面向用戶的密鑰分配需要對(duì)相應(yīng)的操作系統(tǒng)內(nèi)核作比較大的改動(dòng)。
雖然IPSP的規(guī)范已經(jīng)基本制訂完畢,但密鑰管理的情況千變?nèi)f化,要做的工作還 很多。尚未引起足夠重視的一個(gè)重要的問題是在多播 (multicast)環(huán)境下的密鑰 分配問題,例如,在Internet多播骨干網(wǎng)(MBone)或IPv6網(wǎng)中的密鑰分配問題。
簡而言之,Internet層是非常適合提供基于主機(jī)對(duì)主機(jī)的安全服務(wù)的。相應(yīng)的安 全協(xié)議可以用來在Internet上建立安全的IP通道和虛擬私有網(wǎng)。例如,利用它對(duì) IP包的加密和解密功能,可以簡捷地強(qiáng)化防火墻系統(tǒng)的防衛(wèi)能力。事實(shí)上,許多廠商已經(jīng)這樣做了。RSA數(shù)據(jù)安全公司已經(jīng)發(fā)起了一個(gè)倡議,來推進(jìn)多家防火墻和 TCP/IP軟件廠商聯(lián)合開發(fā)虛擬私有網(wǎng)。該倡議被稱為S-WAN(安全廣域網(wǎng))倡議。其 目標(biāo)是制訂和推薦Internet層的安全協(xié)議標(biāo)準(zhǔn)。
二、傳輸層的安全性
在Internet應(yīng)用編程序中,通常使用廣義的進(jìn)程間通信(IPC)機(jī)制來與不同層次的 安全協(xié)議打交道。比較流行的兩個(gè)IPC編程界面是BSD Sockets和傳輸層界面(TLI), 在Unix系統(tǒng)V命令里可以找到。
在Internet中提供安全服務(wù)的首先一個(gè)想法便是強(qiáng)化它的IPC界面,如BSD Socke ts等,具體做法包括雙端實(shí)體的認(rèn)證,數(shù)據(jù)加密密鑰的交換等。Netscape通信公 司遵循了這個(gè)思路,制定了建立在可靠的傳輸服務(wù)(如TCP/IP所提供)基礎(chǔ)上的安 全套接層協(xié)議(SSL)。SSL版本3(SSL v3)于1995年12月制定。它主要包含以下兩個(gè) 協(xié)議:
SSL記錄協(xié)議 它涉及應(yīng)用程序提供的信息的分段、壓縮、數(shù)據(jù)認(rèn)證和加密。SSL v3提供對(duì)數(shù)據(jù)認(rèn)證用的MD5和SHA以及數(shù)據(jù)加密用的R4和DES等的支持,用來對(duì)數(shù)據(jù) 進(jìn)行認(rèn)證和加密的密鑰可以通過SSL的握手協(xié)議來協(xié)商。
SSL握手協(xié)議 用來交換版本號(hào)、加密算法、(相互)身份認(rèn)證并交換密鑰。SSL v3 提供對(duì)Deffie-Hellman密鑰交換算法、基于RSA的密鑰交換機(jī)制和另一種實(shí)現(xiàn)在 Fortezza chip上的密鑰交換機(jī)制的支持。
Netscape通信公司已經(jīng)向公眾推出了SSL的參考實(shí)現(xiàn)(稱為SSLref)。另一免費(fèi)的S SL實(shí)現(xiàn)叫做SSLeay。SSLref和SSLeay均可給任何TCP/IP應(yīng)用提供SSL功能。Inter net號(hào)碼分配當(dāng)局(IANA)已經(jīng)為具備SSL功能的應(yīng)用分配了固定端口號(hào),例如,帶 SSL的 HTTP(https)被分配的端口號(hào)為443,帶SSL的SMTP(ssmtp)被分配的端口號(hào) 為465,帶SSL的NNTP(snntp)被分配的端口號(hào)為563。
微軟推出了SSL2的改進(jìn)版本稱為PCT(私人通信技術(shù))。至少從它使用的記錄格式來 看,SSL和PCT是十分相似的。它們的主要差別是它們?cè)诎姹咎?hào)字段的最顯著位(T he Most Significant Bit)上的取值有所不同: SSL該位取0,PCT該位取1。這樣 區(qū)分之后,就可以對(duì)這兩個(gè)協(xié)議都給以支持。
1996年4月,IETF授權(quán)一個(gè)傳輸層安全(TLS)工作組著手制定一個(gè)傳輸層安全協(xié)議 (TLSP),以便作為標(biāo)準(zhǔn)提案向IESG正式提交。TLSP將會(huì)在許多地方酷似SSL。 前面已介紹Internet層安全機(jī)制的主要優(yōu)點(diǎn)是它的透明性,即安全服務(wù)的提供不 要求應(yīng)用層做任何改變。這對(duì)傳輸層來說是做不到的。原則上,任何TCP/IP應(yīng)用, 只要應(yīng)用傳輸層安全協(xié)議,比如說SSL或PCT,就必定要進(jìn)行若干修改以增加相應(yīng) 的功能,并使用(稍微)不同的IPC界面。于是,傳輸層安全機(jī)制的主要缺點(diǎn)就是要 對(duì)傳輸層IPC界面和應(yīng)用程序兩端都進(jìn)行修改?墒,比起Internet層和應(yīng)用層的 安全機(jī)制來,這里的修改還是相當(dāng)小的。另一個(gè)缺點(diǎn)是,基于UDP的通信很難在傳 輸層建立起安全機(jī)制來。同網(wǎng)絡(luò)層安全機(jī)制相比,傳輸層安全機(jī)制的主要優(yōu)點(diǎn)是 它提供基于進(jìn)程對(duì)進(jìn)程的(而不是主機(jī)對(duì)主機(jī)的)安全服務(wù)。這一成就如果再加上 應(yīng)用級(jí)的安全服務(wù),就可以再向前跨越一大步了。
三、應(yīng)用層的安全性
必須牢記(且須仔細(xì)品味): 網(wǎng)絡(luò)層(傳輸層)的安全協(xié)議允許為主機(jī)(進(jìn)程)之間的 數(shù)據(jù)通道增加安全屬性。本質(zhì)上,這意味著真正的(或許再加上機(jī)密的)數(shù)據(jù)通道 還是建立在主機(jī)(或進(jìn)程)之間,但卻不可能區(qū)分在同一通道上傳輸?shù)囊粋(gè)具體文 件的安全性要求。比如說,如果一個(gè)主機(jī)與另一個(gè)主機(jī)之間建立起一條安全的IP 通道,那么所有在這條通道上傳輸?shù)腎P包就都要自動(dòng)地被加密。同樣,如果一個(gè) 進(jìn)程和另一個(gè)進(jìn)程之間通過傳輸層安全協(xié)議建立起了一條安全的數(shù)據(jù)通道,那么 兩個(gè)進(jìn)程間傳輸?shù)乃邢⒕投家詣?dòng)地被加密。
如果確實(shí)想要區(qū)分一個(gè)具體文件的不同的安全性要求,那就必須借助于應(yīng)用層的 安全性。提供應(yīng)用層的安全服務(wù)實(shí)際上是最靈活的處理單個(gè)文件安全性的手段。 例如一個(gè)電子郵件系統(tǒng)可能需要對(duì)要發(fā)出的信件的個(gè)別段落實(shí)施數(shù)據(jù)簽名。較低 層的協(xié)議提供的安全功能一般不會(huì)知道任何要發(fā)出的信件的段落結(jié)構(gòu),從而不可 能知道該對(duì)哪一部分進(jìn)行簽名。只有應(yīng)用層是唯一能夠提供這種安全服務(wù)的層次。
一般來說,在應(yīng)用層提供安全服務(wù)有幾種可能的做法,第一個(gè)想到的做法大概就 是對(duì)每個(gè)應(yīng)用(及應(yīng)用協(xié)議)分別進(jìn)行修改。一些重要的TCP/IP應(yīng)用已經(jīng)這樣做了。 在RFC 1421至1424中,IETF規(guī)定了私用強(qiáng)化郵件(PEM)來為基于SMTP的電子郵件系 統(tǒng)提供安全服務(wù)。由于種種理由,Internet業(yè)界采納PEM的步子還是太慢,一個(gè)主 要的原因是PEM依賴于一個(gè)既存的、完全可操作的PKI(公鑰基礎(chǔ)結(jié)構(gòu))。PEM PKI是 按層次組織的,由下述三個(gè)層次構(gòu)成:
頂層為Internet安全政策登記機(jī)構(gòu)(IPRA)
次層為安全政策證書頒發(fā)機(jī)構(gòu)(PCA)
底層為證書頒發(fā)機(jī)構(gòu)(CA)
建立一個(gè)符合PEM規(guī)范的PKI也是一個(gè)政治性的過程,因?yàn)樗枰喾皆谝粋(gè)共同 點(diǎn)上達(dá)成信任。不幸的是,歷史表明,政治性的過程總是需要時(shí)間的,作為一個(gè) 中間步驟,Phil Zimmermann開發(fā)了一個(gè)軟件包,叫做PGP(pretty Good Privacy)。 PGP符合PEM的絕大多數(shù)規(guī)范,但不必要求PKI的存在。相反,它采用了分布式的信 任模型,即由每個(gè)用戶自己決定該信任哪些其他用戶。因此,PGP不是去推廣一個(gè) 全局的PKI,而是讓用戶自己建立自己的信任之網(wǎng)。這就立刻產(chǎn)生一個(gè)問題,就是 分布式的信任模型下,密鑰廢除了怎么辦。
S-HTTP是Web上使用的超文本傳輸協(xié)議(HTTP)的安全增強(qiáng)版本,由企業(yè)集成技術(shù)公 司設(shè)計(jì)。S-HTTP提供了文件級(jí)的安全機(jī)制,因此每個(gè)文件都可以被設(shè)成私人/簽字 狀態(tài)。用作加密及簽名的算法可以由參與通信的收發(fā)雙方協(xié)商。S-HTTP提供了對(duì) 多種單向散列(Hash)函數(shù)的支持,如: MD2,MD5及SHA; 對(duì)多種單鑰體制的支持, 如:DES,三元DES,RC2,RC4,以及CDMF; 對(duì)數(shù)字簽名體制的支持,如: RSA和D SS。
目前還沒有Web安全性的公認(rèn)標(biāo)準(zhǔn)。這樣的標(biāo)準(zhǔn)只能由WWW Consortium,IETF或其 他有關(guān)的標(biāo)準(zhǔn)化組織來制定。而正式的標(biāo)準(zhǔn)化過程是漫長的,可能要拖上好幾年, 直到所有的標(biāo)準(zhǔn)化組織都充分認(rèn)識(shí)到Web安全的重要性。S-HTTP和SSL是從不同角 度提供Web的安全性的。S-HTTP對(duì)單個(gè)文件作“私人/簽字”之區(qū)分,而SSL則把參 與通信的相應(yīng)進(jìn)程之間的數(shù)據(jù)通道按“私用”和“已認(rèn)證”進(jìn)行監(jiān)管。Terisa公 司的SecureWeb工具軟件包可以用來為任何Web應(yīng)用提供安全功能。該工具軟件包 提供有 RSA數(shù)據(jù)安全公司的加密算法庫,并提供對(duì)SSL和S-HTTP的全面支持。
另一個(gè)重要的應(yīng)用是電子商務(wù),尤其是信用卡交易。為使Internet上的信用卡交 易安全起見,MasterCard公司(同IBM,Netscape,GTE和Cybercash一道) 制定了 安全電子付費(fèi)協(xié)議(SEPP),Visa國際公司和微軟(和其他一些公司一道)制定了安 全交易技術(shù)(STT)協(xié)議。同時(shí),MasterCard,Visa國際和微軟已經(jīng)同意聯(lián)手推出I nternet上的安全信用卡交易服務(wù)。他們發(fā)布了相應(yīng)的安全電子交易(SET)協(xié)議, 其中規(guī)定了信用卡持卡人用其信用卡通過Internet進(jìn)行付費(fèi)的方法。這套機(jī)制的 后臺(tái)有一個(gè)證書頒發(fā)的基礎(chǔ)結(jié)構(gòu),提供對(duì)X.509證書的支持。
上面提到的所有這些加安全功能的應(yīng)用都會(huì)面臨一個(gè)主要的問題,就是每個(gè)這樣 的應(yīng)用都要單獨(dú)進(jìn)行相應(yīng)的修改。因此,如果能有一個(gè)統(tǒng)一的修改手段,那就好 多了。通往這個(gè)方向的一個(gè)步驟就是赫爾辛基大學(xué)的Tatu Yloenen開發(fā)的安全sh ell(SSH)。SSH允許其用戶安全地登錄到遠(yuǎn)程主機(jī)上,執(zhí)行命令,傳輸文件。它實(shí) 現(xiàn)了一個(gè)密鑰交換協(xié)議,以及主機(jī)及客戶端認(rèn)證協(xié)議。SSH有當(dāng)今流行的多種Uni x系統(tǒng)平臺(tái)上的免費(fèi)版本,也有由Data Fellows公司包裝上市的商品化版本。
把SSH的思路再往前推進(jìn)一步,就到了認(rèn)證和密鑰分配系統(tǒng)。本質(zhì)上,認(rèn)證和密鑰 分配系統(tǒng)提供的是一個(gè)應(yīng)用編程界面(API),它可以用來為任何網(wǎng)絡(luò)應(yīng)用程序提供 安全服務(wù),例如: 認(rèn)證、數(shù)據(jù)機(jī)密性和完整性、訪問控制以及非否認(rèn)服務(wù)。目前 已經(jīng)有一些實(shí)用的認(rèn)證和密鑰分配系統(tǒng),如: MIT的Kerberos(V4與V5),IBM的Cr yptoKnight和Netwrok Security Program,DEC的SPX,Karlsruhe大學(xué)的指數(shù)安全 系統(tǒng)(TESS)等,都是得到廣泛采用的實(shí)例。甚至可以見到對(duì)有些認(rèn)證和密鑰分配 系統(tǒng)的修改和擴(kuò)充。例如,SESAME和OSF DCE對(duì)Kerberos V5作了增加訪問控制服 務(wù)的擴(kuò)充,Yaksha對(duì)Kerberos V5作了增加非否認(rèn)服務(wù)的擴(kuò)充。
關(guān)于認(rèn)證和密鑰分配系統(tǒng)的一個(gè)經(jīng)常遇到的問題是關(guān)于它們?cè)贗nternet上所受到 的冷遇。一個(gè)原因是它仍要求對(duì)應(yīng)用本身做出改動(dòng)?紤]到這一點(diǎn),對(duì)一個(gè)認(rèn)證 和密鑰分配系統(tǒng)來說,提供一個(gè)標(biāo)準(zhǔn)化的安全API就顯得格外重要。能做到這一點(diǎn), 開發(fā)人員就不必再為增加很少的安全功能而對(duì)整個(gè)應(yīng)用程序大動(dòng)手術(shù)了。因此, 認(rèn)證系統(tǒng)設(shè)計(jì)領(lǐng)域內(nèi)最主要的進(jìn)展之一就是制定了標(biāo)準(zhǔn)化的安全API,即通用安全 服務(wù)API(GSS-API)。GSS-API(v1及v2)對(duì)于一個(gè)非安全專家的編程人員來說可能仍 顯得過于技術(shù)化了些,但德州Austin大學(xué)的研究者們開發(fā)的安全網(wǎng)絡(luò)編程(SNP), 把界面做到了比GSS-API更高的層次,使同網(wǎng)絡(luò)安全性有關(guān)的編程更加方便了。
|
|