TCP/IP協議詳解

文章目錄

    • TCP/IP協議概述
    • 基于TCP/IP協議的應用工具
    • 協議
      • 協議的必要性
    • TCP/IP協議
      • TCP/IP協議族
      • 協議的分層
    • 傳輸方式的分類
    • 報文、幀、數據包等的區別
    • TCP 和 UDP的區別

TCP/IP協議概述

TCP/IP(Transmission Control Protocol/Internet Protocol)是一組通信協議,用于在互聯網上進行數據傳輸和通信,它是互聯網的基礎架構之一,支持全球范圍內的數據通信。它是互聯網的核心協議族,由多個不同的協議組成,每個協議負責不同的網絡功能。
TCP/IP 協議族是互聯網通信的基礎,它提供了一種可靠的、靈活的、開放的通信框架,支持各種不同類型的數據傳輸和應用。
TCP/IP 的一些關鍵特點和組成部分:
分層架構:TCP/IP 協議族采用分層的設計,分為四個層次:應用層、傳輸層、網絡層和數據鏈路層。每個層次都有不同的功能和責任,從而實現了協議的模塊化和可擴展性。
面向連接的協議:TCP(Transmission Control Protocol)是 TCP/IP 中的傳輸層協議之一,它提供了可靠的、面向連接的數據傳輸服務。通過 TCP 協議,數據可被分割成數據包,并確保它們按順序到達目的地,并且無錯誤。
無連接的協議:UDP(User Datagram Protocol)是另一個傳輸層協議,它是無連接的,不保證數據的可靠性和順序性。UDP 通常用于需要低延遲和更高性能的應用,如實時音頻/視頻傳輸。
IP 地址和路由:IP(Internet Protocol)是 TCP/IP 協議族中的網絡層協議,它負責定義和管理網絡設備的 IP 地址,以及確定數據包從源到目的地的路徑。IP 地址是用于在網絡中唯一標識設備的數字標識符。
數據封裝:在 TCP/IP 中,數據在傳輸過程中被封裝為數據包,每個數據包包含了目標地址、源地址以及其他必要的控制信息。數據包的封裝和解封裝是通過各層的協議來完成的,從應用層到數據鏈路層依次進行。
開放性和標準化:TCP/IP 協議族是開放的標準,由許多組織和機構共同維護和發展。它的開放性和標準化使得不同廠商和組織可以基于 TCP/IP 進行互操作,從而實現了互聯網的全球化和普及。
此外,TCP/IP 協議族還包括其他一些協議,如 ICMP(Internet Control Message Protocol)、ARP(Address Resolution Protocol)等,用于網絡管理、地址解析和錯誤報告等功能。
TCP/IP 協議族的設計目標是實現可靠、靈活和互操作的網絡通信。它已經成為全球互聯網的基礎,并被廣泛應用于各種網絡設備和應用程序中。

基于TCP/IP協議的應用工具

  1. Kafka: Kafka 是一個分布式流處理平臺,基于 TCP/IP 自定義了一套協議用于高效地進行消息傳遞和數據處理。
  2. Redis: Redis 是一個開源的內存數據庫,它使用 TCP/IP 自定義了一套協議用于客戶端與服務器之間的通信,實現了高效的數據存儲和訪問。
  3. Memcached: Memcached 是一個分布式的內存對象緩存系統,也使用了自定義的 TCP/IP 協議來實現客戶端與服務器之間的通信。
  4. Cassandra: Cassandra 是一個分布式的 NoSQL 數據庫,它使用了 TCP/IP 自定義協議用于節點之間的通信和數據同步。
  5. Thrift: Thrift 是一個跨語言的遠程過程調用(RPC)框架,它定義了一種自定義的 TCP/IP 協議用于不同語言之間的通信。
  6. ZooKeeper: ZooKeeper 是一個分布式的協調服務,它使用了 TCP/IP 自定義協議來實現客戶端與服務器之間的通信和數據同步。
  7. Elasticsearch: Elasticsearch 是一個分布式的搜索和分析引擎,它使用了自定義的 TCP/IP 協議用于節點之間的通信和數據交換。
    有些特殊框架(如:redis、kafka、zeroMq等)根據自身需要未嚴格遵循MQ規范,而是基于TCP\IP自行封裝了一套協議,通過網絡socket接口進行傳輸,實現了MQ的功能。
    這些工具都使用了 TCP/IP 自定義協議來實現不同的功能,例如消息傳遞、數據存儲、分布式計算等,為開發者提供了豐富的選擇來構建各種不同類型的應用程序。

協議

在計算機網絡與信息通訊領域里,人們經常提及 “協議” 一詞。互聯網中常用的協議有HTTP、TCP、IP等。

