WebRTC服務器Coturn服務器中的通信協議

1、概述

作為WebRTC服務器,coturn通信協議主要是STUN和TURN協議

STUN&TURN協議頭部都是20個字節,用 Message Type來區分不同的協議

|------2------|------2------|------------4------------|------------------------12-------------------------|-----------------------------x-------------------------|

|--消息類型--|--消息長度---| ------魔法cookie--------|-----------------------事務ID----------------------|---------------------屬性------------------------|

備注: 內容部分的屬性,每個屬性都由(類型(2)、長度(2)、值(x))三個部分組成,其中類型占用2個字節,長度2個字節,值(x),根據長度定義

2 STUN協議

探測客戶端NAT映射地址, 主要是獲取客戶端的公網地址

2.1 Binding Request

獲取客戶端的公網IP和Port

Message Type: 0x0001

eg: 抓包數據

說明這個binding request的長度就是20個字節,Message Length為0,說明內容部分為可變長度為0,也即屬性沒有

2.2 Binding Response

Message Type: 0x0101

返回客戶端的公網IP和端口

eg:

\

XOR-MAPPED-ADDRESS?:

表示客戶端經過NAT轉換后的公網IP地址和端口(通過異或運算加密處理),用于后續P2P通信的地址交換。此屬性用于取代舊版協議中的MAPPED-ADDRESS以提高兼容性?

?MAPPED-ADDRESS?

表示客戶端在NAT后的公網IP地址和端口(明文形式)。在舊版STUN(RFC3489)中使用,新版協議(RFC5389)已逐漸用XOR-MAPPED-ADDRESS替代

RESPONSE-ORIGIN?

表示STUN服務器發送響應時使用的源IP地址和端口。客戶端可通過此字段驗證響應是否來自合法的服務器,防止偽造響應?

?OTHER-ADDRESS?

表示服務器提供的備用地址或端口,通常用于冗余或負載均衡場景。例如,當主服務器地址不可達時,客戶端可嘗試使用此備用地址

3 TURN協議

3.1 Allocate

分配中繼地址與端口

3.1.1 Allocate Request

Message Type: 0x0003

Message Length: 8 表示內容屬性部分為8個字節長度, 其中屬性值為UDP(0x11),類型(2),長度(2)

3.1.2 Allocate Response

Message Type: 0x0113

Message Length: 52,報告401錯誤,未授權,需要第二次Allocate Reqest帶上用戶名跟密碼,第一次其實是客戶端請求返回nonce和realm,第二次的Alocate請求才是真正驗證數據

3.1.3 第二次 Allocate Request請求

Message Type: 0x0003

3.1.4 第二次Allocate 的響應(對應4.2.1.3的請求)

Message Type: 0x0103

XOR-RELAYED-ADDRESS

中繼服務器的地址和端口

XOR-MAPPED-ADDRESS

客戶端的地址和端口

LEFETIME

中繼地址的有效期,客戶端必須在這個時間過期之前發送REFRESH請求續期

MESSAGE-INTEGRITY

消息簽名-防篡改,基于HMAC-SHA1算法

3.2.?Channel Binding

優化數據包傳輸效率

3.2.1 Channel Binding Request

Message Type: 0x0009

3.2.2 Channel Binding Response

Message Type: 0x0109

3.3 Create Permission

授權對等端通信權限

3.3.1 Create Permission Request

Message Type: 0x0008

3.3.2 Create Permission Response

Message Type: 0x0108

3.4 Send Indicate

利用中繼,測試兩端數據是否通,發送連通性報文

3.4.1 Send Indicate Request

Message Type: 0x0016

3.4.2 Send Indicate Response

Message Type: 0x0017

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78555.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue Transition 組件詳解:讓元素動起來

文章目錄 一、為什么需要 Transition 組件?二、核心工作原理三、基礎用法:6個過渡類名四、進階用法五、 JavaScript 鉤子函數六、過渡模式(Mode)七、列表過渡(TransitionGroup)八、與第三方動畫庫結合&…

【Redis】有序集合類型Sortedset 常用命令詳解

此類型和 set 一樣也是 string 類型元素的集合,且不允許重復的元素 不同的是每個元素都會關聯一個double類型的分數,redis正是通過分數來為集合中的成員進行從小到大的排序 有序集合的成員是唯一,但分數(score)卻可以重復 1. zadd - 添加 語法…

微信小程序 van-dropdown-menu

