Skip to main content

Command Palette

Search for a command to run...

理解 Transport Layer - TCP/UDP

Published
1 min readView as Markdown

簡介

本文將會介紹以下內容:

  1. Transport Layer 的主要工作職責
  2. 三方交握
  3. TCP/UDP 傳輸的封包格式

Transport Layer 的主要工作職責

Network Layer 主要負責把資料從某個端點傳輸到另一端點

對於資料內容是否重送這部份的問題就是交給 Transport Layer 負責來處理

當封包到了 Transport Layer,Transport Layer 會把資料加入 PORT 的概念

來讓 Application Layer 可以來識別不同應用所需處理的資料

Transport Layer 主要有兩類 Protocol:

1. TCP

TCP 這個協定主要可以讓接收方保證一定收到傳輸方收到的資料

nodejs 語言可以透過 net 這個 module 來實作

2. UDP

UDP 這個協定主要處理傳輸串流資料,本身不保證資料的正確性或是否遺失

nodejs 語言可以透過 dgram 這個 module 來實作

三方交握

TCP 主要會透過三方交握的方式要保證接收方都有傳送方的資料

其概念圖如下:

在建立要連線時,會先傳遞要傳送資料的傳送規格與一個驗證的 Sequence Number X 給接收方

而傳送方會把 X + 資料傳輸量大小 當作驗證的 Acknowledgement Number 並且產生一個隨機的 Sequence Number Y 傳回

最後傳送方在收到 Y 之後再把 Y+ 資料傳輸量大小 當作驗證的 Acknowledgement Number 傳回

如此一來就可以TCP 連線就可以建立了

TCP/UDP 傳輸的封包格式

這邊只針對幾個有比較性的欄位做介紹

TCP 傳輸格式概觀

首先是在 Transport Layer 時,封包回把 Source Port 與 Destination Port 解析出來

並且把傳輸的 Data 放到 Header 之後

Data 大小會變動不是一個固定的值

UDP 傳輸格式概觀

不同於 TCP傳輸格式

UDP 並沒有 Sequenece Number 與 Acknowledgement Number 來對接收資料做確保

UDP 的資料 Size 則固定為 8 bytes = 8 * 8 bits = 64 bit

參考

[1] three-way-handshake

[2] net module

[3] dgram module

More from this blog

Claude Code 監控秘錄:OpenTelemetry(OTel/OTLP)實戰指南

稟告主公:此乃司馬懿進呈之兵書,詳解如何以 OpenTelemetry 陣法,令臥龍神算之一舉一動盡在掌握,知糧草消耗、察兵器效能、辨戰報異常,使主公運籌帷幄於大帳之中。 為何需要斥候情報? 司馬懿稟告主公: 臥龍神算(Claude Code)乃當世利器,然若無斥候回報,主公便如蒙眼行軍——兵器耗損幾何、糧草消費幾許、哪路斥候出了差錯,一概不知。臣以為,此乃兵家大忌。 無情報之弊,有四: 軍

Feb 19, 202610 min read237
Claude Code 監控秘錄:OpenTelemetry(OTel/OTLP)實戰指南

工程師的 Claude Code 實戰指南:從零開始到高效開發

工程師的 Claude Code 實戰指南:從零開始到高效開發 本文整合 Anthropic 官方 Best Practices 與社群實戰 Tips,帶你由淺入深掌握 Claude Code。 什麼是 Claude Code?為什麼值得學? 如果你還在用「複製程式碼貼到 ChatGPT,再複製答案貼回去」的工作流程,Claude Code 會讓你大開眼界。 Claude Code 是 Anthropic 推出的命令列工具,它直接活在你的 terminal 裡,能夠讀懂你的整個 codeb...

Feb 18, 20265 min read105
工程師的 Claude Code 實戰指南:從零開始到高效開發
M

MicroFIRE

73 posts