溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

OSI網(wǎng)絡(luò)七層協(xié)議是什么

發(fā)布時間:2022-01-15 10:41:38 來源:億速云 閱讀:144 作者:iii 欄目:大數(shù)據(jù)

這篇“OSI網(wǎng)絡(luò)七層協(xié)議是什么”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“OSI網(wǎng)絡(luò)七層協(xié)議是什么”文章吧。

OSI網(wǎng)絡(luò)七層協(xié)議

在講網(wǎng)絡(luò)之前,一定要提到OSI網(wǎng)絡(luò)七層協(xié)議。


OSI是Open System Interconnect的縮寫,意為開放式系統(tǒng)互聯(lián)。

OSI網(wǎng)絡(luò)七層協(xié)議是什么


上圖是大家非常非常熟悉的OSI七層網(wǎng)絡(luò)模型,和對應(yīng)的TCP/IP模型。


應(yīng)用層的功能是文件傳輸,電子郵件和文件服務(wù)等。使用的協(xié)議主要是HTTP,SMTP和FTP。


表示層的功能是數(shù)據(jù)格式化,代碼轉(zhuǎn)換和數(shù)據(jù)加密。


會話層的功能是解除或者建立與其他節(jié)點的聯(lián)系。


傳輸層的功能是提供端對端的接口,使用的協(xié)議主要是TCP和UDP。


網(wǎng)絡(luò)層的功能是為數(shù)據(jù)包選擇路由,使用的協(xié)議是IP。


數(shù)據(jù)鏈路層的功能是傳輸有地址的幀,和檢查數(shù)據(jù)錯誤。


物理層的功能是以二進(jìn)制數(shù)據(jù)在物理媒介上傳輸數(shù)據(jù)。

延遲與帶寬

最近電信業(yè)務(wù)員老是給我打電話,說是要把家里的電信寬帶從100M升級到500M,每天只需要一塊錢。一塊錢雖然少,但也是血汗錢。那么辦還是不辦呢?升級到500M對性能和延時提升有多大幫助呢?


2020年可以稱為中國5G的元年。先不管華為,中信在5G基站和協(xié)議制定方面的能力。直觀的感覺5G手機開始多了,手機營業(yè)廳也在賣力的讓你升級到5G套餐,那么辦還是不辦?


在回答這兩個問題之前,我們學(xué)習(xí)兩個名詞:


延遲: 分組從信息源發(fā)送到目的地所需的時間。


帶寬: 邏輯或物理通信路徑最大的吞吐量。

OSI網(wǎng)絡(luò)七層協(xié)議是什么


如果你訪問一個網(wǎng)站,比如www.flydean.com,我們看一下數(shù)據(jù)是怎么從服務(wù)器到達(dá)你的電腦的。


首先數(shù)據(jù)從服務(wù)器通過以太網(wǎng)(以太網(wǎng)是一種計算機局域網(wǎng)技術(shù))傳輸?shù)絀SP。


ISP是啥呢?ISP就是互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider),通過ISP你才能夠把服務(wù)器接入互聯(lián)網(wǎng)。


互聯(lián)網(wǎng)就是通過主干網(wǎng)的互聯(lián)網(wǎng)服務(wù)提供商(ISP)之間的相互連接構(gòu)成的。


所以ISP就是一個……大代理。


好了,數(shù)據(jù)傳到為我家提供服務(wù)的ISP了,然后通過光纖或者電纜線傳到了我家的WiFi,然后通過WiFi的無線信號,被我的電腦接收。

01

延時的構(gòu)成

討論分析了數(shù)據(jù)的傳輸線路,接下來我們看一下,延時會跟哪些原因有關(guān)呢?


首先肯定是信號傳輸?shù)木嚯x,距離越長,傳輸速率越慢,需要的時間就越長。


接下來就是消息的長度,我們把消息中的所有比特轉(zhuǎn)移到鏈路中需要時間,消息長度越長,需要的時間越多。


數(shù)據(jù)上了鏈路之后,處理分組首部、檢查位錯誤及確定分組目標(biāo)也需要時間。


最后,我們對于分組數(shù)據(jù)進(jìn)行排隊處理也需要時間。


