(圖解 HTTP)一篇文章帶你深入理解 IP、TCP 和 DNS
在 TCP/IP 協議族中 IP、TCP 和 DNS 是與HTTP密不可分的3個協議
一、負責傳輸的 IP 協議
按層次分,IP(Internet Protocol)網際協議位於網路層。
Internet Protocol這個名稱可能聽起來有點誇張,但事實正是如此,因為幾乎所有使用網路的系統都會用到IP協議。TCP/IP協議族中的IP指的就是網際協議,協議名稱中佔據了一半位置,其重要性可見一斑。
可能有人會把“IP”和“IP地址”搞混,“IP”其實是一種協議的名稱。
IP協議的作用是把各種資料包傳送給對方。而要保證確實傳送到對方那裡,則需要滿足各類條件。其中兩個重要的條件是IP地址和MAC地址(Media AccessControl Address)。
IP地址指明瞭節點被分配到的地址,MAC地址是指網路卡所屬的固定地址。IP地址可以和MAC地址進行配對。IP地址可變換,但MAC地址基本上不會更改
使用ARP協議憑藉MAC地址進行通訊IP間的通訊依賴MAC地址。
在網路上,通訊的雙方在同一區域網(LAN)內的情況是很少的,通常是經過多臺計算機和網路裝置中轉才能連線到對方。而在進行中轉時,會利用下一站中轉裝置的MAC地址來搜尋下一個中轉目標。這時,會採用ARP協議(Address Resolution Protocol)。ARP是一種用以解析地址的協議,根據通訊方的IP地址就可以反查出對應的MAC地址
沒有人能夠全面掌握網際網路中的傳輸狀況在到達通訊目標前的中轉過程中,那些計算機和路由器等網路裝置只能獲悉很粗略的傳輸路線。
這種機制稱為路由選擇(routing),有點像快遞公司的送貨過程。想要寄快遞的人,只要將自己的貨物送到集散中心,就可以知道快遞公司是否肯收件發貨,該快遞公司的集散中心檢查貨物的送達地址,明確下站該送往哪個區域的集散中心。接著,那個區域的集散中心自會判斷是否能送到對方的家中。我們是想通過這個比喻說明,無論哪臺計算機、哪臺網路裝置,它們都無法全面掌握網際網路中的細節。
二、確保可靠性的 TCP 協議
按層次分,TCP位於傳輸層,提供可靠的位元組流服務。
所謂的位元組流服務(Byte Stream Service)是指,為了方便傳輸,將大塊資料分割成以報文段(segment)為單位的資料包進行管理。而可靠的傳輸服務是指,能夠把資料準確可靠地傳給對方。一言以蔽之,TCP協議為了更容易傳送大資料才把資料分割,而且TCP協議能夠確認資料最終是否送達到對方
為了準確無誤地將資料送達目標處,TCP協議採用了三次握手(three-wayhandshaking)策略。
用TCP協議把資料包送出去後,TCP不會對傳送後的情況置之不理,它一定會向對方確認是否成功送達。握手過程中使用了TCP的標誌(flag)——SYN(synchronize)和ACK(acknowledgement)。
傳送端首先傳送一個帶SYN標誌的資料包給對方。接收端收到後,回傳一個帶有SYN/ACK標誌的資料包以示傳達確認資訊。最後,傳送端再回傳一個帶ACK標誌的資料包,代表“握手”結束。若在握手過程中某個階段莫名中斷,TCP協議會再次以相同的順序傳送相同的資料包。
除了上述三次握手,TCP協議還有其他各種手段來保證通訊的可靠性。
三、負責域名解析的 DNS 服務
DNS(Domain Name System)服務是和HTTP協議一樣位於應用層的協議
它提供域名到IP地址之間的解析服務。計算機既可以被賦予IP地址,也可以被賦予主機名和域名。
比如www.hackr.jp。使用者通常使用主機名或域名來訪問對方的計算機,而不是直接通過IP地址訪問。
因為與IP地址的一組純數字相比,用字母配合數字的表示形式來指定計算機名更符合人類的記憶習慣。但要讓計算機去理解名稱,相對而言就變得困難了。因為計算機更擅長處理一長串數字。為了解決上述的問題,DNS服務應運而生。DNS協議提供通過域名查詢IP地址,或逆向從IP地址反查域名的服務
四、三種協議與 HTTP 協議的關係
相關文章
- 一篇帶你瞭解TCP/IP 概念TCP
- 帶你瞭解TCP/IP協議族TCP協議
- 一篇文章帶你瞭解和使用Promise物件Promise物件
- 一篇文章帶你瞭解高質量代理ip的使用技巧
- 與HTTP關係密切的協議:IP、TCP、DNSHTTP協議TCPDNS
- TCP/IP、HTTP、socket 這些,你真的瞭解嗎?TCPHTTP
- (深入理解 Java虛擬機器)一篇文章帶你深入瞭解Java 虛擬機器類載入器Java虛擬機
- 一篇文章帶你更深入瞭解區塊鏈有哪些應用?區塊鏈
- TCP/IP、HTTP和Socket總結TCPHTTP
- 40 張圖帶你搞懂 TCP 和 UDPTCPUDP
- 一篇文章帶你瞭解——Kotlin協程Kotlin
- 計算機網路——深入理解TCP/IP計算機網路TCP
- 什麼是工藝流程圖?一篇文章帶你詳細瞭解流程圖
- 一篇文章帶你瞭解介面自動化
- 一篇文章帶你瞭解HTML5 MathMLHTML
- 一篇文章帶你初步瞭解—CSS特指度CSS
- 一篇文章帶你瞭解設計模式原理——UML圖和軟體設計原則設計模式
- 一篇文章帶你搞定HashTable
- tcp/ip和http的區別和聯絡TCPHTTP
- 一篇文章帶你瞭解HTML格式化元素HTML
- 一篇文章帶你瞭解CSS 分頁例項CSS
- 一篇文章帶你瞭解高可用架構分析架構
- 一篇文章帶你入門Zookeeper
- 一篇文章帶你吃透 Docker 原理Docker
- 一篇文章帶你認識 SpringSecuritySpringGse
- 一篇文章帶你瞭解設計模式——建立者模式設計模式
- socket,TCP/IP的理解TCP
- 一篇文章帶你快速入門createjsJS
- 帶你深入理解和解剖 synchronizedsynchronized
- 深入理解http1.x、http 2和httpsHTTP
- 一篇文章帶你瞭解Python基礎測試工具——UnitTestPython
- 一篇文章帶你瞭解如何測試訊息佇列佇列
- 一篇文章帶你瞭解設計模式——結構型模式設計模式
- 圖解git,用手繪圖帶你理解git中分支的原理和應用圖解Git繪圖
- 如何理解TCP/IP協議?TCP協議
- 帶你深入理解圖靈機--什麼是圖靈機、圖靈完備圖靈
- 《圖解TCP/IP》讀書筆記(一)圖解TCP筆記
- 帶你深入理解傳遞引數