協議的必要性

簡單來說,協議就是計算機與計算機之間通過網絡通信時,事先達成的一種 “約定”。這種“約定”使不同廠商的設備、不同的CPU以及不同操作系統組成的計算機之間,只要遵循相同的協議就能夠實現通信。這就好比一個中國人說漢語一個外國人說英語使用不同的國家語言進行溝通,怎么也無法理解。如果兩個人約定好 都說中文或英文,就可以互相溝通通信。協議分為很多種,每一種協議都明確界定了它的行為規范。兩臺計算機必須能夠支持相同的協議,并遵循相同協議進行處理,這樣才能實現相互通信。

TCP/IP協議

TCP/IP 是用于因特網 (Internet) 的通信協議。 TCP/IP 通信協議是對計算機必須遵守的規則的描述,只有遵守這些規則,計算機之間才能進行通信。
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬于傳輸層協議。其中TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路復 用。通過面向連接、端到端和可靠的數據包發送。通俗說,它是事先為所發送的數據開辟出連接好的通道,然后再進行數據發送;而UDP則不為IP提供可靠性、 流控或差錯恢復功能。一般來說,TCP對應的是可靠性要求高的應用,而UDP對應的則是可靠性要求低、傳輸經濟的應用。 TCP支持的應用協議主要有:Telnet、FTP、SMTP等; UDP支持的應用層協議主要有:NFS(網絡文件系統)、SNMP(簡單網絡管理協議)、DNS(主域名稱系統)、TFTP(通用文件傳輸協議)等。 TCP/IP協議與低層的數據鏈路層和物理層無關,這也是TCP/IP的重要特點

TCP/IP協議族

TCP/IP是基于TCP和IP這兩個最初的協議之上的不同的通信協議的大集合
在這里插入圖片描述

協議的分層

網絡協議通常分不同層次進行開發,每一層分別負責不同的通信功能。一個協議族,比如TCP/IP,是一組不同層次上的多個協議的組合。 傳統上來說 TCP/IP 被認為是一個四層協議, 而ISO(國際標準化組織),制定了一個國際標準OSI七層協議模型,OSI協議以OSI參考模型為基礎界定了每個階層的協議和每個階層之間接口相關的標準。
在這里插入圖片描述

分層的作用
在這里插入圖片描述

應用層
應用層為操作系統或網絡應用程序提供訪問網絡服務的接口。應用層協議的代表包括:Telnet、FTP、HTTP、SNMP等。
表示層
將應用處理的信息轉換為適合網絡傳輸的格式,或將來自下一層的數據轉換為上層能夠處理的格式。數據的表示、安全、壓縮。
會話層
負責建立和斷開通信連接(數據流動的邏輯通路),以及數據的分割等數據傳輸相關的管理。
傳輸層
管理兩個節點之間的數據傳輸。負責可靠傳輸(確保數據被可靠地傳送到目標地址)。
網絡層
地址管理與路由選擇, 在這一層,數據的單位稱為數據包(packet)(路由器)。
數據鏈路層
互連設備之間傳送和識別數據幀(交換機)。
物理層
以"0"、 "1"代表電壓的高低,燈光的閃滅,在這一層,數據的單位稱為比特(bit),(中繼器、集線器、還有我們通常說的雙絞線也工作在物理層)。
七層通信
在這里插入圖片描述

發送方由第七層到第一層 由上到下按照順序傳送數據,每個分層在處理上層傳遞的數據時,附上當前層協議所必須的 "首部"信息。接收方由第一層到第七層 由下到上按照順序傳遞數據,每個分層對接收到的數據進行 "首部"與"內容"分離,在轉發給上一層。最終將發送的數據恢復為原始數據。

傳輸方式的分類

網絡通信科根據數據發送方法進行多種分類,分類方法很多,下面列舉幾種常見的:

  1. 面向有連接型和面向無連接型
    1.1 面向有連接型

在這里插入圖片描述
發送數據之前,需要在收發主機之間建立一條通信線路,在通信傳輸前后,專門進行建立和斷開連接的處理,如果與對端之間無法通信,可避免發送無謂的數據
1.2面向無連接型
在這里插入圖片描述

報文、幀、數據包等的區別

