OSI七层网络模型TCP&UDP
文章目錄
- 1、OSI網絡七層模型
- 1.1、OSI七層協議
- 1.2、OSI各層詳解
- 2、TCP
- 2.1、TCP簡介
- 2.2、TCP的主要特點
- 2.3、TCP的主要功能
- 2.4、TCP三次握手&四次揮手
- 2.5、TCP的可靠性實現
- 2.6、TCP四種定時器解析
- 3、UDP
- 3.1、UDP簡介
- 3.2、UDP的主要特點
- 3.3、UDP的功能
- 4、TCP與UDP比較
- 5、TCP/UDP相關協議
1、OSI網絡七層模型
OSI網絡七層模型
1.1、OSI七層協議
1.2、OSI各層詳解
- 物理層:
在連接各種計算機的傳輸媒體上傳輸數據比特流 (將我們發送的數據轉換成二進制比特流傳輸) - 數據鏈路層:
將比特流組合成字節進而組合成幀,使用用MAC地址尋址 (我們所說的二層交換機就工作在這一層) - 網絡層:
使用ip地址尋址,實現不同網絡之間的路徑選擇。 (我們所說的路由求就工作在這一層) - 傳輸層:
傳輸層定義了主機與應用程序之間端到端的連通性,是源端到目的端對數據傳送進行控制從低到高的最后一層。 - 會話層:
建立、管理、終止會話。(在五層模型里面已經合并到了應用層) - 表示層:
數據的表示、安全、壓縮。(在五層模型里面已經合并到了應用層) - 應用層:
網絡服務與最終用戶的一個接口。
2、TCP
2.1、TCP簡介
傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的,為了在不可靠的互聯網絡上提供可靠的端到端字節流而專門設計的一個傳輸協議傳輸層通信協議。
TCP旨在適應支持多網絡應用的分層協議層次結構。 連接到不同但互連的計算機通信網絡的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。TCP假設它可以從較低級別的協議獲得簡單的,可能不可靠的數據報服務。 原則上,TCP應該能夠在從硬線連接到分組交換或電路交換網絡的各種通信系統之上操作
2.2、TCP的主要特點
TCP是一種面向廣域網的通信協議,目的是在跨越多個網絡通信時,為兩個通信端點之間提供一條具有下列特點的通信方式:
- 基于流的方式
- 面向連接
- 可靠通信方式
- 在網絡狀況不佳的時候盡量降低系統由于重傳帶來的帶寬開銷
- 通信連接維護是面向通信的兩個端點的,而不考慮中間網段和節點
為滿足TCP協議的這些特點,TCP協議做了如下的規定:
- 數據分片:在發送端對用戶數據進行分片,在接收端進行重組,由TCP確定分片的大小并控制分片和重組;
- 到達確認:接收端接收到分片數據時,根據分片數據序號向發送端發送一個確認;
- 超時重發:發送方在發送分片時啟動超時定時器,如果在定時器超時之后沒有收到相應的確認,重發分片;
- 滑動窗口:TCP連接每一方的接收緩沖空間大小都固定,接收端只允許另一端發送接收端緩沖區所能接納的數據,TCP在滑動窗口的基礎上提供流量控制,防止較快主機致使較慢主機的緩沖區溢出;
- 失序處理:作為IP數據報來傳輸的TCP分片到達時可能會失序,TCP將對收到的數據進行重新排序,將收到的數據以正確的順序交給應用層;
- 重復處理:作為IP數據報來傳輸的TCP分片會發生重復,TCP的接收端必須丟棄重復的數據;
- 數據校驗:TCP將保持它首部和數據的檢驗和,這是一個端到端的檢驗和,目的是檢測數據在傳輸過程中的任何變化。如果收到分片的檢驗和有差錯,TCP將丟棄這個分片,并不確認收到此報文段導致對端超時并重發
2.3、TCP的主要功能
當應用層向TCP層發送用于網間傳輸的、用8位字節表示的數據流,TCP則把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)通常受該計算機連接的網絡的數據鏈路層的最大傳送單元(MTU)限制。之后TCP把數據包傳給IP層,由它來通過網絡將包傳送給接收端實體的TCP層。
TCP為了保證報文傳輸的可靠,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的字節發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那么對應的數據(假設丟失了)將會被重傳。
在數據正確性與合法性上 ,TCP用一個校驗和函數來檢驗數據是否有錯誤,在發送和接收時都要計算校驗和;同時可以使用md5認證對數據進行加密。
在保證可靠性上,采用超時重傳和捎帶確認機制。
在流量控制上,采用滑動窗口協議,協議中規定,對于窗口內未經確認的分組需要重傳。
在擁塞控制上,采用廣受好評的TCP擁塞控制算法(也稱AIMD算法)
該算法主要包括四個主要部分:
(1)慢啟動
每當建立一個TCP連接時或一個TCP連接發生超時重傳后,該連接便進入慢啟動階段。進入慢啟動后,TCP實體將擁塞窗口的大小初始化為一個報文段,即:cwnd=1。此后,每收到一個報文段的確認(ACK),cwnd值加1,即擁塞窗口按指數增加。當cwnd值超過慢啟動闡值(ssthresh)或發生報文段丟失重傳時,慢啟動階段結束。前者進入擁塞避免階段,后者重新進入慢啟動階段。
(2)擁塞避免
在慢啟階段,當cwnd值超過慢啟動闡值(ssthresh)后,慢啟動過程結束,TCP連接進入擁塞避免階段。在擁塞避免階段,每一次發送的cwnd個報文段被完全確認后,才將cwnd值加1。在此階段,cwnd值線性增加。
(3)快速重傳
快速重傳是對超時重傳的改進。當源端收到對同一個報文的三個重復確認時,就確定一個報文段已經丟失,因此立刻重傳丟失的報文段,而不必等到重傳定時器(RTO)超時。以此減少不必要的等待時間。
(4)快速恢復
快速恢復是對丟失恢復機制的改進。在快速重傳之后,不經過慢啟動過程而直接進入擁塞避免階段。每當快速重傳后,置ssthresh=cwnd/2、ewnd=ssthresh+3。此后,每收到一個重復確認,將cwnd值加1,直至收到對丟失報文段和其后若干報文段的累積確認后,置cwnd=ssthresh,進入擁塞避免階段。
2.4、TCP三次握手&四次揮手
1、第一次握手 建立連接時,客戶端發送SYN包到服務器,其中包含客戶端的初始序號seq=x, 并進入SYN_SENT狀態,等待服務器確認。2、第二次握手 服務器收到請求后,必須確認客戶的數據包。同時自己也發送一個SYN包, 即SYN+ACK包,此時服務器進入SYN_RECV狀態。3、第三次握手 客戶端收到服務器的SYN+ACK包,向服務器發送一個序列號(seq=x+1), 確認號為ack(客戶端)=y+1,此包發送完畢客戶端和服務器進入ESTAB_LISHED(TCP連接成功)狀態,完成三次握手。四次揮手
1、第一次揮手 首先,客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送, 然后等待服務器的確認。其中終止標志位FIN=1,序列號seq=u。2、第二次揮手 服務器收到這個FIN,它發送一個ACK,確認ack為收到的序號加一。3、第三次揮手 關閉服務器到客戶端的連接,發送一個FIN給客戶端。4、第四次揮手 客戶端收到FIN后,并發回一個ACK報文確認,并將確認序號seq設置為收到序號加一。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。2.5、TCP的可靠性實現
TCP提供一種面向連接的、可靠的字節流服務。面向連接意味著兩個使用TCP的應用(通常是一個客戶和一個服務器)在彼此交換數據包之前必須先建立一個TCP連接。這一過程與打電話很相似,先撥號振鈴,等待對方摘機說“喂”,然后才說明是誰。在一個TCP連接中,僅有兩方進行彼此通信。
廣播和多播不能用于TCP
TCP通過下列方式來提供可靠性:
- 應用數據被分割成TCP認為最適合發送的數據塊。這和UDP完全不同,應用程序產生的數據長度將保持不變。由TCP傳遞給IP的信息單位稱為報文段或段(segment)。
- 當TCP發出一個段后,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。當TCP收到發自TCP連接另一端的數據,它將發送一個確認。TCP有延遲確認的功能,在此功能沒有打開,則是立即確認。功能打開,則由定時器觸發確認時間點。
- TCP將保持它首部和數據的檢驗和。這是一個端到端的檢驗和,目的是檢測數據在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段(希望發端超時并重發)。
- 既然TCP報文段作為IP數據報來傳輸,而IP數據報的到達可能會失序,因此TCP報文段的到達也可能會失序。如果必要,TCP將對收到的數據進行重新排序,將收到的數據以正確的順序交給應用層。
- 既然IP數據報會發生重復,TCP的接收端必須丟棄重復的數據。
- TCP還能提供流量控制。TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發送接收端緩沖區所能接納的數據。這將防止較快主機致使較慢主機的緩沖區溢出
2.6、TCP四種定時器解析
1.重傳定時器
主要為了防止報文丟失或者阻塞。當A向B發送報文時,就會啟動重傳定時器,若在定時器到達之后,仍沒有收到B的確認報文,則A會重新發送上次發送的報文。同時,令重傳定時器復位。繼續計時。
2.堅持計時器
當B向A發送了0窗口報文,B此時已經沒有空間接受A發送的數據了,通知A停止發送。 A在收到后即停止發送,等待一段時間后,B有了一些空間,可以繼續接收了。此時再向A發送非0窗口報文。 如果此非0窗口報文在網絡中阻塞或者丟失了,那么A將永遠以為B沒有空間接收數據,B也永遠在等待A發來的數據。這樣就會造成死鎖的局面。
在A接收到B發送的0窗口報文后,就設立堅持定時器,當定時器到達后,A就像B發送一個探測報文。B收到探測報文后會給出A確認報文。
確認報文中的窗口值不是0,則死鎖局面打開。
確認報文中的窗口值是0,則重置堅持定時器,并將時間翻倍,但是最大不能超過60秒。(到達60后,以后都是60秒)
A在發送探測報文后,啟動重傳定時器,若沒有收到B的確認報文,則重傳探測報文。
3.保活定時器
客戶機因為某些故障退出,而服務器并不知道,還在一直等待客戶機發來的數據,這樣就白白浪費了計算機資源。 在服務器端設置保活計時器,服務器每收到客戶機的一次消息,就重置保活計時器,時間通常為2小時。 若2個小時都沒有收到客戶機發來的消息,服務器就像客戶機發送一個探測報文,以后每隔75分鐘發送一次。 若連續發送了10個探測報文后客戶機仍無響應,則服務器就會認為客戶機故障,并斷開這次連接。
保活功能主要是為服務器提供的,服務器可能會代表客戶綁定一些資源,希望知道客戶主機是否崩潰。
如果一個給定的連接在2個小時之內沒有任何動作,則服務器就向客戶發送一個探查報文段:
-
對端仍然運行正常
客戶主機依然正常運行,并且服務器可達。則客戶的TCP響應正常,而服務器也知道對方是正常工作的,則服務器在2小時內以后將保活定時器復位。在這2小時以內,如果有數據流交換,則在交換數據后的未來2小時再復位。 -
對端已經崩潰
客戶主機已經崩潰,并且關閉或者正在重新啟動。在任何情況下,客戶的TCP都沒有響應。服務器不能夠收到對探查的響應,并在75秒后超時(服務器總共發送10個這樣的探查,每個間隔75秒)。如果服務器沒有收到一個響應,則認為客戶主機已經關閉并會終止這個連接。 -
對端已經崩潰并重新啟動
客戶主機崩潰并已經重新啟動。這時服務器將收到一個對其保活探查的響應,然而這個響應是一個復位(RST數據包),使得服務器終止這個連接。 -
對端當前無法到達
客戶主機正常運行,但是服務器不可達。
4.時間等待計時器
時間等待計時器用于TCP“四次揮手”階段。當客戶端向服務器發送最后一次確認報文時,就設定一個時間等待及時器,等待2MSL時間后再結束連接。
3、UDP
3.1、UDP簡介
UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據包協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768 是UDP的正式規范。UDP在IP報文的協議號是17。
3.2、UDP的主要特點
-
UDP是一個無連接協議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,并盡可能快地把它扔到網絡上。在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段。
-
由于傳輸數據不建立連接,因此也就不需要維護連接狀態,包括收發狀態等,因此一臺服務機可同時向多個客戶機傳輸相同的消息。
-
UDP信息包的標題很短,只有8個字節,相對于TCP的20個字節信息包而言UDP的額外開銷很小。
吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。 -
UDP是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部后就向下交付給IP層。既不拆分,也不合并,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。
-
雖然UDP是一個不可靠的協議,但它是分發信息的一個理想協議。例如,在屏幕上報告股票市場、顯示航空信息等等。
-
UDP也用在路由信息協議RIP(Routing Information Protocol)中修改路由表。在這些應用場合下,如果有一個消息丟失,在幾秒之后另一個新的消息就會替換它。UDP廣泛用在多媒體應用中
3.3、UDP的功能
- 為了在給定的主機上能識別多個目的地址,同時允許多個應用程序在同一臺主機上工作并能獨立地進行數據包的發送和接收,設計用戶數據報協議UDP。
- UDP使用底層的互聯網協議來傳送報文,同IP一樣提供不可靠的無連接數據包傳輸服務。它不提供報文到達確認、排序、及流量控制等功能。
- UDP Helper可以實現對指定UDP端口廣播報文的中繼轉發,即將指定UDP端口的廣播報文轉換為單播報文發送給指定的服務器,起到中繼的作用
4、TCP與UDP比較
- TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
- TCP提供可靠的服務,也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達; UDP盡最大努力交付,即不保證可靠交付
- Tcp通過校驗和,重傳控制,序號標識,滑動窗口、確認應答實現可靠傳輸。
- UDP具有較好的實時性,工作效率比TCP高,適用于對高速傳輸和實時性有較高的通信或廣播通信。
- 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
- TCP對系統資源要求較多,UDP對系統資源要求較少。
注:UDP一般用于即時通信(QQ聊天 對數據準確性和丟包要求比較低,但速度必須快),在線視頻等
5、TCP/UDP相關協議
- TCP: STMP, TELNET, HTTP, FTP
- UDP: DNS,TFTP,RIP,DHCP,SNMP
【參考鏈接:百度百科-UDP】
【參考鏈接:百度百科-TCP】
【參考鏈接1】
總結
以上是生活随笔為你收集整理的OSI七层网络模型TCP&UDP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中的常见面试题
- 下一篇: TCP/IP的基本介绍