網(wǎng)絡(luò)協(xié)議(Protocol)是一種特殊的軟件,是計算機(jī)網(wǎng)絡(luò)實現(xiàn)其功能的最基本機(jī)制。網(wǎng)絡(luò)協(xié)議的本質(zhì)是規(guī)則,即各種硬件和軟件必須遵循的共同守則。網(wǎng)絡(luò)協(xié)議并不是一套單獨的軟件,它融合于其他所有的軟件系統(tǒng)中,因此可以說,協(xié)議在網(wǎng)絡(luò)中無所不在。網(wǎng)絡(luò)協(xié)議遍及OSI通信模型的各個層次,從我們非常熟悉的TCP/IP、HTTP、FTP協(xié)議,到OSPF、IGP等協(xié)議,有上千種之多。對于普通用戶而言,不需要關(guān)心太多的底層通信協(xié)議,只需要了解其通信原理即可。在實際管理中,底層通信協(xié)議一般會自動工作,不需要人工干預(yù)。但是對于第三層以上的協(xié)議,就經(jīng)常需要人工干預(yù)了,比如TCP/IP協(xié)議就需要人工配置它才能正常工作。
局域網(wǎng)常用的三種通信協(xié)議分別是TCP/IP協(xié)議、NetBEUI協(xié)議和IPX/SPX協(xié)議。TCP/IP協(xié)議毫無疑問是這三大協(xié)議中最重要的一個,作為互聯(lián)網(wǎng)的基礎(chǔ)協(xié)議,沒有它就根本不可能上網(wǎng),任何和互聯(lián)網(wǎng)有關(guān)的操作都離不開TCP/IP協(xié)議。不過TCP/IP協(xié)議也是這三大協(xié)議中配置起來最麻煩的一個,單機(jī)上網(wǎng)還好,而通過局域網(wǎng)訪問互聯(lián)網(wǎng)的話,就要詳細(xì)設(shè)置IP地址,網(wǎng)關(guān),子網(wǎng)掩碼,DNS服務(wù)器等參數(shù)。
TCP/IP是個協(xié)議組,可分為三個層次:網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
1.在網(wǎng)絡(luò)層有IP協(xié)議、ICMP協(xié)議、ARP協(xié)議、RARP協(xié)議和BOOTP協(xié)議。
2.在傳輸層中有TCP協(xié)議與UDP協(xié)議。
3.在應(yīng)用層有FTP、HTTP、TELNET、SMTP、DNS等協(xié)議。
因此,HTTP本身就是一個協(xié)議,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
TCP/IP協(xié)議族中包括上百個互為關(guān)聯(lián)的協(xié)議,不同功能的協(xié)議分布在不同的協(xié)議層, 幾個常用協(xié)議如下:
1、Telnet(Remote Login):提供遠(yuǎn)程登錄功能,一臺計算機(jī)用戶可以登錄到遠(yuǎn)程的另一臺計算機(jī)上,如同在遠(yuǎn)程主機(jī)上直接操作一樣。
2、FTP(File Transfer Protocol):遠(yuǎn)程文件傳輸協(xié)議,允許用戶將遠(yuǎn)程主機(jī)上的文件拷貝到自己的計算機(jī)上。
3、SMTP(Simple Mail transfer Protocol):簡單郵政傳輸協(xié)議,用于傳輸電子郵件。
4、NFS(Network File Server):網(wǎng)絡(luò)文件服務(wù)器,可使多臺計算機(jī)透明地訪問彼此的目錄。
5、UDP(User Datagram Protocol):用戶數(shù)據(jù)包協(xié)議,它和TCP一樣位于傳輸層,和IP協(xié)議配合使用,在傳輸數(shù)據(jù)時省去包頭,但它不能提供數(shù)據(jù)包的重傳,所以適合傳輸較短的文件。
HTTP協(xié)議簡介
HTTP協(xié)議的主要特點可概括如下:
1.支持客戶/服務(wù)器模式。
2.簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。
由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
4.無連接:無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
5.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。
HTTP協(xié)議是建立在請求/響應(yīng)模型上的。首先由客戶建立一條與服務(wù)器的TCP鏈接,并發(fā)送一個請求到服務(wù)器,請求中包含請求方法、URI、協(xié)議版本以及相關(guān)的MIME樣式的消息。服務(wù)器響應(yīng)一個狀態(tài)行,包含消息的協(xié)議版本、一個成功和失敗碼以及相關(guān)的MIME式樣的消息。
HTTP/1.0為每一次HTTP的請求/響應(yīng)建立一條新的TCP鏈接,因此一個包含HTML內(nèi)容和圖片的頁面將需要建立多次的短期的TCP鏈接。一次TCP鏈接的建立將需要3次握手。
另外,為了獲得適當(dāng)?shù)膫鬏斔俣龋瑒t需要TCP花費額外的回路鏈接時間(RTT)。每一次鏈接的建立需要這種經(jīng)常性的開銷,而其并不帶有實際有用的數(shù)據(jù),只是保證鏈接的可靠性,因此HTTP/1.1提出了可持續(xù)鏈接的實現(xiàn)方法。HTTP/1.1將只建立一次TCP的鏈接而重復(fù)地使用它傳輸一系列的請求/響應(yīng)消息,因此減少了鏈接建立的次數(shù)和經(jīng)常性的鏈接開銷。
結(jié)論:雖然HTTP本身是一個協(xié)議,但其最終還是基于TCP的。不過,目前,有人正在研究基于TCP+UDP混合的HTTP協(xié)議。
Socket是什么呢?Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計模式中,Socket其實就是一個門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。