報文(message)是網絡中交換與傳輸的數據單元,也是網絡傳輸的單元。報文包含了將要發送的完整的數據信息,其長短不需一致。報文在傳輸過程中會不斷地封裝成分組、包、幀來傳輸,封裝的方式就是添加一些控制信息組成的首部,那些就是報文頭。
應用層:報文(message),一般指完整的信息,傳輸層實現報文交付,位于應用層的信息分組稱為報文; 傳輸層:報文段(segment),組成報文的每個分組; 網絡層:分組(packet)是網絡傳輸中的二進制格式單元,數據包(datapacket)是TCP/IP通信協議傳輸中的數據單位;通過網絡傳輸的數據基本單元,包含一個報頭和數據本身,其中報頭描述了數據的目的地及其與其他數據之間的關系,可以理解為數據傳輸的分組,我們將通過網絡傳輸的基本數據單元稱為數據報(Datagram); 鏈路層:幀(frame),數據鏈路層的協議數據單元,為了保證數據的可靠傳輸,把用戶數據封裝成幀; 物理層:PDU(bit),協議數據單元; 抓包,抓到的是傳輸層的包,packet/frame/Datagram/segment是存在于同條記錄中的,這些是基于所在協議層的不同取了不同的名字。

TCP 和 UDP的區別

TCP 和 UDP的區別

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

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

相關文章

《圖解HTTP》筆記2:http的構成

1,查看瀏覽器上面一個具體的http請求 瀏覽器地址欄輸入網址:https://news.baidu.com/ 使用瀏覽器的開發者工具,查看網絡中發送和接受的數據。 可以看到輸入一個網址,瀏覽器和服務器進行了很多的交互。(綠色部分&#…

python + selenium/appnium

Selenium 的自動化原理: selenium 自動化流程: 自動化程序調用Selenium 客戶端庫函數(比如點擊按鈕元素)客戶端庫會發送Selenium 命令 給瀏覽器的驅動程序瀏覽器驅動程序接收到命令后 ,驅動瀏覽器去執行命令瀏覽器執行命令瀏覽器驅動程序獲取命令執行的…

ubuntu環境下openssl庫的簡單使用

安裝 sudo apt-get install libssl-devaes算法demo 編譯&#xff1a;gcc aes.c -lssl -lcrypto -o aes 運行&#xff1a;./aes #include<stdio.h> #include<stdlib.h> #include<string.h> #include<openssl/aes.h>#define AES_KEY_SIZE 128 // AES密…

UNI-APP_app跳轉企業微信客服對話

uniapp打包app&#xff0c;app里點擊客服&#xff0c;跳轉企業微信客服對話。為什么是企業微信&#xff1f;因為只有微信小程序才可以通過 button 的 open-type‘share’ 打開微信客服對話框&#xff08;微信客服要在公眾號平臺配置&#xff09; 1、appId獲取 &#xff08;1&a…

OJAC近嶼智能張立賽博士揭秘GPT Store:技術創新、商業模式與未來趨勢

