聲明:本文部份內容來自互聯網、書籍等渠道,表示感謝;html
轉載請註明出處:@熱風、http://www.javashuo.com/article/p-wmigdywq-nv.html算法
TCP(Transmission Control Protocol,傳輸控制協議)和UDP(User Datagram Protocol,用戶數據報協議)是OSI七層模型——傳輸層的兩個主要協議,均是互聯網的正式標準。服務器
TCP是一種面向鏈接的、可靠的、基於字節流的通訊協議,是爲了在不可靠的互聯網絡上提供可靠的端到端字節流而專門設計的一個傳輸協議。網絡
UDP是一種無鏈接的、不可靠的、基於報文的通訊協議,爲應用程序提供了一種無需創建鏈接就能夠發送封裝的 IP 數據包的方法。tcp
TCP | UDP | |
---|---|---|
是否鏈接 | 面向鏈接 | 無鏈接 |
是否可靠 | 可靠 | 不可靠 |
鏈接對象個數 | 只能一對一 | 支持一對一,一對多,多對一和多對多 |
傳輸方式 | 面向字節流 | 面向報文 |
首部開銷 | 首部最小20字節,最大60字節 | 首部開銷小,僅8字節 |
適用場景 | 適用於要求可靠傳輸的應用,例如FTP、HTTP、STMP | 適用於實時應用,例如即時通訊、視頻會議、直播等(丟包影響不大、就要快) |
TCP採用校驗、確認以及超時重傳,進行差錯控制。設計
發送方會對發送數據進行處理生成校驗碼,並設置在校驗碼字段中,隨數據一塊兒發送:3d
採用單必定時器視頻
發送TCP分段(TCP會本身分段)時,若是沒有重傳定時器開啓,那麼開啓;若是已有重傳定時器開啓,再也不開啓。server
收到一個非重複ACK時,若是有數據在傳輸中,從新開啓重傳定時器;若是沒有數據在傳輸中,則關閉重傳定時器。htm
未收到確認形成定時器超時,重傳全部發出未確認的分段。
收到重複ACK時,超過3個,則當即重傳重複確認的數據。
(還有一些深刻知識不詳解)
接收方和發送方都有必定大小的接收和發送緩衝區。發送方的發送速度不能超過接收方的接收速度。
爲了防止因爲發送端與接收端之間的不匹配而引發數據丟失,TCP採用滑動窗口進行流量控制。雙方經過窗口大小來告訴對方,在沒有收到確認前,最多能夠發送的數據量。
發送窗口=min{擁塞窗口,通告窗口}
端口號 | 服務進程 | 說明 |
---|---|---|
20 | FTP | 文件傳輸協議(數據鏈接) |
21 | FTP | 文件傳輸協議(控制鏈接) |
23 | Telent | 虛擬終端網絡 |
25 | SMTP | 簡單郵件傳輸協議 |
53 | DNS | 域名服務器 |
80 | HTTP | 超文本傳輸協議 |
111 | RPC | 遠程過程調用 |
網絡中的鏈路帶寬、交換節點的存儲和處理能力等都是網絡的資源,這些資源通常是有限的,當網絡的資源容量和處理能力大於網絡負載的需求時,網絡處於正常運轉狀態,反之網絡會出現擁塞。
網絡擁塞的根本緣由在於端系統向網絡提供的負載大於網絡資源容量和處理能力,主要體如今網絡轉發設備的存儲空間有限,網絡鏈路帶寬有限以及網絡轉發設備的處理能力有限等。
TCP擁塞控制的基本策略是發送端經過跟蹤傳輸數據的丟失現象和往返時延的變化肯定網絡的傳輸能力,並以此來調整發送數據率。
擁塞窗口cwnd是每一個TCP端系統在創建鏈接時建立的擁塞控制量,一樣定義爲發送端未收到確認時能夠連續發送的字節數。擁塞窗口隨網絡傳輸能力變化而變化。當網絡負載較小時,擁塞窗口能夠設置比較大,發之,就要設置成相對較小值。
TCP發送端能夠經過兩種方式檢測到發送的數據在網絡中丟失,一種是經過超時定時器,超時未收到對發送數據的正確確認,則斷定所發數據丟失,另外一種方式是,當發送端連續收到多個對其發送的某個數據分組的重複確認時,說明該分組後繼分組在傳輸中出了問題。對兩種不一樣方式檢測到的數據包丟棄,TCP發送端採用不一樣的方式進行擁塞控制。
針對超時重發檢測到的數據丟失,TCP發送端採用慢啓動和擁塞避免方法進行擁塞控制;
對經過重複確認發現的數據包丟失,TCP發送端採用快重發和擁塞避免方法進行擁塞控制。
慢啓動門限ssthresh是一個動態變化的門限值,用來肯定當前是否採用擁塞避免算法,初始值65535。
RTT:傳輸往返時間
(思考:cwnd以指數形式增加,爲何叫慢啓動算法?)
cwnd線性增加。
例子:發生超時,進入慢啓動;超過門限,進入擁塞避免
例子:
UDP是一種無鏈接的、不可靠的傳輸層協議,UDP協議的目的是但願以最小的開銷來達到網絡環境中的進程通訊目的。
端口號 | 服務進程 | 說明 |
---|---|---|
53 | Name server | 域名服務 |
67 | Bootps | 下載引導程序信息的服務器端口 |
68 | Bootpc | 下載引導程序信息的客戶器端口 |
69 | TFTP | 簡單文件傳輸協議 |
111 | RPC | 遠程過程調用 |
123 | NTP | 網絡時間協議 |
161 | SNMP | 簡單網絡管理協議 |
聲明:本文部份內容來自互聯網、書籍等渠道,表示感謝;
轉載請註明出處:@熱風、http://www.javashuo.com/article/p-wmigdywq-nv.html
若是有學到東西,請點贊給予鼓勵,謝謝。