小明學習筆記| 一文看懂互聯網TCP/IP協議
卢晓明
2018-09-07 06:42
本文约7525字,阅读全文需要约30分钟
這期主題是TCP/IP協議。

編者按:區塊鏈涉及到的技術很多,從互聯網底層到不明覺厲的密碼學,可是往往關注幣價者多而研究技術的人少。牛市的時候,大家為了炒幣也會努力學習,熊市的時候,反正也沒啥事,我覺得可以更加努力學習。作為一個文科生,我當然會有很多理科生看起來覺得很白痴的問題。作為一個記者,我不難找到業內懂的人用人話給我解釋,而且他們往往不會當面嫌棄我。

),第二期是跨鏈(《小明學習筆記| 一文看懂區塊鏈跨鏈機制》),第二期是跨鏈(《小明學習筆記| 一文看懂區塊鏈虛擬機》《小明學習筆記| 一文看懂區塊鏈虛擬機》



),第二期是跨鏈(

《小明學習筆記| 一文看懂區塊鏈虛擬機》

二級標題

《小明學習筆記| 一文看懂區塊鏈虛擬機》

在接觸區塊鏈的時候,你可能會發現經常有人會說到協議,偶爾還會有人說到TCP/IP 協議。乍聽之下不明覺厲,但轉念一想這似乎真的已經是最普遍而且我們每天都在用的“協議” 了。還會有人拿區塊鏈跟互聯網相比,而互聯網的底層是TCP/IP 協議;還聽到過徐明星說過區塊鍊是將會是金融的TCP/IP 協議;加上以太坊的架構中網絡層的資料也非常少。所以我想了解一下。這次的學習筆記主要是依靠網上公開資料的整理,很多段落可能是copy 自不同的解釋文章,真的是所謂的“筆記” 了。

圖片描述二級標題”)

哦吼

二級標題

什麼是TCP/IP 協議

首先,協議,可以理解為是一套統一的規則,就像行業標準。由於互聯網主要的功能是傳輸信息,所以其協議一般是管理系統之間如何相互通信的規則。

哦吼

二級標題

由於通信中涉及到的步驟和用到的軟硬件很多,因此會被劃分成不同的層次。 TCP/IP 模型有四個抽象的層次,描述了總體的設計大綱,並實現了網絡通信的具體協議。

二級標題

圖片描述

二級標題

這家公司大概可以分成四個部門,也就是TCP/IP 協議族按層次分別分為應用層、傳輸層、網絡層和網絡接口層(數據鏈路層+物理層)。圖片描述先來個英文版圖片描述圖片描述

再來個萌萌噠中文版

上面這幅圖其實很形像地表現了整個數據傳輸的過程,我們在微信上發一句話看似很簡單,其實每一步都經過了從上層到底層,再從底層到上層應用的過程。比如小熊在微信上給小明發了一句消息,直到小明收到這個消息,其實就經過了上述過程。傳輸層的TCP 協議March On 博主哦吼Drake哦吼小明每一層都有自身的職能和常見的協議,整理CSDN 上極光推送的博客、哦吼

圖片描述

的文章,還有

圖片描述

圖片描述

二級標題

互聯網中信息以數據包的單位傳輸,不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報(datagram),在鏈路層叫做幀(frame) 。

圖片描述

二級標題

二級標題

二級標題

網絡接口層

常見協議: Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等。其中比較出名的是以太網協議。 “兩台電腦(主機)之間是通過網卡來進行發送和接收數據的。每個網卡都有一個獨特的地址,也就是MAC 地址。以太網數據以幀為單位,包括標頭和數據部分。以太網在子網內以廣播的形式發送數據。光有MAC 地址並不能讓兩台主機之間相互通信,如果兩台主機不在同一個子網,以太網協議就沒轍了。這就要通過網絡層來區分每台主機所在的網絡是哪個子網。如果在同一個子網,就用廣播發送數據,否則就用路由發送。這就導致了網絡層的誕生。”(來自極光推送)

二級標題

二級標題