現(xiàn)在主網(wǎng)絡(luò)的傳輸介質(zhì)基本上都是光纖了,光在光纖中傳播,并不是直線進(jìn)行的,并且也有折射率的影響,所以速度比光在真空中傳播要慢一點。


比如說信號圍繞赤道轉(zhuǎn)一圈,只需要大概200ms。已經(jīng)很快了。


200ms確實很快了,但是對于某些實時性要求特別高的應(yīng)用場景,我們可以使用CDN技術(shù)(Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò)),把內(nèi)容部署在全球網(wǎng)絡(luò)中,然后從最近的地方去取數(shù)據(jù)。從而大大減少傳輸延時。


200ms夠快了,但是為什么我們?nèi)匀粫杏X到網(wǎng)速慢呢?


大家都聽過木桶原理吧,木桶能夠裝的水,決定于最短的那塊木板。同樣的對于網(wǎng)絡(luò)延時來說,提升速度不在于你在主干網(wǎng)上采用了多么先進(jìn)的技術(shù),因為提升的再多或者再差也是毫米級的。


真正決定網(wǎng)速的在于最后一公里,也就是你電纜線的傳輸速率,你的wifi的傳輸速率,還有你電腦的處理速率等。


 能接入更高帶寬固然好,特別是傳輸大塊數(shù)據(jù)時更是如此,比如在線聽音樂、看視頻,或者下載大文件??墒?,日常上網(wǎng)瀏覽需要的是從數(shù)十臺主機獲取較小的資源,這時候往返時間就成了瓶頸。

IP協(xié)議

IP,即 Internet Protocol(因特網(wǎng)協(xié)議),負(fù)責(zé)聯(lián)網(wǎng)主機之間的路由選擇和尋址。


各種物理網(wǎng)絡(luò)在鏈路層所傳輸?shù)幕締卧獮閹∕AC幀),其幀格式隨物理網(wǎng)絡(luò)而異,各物理網(wǎng)絡(luò)的物理地址(MAC地址)也隨物理網(wǎng)絡(luò)而異。Ip協(xié)議的作用就是向傳輸層(TCP層)提供統(tǒng)一的IP包,即將各種不同類型的MAC幀轉(zhuǎn)換為統(tǒng)一的IP包,并將MAC幀的物理地址變換為全網(wǎng)統(tǒng)一的邏輯地址(IP地址)。

01

IP數(shù)據(jù)包

數(shù)據(jù)包(data packet)是什么?


數(shù)據(jù)包也是分組交換的一種形式,就是把所傳送的數(shù)據(jù)分段打成包,再傳送出去.


每個數(shù)據(jù)包都有報頭和報文這兩個部分,報頭中有目的地址等必要內(nèi)容,使每個數(shù)據(jù)包不經(jīng)過同樣的路徑都能準(zhǔn)確地到達(dá)目的地。在目的地重新組合還原成原來發(fā)送的數(shù)據(jù).

OSI網(wǎng)絡(luò)七層協(xié)議是什么


我們看下IP數(shù)據(jù)包的構(gòu)成。


注意上面的Total Length部分占用了2個字節(jié),所以IP數(shù)據(jù)包的最大長度就是2^16-1=65535字節(jié)。

02

分片和重組

鏈路層具有最大傳輸單元MTU這個特性,它限制了數(shù)據(jù)幀的最大長度,不同的網(wǎng)絡(luò)類型都有一個上限值.如果IP層有數(shù)據(jù)包要傳,而且數(shù)據(jù)包的長度超過了MTU,那么IP層就要對數(shù)據(jù)包進(jìn)行分片操作,使每一片的長度都小于或等于MTU。


分片后的IP數(shù)據(jù)包,只有到達(dá)目的地才能重新組裝。重新組裝由目的地的IP層來完成,其目的是使分片和重新組裝過程對傳輸層(TCP和UDP)是透明的。

03

MSS與MTU

MSS最大傳輸大小的縮寫,是TCP協(xié)議里面的一個概念。


