1、TCP/IP是個協(xié)議組秧骑,可分為三個層次:網(wǎng)絡(luò)層版确、傳輸層和應(yīng)用層。
在網(wǎng)絡(luò)層有IP協(xié)議乎折、ICMP協(xié)議绒疗、ARP協(xié)議、RARP協(xié)議和BOOTP協(xié)議骂澄。
在傳輸層中有TCP協(xié)議與UDP協(xié)議吓蘑。
在應(yīng)用層有FTP、HTTP坟冲、TELNET磨镶、SMTP、DNS等協(xié)議健提。
因此琳猫,HTTP本身就是一個協(xié)議,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議私痹。
2脐嫂、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)常性的鏈接開銷捣鲸。
3、結(jié)論:雖然HTTP本身是一個協(xié)議闽坡,但其最終還是基于TCP的栽惶。
TCP三次、四次握手
相對于SOCKET開發(fā)者疾嗅,TCP創(chuàng)建過程和連接拆除過程是由TCP/IP協(xié)議棧自動創(chuàng)建的外厂。因此開發(fā)者并不需要控制這個過程。但是對于理解TCP底層運作機制代承,相當(dāng)有幫助汁蝶。
所謂三次握手(Three-way Handshake),是指建立一個TCP連接時论悴,需要客戶端和服務(wù)器總共發(fā)送3個包掖棉。具體流程網(wǎng)上有,在次我不再贅述意荤。三次握手的目的是連接服務(wù)器指定端口啊片,建立TCP連接,并同步連接雙方的序列號和確認(rèn)號并交換 TCP 窗口大小信息.在socket編程中,客戶端執(zhí)行connect()時玖像。將觸發(fā)三次握手紫谷。
TCP的連接的拆除需要發(fā)送四個包,因此稱為四次揮手(four-way handshake)捐寥◇宰颍客戶端或服務(wù)器均可主動發(fā)起揮手動作
TCP與UDP的區(qū)別
附上一張圖片,簡單明了??
Socket是什么呢握恳?
Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層瞒窒,它是一組接口。在設(shè)計模式中乡洼,Socket其實就是一個門面模式崇裁,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說束昵,一組簡單的接口就是全部拔稳,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議锹雏。
相對于SOCKET開發(fā)者巴比,TCP創(chuàng)建過程和連接拆除過程是由TCP/IP協(xié)議棧自動創(chuàng)建的。因此開發(fā)者并不需要控制這個過程。但是對于理解TCP底層運作機制轻绞,相當(dāng)有幫助采记。