> - [Look&#xff01;&#x1f440;我們的大模型商業化落地產品](https://www.airecruitas.com/aigc) >- &#x1f4d6;更多AI資訊請&#x1f449;&#x1f3fe;[關注](https://mp.weixin.qq.com/s/85qwuIydaaydMQz2g0rgMA) >- [Free三天集訓營助教在線為您火熱答疑…

C#_各式各樣的參數(引用參數、輸出參數、數組參數、具名參數、可選參數)

引用參數 值參數和引用參數的區別在于傳參時是否會創建參數副本&#xff1a;值參數不會創建副本&#xff0c;而引用參數會創建副本。 換言之&#xff0c;值類型參數的參數與實體之間無直接關聯&#xff0c;修改參數不會對實體產生影響&#xff1b;引用類型參數的參數與實體可視…

6.微格式

微格式 經典真題 知道什么是微格式嗎&#xff1f;談談理解。在前端構建中應該考慮微格式嗎&#xff1f; 微格式介紹 所謂微格式&#xff0c;是建立在已有的、被廣泛采用的標準基礎之上的一組簡單的、開放的數據格式。 具體表現是把語義嵌入到 HTML 中&#xff0c;以便有助…

通過SSH 可以訪問Ubuntu Desktop嗎?

你可以在 Ubuntu Desktop 上開啟 SSH 服務&#xff0c;以便其他機器可以通過 SSH 連接到你的服務器。以下是在 Ubuntu Desktop 上開啟 SSH 服務的步驟&#xff1a; 打開終端 (Terminal) 應用程序。 輸入以下命令安裝 OpenSSH 服務器&#xff1a; sudo apt-get update sudo ap…

多任務爬蟲(多線程和多進程)

在一臺計算機中&#xff0c;我們可以同時打開多個軟件&#xff0c;例如同時瀏覽網頁、聽音樂、打字等&#xff0c;這是再正常不過的事情。但仔細想想&#xff0c;為什么計算機可以同時運行這么多軟件呢? 這就涉及計算機中的兩個名詞&#xff1a;多進程和多線程。 同樣&#xf…

通信入門系列——鎖相環、平方環、Costas環

微信公眾號上線&#xff0c;搜索公眾號小灰灰的FPGA,關注可獲取相關源碼&#xff0c;定期更新有關FPGA的項目以及開源項目源碼&#xff0c;包括但不限于各類檢測芯片驅動、低速接口驅動、高速接口驅動、數據信號處理、圖像處理以及AXI總線等 本節目錄 一、鎖相環 1、壓控振蕩…

重磅!MongoDB推出Atlas Stream Processing公共預覽版

日前&#xff0c;MongoDB宣布推出Atlas Stream Processing公共預覽版。 在Atlas平臺上有興趣嘗試這項功能的開發者都享有完全的訪問權限&#xff0c;可前往“閱讀原文”鏈接點擊了解更多詳細信息或立即開始使用。 開發者喜歡文檔型數據庫的靈活性、易用性以及Query API查詢方…

使用k-近鄰算法改進約會網站的配對效果(kNN)

目錄 谷歌筆記本&#xff08;可選&#xff09; 準備數據&#xff1a;從文本文件中解析數據 編寫算法&#xff1a;編寫kNN算法 分析數據&#xff1a;使用Matplotlib創建散點圖 準備數據&#xff1a;歸一化數值 測試算法&#xff1a;作為完整程序驗證分類器 使用算法&…

js過濾取出對象中改變的屬性和值

朋友公司的面試題 &#xff0c;取出對象中被改變的屬性和值 const obj1 { a: 1, b: 2, c: 4 }; const obj2 { a: 1, b: 2, c: 5 }; 方法1 function testFun(obj1, obj2) {const diff {};const keys1 Object.keys(obj1);const keys2 Object.keys(obj2);const allKyes keys…

【深度學習】Gemini 1.0 Pro 如何讓chatGPT扮演stable diffusion的提示詞工程師

google也出了一個chatGPT&#xff0c;免費申請使用&#xff1a; https://aistudio.google.com/app/prompts/new_chat https://github.com/google/generative-ai-docs/blob/main/site/en/tutorials/rest_quickstart.ipynb 模型信息&#xff1a; $ curl https://generativelan…

SpringCloud(14)之SpringCloud Consul

我們知道 Eureka 2.X 遇到困難停止開發了&#xff0c;所以我們需要尋找其他的替代技術替代Eureka&#xff0c;這一小 節我們就講解一個新的組件Consul。 一、Consul介紹 Consul 是 HashiCorp 公司推出的開源工具&#xff0c;用于實現分布式系統的服務發現與配置。與其它分布式…

kali xrdp

Kali Linux 使用遠程桌面連接——xrdp&xfce_kali xfce桌面-CSDN博客 Ubuntu/Debian/Kali xrdp遠程桌面黑屏/空屏/無畫面解決辦法 - 知乎 (zhihu.com) sudo apt-get install xrdp -y sudo apt-get install xfce4 -ysudo systemctl enable xrdp --now systemctl status xrd…

中級.NET開發工程師面試經歷

文章目錄 前言面試題目&#xff08;只記錄了還記得的部分&#xff09;一.簡單說下.NETCORE的生命周期&#xff1f;二.C#如何保證在并發情況下接口不會被重復觸發&#xff1f;三.引用類型和值類型有什么區別&#xff1f;四.那怎樣能讓引用類型和值類型一樣&#xff0c;在賦值的時…

【Latex】TeXstudio編譯器選項修改

1、動機 編譯國科大博士畢業答辯論文latex時報錯 Package ctable Error: You must load ctable after tikz. 2、方法 經過搜索發現是因為這是中文模板&#xff0c;編譯的選項不對&#xff0c;需要從 PDFLaTeX 調整到 XeLaTeX。于是操作如下 1&#xff09;點擊選項 2&#xf…

linux 文件目錄操作命令【重點】

目錄 ls cd cat more tail【工作中使用多】 mkdir rmdir rm ls 作用: 顯示指定目錄下的內容 語法: ls [-al] [dir] 說明: -a 顯示所有文件及目錄 (. 開頭的隱藏文件也會列出) -l 除文件名稱外&#xff0c;同時將文件型態(d表示目錄&#xff0c;-表示文件)、權限…

SpringMVC POST請求傳參 屬性名字母大寫注入失敗解決方案

問題描述&#xff1a; 我現在有一個接口通過一個實體(RequestBody)去接收一系列的參數&#xff0c;前端傳參為一個JSON字符串&#xff0c;但是當我的屬性名以大寫字母開頭(有的中間還有下劃線)&#xff0c;或者第二個字母是大寫字母的時候&#xff0c;我發現后端接收不到參數值…