網絡編程-TCP/IP各層介紹(5層模型講解)


1、TCP/IP五層協議講解

物理層--數據鏈路層--網絡層--傳輸層--應用層

我們將應用層,表示層,會話層並作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,搞清楚了每層的主要協議

就理解了整個互聯網通信的原理。

首先,用戶感知到的只是最上面一層應用層,自上而下每層都依賴於下一層,所以我們從最下一層開始切入,比較好理解

每層都運行特定的協議,越往上越靠近用戶,越往下越靠近硬件

2、物理層

物理層由來:上面提到,孤立的計算機之間要想一起玩,就必須接入internet,言外之意就是計算機之間必須完成組網

物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0

3、數據鏈路層(以太網協議:)

數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什么意思

數據鏈路層的功能:定義了電信號的分組方式

以太網協議:

早期的時候各個公司都有自己的分組方式,后來形成了統一的標准,即以太網協議ethernet

ethernet規定

  • 一組電信號構成一個數據包,叫做‘幀’
  • 每一數據幀分成:報頭head和數據data兩部分

mac地址:(網卡的地址)

head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具備網卡發送端和接收端的地址便是指網卡的地址,即mac地址

mac地址:每塊網卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進制,通常由12位16進制數表示(前六位是廠商編號,后六位是流水線號)

 

 

廣播:

有了mac地址,同一網絡內的兩台主機就可以通信了(一台主機通過arp協議獲取另外一台主機的mac地址)

ethernet采用最原始的方式,廣播的方式進行通信,即計算機通信基本靠吼

 

4、網絡層(ip協議)

網絡層由來:有了ethernet、mac地址、廣播的發送方式,世界上的計算機就可以彼此通信了,問題是世界范圍的互聯網是由

一個個彼此隔離的小的局域網組成的,那么如果所有的通信都采用以太網的廣播方式,那么一台機器發送的包全世界都會收到,

這就不僅僅是效率低的問題了,這會是一種災難

 

必須找出一種方法來區分哪些計算機屬於同一廣播域,哪些不是,如果是就采用廣播的方式發送,如果不是,

就采用路由的方式(向不同廣播域/子網分發數據包),mac地址是無法區分的,它只跟廠商有關

網絡層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址

4.1、IP協議:

  • 規定網絡地址的協議叫ip協議,它定義的地址稱之為ip地址,廣泛采用的v4版本即ipv4,它規定網絡地址由32位2進制表示
  • 范圍0.0.0.0-255.255.255.255
  • 一個ip地址通常寫成四段十進制數,例:172.16.10.1

子網掩碼:將ip地址分為網絡地址和主機地址

所謂”子網掩碼”,就是表示子網絡特征的一個參數。它在形式上等同於IP地址,也是一個32位二進制數字,它的網絡部分全部為1,主機部分全部為0。比如,IP地址172.16.10.1,如果已知網絡部分是前24位,主機部分是后8位,那么子網絡掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。

子網掩碼是用來標識一個IP地址的哪些位是代表網絡位,以及哪些位是代表主機位。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址划分成網絡地址和主機地址兩部分。

 

 區分網絡位和主機位是為了划分子網,把一個大網絡分成多個小網絡

優點:避免廣播風暴和地址浪費

4.2、ARP協議

arp協議由來:計算機通信基本靠吼,即廣播的方式,所有上層的包到最后都要封裝上以太網頭,然后通過以太網協議發送,在談及以太網協議時候,我門了解到

通信是基於mac的廣播方式實現,計算機在發包時,獲取自身的mac是容易的,如何獲取目標主機的mac,就需要通過arp協議

arp協議功能:廣播的方式發送數據包,獲取目標主機的mac地址

協議工作方式:每台主機ip都是已知的

例如:主機172.16.10.10/24訪問172.16.10.11/24

三:這個包會以廣播的方式在發送端所處的子網內傳輸,所有主機接收后拆開包,發現目標ip為自己的,就響應,返回自己的mac

4.3、ICMP協議

前面講到了,IP協議並不是一個可靠的協議,它不保證數據被送達,那么,自然的,保證數據送達的工作應該由其他的模塊來完成。其中一個重要的模塊就是ICMP(網絡控制報文)協議。

當傳送IP數據包發生錯誤--比如主機不可達,路由不可達等等,ICMP協議將會把錯誤信息封包,然后傳送回給主機。給主機一個處理錯誤的機會.

我們一般主要用ICMP協議檢測網絡是否通暢,基於ICMP協議的工具主要有ping 和traceroute

ping:

 

ping這個單詞源自聲納定位,而這個程序的作用也確實如此,它利用ICMP協議包來偵測另一個主機是否可達。

原理是用類型碼為0的ICMP發請 求,受到請求的主機則用類型碼為8的ICMP回應。

ping程序來計算間隔時間,並計算有多少個包被送達。用戶就可以判斷網絡大致的情況。我們可以看到, ping給出來了傳送的時間和TTL的數據。

用來查看從當前主機到某地址一共經過多少跳路由 ------window 用命令:tracert----------linux命令:tracerout

 

 

5、傳輸層(建立端口到端口的通信tcp/udp)

傳輸層的由來:網絡層的ip幫我們區分子網,以太網層的mac幫我們找到主機,然后大家使用的都是應用程序,你的電腦上可能同時開啟qq,暴風影音,迅雷等多個應用程序,

那么我們通過ip和mac找到了一台特定的主機,如何標識這台主機上的應用程序呢?答案就是端口,端口即應用程序與網卡關聯的編號。

傳輸層功能:建立端口到端口的通信

 

補充:端口范圍0-65535,0-1023為系統占用端口

傳輸層有兩種協議,TCP和UDP,見下圖

5.1、tcp協議

可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。

5.2、tcp的3次握手和4次揮手

 TCP的3次握手

每當建立一個TCP/IP連接的時候都要經歷3次握手,這是為了保證建立一個可靠的連接。

客戶端向服務器發請求,服務器接收請求,服務器接收請求之后發送一個連接標志,客戶端接收連接標志之后也向服務器發送一個連接標志,至此連接完成。用打電話類比的話就是: 
小明撥打小紅的電話 
小紅按下通話鍵並說了聲,喂 (一次握手) 
小明聽到小紅的回應,也說了聲,喂 (二次握手) 
小紅接收到小明的回應 (三次握手)

 

TCP4次揮手

為什么有4次揮手呢,4次揮手的作用就是斷開連接,之所以要斷開連接是因為TCP/IP協議是要占用端口的,而計算機的端口是有限的,所以一次傳輸完成之后是要斷開連接的,斷開連接的方式就是4次揮手。 
連接是由客戶端發起的,所以斷開連接也要有客戶端發起,因為服務器是被動的。上圖的最后一部分就是4次揮手,還是用小明和小紅打電話來類比, 
小明:我這沒事兒了,你還有事兒嗎? (1次揮手) 
小紅:我也沒事兒了,你確定沒事兒了嗎? (2次揮手) 
小紅:我要掛電話了。 (3次揮手) 
小明:好吧,你掛吧。 (4次揮手)

 

6、UDP協議

不可靠傳輸,”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。

不要建立鏈接,不需要對方確認,不可靠,但效率高

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM