Brian的雜記
  • Introduction
  • Brian's 雜記
    • My Awesome API
    • FB 大頭貼
    • 硬體雜記
    • PHP
    • project
      • 模擬器
      • WAMP
    • WinMerge
    • 雜記
      • LINQ
      • 方法
      • Grid View
      • namespace
      • global
      • 物件導向
      • Excel
      • VS2017
      • single sign on
      • Master
      • Https
      • 憑證
      • 略過憑證不符
      • NLog
      • 團隊開發
      • .NET Core
      • 共用網路上的芳鄰
      • 爬蟲
      • NPOI
      • RSS
      • 多執行緒
      • 記憶體回收
      • 密碼學
        • BCrypt
        • AES
      • 主機環境建置
      • Session
      • Error
      • IIS 相關
      • 無障礙相關
      • 介面
        • 影像地圖
      • telnet
        • smtp
      • nslookup
      • 協助客戶解決問題
      • 驗證欄位
      • 網站管理
      • 工具整理
    • 正規表示法
    • 影像處理
    • IntelliJ Idea
    • 觀念
      • Clean Code
        • 命名
        • 函式
        • 註解
        • 編排
        • 物件及資料結構
        • 錯誤處理
        • 邊界
        • 單元測試
        • 類別
      • Java 程式風格
      • Design Pattern
        • 單例模式
      • 同步
      • 畫圖
        • ER-Model
        • 類別圖
        • Use Case
        • 有限狀態機
      • 資料 API 文件 分析
      • CORS & SSL
      • 利用DISC幫助溝通
      • OAS
    • 檔案上傳
      • FileStore
      • App Engine
      • Google Storage
    • OAuth vs Open ID
    • MIME
    • 虛擬桌面
    • 待看資料
    • Selenium
    • CDN
    • HTTP
    • 編碼
    • 2nd-ML100Days
      • jupyter
    • 微服務
      • 設計
        • 1 ~ 5
        • 6
        • 7
        • 8
        • 9
    • Gradle
    • Maven
    • Error
    • 批次檔 BAT
    • Kurento
    • WebSocket & WebRTC
  • 需求面能力
    • User Story
  • Google Cloud Platform
    • Compute Engine
  • Python
    • 基本語法
    • Pandas
    • 套件
    • Matplotlib
    • Encoder
    • jupyter
  • Java
    • Java
      • File
      • Exception
      • 物件導向觀念
      • 加密
      • HTTP
      • 集合
      • Stream()
      • Web
      • ResultSet
      • JDK6
      • JDK8
    • 讀取、複寫MP3 Tag
    • Log4j2
    • Servlet
      • 容器
    • JSP
    • JBOSS
    • JWT
    • PreparedStatement
    • Error
    • Spring
      • Spring Boot
        • @Value
        • Build
      • RequestParameter
      • Error
      • Autowired
      • JPA
      • FeignClient
      • WebSocket
      • thymeleaf
      • Security
      • Test
      • Scheduled
      • Redirect
    • IntelliJ
  • Linux
    • Linux
    • Shell Script
    • Cygwin(在Windows執行Linux指令)
  • 前端
    • HTML
      • Link
    • CSS
      • Position
      • padding color
      • display
    • JS
      • jQuery
        • Select2
      • fancybox
      • ES6
      • 效能
      • GoogleMap API
        • Marker
        • InfoWindow
      • 事件
      • CKEditor
      • TGOS
      • JSON
      • QRcode
      • 核心概念
        • 物件 變數 型別
          • number
          • String
          • boolean
          • null & undefined
          • Symbol
        • JS 物件概念
        • 深入理解JS 函式物件
        • 更多ES2015/ES6 全新語言特性
      • Promise
    • 效果應用
  • 資料庫
    • 注意事項
    • MariaDB
    • MySQL
      • inner join 和 join
      • 字串比對
      • 倒數資料
    • SQL
      • DDL 資料定義語言
      • DML 資料操縱語言
      • DCL 資料控制語言
      • TCL 交易控制語言
      • T-SQL
      • CTE
      • JOIN
    • Oracle
    • MSSQL 操作
      • 新增使用者
      • SQL 指令
      • Sequence
    • 差異比較
    • MyBatis
    • Workbench 操作
    • SQL Injection
  • 版本控制
    • Gitlab
      • sign up
      • sign in
      • add project
      • add members
    • SourceGit
      • install
    • SmartGit
      • install
      • operate
      • git 操作雜記
    • TortoiseGit
    • Git
    • TFS
    • SVN
  • Test
    • 軟體測試原則
    • 演算法
    • XMind
      • install
    • Jenkins
      • 建置
    • HTTPie
    • Postman
    • 測試驅動開發
    • 撰寫測試的觀念
    • 測試框架
    • IoC & DI
    • 隔絕相依性的方式
    • JUnit
    • NUnit
    • 習慣
    • 虛設常式
  • Angular
    • hello world
    • ng-options
    • ES6
    • Build & Conponect
    • HttpClient
    • 部署
  • ASP.NET Web Form
    • Chapter 2
      • 2-1
        • 小東西
    • 略過請求驗證
  • Go
Powered by GitBook
On this page
  • 網路七層 (OSI模型)
  • WebRTC
  • NAT
  • PeerConnection
  • Signaling
  • SDP
  • ICE Candidate
  • STUN
  • TURN
  • WebSocket
  • WebSocketState

Was this helpful?

  1. Brian's 雜記

WebSocket & WebRTC

網路七層 (OSI模型)

  1. 物理層(Physical layer):負責定義和控制傳輸媒介的物理特性,例如電壓、電流和傳輸速率等。

  2. 數據鏈路層(Data Link layer):負責將數據組織成框架,並在傳輸介質上進行傳輸。

  3. 網路層(Network layer):負責在多個網路之間進行路由和轉發,以實現跨網路的通訊。

  4. 傳輸層(Transport layer):負責確保數據在端到端的通訊中可靠地傳輸,並處理傳輸中的錯誤和損失。

  5. 會話層(Session layer):負責建立、管理和終止兩個應用程序之間的會話。

  6. 表示層(Presentation layer):負責對數據進行編碼、解碼和轉換,以實現跨平台的通訊。

  7. 應用層(Application layer):負責處理應用程序之間的交互操作,例如電子郵件、網頁瀏覽和文件傳輸等。

WebRTC

WebRTC(Web Real-Time Communication)是一個開放標準,用於在瀏覽器之間實現實時音頻、視頻和資料通訊。

WebRTC 通過使用 UDP 和 SCTP 協議實現實時傳輸,使用 ICE 協議穿越 NAT 和防火牆,使用 WebSocket 和 HTTP 建立和管理會話,並使用 JavaScript API 訪問媒體設備和傳輸媒體和資料。因此,WebRTC 涉及到網路七層中的傳輸層、網路層和應用層。

  1. 傳輸層(Transport layer):WebRTC 使用 UDP(User Datagram Protocol)進行實時傳輸,並且使用 SCTP(Stream Control Transmission Protocol)作為可靠傳輸協議。SCTP 提供了流量控制、損失恢復和流媒體多路徑傳輸等功能,以確保傳輸的可靠性和效率。

  2. 網路層(Network layer):WebRTC 通常使用 ICE(Interactive Connectivity Establishment)協議來穿越 NAT(Network Address Translation)和防火牆等網路限制,以實現對等的連接。在 WebRTC 中,使用 STUN(Session Traversal Utilities for NAT)和 TURN(Traversal Using Relay NAT)服務器來協助建立對等連接或轉發傳輸。

  3. 應用層(Application layer):WebRTC 通常使用 WebSockets 和 HTTP 來建立和管理通訊會話,並使用 JavaScript API 來訪問媒體設備、創建連接、傳輸媒體和資料等。

NAT

(Network Address Translation)是一種網路技術,用於將私有 IP 地址轉換為公共 IP 地址以實現互聯網連接。 當一個裝置位於 NAT 路由器後面時,該裝置使用私有 IP 地址,這些私有 IP 地址只能在該私有網路中使用,不能直接訪問互聯網。NAT 路由器通過將裝置的私有 IP 地址轉換為路由器的公共 IP 地址,從而實現該裝置與互聯網的連接。

PeerConnection

是用於在瀏覽器之間建立點對點(P2P)連接的機制。 當兩個瀏覽器需要建立連接時,它們需要進行一些協商,例如要使用哪些編解碼器、要使用哪些媒體類型(例如音頻或視頻)等等。

Signaling

在 WebRTC 中,Signaling 可以使用不同的協議和技術,例如 WebSocket、HTTP POST 或者 XHR。 主要作用是讓兩個瀏覽器之間建立點對點的通信,以便交換媒體數據。 瀏覽器之間交換的信息包括 SDP 和候選者(ICE Candidate)。

SDP

(Session Description Protocol) 包含了有關媒體流的詳細信息,例如編解碼器和媒體類型

ICE Candidate

協助穿越 NAT 和防火牆,以實現 P2P 連接的一種技術

STUN

(Session Traversal Utilities for NAT)

TURN

(Traversal Using Relay NAT)

WebSocket

WebSocketState

  1. Connecting:表示 WebSocket 正在建立連接,但是尚未完成。

  2. Open:表示 WebSocket 已經成功建立連接,並且可以進行通信。

  3. CloseSent:表示 WebSocket 已經發送了關閉請求,但是尚未收到對方的回應。

  4. CloseReceived:表示 WebSocket 已經收到了對方的關閉請求,但是尚未發送回應。

  5. Closed:表示 WebSocket 已經成功關閉連接,無法再進行通信。

  6. Aborted:表示 WebSocket 已經因為某些錯誤或異常情況而被中斷或中止。

Turn Server

PreviousKurentoNextUser Story

Last updated 1 year ago

Was this helpful?

參考資料:()

https://jerry800416.medium.com/turn-server-%E6%9E%B6%E8%A8%AD%E6%96%87%E4%BB%B6-c71dd50fbd30