udp与tcp协议介绍
UDP主要特點:傳輸的是用戶數據報協議。
1.UDP是無連接的,即發送數據之前不需要建立連接。
2.UDP 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。
3.UDP是面向報文的。UDP沒有擁塞控制,很適合多媒體通信的要求。
4.UDP支持一對一、一對多、多對一和多對多的交互通信。
5.UDP的首部開銷小,只有 8個字節。發送方 UDP對應用程序交下來的報文,在添加首部后就向下交付 IP層。UDP ?對應用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界(而tcp是流的方式,不斷地注入,是可以合并和截取的)。應用層交給 UDP多長的報文,UDP就照樣發送,即一次發送一個報文。接收方 UDP對 IP ?層交上來的 UDP 用戶數據報,在去除首部后就原封不動地交付上層的應用進程,一次交付一個完整的報文。
TCP: http,ftp都是基于tcp傳輸協議
鏈接過程:
數據包格式:
1.源端口和目的端口:分別占有兩個字節表示接受和發送方的應用進程(端口)
2.序列號:tcp對每一個字節的數據都進行編號,那么此序列號表示數據包中的首字節數據的序號。 Seq = first byte data number.
3.確認號:確認號為接收端接收到數據包的確認返回數據,它表示將接受下一個數據包的序列號。那么 ack = seq + lenth
從序列號和確認號都是4byte,那么最大數值為65536*65536,即2^32;即一個tcp鏈接接受最大的數據量為4GB.
4.數據偏移(dataoffset):其是4bit,表示數據頭部分距離tcp頭部的距離,2^4為16但是表示最大為16字節。但是從上面圖中看出tcp頭部長度不止是16字節,那么這怎么能表示呢?要知道tcp頭部必須包含上面圖中的前四行,即16字節數據,那么數據偏移不包含這16字節的數據,而是說明校驗和、緊急指針和任意選項那兩行的數據長度,從而確定tcp數據包中數據的起始位置。
dataoffset = lenth(校驗和+緊急指針 = 8 byte) + lenth(任意選項)
5.保留(reserved):占有6bit,暫時作為未來使用項。目前都是設置為0
6.URG(1 bit):urgent緊急標志位 1表示緊急 0 非緊急。緊急表示優先傳輸
7.ACK(1 bit):確認,1表示ack表示確認號有效否則無效
8.PSH(1 bit):當為1的時候,表示接收端盡快將數據交付給應用程序使用,而不是等待緩存區滿了以后交給程序使用。
9.RST(1 bit):復位標志位,當為1的時候,表示出現嚴重的錯誤,將斷開tcp鏈接。重新鏈接發送數據。
10.SYN(1 bit):同步標志位,表示這是一個同步鏈接信號,或者同步鏈接數據包。
11.FIN(1 bit):結束標志位,表示數據包已經發送完畢,將要斷開鏈接。
12.窗口:占兩個字節,表示窗口大小最大為2^16,即為32KB,表示一般一個數據流或者數據包為32KB.
接收方可以依據窗口大小來劃定緩存區的大小,從而通知發送方最大發送窗口大小。
13.校驗和:占兩個字節,校驗數據的準確性,校驗范圍包含數據部分,ip地址和協議類型。
14.緊急指針:占兩個字節,指向緊急數據的位置
15.任意選項:可告知對方窗口最大長度和窗口擴展因子。字節數不確定。但是最大<= 16 - 8 = 8,上面在dataoffset中已有計算。
16.填充(fill):為了tcp數據頭保持4byte的整數倍。
tcp斷開鏈接:(前三后四,建立鏈接有3步,斷開有4步)
1.TCP 是面向連接的運輸層協議。
2.每一條 TCP 連接只能有兩個端點(endpoint),每一條 TCP 連接只能是點對點的(一對一)。
3.TCP 提供可靠交付的服務。
4.TCP 提供全雙工通信。
5.TCP是面向字節流。?
6.首部最低20個字節。
TCP可靠傳輸的工作原理:停止等待協議(確認重傳機制)
1.無差錯:
1>:無差錯: A發送分組M1,發送就暫停發送,等待B的確認,B收到M1就向A發送確認,A收到對M1的確認后再發送下一個分組
2>:出現差錯:
A只要超過一段時間仍然沒有收到確認,就認為剛才發送的分組丟失了,就重傳前面發過的分組,叫超時重傳。由重傳計時器實現。
而且:(1)A每次發送分組必須暫時保留分組副本;(2)分組和確認分組必須進行編號‘(3)超時計時器的重傳時間應當比數據在分組的平均往返時間更多一些。
3>:如果B收到重復的分組M1,不向上一層交付;而且,向A發送確認。
2.超時重傳:
停止等待協議的優點是簡單,但是信道利用率太低了。解決方法是采用連續ARQ協議,發送方維持發送窗口,每次連續發送幾個分組,接收方采用累積確認,即對按序到達的最后一個分組發送確認。缺點:是不能向發送方反映出接收方已經正確收到的所有分組信息,例如丟失中間的分組。
TCP可靠傳輸的實現:
TCP 連接的每一端都必須設有兩個窗口——一個發送窗口和一個接收窗口。TCP 的可靠傳輸機制用字節的序號進行控制。
TCP 所有的確認都是基于序號而不是基于報文段。
發送過的數據未收到確認之前必須保留,以便超時重傳時使用。發送窗口不動(沒收到確認)和前移(收到新的確認)
發送緩存用來暫時存放:?
發送應用程序傳送給發送方 TCP 準備發送的數據; TCP 已發送出但尚未收到確認的數據。
接收緩存用來暫時存放:按序到達的、但尚未被接收應用程序讀取的數據; 不按序到達的數據。
必須強調三點:
1> A 的發送窗口并不總是和 B 的接收窗口一樣大(因為有一定的時間滯后)。
2> TCP 標準沒有規定對不按序到達的數據應如何處理。通常是先臨時存放在接收窗口中,等到字節流中所缺少的字節收到后,再按序交付上層的應用進程。
3> TCP 要求接收方必須有累積確認的功能,這樣可以減小傳輸開銷
TCP流量控制:
流量控制(flow control)就是讓發送方的發送速率不要太快,既要讓接收方來得及接收,也不要使網絡發生擁塞。利用滑動窗口機制可以很方便地在 TCP 連接上實現流量控制。TCP 為每一個連接設有一個持續計時器。只要 TCP 連接的一方收到對方的零窗口通知,就啟動持續計時器,發送一個零窗口探測報文段。
TCP的擁塞控制:
在某段時間,若對網絡中某資源的需求超過了該資源所能提供的可用部分,網絡的性能就要變壞——產生擁塞(congestion)。
出現資源擁塞的條件:對資源需求的總和 > 可用資源。
開環控制方法就是在設計網絡時事先將有關發生擁塞的因素考慮周到,力求網絡在工作時不產生擁塞。閉環控制是基于反饋環路的概念。屬于閉環控制的有以下幾種措施:監測網絡系統以便檢測到擁塞在何時、何處發生。將擁塞發生的信息傳送到可采取行動的地方。調整網絡系統的運行以解決出現的問題。
擁塞控制方法:
1.慢開始:在主機剛剛開始發送報文段時可先將擁塞窗口 cwnd 設置為一個最大報文段 MSS 的數值。在每收到一個對新的報文段的確認后,將擁塞窗口增加至多一個 MSS 的數值。用這樣的方法逐步增大發送端的擁塞窗口 cwnd,可以使分組注入到網絡的速率更加合理。每經過一個傳輸輪回,擁塞窗口(發送端)就加倍。
2.擁塞避免:讓擁塞窗口緩慢增大,每經過一個往返時間就加1,而不是加倍,按線性規律緩慢增長。擁塞窗口大于慢開始門限,就執行擁塞避免算法。“乘法減小”:指不論在慢開始還是擁塞避免階段,只要出現超時重傳就把慢開始門限值減半。"加分增大“:指執行擁塞避免算法后,使擁塞窗口緩慢增大,以防止網絡過早出現擁塞。合起來叫AIMD算法。
3.快重傳算法:發送方只要一連收到三個重復確認就應當重傳對方尚未收到的報文。而不必等到該分組的重傳計時器到期。
4.快恢復算法:(1)當發送端收到連續三個重復的確認時,就執行“乘法減小”算法,把慢開始門限 ssthresh 減半。但接下去不執行慢開始算法。(2)由于發送方現在認為網絡很可能沒有發生擁塞,因此現在不執行慢開始算法,即擁塞窗口 cwnd 現在不設置為 1,而是設置為慢開始門限 ssthresh 減半后的數值,然后開始執行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大.
總結
以上是生活随笔為你收集整理的udp与tcp协议介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 餐厅文化主题标语文案29句
- 下一篇: android Q版本外部存储问题以及获