MSS就是TCP數(shù)據(jù)包每次能夠傳輸?shù)淖畲髷?shù)據(jù)分段。為了達(dá)到最佳的傳輸效能TCP協(xié)議在建立連接的時候通常要協(xié)商雙方的MSS值,這個值TCP協(xié)議在實現(xiàn)的時候往往用MTU值代替(需要減去IP數(shù)據(jù)包包頭的大小20Bytes和TCP數(shù)據(jù)段的包頭20Bytes), 通訊雙方會根據(jù)雙方提供的MSS值得最小值確定為這次連接的最大MSS值。


而一般以太網(wǎng)MTU都為1500, 所以在以太網(wǎng)中, 往往TCP MSS為1460。

TCP

 TCP,即 Transmission Control Protocol(傳輸控制協(xié)議),負(fù)責(zé)在不可靠的傳輸信道之上提供可靠的抽象層,  向應(yīng)用層隱藏了大多數(shù)網(wǎng)絡(luò)通信的復(fù)雜細(xì)節(jié),比如丟包重發(fā)、按序發(fā)送、擁塞控制及避免、數(shù)據(jù)完整,等等。

01

TCP三次握手

OSI網(wǎng)絡(luò)七層協(xié)議是什么



一般來說,使用TCP協(xié)議,如果client和server要達(dá)成一致建立連接的話,需要三次交互。


SYN
客戶端選擇一個隨機序列號x,并發(fā)送一個SYN 分組,其中可能還包括其他TCP標(biāo)志和選項。


SYN ACK
服務(wù)器給x 加1,并選擇自己的一個隨機序列號y,追加自己的標(biāo)志和選項,然后返回響應(yīng)。


ACK
客戶端給x 和y 加1 并發(fā)送握手期間的最后一個ACK 分組。

02

擁塞崩潰

如果幾個IP分組同時到達(dá)路由器,并期望經(jīng)同一個輸出端口轉(zhuǎn)發(fā).


顯然,不是所有分組可以同時接受處理,必須有一個服務(wù)順序,中間節(jié)點上的緩存為等候服務(wù)的分組提供一定保護(hù)。


然而,如果此狀況具有一定的持續(xù)性,當(dāng)緩存空間被耗盡時,路由器只有丟棄分組。


在這種持續(xù)過載的狀態(tài)下,網(wǎng)絡(luò)性能會急劇下降.

03

流量控制

流量控制是一種預(yù)防發(fā)送端過多向接收端發(fā)送數(shù)據(jù)的機制。否則,接收端可能因為忙碌、負(fù)載重或緩沖區(qū)既定而無法處理。


為實現(xiàn)流量控制,TCP連接的每一方都要通告自己的接收窗口receive window(rwnd),其中包含能夠保存數(shù)據(jù)的緩沖區(qū)空間大小信息。

OSI網(wǎng)絡(luò)七層協(xié)議是什么


最初的TCP規(guī)范分配給通告窗口大小的字段是16位的,這相當(dāng)于設(shè)定了發(fā)送端和接收端窗口的最大值(65535字節(jié))。結(jié)果,在這個限制內(nèi)經(jīng)常無法獲得最優(yōu)性能。


為解決這個問題,RFC1323提供了TCP窗口縮放(TCP Window Scaling)選項,可以把接收窗口大小由65535字節(jié)提高到1G字節(jié)。


那么現(xiàn)在問題來了,rwnd只是一個接收端的初始窗口大小,如果有多個sender都在向receiver發(fā)送數(shù)據(jù)包的話,怎么才能保證receiver端的接收性能呢?


為了解決這個問題,TCP引入了慢啟動的概念。


當(dāng)sender和receiver已經(jīng)建立好了TCP三次握手之后。就可以開始發(fā)送數(shù)據(jù)包了。


這里引入了一個擁堵窗口Congestion window(cwnd)的概念。


cwnd是server端目前可以接受的最大的窗口大小。


建立連接之后第一次發(fā)送的cwnd是一個初始值,這個初始值最開始是1個network segment,在1999年 RFC 2581將其更新為4個network segments。在2013年, RFC 6928 將這個值擴(kuò)大到了10個network segments。


我們以10個network segments為例,看下cwnd的膨脹過程:

OSI網(wǎng)絡(luò)七層協(xié)議是什么