網絡訪問層

常見協議:IP(Internet Protocol)、ICMP、ARP(Address Resolution Protocol)、RARP(Reverse ARP)。 IP 是網絡層的核心,通過路由選擇將下一條IP 封裝後交給接口層。 ICMP 是網絡層的補充,可以回送報文。用來檢測網絡是否通暢。

網絡層的主要任務簡而言之就是“給每個數據包確定路線”。這個主機可能在同一個網絡或者外部網絡,因此需要先區分主機是不是在同一個子網。

這層就是IP 協議所在的地方。就像我們寫信的時候需要有一個地址,在網絡世界中也需要一個地址,這個網絡地址就是IP 地址。 (以下內容來自

“湯強”

IP 地址是門牌號,而IP 協議負責計算並找到指定門牌,快遞小哥每天出門前要做的事就是IP 協議的天職:分揀包裹、規劃路徑。其實,三五個節點的小型網絡內部通信完全不必使用IP 協議,因為這些節點之間本來就能兩兩互通,但會有個問題:節點數變多後,網速就會癱瘓,因為帶寬耗盡。 (帶寬指固定時間內能傳遞的數據包,有點像馬路寬度。)

因此,後來一片網絡拆分成很多子網絡(sub networks),每片子網絡交給一台路由器統管。子網絡中的節點間可以單獨通信,不需要IP 協議,但由於帶寬限制,如果你想和本網絡外的節點溝通時,就得使用一個設備:路由器。世界上大多數的路由器被幾家大運營商掌管。如上圖,節點1 和2 同屬一個子網,可基於內部通信協議溝通,而1 和5 間的聯絡必須基於IP 協議,通過路由器1 和2 之間的路徑交流。把IP 協議的邏輯推廣到整個互聯網,最終,連接我們手機客戶端和騰訊服務器的是無數個路由器。

上述兩個協議的作用簡單而言就是:用IP 地址找Mac 地址;以及用Mac 地址找IP 地址。具體的作用請看下面兩段:51CTOCSDN

“ARP(地址解析協議)基本功能就是通過目標設備的IP 地址,查詢目標設備的MAC 地址,以保證通信的順利進行。以太網中的數據幀從一個主機到達網內的另一台主機是根據48位的以太網地址(硬件地址)來確定接口的,而不是根據32 位的IP 地址。內核必須知道目的端的硬件地址才能發送數據。P2P 的連接是不需要ARP 的。

RARP(反向地址轉換協議)允許局域網的物理機器從網關服務器的ARP 表或者緩存上請求其IP 地址。

局域網網關路由器中存有一個表以映射MAC 和與其對應的IP 地址。

二級標題

這兩篇文章可以解答這個問題:

MAC 地址結構是醬紫的:一共有48bit,分為兩部分,前24bit 是廠商代碼,後24bit 是廠家自己分配的。假如我們認為MAC 地址可以區分不同的網絡的話,那隻能是使用廠商代碼來區分不同的網絡,顯然同品牌網卡不代表在同一個網絡。最早這個世界上的電腦沒這麼多的時候,是沒有路由這個東西存在的,主機都在一張網裡,所以確實是直接通過mac 地址通信的。最初的鏈路層協議是和ip 地址無關的,沒有網絡層方面的設定,只有物理層和鏈路層,最初也只有集線器,沒有交換機路由器,服務器之間傳輸數據全靠mac 地址。在沒有ip 地址之前,mac 地址已經在使用了。現在到處都在用的二層交換機,就是根據mac 地址轉發數據。 mac 地址的設計不攜帶設備在網絡中的位置信息,想要通過mac 地址通信,我們得在所有的設備上維護一張很大的表,記錄所有mac 地址路由在當前位置的的下一跳,這顯然是不合理的。

MAC 地址就像電腦的個人身份證,IP 地址就像電腦所在的屋子,屋子裡可以住著很多人,局域網關路由就像登記人口的街道辦公室。

二級標題

二級標題

傳輸層

有了IP 協議,就可以在兩個主機之間發送數據了,接下來的問題在於每台主機都有不同的應用,如何區分哪個數據包屬於哪個程序?這就是傳輸層的作用。傳輸層的主要任務是確保分割的單元在另一端正確地到達,它建立端口到端口的連接。網絡層建立主機到主機的連接,只要有主機和端口,就能確定數據包屬於哪個程序的。同時它也負責接收應用層的數據,然後把它們分成更小的單元(標頭和數據部分在網絡層的數據部分),傳輸到網絡層。

這裡提到的端口不是硬件端口,而是軟件端口,端口有點向外界信息進入電腦的門,不同的信息通過這些門傳給不同應用程序。更形象的解釋可以參考

《為什麼要有端口,怎麼來規劃端口,看下邊。 》這兩句話雖然看起來也是讓人懵逼,但大概能讓人get 到一個可靠一個沒那麼可靠。沒錯這就是兩者的區別。小明):

