[TOC]
# udp(傳輸層)
******
UDP 是 User Datagram Protocol 的簡稱,中文名是用戶數據報協議,是 OSI (Open System Interconnection,開放式系統互聯)參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768 是 UDP 的正式規范。UDP 在 IP 報文的協議號是 17。
UDP 協議全稱是用戶數據報協議,在網絡中它與 TCP 協議一樣用于處理數據包,是一種無連接的協議。在 OSI 模型中,在第四層------傳輸層,處于 IP 協議的上一層。UDP 有不提供數據包分組、組裝和不能對數據包進行排序的缺點,也就是說,當報文發送之后,是無法得知其是否安全完整到達的。UDP 用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客戶/服務器模式的網絡應用都需要使用 UDP 協議。UDP 協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天 UDP 仍然不失為一項非常實用和可行的網絡傳輸層協議。
與所熟知的 TCP (傳輸控制協議)協議一樣,UDP 協議直接位于 IP (網際協議)協議的頂層。根據 OSI (開放系統互連)參考模型,UDP 和 TCP 都屬于傳輸層協議。UDP 協議的主要作用是將網絡數據流量壓縮成數據包的形式。一個典型的數據包就是一個二進制數據的傳輸單位。每一個數據包的前8個字節用來包含報頭信息,剩余字節則用來包含具體的傳輸數據。
<br />
## udp與tcp
udp 和 tcp 都屬于傳輸層的協議,都位于 ip 協議的頂層,它們不同之處有:
* udp 是無連接協議,不需要進行 tcp 的握手
* udp 每次發送最大長度是 65535,而 tcp 在握手后可以源源不斷的發送
* udp 協議使用報頭中的檢驗值來保證數據的安全。檢驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如果某個數據報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發送和接收方的檢驗計算值將不會相符,由此 UDP 協議可檢測是否出錯。這與TCP 協議是不同的,后者要求必須具有檢驗值。
* udp 報文沒有可靠性保證、順序保證和流量控制字段等,可靠性較差。但是正因為 udp 協議的控制選項較少,在數據傳輸過程中延遲小、數據傳輸效率高,適合對可靠性要求不高的應用程序,或者可以保障可靠性的應用程序,如 DNS、TFTP、SNMP等。
* 在網絡質量令人十分不滿意的環境下,UDP 協議數據包丟失會比較嚴重。而 tcp 會進行確認驗證,確認對方接收成功。
* udp 可實現對網關內的所有主機進行廣播。
<br />
## phper的udp
在 php 初級開發者中,是很少接觸到 udp 協議的,常見的有 DNS 協議。
在我們輸入一個域名時,會先請求到一個 dns 服務器,由 dns 服務器匹配出一個 ip 地址,然后通過 ip 地址去傳輸數據,在這個步驟中,請求 dns 服務器使用的就是 udp 協議。
<br />
## 其他
具體詳細內容可自行搜索了解。
- 引言
- Introduction
- 運行模式
- php-fpm
- php-cli
- 基礎介紹
- 網絡協議
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 會話管理
- cookie
- session
- api/token
- linux基礎
- lnmp安裝
- 命令
- 進程管理
- 擴展安裝
- 端口監控
- 防火墻說明
- php7.0
- 部分新特性
- php回調/閉包
- 回調事件
- 閉包/匿名函數
- php多進程
- 多進程開啟
- 進程通信
- 進程信號
- 僵尸進程
- 孤兒進程
- 守護進程
- 同步/異步
- 阻塞/非阻塞
- 協程
- Swoole
- 初始Swoole
- 運行機制
- 生命周期
- composer使用
- EasySwoole
- 設計理念
- 組件說明
- 運行過程
- demo
- 提問的藝術