爲何要寫這篇博客呢? 對於爲這種記憶力賊差的人來講,寫一篇博客是最好的方式,之後忘了也方便查閱。對於我這樣的小白來講,初學機網,確實得邊學邊記錄下來,這樣更能深刻理解。 注:此文僅爲學習記錄。前端
目前,在計算機網絡領域,TCP/IP 協議名聲很大且範圍很廣。爲何短期內如此普及呢? 這就得講到 ARPANET 的誕生。瀏覽器
最初,在軍事領域,人們爲了防止某一處受到通訊攻擊而致使通訊癱瘓,採起了迂迴線路組成的分佈式通訊,爲了實現這種類型的網絡,分組交換技術應運而生。如圖2.1,2.2。 ARPANET(Advanced Research Projects Agency Network,阿帕網) 是分組交換技術的典型表明,也是全球互聯網的鼻祖。 在20世紀60年代,不少大學和研究機構都開始着力於新的通訊技術。ARPANET 就產生於此時。服務器
容災性較弱的中央集中式網絡 網絡
容災性較強的中央集中式網絡 架構
ARPANET 網的實驗,不只僅是利用幾所大學與研究機構組成的主幹網絡進行分組交換實驗,還會進行在互連計算機之間提供可靠傳輸的綜合性通訊協議的實驗。20世紀70年代前半葉,ARPANET 的一個研究機構發出了TCP/IP。在此以後,TCP/IP 的具體規範最終肯定下來。分佈式
有人可能會認爲 TCP/IP 是指 TCP 和 IP 兩種協議。實際上在不少狀況下,它只是利用 IP 進行通訊時所必須用到的協議羣的統稱。具體來講,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都屬 TCP/IP 的協議。TCP/IP 泛指這些協議,所以,有時也稱 TCP/IP 爲網絡協議族。學習
TCP/IP 是當今計算機網絡界使用最爲普遍的協議。那麼,TCP/IP 到底是什麼?本節對 TCP/IP 作一個簡單的介紹。動畫
從圖不難看出TCP/IP 與 OSI 在分層模塊上稍有區別。OSI 參考模型注重「通訊協議的必要功能是什麼」,而TCP/IP 則更強調「在計算機上實現協議應該開發哪一種程序」。編碼
網絡接口層(叫法不少。例如,網絡接入層、網絡訪問層、網絡連接層)利用以太網中的數據鏈路層進行通訊,所以屬於接口層。能夠把它看成讓 NIC 起做用的「驅動程序」。將須要相互鏈接的節點接入網絡中,從而爲數據傳輸提供條件。操作系統
也能夠叫作網際互聯層、網絡互連層。互聯網層使用 IP 協議,至關於 OSI 模型的第三層網絡層。IP 協議基於IP 地址轉發分包數據。
TCP/IP 分層中的互聯網層與傳輸層的功能一般由操做系統提供。尤爲是路由器,它必須實現經過互聯網層轉發分組數據包的功能。
IP 隱含有數據鏈路層的功能,是分組交換的一種協議,跨越網絡傳送數據包,是整個互聯網都能收到數據的協議,它是用過IP 地址做爲主機的標識。經過IP,相互通訊的主機之間不論通過怎樣的底層數據鏈路都能實現通訊。但它不具備重發機制,未到達對端主機或丟失都不會重發。所以屬於非可靠性傳輸協議。
當IP 數據包在發送途中一旦發生異常沒法到達對端目標地址時,須要給發送端發送一個異常的通知。ICMP 就是爲這一功能而之制定的。有時也被用來診斷網絡的健康情況。
從分組數據包的IP 地址中解析出物理地址(MAC地址)的一種協議。
TCP/IP 的傳輸層有兩個具備表明性的協議。功能和OSI 參考模型中的傳輸層相似。
傳輸層最主要的功能即便可以讓應用程序之間相互實現通訊。
TCP 是一種面向有鏈接的傳輸層協議。它能保證兩端通訊主機之間的通訊可達。正確處理傳輸過程當中出現的丟包、傳輸順序亂掉等異常狀況,此外TCP 協議還可以利用寬帶緩解網絡擁堵。 TCP 的缺點,在傳輸過程當中,爲了創建和斷開鏈接,有時他須要至少7次的發包收包,致使網絡流量的浪費,且TCP 中的各類規範不利於視頻會議等場合使用。
UDP 是一種面向無鏈接的傳輸層協議。UDP 不會關注對端是否收到了傳輸過去的數據,若是須要檢查是否收到分組數據包,或者對端是否鏈接到網絡,則須要在應用程序中實現。 UDP 經常使用於分組數據較少或多播、廣播通訊以及視頻通訊等多媒體領域。
從前面的圖能夠看出,TCP/IP 的應用程序不只要實現 OSI 模型中的應用層的內容,還要實現會話層和表示層的功能。
TCP/IP 應用的架構絕大多數屬於客戶端/服務端模型。提供服務的程序叫作服務端,接受服務的程序叫作客戶端。 假如數據異常、超出負載等狀況,客戶端能夠在稍等片刻後重發一次請求。
www 中文叫萬維網,是一種互聯網數據讀取規範,有時也叫Web、www 或 W3 。用戶在Web 瀏覽器上上網衝浪,瀏覽文字、圖片、動畫等信息,還能播放聲音以及運行程序。 瀏覽器與服務器之間通訊所用的協議是 HTTP(HyperText Transfer Protocol) 所傳輸的數據格式主要是HTML 。WWW 中的 HTML(HyperText Markup Language) 屬於 OSI 應用層的協議,而 HTML 屬於表示層的協議。
發送電子郵件所用到的協議叫作 SMTP (Simple Mail Tranfer Protocol)。最初,人們只能發送文本格式的電子郵件,但如今電子郵件的格式由 MIME 協議擴展之後,能夠發送聲音、圖像等各式各樣的信息。MIME 屬於 OSI 參考模型的第六層--表示層。
文件傳輸是指保存在其餘計算機硬盤上的文件轉移到本地的硬盤上,或者將本地硬盤的文件傳輸到其餘機器硬盤上的意思。 該過程使用的協議叫作 FTP(File Tranfer Protocol),傳輸過程當中能夠選擇用二進制方式仍是文本方式。 在 FTP 中進行文件傳輸時會創建兩個TCP鏈接,分別是發出傳輸請求時所要用到的控制鏈接與實際傳輸數據時所要用到的數據鏈接。
在 TCP/IP中進行網絡管理時,採用 SNMP(Simple Network Management Protocol)協議。使用 SNMP管理的主機、網橋、路由器等稱做 SNMP 代理(Agent),而進行管理的那一段叫作管理器(Manager)。SNMP正是這個 Manager 與 Agent 所要用到的協議。 SNMP可讓管理員及時檢查網絡擁堵問題,爲擴大網絡收集必要的信息。
TCP/IP 如何在媒介進行傳輸?
每一個分層都會對所發送的數據附加一個首部,在這個首部中包含了該層必要信息,如發送的目標地址以及協議相關信息。如圖所示,在下一層的角度看,上一層收到的包所有認爲是本層數據。
以下圖,假設甲給乙發送電子郵件,內容是「早上好」。經過這個例子講解 TCP/IP 通訊原理。
啓動程序,收件人郵箱填好,輸入內容,鼠標點擊發送就開始TCP/IP 的通訊了。 首先,應用程序中會進行編碼處理。至關於OSI 的表示層中的功能。應用在發送郵件的那一刻創建 TCP 鏈接,從而利用這個TCP 鏈接發送數據。將數據發送給下一層的TCP 再作實際的轉發處理。
TCP 根據應用的指示,負責創建、發送數據以及斷開鏈接、發送數據以及斷開鏈接。TCP提供將應用層發來的數據 順利發送到對端的可靠傳輸。爲了實現TCP的這一功能,須要在應用層數據的前端附加一個 TCP 首部。TCP首部包括源端口號和目標端口號(用來識別發送主機跟接收主機上的應用)、序號(用以發送包中哪部分是數據)以及檢驗和(用來判斷數據是否被損壞)。隨後將附加了TCP 首部的包再發送給 IP。
IP 將TCP 傳過來的 TCP 首部和 TCP 數據合起來看成本身的數據,並在TCP 首部的前端再加上本身的 IP 首部。所以,IP數據包中IP首部後面緊跟着 TCP 首部,而後纔是應用的數據首部和數據自己。IP 首部中包含接收端IP 地址以及發送端 IP 地址。緊跟 IP 首部的還有用力判斷後面數據是 TCP 仍是 UDP 的信息。
從IP傳過來的IP 包,對於以太網驅動來講不過就是數據。給者數據附加上以太網首部並進行發送處理。
包的接收過程是發送流程的逆序處理。
做爲計網基礎,TCP/IP 很重要,這僅是一小點基礎,其餘的還請參考下面書籍。