點擊其他按鈕,關閉van-dropdown-menu下拉框 DropdownMenu 引入頁面使用index.wxmlindex.scssindex.ts(重點)index.ts(全部) DropdownMenu 引入 在app.json或index.json中引入組件 "usingComponents": {"van-dropdown-menu": "vant/weapp…

C 語言內存分配方法及優缺點

在 C 語言開發中,內存分配的方式主要有三種:靜態內存分配、棧內存分配和堆內存分配。每種分配方式都有其獨特的特點、適用場景以及優缺點。 靜態內存分配 靜態內存分配是在編譯時就確定好內存的分配,它主要用于定義全局變量和靜態局部變量。…

第二大腦-個人知識庫

原文鏈接:https://i68.ltd/notes/posts/20250407-llm-person-kb/ Quivr-第二大腦一樣的個人助手,利用AI技術增強個人生產力 將 GenAI 集成到您的應用程序中的個性化 RAG,專注于您的產品而非 RAG項目倉庫:https://github.com/QuivrHQ/quivr Star:37.7k官網:https:/…

A. Ambitious Kid

time limit per test 1 second memory limit per test 256 megabytes Chaneka, Pak Chaneks child, is an ambitious kid, so Pak Chanek gives her the following problem to test her ambition. Given an array of integers [A1,A2,A3,…,AN][A1,A2,A3,…,AN]. In one o…

SQL進階知識:八、性能調優

今天介紹下關于性能調優的詳細介紹,并結合MySQL數據庫提供實際例子。 性能調優是數據庫管理中的一個重要環節,尤其是在處理高并發和大數據量的應用場景時。MySQL提供了多種工具和方法來優化數據庫性能。以下是關于MySQL性能調優的詳細介紹,以…

NVLink、UALink 崛起,PCIe Gen6 如何用 PAM4 迎戰未來?

現在數字經濟發展地相當快速,像Cloud、現在火紅的AI、大數據這些新技術都需要在數據中心里運行更多運算,伴隨而來的是更快的數據傳輸速度的需求。 在數據中心,有很多條數據傳輸路徑,舉例 : Server 和Storage之間&…

Jenkins流水線管理工具

文章目錄 前言: DevOps時代的自動化核心 —Jenkins一、Jenkins是什么?二、Linux安裝Jenkinswar包方式安裝依賴環境下載 Jenkins WAR 包啟動 Jenkins 服務啟動日志驗證配置插件鏡像源 docker鏡像方式安裝依賴環境拉取 Jenkins 鏡像運行 Jenkins 容器獲取初…

Spring @Transactional 自調用問題深度解析

Spring Transactional 自調用問題深度解析 問題本質:自調用事務失效 當類內部的方法A調用同一個類的另一個帶有Transactional注解的方法B時,事務注解不會生效。這是因為Spring的事務管理是基于AOP代理實現的,而自調用會繞過代理機制。 原理…

【爬蟲工具】2025微博采集軟件,根據搜索關鍵詞批量爬帖子,突破50頁限制!

文章目錄 一、背景分析1.1 開發背景1.2 軟件界面1.3 結果展示1.4 軟件說明 二、主要技術2.1 模塊分工2.2 部分代碼 三、使用介紹3.0 填寫cookie3.1 軟件登錄3.2 采集wb帖子 四、演示視頻五、軟件首發 本工具僅限學術交流使用,嚴格遵循相關法律法規,符合平…

java函數式接口與方法引用

函數式接口指的是,一個interface, 只含有一個抽象方法。函數式接口可以加上FunctionalInterface注解,加上這個注解后編譯器會檢查接口是否滿足函數式接口的規范,不滿足規范則直接編譯不過。 典型的內置函數式接口有Runnable?、…

uniapp開發04-scroll-view組件的簡單案例

uniapp開發04-scroll-view組件的簡單案例&#xff01;廢話不多說&#xff0c;我們直接上代碼分析。 <!--演示scroll-view組件效果--><scroll-view class"scroll" scroll-x><view class"group"><view class"item">111&l…

硬件須知的基本問題1

目錄 1. 電路表示中的電壓源表示符號有哪些&#xff1f; 2&#xff0e;查找電路表示中的電流源表示符號有哪些&#xff1f; 3&#xff0e;上拉電阻和下拉電阻的作用是什么&#xff1f; 4&#xff0e;0 歐姆電阻在電路中有什么作用&#xff1f; 5&#xff0e;電容的耦合…

Vue回調函數中的this

2025/4/25 向 示例 一個例子——計數器&#xff0c;通過this來操作數據。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.…

一鍵快速轉換音頻視頻格式的實用工具

軟件介紹 Sundy音視頻格式轉換工具&#xff0c;支持一鍵轉換音頻和視頻格式&#xff0c;還可以集成至右鍵菜單&#xff0c;讓操作更加便捷。軟件支持MP4、FLV、AVI、MKV、MP3、FLAC等多種格式轉換&#xff0c;用戶可以根據需求自由選擇。 直白版 Sundy音視頻格式轉換工…

【AI論文】Tina:通過LoRA的微小推理模型

摘要&#xff1a;如何在語言模型中實現成本效益高的強大推理能力&#xff1f; 在這個基本問題的驅動下&#xff0c;我們提出了Tina&#xff0c;這是一個以高成本效益實現的小型推理模型家族。 值得注意的是&#xff0c;Tina 證明了僅使用最少的資源就可以開發出大量的推理性能&…

TC3xx學習筆記-UCB BMHD使用詳解(一)

文章目錄 前言UCB BMHDPINDISHWCFGLSENA0-3LBISTENACHSWENABMHDIDSTADCRCBMHDCRCBMHD_NPW0-7 總結 前言 AURIX Tc系列Mcu啟動過程&#xff0c;必須要了解BMHD&#xff0c;本文詳細介紹BMHD的定義及使用過程 UCB BMHD UCB表示User Configuration Block,UCB是Dflash,存儲的地址…

H.264/AVC標準主流開源編解碼器編譯說明

An artisan must first sharpen his tools if he is to do his work well. 工欲善其事,必先利其器. 前言 想研究和學習H.264/AVC視頻編解碼標準的入門的伙伴們,不論是學術研究還是工程應用都離不開對源碼的分析,因此首要工作是對各類編解碼器進行編譯,本文針對主流的一些符…

Adobe Photoshop(PS)2022 版安裝與下載教程

Adobe Photoshop下載安裝和使用教程 Adobe Photoshop&#xff0c;簡稱“PS”&#xff0c;是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具&#xff0c;可以有效地進行圖片編輯和創造工作&#xff0c…