互聯網發展到今天,已經沒有人會不知道網絡和上網了。Internet以其獨特的魅力給整個世界帶來了一場巨大的革命。而支撐起整個互聯網的運做的正是TCP/IP協議。服務器
TIP/IP協議並不僅是單純的一個協議,它實際上是一個完整的協議族。這個協議族裏麪包含着一系列的協議,就好比咱們所熟知的http協議,IP協議,TCP和UDP等等。這裏面的東西真要細究起來能夠沒完沒了,沒完沒了。所幸咱們也不是要全面解析TCP/IP協議。咱們都知道最初爲了把世界上各類不一樣的網絡進行規範ISO組織提出了開放式系統互聯的參考模型, 也就是所謂的OSI參考模型。OSI參考模型一共有七層,而TCP/IP協議的參考模型只有四層。可是TCP/IP的四層卻基本包含了OIS七層的全部內容。由於OSI是一個標準化的參考模型,它考慮到幾乎全部的方面,整個模型過於臃腫,從OSI提出到如今不多有一個網絡會徹底的參照它的每一層來進行設計搭建。使用更多的則是簡化後的也就是咱們使用至今的TCP/IP協議族。網絡
那麼TCP/IP協議族究竟是個什麼東西呢?打個比方吧,咱們小時候應該都玩過各類相似抓迷藏之類的遊戲吧,那麼一個遊戲要想玩起來有一個必不可少的東西:那就是「規則」。規則其實就是規範了整個遊戲的玩法,有了規則這個遊戲才能很好的運行下去。「沒有規矩,不成方圓」此話說的是很走心了。其實換一個角度想一想咱們的語言又未嘗不是一種規則,有了這個規則咱們不一樣的個體才能互相聯繫。那麼換成計算機網絡也是一個意思,不一樣的計算機網絡要怎麼樣才能交流,這就須要定義一種規則。而TCP/IP協議就是這麼一種規則。它把計算機網絡經過既定的規則聯繫了起來,從而構成了咱們今天看到的互聯網。TCP/IP協議族裏面的協議有不少,此次就挑幾個比較著名的講一講把。計算機網絡
TCP協議和UDP協議:這兩個都是傳輸層的協議,TCP(Transmission ControlProtocol,傳輸控制協議)和 UDP(User Data Protocol,用戶數據報協議)。TCP是面向鏈接的提供可靠的傳輸的協議。爲了保證傳輸的可靠性TCP協議的鏈接和斷開會分別進行所謂的「三次握手」和「四次揮手」。握手和揮手的過程使用了TCP 的標誌(flag) —— SYN(synchronize) 和ACK(acknowledgement)。設計
三次握手:發送端首先向接收端發送一個帶SYN標誌的數據包,接收端接受到這個數據包後向發送端發送一個帶有SYN/ACK標誌的數據包表示傳達的消息已經確認,最後發送端在發送一個帶有ACK標誌的數據包,表明握手結束。orm
*圖取自《圖解HTTP》一書htm
四次揮手:首先客戶端向服務器發送帶有FIN標誌的數據包,可是此時可能數據尚未傳輸完畢,因此服務器不會立刻返回一個FIN信號,而是先發送一個帶ACK標誌的數據包的確認信號,帶數據傳輸完畢後再次向客戶端發送帶有FIN標誌的信號,最後客戶端返回ACK信號表示鏈接結束。blog
TCP協議的握手和揮手的最低限度上(實際上也很大程度上 保證了)保證了鏈接的可靠性。遊戲
而UDP協議則不同,UDP協議是不可靠的,無鏈接的傳輸協議。UDP由於不用與客戶端創建連接,它的傳輸效率要比TCP協議高,適用於對傳輸效率要求高的運用。事務
*圖取自:TCP/IP 協議棧及 OSI 參考模型詳解get
IP協議:IP協議也是一個極爲重要的協議,也就是咱們一般所說的IP地址。IP地址的做用主要是標識每一臺不一樣的計算機,使得每個機器在網絡中都有惟一的地址,經過這個地址就可以方便的找到傳輸的目的地。
HTTP協議:(HypertextTransfer Protocol)超文本傳輸協議。 用於傳輸那些構成萬維網上的頁面的文件。這個應該是咱們接觸的最多的一個協議了。http協議屬於TCP/IP協議族參考模型的最上層,也就是應用層。HTTP是創建在TCP服務之上的一種應用。一個很顯著的特徵就是經過請求和響應的交換來達成通訊。請求的一端稱爲客戶端,而響應的一端則稱爲服務器。服務器在沒有接受到請求的時候是不會作出響應的,一旦響應完成那麼這一次的連接就結束。而HTTP是一種不保存狀態的協議,也就是說一次的響應結束後,全部的東西都會消失。使用 HTTP 協議,每當有新的請求發送時,就會有對應的新響應產生。協議自己並不保留以前一切的請求或響應報文的信息。這是爲了更快地處理大量事務,確保協議的可伸縮性,而特地把 HTTP 協議設計成如此簡單的。可是若是想保留一些登陸信息要怎麼辦呢?HTTP 雖然是無狀態協議,但爲了實現指望的保持狀態功能,因而引入了 Cookie 技術。Cookie 是一個保存在客戶端本地的小文件,這個文件裏面記錄着上一次連接的一些信息,經過Cookie 就能夠輕鬆的記住一些想要保留的信息了。