簡單理解TCP/IP協議

1、什麼是TCP/IP

  TCP/IP是一個協議族,是由於TCP/IP協議包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等許多協議,這些協議一塊兒稱爲TCP/IP協議。通訊相似於語言的溝通,能夠把協議理解爲語言溝通,你們都說中文,我們兩我的可以互相交流。瀏覽器

  TCP/IP協議族按照層次分爲鏈路層、網絡層、傳輸層、應用層四個層次。(與TCP/IP協議並列的還有OSI網絡框架模型---開放式系統互連參考模型,分爲物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層七個層次)安全

  爲了更加形象的說明協議,能夠把「數據鏈路層」比做一我的,可是這我的不會說話,交流起來比較困難。爲了更方便的交流,便引出了「網絡層」,能夠認爲它是會說話的人,那麼你們都會說話,可是一我的說英語一我的說中文,你們仍是不可以更好的溝通。那麼接下來你們該討論下如何溝通,必須你們都要說中文,這樣你們才能理解彼此說的是什麼意思,「傳輸層」就能夠認爲會說中文的人。這樣在傳輸層你們就能實現正常的通訊了。爲了你們更方便的溝通,或者說讓溝通看起來更加華麗更加實用。這時候「應用層」便應運而生。其實就是更方便,更有效你們溝通,能夠把它比做爲中文說的很好的人。服務器

  按照層次由上到下,層層包裝。cookie

一、應用層:最上面的就是應用層了,這裏面有http,ftp等等咱們熟悉的協議。(TCP/IP的分層中,將OSI參考模型中的會話層、表示層和應用層的功能都集中到了應用程序中實現。TCP/IP應用的架構絕大多數屬於客戶端/服務器模型。)網絡

  負責直接和應用程序接口並提供常見的網絡應用服務,此外,爲了嚮應用程序提供有效的網絡服務,應用層還須要確立相互通訊的應用進程的有效性並提供雙方之間的同步,須要提供應用進程所需的信息交換和遠程操做,須要創建錯誤恢復的機制以保證應用層數據的一致性。(有FTP協議、TFTP協議、Telnet協議、DNS協議、HTTP協議)。session

  向用戶提供一組經常使用的應用程序,好比電子郵件、文件傳輸訪問、遠程登陸等。遠程登陸TELNET使用TELNET協議提供在網絡其它主機上註冊的接口。TELNET會話提供了基於字符的虛擬終端。文件傳輸訪問FTP使用FTP協議來提供網絡內機器間的文件拷貝功能。架構

  DNS協議:主要功能是經過用戶友好的名稱爲用戶提供域名解析服務,即將主機名域名解析爲IP地址。框架

  HTTP協議:超文本傳輸協議,是一種詳細規定了瀏覽器和萬維網服務器之間互相通訊的規則。tcp

  SMTP協議:Simple Mail Transfer Protocol(簡單郵件傳輸協議)。編碼

  SNMP協議:Simple Network manage Protocol(簡單網絡管理協議)。

  FTP協議:File Transfer Protocol(文件傳輸協議)。

應用層的主要應用:

  WWW:瀏覽器和服務端之間通訊所用的協議是HTTP協議,所傳輸數據的主要格式爲HTML,WWW中的HTTP屬於OSI應用層的協議,HTML屬於表示層的協議。

  電子郵件:發送電子郵件時用到的協議是SMTP。最初,只能以文件格式發送電子郵件。而後如今的電子郵件的格式由MIME協議擴展以後,就能夠發送聲音、圖像等各式各樣的信息。MIME屬於表示層的協議。

  文件傳輸(FTP):文件傳輸是指將其它計算機磁盤上的文件轉移到本地計算機上,或將本地磁盤上的文件傳送到其它計算機磁盤上。該文件傳輸過程使用的協議叫作FTP協議。在FTP中進行文件傳輸時會創建兩個TCP鏈接,分別是發送傳輸請求時所要用到的控制鏈接與實際傳輸數據時所要用到的數據鏈接。

  遠程登陸(TELNET與SSH):遠程登陸是指登陸到遠程的計算機上,使那臺計算機上的程序得以運行的一種功能。遠程登陸經常使用TELNET與SSH兩種協議。(固然還有其它一些協議)

  網絡管理(SNMP):在TCP/IP中進行網絡管理時,採用SNMP(Simple Network Management Protocol)協議。使用SNMP協議管理的主機、網橋、路由器等稱做SNMP代理,而進行管理的那一端叫作管理器。SNMP就是這個管理器和代理要用到的協議。在SNMP的代理端,保存着網絡接口的信息、通訊數據量、異常數據量以及設備溫度等信息。這些信息能夠經過MIB(Management Information Base)訪問。所以,在TCP/IP的網絡管理中,SNMP屬於應用協議,MIB屬於表示層協議。