圖片描述

TCP 協議提到的所謂字節流服務(Byte Stream Service)是指,為了方便傳輸,將大塊數據分割成以報文段(segment)為單位的數據包進行管理。而可靠的傳輸服務是指,能夠把數據準確可靠地傳給對方。簡單來說就是,它把數據切成一個個數據包,從第一隻數據包開始傳,傳送成功就翻倍,發現失敗就地爬起來,從絆倒的那隻數據包重新開始,周而復始。 (以下內容來自知乎用戶


陳寶佳

小明

圖片描述

圖片描述

圖片來自《圖解HTTP》

為了準確無誤地將數據送達目標處,在收發數據前,必須和對方建立可靠的連接。 TCP 協議採用了三次握手(three-way handshaking)策略。握手過程中使用了TCP 的標誌(flag) —— SYN(synchronize) 和ACK(acknowledgement):第一次握手:客戶端發送syn 包(syn=j) 到服務器,並進入SYN_SEND 狀態,等待服務器確認;斷開連接時服務器和客戶端均可以主動發起斷開TCP 連接的請求,斷開過程需要經過“四次握手”。

二級標題

應用層

應用層

至於UDP 協議,傳送數據前並不與對方建立連接,對接收到的數據也不發送確認信號,發送端不知道數據是否會正確接收,當然也不用重發,所以說UDP 是無連接的、不可靠的一種數據傳輸協議。"HTTP://"應用層超文本傳輸協議超文本傳輸協議"HTTPS://"應用層是互聯網程序與其他程序通信所使用的層,也是離用戶“最近”的一層。,這就是HTTP 協議(

超文本傳輸協議http://www.badidu.com超文本傳輸協議

)(或者加上了,這是安全的超文本傳輸協議),而不會直接打IP(看我上面ping 命令的截圖,你會看到百度的IP),因為這樣更好記,可是電腦就不是這麼想的,所以就需要DNS(域名系統)。 DNS 用於通過域名查找IP 地址,或逆向從IP 地址反查域名的服務。

我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加微信lohiuming,煩請備註姓名、單位、職務和事由。

我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加微信lohiuming,煩請備註姓名、單位、職務和事由。

相關閱讀:

相關閱讀:

如果要發郵件,就要用到SMTP(

簡單郵件傳輸協議

我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加微信lohiuming,煩請備註姓名、單位、職務和事由。我是Odaily編輯盧曉明,探索真實區塊鏈,爆料、交流請加微信lohiuming,煩請備註姓名、單位、職務和事由。

相關閱讀:相關閱讀:

TCP/IP協議是什麼?現在有哪些問題?為什麼說區塊鍊是TCP/IP解決方案?一分鐘了解TCP/IP 模型

TCP/IP模型及OSI七層參考模型各層的功能和主要協議

TCP/IP協議是什麼?我們10分鐘搞定

(有一些可愛又易懂的圖)

有上面那個醜醜的圖和一些簡單解釋)

如何理解TCP端口

計算機網絡結構模型TCP/IP詳解

(為什麼這組協議贏了國際標準)

卢晓明
作者文库