一般來說cwnd是倍數(shù)增加的,收到ack之后,cwnd會從10,20,40這樣往上增加。一直到server端拒絕ack為止。


那么回到我們之前講到的一個結(jié)論,帶寬其實不是那么重要。


為什么呢?考慮在HTTP1.1中,client需要等待server的返回才能夠進(jìn)行下一次請求。如果你的請求的文件比較小,那么cwnd還沒有漲到足夠大的時候,請求就已經(jīng)結(jié)束了。這個時候最主要的時間花費是請求的來回時間,而不在于帶寬大小。


當(dāng)然,如果在HTTP2中,因為建立的是長連接,慢啟動可能就不存在了(不確定,大家有不同的意見可以提出)。

UDP

UDP (User Datagram Protocol),用戶數(shù)據(jù)報協(xié)議。


UDP 的主要功能和亮點并不在于它引入了什么特性,而在于它忽略的那些特性:不保證消息交付,不保證交付順序,不跟蹤連接狀態(tài),不需要擁塞控制。

我們先來看一下UDP的數(shù)據(jù)包:

OSI網(wǎng)絡(luò)七層協(xié)議是什么


NAT

大家都知道IPV4地址是有限的,很快IPV4地址就快用完了,那怎么解決這個問題呢?


當(dāng)然,一個永久解決的辦法是IPV6,不過IPV6推出這么多年了,好像還沒有真正的普及。


不使用IPV6的話還有什么解決辦法呢?


這個辦法就是NAT(Network Address Translators)。

OSI網(wǎng)絡(luò)七層協(xié)議是什么


NAT的原理是將局域網(wǎng)的IP和端口和NAT設(shè)備的IP和端口做個映射。


NAT內(nèi)部維護(hù)著一張轉(zhuǎn)換表。這樣就可以通過一個NAT的IP地址和不同的端口來連接眾多的局域網(wǎng)服務(wù)器。


那么NAT有什么問題呢?


NAT的問題在于,內(nèi)部客戶端不知道自己外網(wǎng)IP地址,只知道內(nèi)網(wǎng)IP地址。


如果是在UDP協(xié)議中,因為UDP是無狀態(tài)的,所以需要NAT來重寫每個UDP分組中的源端口、地址,以及IP分組中的源IP地址。


如果客戶端是在應(yīng)用程序內(nèi)部將自己的IP地址告訴服務(wù)器,并想跟服務(wù)器建立連接,那么肯定是建立不了的。因為找不到客戶端的公網(wǎng)IP。


即使找到了公網(wǎng)IP,任何到達(dá)NAT設(shè)備外網(wǎng)IP的分組還必須有一個目標(biāo)端口,而且NAT轉(zhuǎn)換表中也要有一個條目可以將其轉(zhuǎn)換為內(nèi)部主機的IP地址和端口號。否則就可能出現(xiàn)下圖的連接失敗的問題。

OSI網(wǎng)絡(luò)七層協(xié)議是什么


怎么解決呢?


第一種方式是使用STUN服務(wù)器。

OSI網(wǎng)絡(luò)七層協(xié)議是什么


STUN服務(wù)器是IP地址已知的服務(wù)器,客戶端要通信之前,先去STUN服務(wù)器上面查詢一下自己的外網(wǎng)IP和端口,然后再使用這個外網(wǎng)IP和端口進(jìn)行通信。


但有時UDP包會被防火墻或者其他的應(yīng)用程序所阻擋。這個時候就可以使用中繼器技術(shù)Traversal Using Relays around NAT (TURN) 。

OSI網(wǎng)絡(luò)七層協(xié)議是什么


雙方都將數(shù)據(jù)發(fā)送到中繼器server,由中繼器server來負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)。注意,這里已經(jīng)不是P2P了。


最后,我們有一個集大成者的協(xié)議叫做ICE(Interactive Connectivity Establishment ):

OSI網(wǎng)絡(luò)七層協(xié)議是什么


它實際上就是直連,STUN和TURN的綜合體,能直連的時候就直連,不能直連就用STUN,不能用STUN就用TURN。

以上就是關(guān)于“OSI網(wǎng)絡(luò)七層協(xié)議是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

osi
AI