簡介
Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網絡通訊協議,是Internet最基本的協議、Internet國際互聯網絡的基礎,由網絡層的IP協議和傳輸層的TCP協議組成。 TCP/IP協議由四層組成,分別為:網絡訪問層、互聯網層、傳輸層、應用層。那如何理解這四層,他們的作用又是什么呢?
所謂四層結構,是將網絡中傳輸的數據包邏輯性的分為四個層次,從前到后的結構如下所示:
重點:設備(包括你的手機、電腦等)讀取數據包的順序是從以上左往右讀取的
讓我們通過wireshark工具看下具體的數據包是長什么樣子的,如下圖我打開了網頁www.baidu.com。可以分別看到不同層的數據包展示,並且我展開了應用層的數據內容,可以看到訪問的域名為www.baidu.com
詳解
(1)網絡訪問層
根據前文《小dai淺談通信網絡(一)——引子》中描述,小明和小剛的對話得知,需要如下兩點:
a.彼此的稱呼 b.雙方交談的方式,包括采用中文等
那么這全部在通信網絡中,分別為MAC地址和網絡協議族(比如以太網的CSMA/CD等)
小明和小剛交談,就相當於MAC1(電腦)和MAC2(交換機)通信。
網絡協議族不再累述。
網絡訪問層又叫數據鏈路層,該層工作於局域網,一般局域網有以太網、令牌網、點對點鏈接、FDDI等網絡類型。
(2)傳輸層/應用層
小明和小剛的交談過程,視為一種應用,雖然是一種面談。這有點像我們使用微信進行溝通交流一樣。同樣你在電腦或者手機上,點擊的任何APP(應用軟件)就屬於應用層。
根據前面描述,傳輸層是保障服務質量的,也就是保障小剛和小明的談話內容能夠更有效。所以因此我也把他們放在一起描述。
a.首先看下我的電腦上運行的應用層程序微信是什么樣子的。當我雙擊點開並登陸微信后,可以在任務管理器里面看到該程序的進程。他們在操作系統后台運行的時候,就是進程。
b.我們通過微信可以和多個人進行通信,比如你和小紅是一次通信、你和小利又是一次通信,那電腦是如何標記着兩次不同的通信過程。那就是通過傳輸層的端口號來標記的。
以下截圖紅框所示代表了微信的兩次通信過程:
一次:從本地地址172.18.10.9的端口號63223——>到遠端的113.96.209.106的端口號443
另外一次:從本地地址172.18.10.9的端口號64723——>到遠端的182.254.34.159的端口號80
也就通過以上的IP+端口號對標記一次通信過程。
c.傳輸層有兩種協議,分別是TCP和UDP。至於TCP層如何保證通信質量的內容了,再聽后文分解。
(3)互聯網層
上面提到標記一次通信過程,使用的是IP+端口號。那為啥不直接使用MAC+端口號。並且通常我們聽到更多的是數據流量在網絡中通過路由轉發(路由轉發即通過IP地址轉發),而不是通過MAC地址轉發。具體MAC地址轉發和IP地址轉發的細節和區別,再聽后文分解。在前面我們已經說到,MAC地址標記的是通信設備,而IP地址的用處則是用於尋址,基於域的尋址。這就相當於我們網購后的快遞,MAC地址代表你的名字,而IP地址代表的是你的收獲地址。收獲地址是怎么寫的?比如 四川省瀘州市成華區A路B小區。當尋址地址,被標記為樹形結構,中央集權制的體系,找到目標的路徑將變為唯一。同樣也增加了尋址的速度。比如對於IP地址192.168.1.3,相當於是這樣的類比192(省).168(市).1(路).3(小區)。基於前面提到的數據包的處理機制為從左往右讀取,當位於192(省).168(市)的路由設備,就可以將該數據包轉發到1(路)。基於域的,樹形結構的結構,被使用與除了RIP之外,基本所有的IP路由協議,比如OSPF/ISIS/BGP/PIM等。當然更不用說DNS、linux操作系統的ext文件系統等。
其他:
1.數據鏈路層,由於有各種類型,基於IP層的工作模式,可以屏蔽掉數據鏈層的差異性,進行透明傳輸,不會由於局域網的不同,造成無法兼容,影響彼此的通信;
2.數據層通信的數據包,以太網中叫幀(frame);
IP層叫IP報文(IP datagram);
TCP層叫TCP段(TCP segment)
3.網絡層之間,叫點對點服務;
傳輸層之間,叫端到端服務。