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協議棧。
通俗理解:
與之密切相關的協議有IP/TCP/DNS
DNS解析主機名域名爲IP地址後,IP經過ARP解析後找到目的主機,TCP則經過三次握手與目的主機創建鏈接。
鏈接後,若一方想主動取消鏈接,TCP經過四次揮手與主動主機取消鏈接。
一、TCP鏈接創建的三次握手過程:
(前提:A主動打開,B被動打開。客戶端用A表示,服務器端用B表示)
二、TCP鏈接釋放的四次揮手過程
(前提:A主動關閉,B被動關閉。客戶端用A表示,服務器端用B表示)