二、傳輸層:著名的TCP和UDP協議就在這個層次(不要告訴我你沒用過UDP玩星際)。

  提供應用程序間的通訊。其功能包括:

  (1)格式化信息流;

  (2)提供可靠傳輸。爲實現後者,傳輸層協議規定接收端必須發回確認,而且假如分組丟失,必須從新發送。

  UDP協議(User Datagram Protocol,用戶數據報協議)是一種不可靠無鏈接的傳輸層協議,不考慮流控制、錯誤控制,沒有重傳機制,不會對分組進行順序檢查和排序。(UDP報頭含8字節定長和2字節倍數的數據<不是2字節倍數時須要填充位>)(UDP是一種面向無鏈接的傳輸層協議。UDP不關心對端是否真正收到了傳送過去的數據。若是須要檢查對端是否收到分組數據包,或者對端是否鏈接到網絡,則須要在應用程序中實現。UDP經常使用在分組數據較少或多播、廣播通訊以及視頻通訊等多媒體領域。

  TCP協議(Transport Control Protocol,傳輸控制協議)是一種面向鏈接、可靠的、基於字節流的傳輸層協議,採用了確認機制、超時重傳機制,還會對接收到的TCP報文段進行從新排列整理。(TCP報頭含20字節定長、選項和填充<選項和填充小於等於40字節>)(TCP是一種面向鏈接的傳輸層協議。它能夠保證兩端通訊主機之間的通訊可達。TCP可以正確處理傳輸過程當中丟包、傳輸順序亂掉等異常狀況。)

  UDP優勢:

    控制選項少,無須創建鏈接,從而使得數據傳輸過程當中的延遲小、數據傳輸效率高。

    UDP適合對可靠性不高,或網絡質量有保障,或對實時性要求較高的應用程序。

  TCP優勢:

    能保證可靠性、穩定性。

    TCP適合用於端到端的通訊,適用於對可靠性要求較高的服務。

三、網絡層:用來處理網絡上流動的數據包(網絡傳輸中最小的數據單元),規定了怎樣的路徑把數據包傳輸到目標計算機,並把數據包傳送給對方。(與tcp/ip協議密切相關的有IP協議、ARP協議、RARP協議)。IP協議就在這裏,它負責對數據加上IP地址和其餘的數據(後面會講到)以肯定傳輸的目標。

負責相鄰計算機之間的通訊。其功能包括三方面。

  (1)處理來自傳輸層的分組發送請求,收到請求後,將分組裝入IP數據報,填充報頭,選擇去往信宿機的路徑,而後將數據報發往適當的網絡接口。

  (2)處理輸入數據報:首先檢查其合法性,而後進行尋徑--假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報還沒有到達信宿,則轉發該數據報。

  (3)處理路徑、流控、擁塞等問題。

  IP協議:Internetworking Protocol(網間網協議),IP是跨越網絡傳送數據包,使整個互聯網都能收到數據的協議。IP也是分組交換的一種協議,可是它不具有重發機制,所以它是不可靠傳輸協議。

  IPv4:頭部由20字節定長和一個可選的變長部分(小於等於40字節)組成,32位記錄源端IP地址,32位記錄目的端IP地址,全部內容長度最大爲2^16=65476字節。

  IPv6:頭部由40字節定長組成。128位記錄源端IP地址,128位記錄目的端IP地址。

  ARP協議:地址解析協議,專用於將32位IP地址映射到網卡的48位MAC地址(從分組數據包的IP地址中解析出物理地址(MAC地址)的一種協議。)。

  RARP協議:主要用於將網卡的48位MAC地址轉換爲32位IP地址。

  ICMP協議:Internet Control Message Protocol(互聯網控制信息協議),IP數據包在傳輸的途中一旦發生異常致使沒法到達目的地址時,須要給發送端發送一個異常通知。ICMP就是爲了這個功能制定的。

四、鏈路層:用來處理鏈接網絡的硬件部分,包括控制操做系統、硬件的設備驅動和網絡適配器,及光纖等物理可見的部分。硬件上的範疇均屬於鏈路層的做用範圍以內。

  TCP/IP軟件的最底層,負責接收IP數據報並經過網絡發送之,或者從網絡上接收物理幀,抽出IP數據報,交給IP層。

  這個層次爲待傳送的數據加入一個以太網協議頭,並進行CRC編碼,爲最後的數據傳輸作準備。再往下則是硬件層次了,負責網絡的傳輸,這個層次的定義包括網線的制式,網卡的定義等等(這些咱們就不用關心了,咱們也不作網卡),因此有些書並不把這個層次放在tcp/ip協議族裏面,由於它幾乎和tcp/ip協議的編寫者沒有任何的關係。

  發送協議的主機從上自下將數據按照協議封裝,而接收數據的主機則按照協議從獲得的數據包解開,最後拿到須要的數據。這種結構很是有棧的味道,因此某些文章也把tcp/ip協議族稱爲tcp/ip協議棧。

通俗理解:

  TCP/UDP是面向傳輸層的協議,HTTP是面向應用層的協議,TCP和UDP使用該協議從一個網絡傳送數據包到另外一個網絡。把IP想像成一種高速公路,它容許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的「卡車」,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等。
  你應該能理解,TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其餘協議的,它們卻有一個顯着的不一樣:TCP提供有保證的數據傳輸,而UDP不提供。這意味着TCP有一個特殊的機制來確保數據安全的不出錯的從一個端點傳到另外一個端點,而UDP不提供任何這樣的保證。另外,TCP是面向鏈接的,能夠類比於打電話,UDP是面向非鏈接的,能夠類比於發短信。
  TCP/IP協議是傳輸層協議,主要解決數據如何在網絡中傳輸,HTTP是應用層協議,主要解決如何包裝數據。
  HTTP(超文本傳輸協議):是利用TCP在兩臺電腦(一般是Web服務器和客戶端)之間傳輸信息的協議。客戶端使用Web瀏覽器發起HTTP請求給Web服務器,Web服務器發送被請求的信息給客戶端。首先它是一個協議,而且是基於TCP/IP協議基礎之上的應用層協議。HTTP協議詳細規定了瀏覽器與服務器之間相互通訊的規則,是萬維網交換信息的基礎。HTTP是基於請求-響應形式而且是短鏈接,而且是無狀態的協議。針對其無狀態特性,在實際應用中又須要有狀態的形式,所以通常會經過session/cookie技術來解決此問題。
  Socket:Socket不屬於協議範疇,而是一個調用接口(API),Socket是對TCP/IP協議的封裝,經過調用Socket,才能使用TCP/IP協議。Socket鏈接是長鏈接,理論上客戶端和服務器端一旦創建鏈接將不會主動斷開此鏈接。Socket鏈接屬於請求-響應形式,服務端可主動將消息推送給客戶端。

2、以HTTP協議爲例的工做流程

  與之密切相關的協議有IP/TCP/DNS

  DNS解析主機名域名爲IP地址後,IP經過ARP解析後找到目的主機,TCP則經過三次握手與目的主機創建鏈接。

  鏈接後,若一方想主動取消鏈接,TCP經過四次揮手與主動主機取消鏈接。
  一、TCP鏈接創建的三次握手過程:

  (前提:A主動打開,B被動打開。客戶端用A表示,服務器端用B表示)

  1. 客戶端發個請求「開門吶,我要進來」給服務器;
  2. 服務器發個「進來吧,我去給你開門」給客戶端;
  3. 客戶端有很客氣的發個「謝謝,我要進來了」給服務器。

 

  二、TCP鏈接釋放的四次揮手過程

  (前提:A主動關閉,B被動關閉。客戶端用A表示,服務器端用B表示)

  

  1. 客戶端發個「時間不早了,我要走了」給服務器,等服務器起身送他;
  2. 服務器聽到了,發個「我知道了,那我送你出門吧」給客戶端,等客戶端走;
  3. 服務器把門關上後,發個「我關門了」給客戶端,而後等客戶端走(尼瑪~矯情啊);
  4. 客戶端發個「我知道了,我走了」,以後本身就走了。

3、當訪問一個網頁時,全部協議在其中的做用以下:

四.深刻理解TCP/IP

相關文章
相關標籤/搜索