五層協議介紹

層次核心功能典型協議/設備
應用層為用戶應用程序提供網絡服務接口(如文件傳輸、電子郵件、網頁瀏覽)HTTP、FTP、SMTP、DNS、SSH
傳輸層提供端到端的可靠或不可靠數據傳輸,處理流量控制和差錯恢復TCP(可靠)、UDP(不可靠)
網絡層負責數據包的路由選擇和跨網絡傳輸,處理邏輯尋址(如IP地址)IP、ICMP、ARP、路由器
數據鏈路層將比特流封裝為幀,提供物理尋址(如MAC地址)和錯誤檢測,管理鏈路訪問控制Ethernet、Wi-Fi(802.11)、PPP、交換機
物理層定義物理介質的電氣、機械特性,傳輸原始比特流(0/1信號)雙絞線、光纖、無線信號、中繼器

一、應用層

1.作用:直接為用戶應用程序提供網絡服務,定義數據格式和交互規則

2.主要協議:HTTP協議,HTTPS協議

3.儲備知識

1)日常我們在瀏覽器上見到的url(統一資源定位符)中包括協議,域名,資源路徑

2)表現形式:協議://域名/資源路徑

3)域名會被解析成IP地址

4)使用域名的原因:域名具有更強的表義性,便于用戶了解自己訪問的是哪個服務器

5)DNS(域名系統):存儲IP地址和域名的映射關系

4.HTTP協議的介紹

4.1HTTP請求

1)HTTP以空行為分隔符做到了報頭與有效載荷的分離

2)client和server如何保證自己讀到的報文是完整的?

答:step1:讀取字節流,分析讀到的字節流是否存在空行

step2:提取content-length,獲得正文長度,然后再讀取或截取指定長度的內容

注:如果接收方的應答內攜帶數據,他的response中的響應報頭中攜帶content-length:xx

4.2HTTP響應

1)content-type:數據類型

2)一張網頁內可能有多種資源(如:網頁自己+圖片),這就導致了如果想獲得網頁,除識別網頁外,還要識別其他類型,故而瀏覽器會發送第二次請求

3)臨時重定向和永久重定向

臨時重定向:不改變任何信息,多用于登錄,跳轉,狀態碼多為302/307

永久重定向:多用于網站更換域名或更換網址,狀態碼多為301/308

4)方法:Get和Post

Get:獲取資源,如果進行參數提交通過uri進行提交

Post:上傳資源,如果進行參數提交通過httprequest正文提交

GetPost(相較于Get比較安全)
提交的參數不宜過長可以傳送長數據
會回顯參數不會回顯參數

注:Get和Post都不安全,二者皆為明文傳送

5)為了在一定程度上解決安全問題,引入session和cookie

3.協議數據單元(PDU):數據

二、傳輸層

1.作用:確保數據從源進程可靠傳輸到目標進程(通過端口號標識)

2.主要協議:TCP和UDP

特性TCPUDP
設計目標提供可靠、有序、無差錯的數據傳輸提供高效、低延遲的簡單數據傳輸
連接管理面向連接(需建立和釋放連接)無連接(直接發送數據,無需握手)
傳輸方式字節流(無邊界,需應用層自行分幀)數據報(保留消息邊界,每個UDP包獨立)

3.TCP協議

1)報頭和有效載荷如何分離?

答:讀取報文段的前20個字節,提取前4位首部長度,計算有效載荷長度

2)可靠性的原因:對于每一次請求都會有對應的應答,保證了歷史消息的可靠性(即保證可靠的核心機制是確認應答機制)

3)面試題:為什么報文段里需要包含兩個序號(確認序號和序號)

答:服務器不一定只作應答,他可能是捎帶應答(應答+數據),這就要求接收方既要對報文進行確認,又要包含自己的序號

4)標志位

標志位全稱作用取值含義典型場景核心特點
URGUrgent Pointer標識緊急指針字段是否有效,用于高優先級數據傳輸1=緊急數據有效;0=無效服務端響應慢時,客戶端發送緊急狀態查詢(如“立即終止”指令)緊急數據優先處理,應用層稱為“帶外數據”
ACKAcknowledgment確認號字段是否有效,表示報文為確認包1=確認號有效;0=無效(僅握手首包)所有正常通信報文(除首次SYN)均需ACK=1累積確認機制,確認號為期望接收的下一個字節序號
PSHPush Function強制接收方立即將數據交付應用層,避免緩沖區堆積1=立即推送;0=正常緩存交互式應用(如Telnet、SSH)需實時顯示用戶輸入減少延遲,優化實時性
RSTReset Connection強制釋放連接并重建,通常因嚴重錯誤(如主機崩潰、非法數據包)觸發1=重置連接;0=正常連接異常、拒絕SYN Flood攻擊、端口未監聽時返回RST可單獨發送或與ACK組合,快速終止連接
SYNSynchronize Sequence初始化序列號,用于連接請求或接受報文1=發起/接受連接;0=正常數據TCP三次握手(客戶端SYN→服務端SYN+ACK→客戶端ACK)不攜帶數據但消耗序列號,建立連接唯一方式
FINFinish Transmission發送方數據已發送完畢,請求釋放連接(可能仍有接收能力)1=終止連接;0=正常TCP四次揮手(客戶端FIN→服務端ACK→服務端FIN→客戶端ACK)即使無數據也消耗序列號,支持半關閉狀態(如服務端繼續發送數據)

5)3次握手建立連接

階段客戶端動作服務端動作報文標志位關鍵作用
1. SYN_SENT發送SYN包(請求連接)監聽端口,等待客戶端請求SYN=1, seq=x客戶端初始化序列號x,表示“我想建立連接”。
2. SYN_RCVD等待服務端響應收到SYN后回復SYN+ACK包SYN=1, ACK=1, seq=y, ack=x+1服務端確認客戶端請求(ack=x+1),并初始化自身序列號y
3. ESTABLISHED發送ACK包(確認連接)收到ACK后連接建立ACK=1, seq=x+1, ack=y+1客戶端確認服務端響應,雙方進入ESTABLISHED狀態,可開始數據傳輸。

Q:為什么要進行3次握手?

A:1.以最短的方式驗證全雙工2.以最小的成本100%確認雙方的通信意愿

6)4次回收釋放連接

階段主動關閉方(客戶端)被動關閉方(服務端)報文標志位關鍵作用
1. FIN_WAIT_1發送FIN包(請求關閉)收到FIN后進入CLOSE_WAIT狀態FIN=1, seq=u客戶端表示“我數據已發送完畢,但可能繼續接收數據”。
2. CLOSE_WAIT等待服務端確認回復ACK包ACK=1, seq=v, ack=u+1服務端確認客戶端關閉請求,但可能仍有數據未發送完。
3. LAST_ACK(可選)繼續接收數據發送FIN包(服務端數據發送完畢)FIN=1, ACK=1, seq=w, ack=u+1服務端表示“我數據也發送完畢,可以關閉連接”。
4. TIME_WAIT回復ACK包(確認服務端關閉)收到ACK后進入CLOSED狀態ACK=1, seq=u+1, ack=w+1客戶端確認服務端關閉,等待2MSL(最大報文段生存時間)后釋放資源(防止延遲報文干擾)。

Q1:為什么主動斷開連接的一方要進入TIME_WAIT?

A1:保證在傳輸方向上尚未達到的報文已經在網絡中消散,不會引起下一次連接的錯誤

Q2:如果client已經退出或者關閉,服務器端不關閉會怎樣?

A2:服務器會一直處于TIME_WAIT狀態,依舊占用fd,連接沒有釋放

7)滑動窗口

發送方一次可以發送多少數據有自己的滑動窗口的大小決定

滑動窗口的大小=min(對方的接收能力,擁塞窗口的大小)

滑動窗口不可以向左滑動

8)快重傳和超時重傳

快重傳的條件:連續收到3個重復確認

超時重傳的條件:超時并且沒有應答

9)擁塞控制

9.1)目標:避免網絡過載

9.2)四大算法

算法名稱觸發條件核心行為邏輯關鍵特點典型應用場景
慢啟動(Slow Start)連接建立、超時重傳后,或從快速恢復退出后(部分實現)。1. 初始cwnd=1 MSS(或更小)。
2. 每收到一個ACK,cwnd += 1 MSS(指數增長)。
3. 達到ssthresh后切換到擁塞避免。
快速探測帶寬:指數增長迅速擴大發送窗口。
風險控制:避免一開始就發送大量數據導致網絡過載。
連接初期、網絡空閑后的數據傳輸啟動階段。
擁塞避免(Congestion Avoidance)cwnd ≥ ssthresh,或從快速恢復退出后。1. 每收到一個ACK,cwnd += 1 MSS / cwnd(線性增長,每輪RTT增加1 MSS)。
2. 發生丟包時,進入快速重傳/恢復。
保守增長:緩慢增加發送速率,防止觸發擁塞。
穩定性優先:適合網絡負載接近閾值時。
網絡帶寬接近飽和時的持續數據傳輸階段。
快速重傳(Fast Retransmit)收到3個重復ACK(表明中間有數據包丟失,但后續數據已到達接收方)。1. 立即重傳丟失的段(無需等待超時)。
2. 觸發快速恢復,調整ssthreshcwnd
快速響應丟包:比超時重傳減少數秒等待時間。
依賴重復ACK:適用于部分丟包場景。
網絡輕微擁塞或隨機丟包時的快速恢復。
快速恢復(Fast Recovery)快速重傳后(即收到3個重復ACK后)。1.?ssthresh = cwnd / 2(減半擁塞閾值)。
2.?cwnd = ssthresh + 3*MSS(補償已離開網絡的3個重復ACK對應的段)。
3. 每收到一個重復ACK,cwnd += 1 MSS;收到新ACK后退出,進入擁塞避免。
避免慢啟動:維持較高發送速率,減少性能波動。
補償機制:通過重復ACK推斷網絡狀態。
快速重傳后的擁塞窗口調整,平衡效率與穩定性。

3.協議數據單元(PDU):TCP的報文段,UDP的用戶數據報

三、網絡層

1.作用:通過路由算法(如Dijkstra)確定數據包從源到目標的最佳路徑

2.主要協議:IP協議

1)TCP/IP協議的核心功能是將數據100%可靠從主機A傳輸到主機B

2)IP地址=網絡號+主機號

3)子網劃分

Q:問什么要進行子網劃分?

A:未來查找目標主機時從目標網絡中查找,從而提高效率

4)在網絡通信中,私有IP不能出現在公網中,因為私有IP可以重復,這將導致從此發出的報文無法回來

5)每經過一個內網路由器進行src:ip替換,替換成當前路由器的wan口IP

6)將內網IP轉換為公網IP需要借助NAT技術

3.協議數據單元(PDU):IP數據報

四、數據鏈路層

1.作用:將網絡層數據包封裝為幀(Frame),添加幀頭和幀尾。

2.主要協議:PPP協議

3.協議數據單元(PDU):數據幀

4.數據鏈路層的三個基本問題:封裝成幀,透明傳輸,差錯檢測

五、物理層

1.作用:通過物理介質(如電纜、無線信號)傳輸比特流

2.協議數據單元(PDU):比特

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

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

相關文章

gin框架 中間件 是在判斷路由存在前執行還是存在后執行的研究

最近有個需求,就是發現我們的驗簽路由中間件會在判斷路由是否存在前執行。我們期望是gin框架先自己判斷路由中間件是否存在,存在了再走后面的中間件,不存在直接返回404.這樣能節省一定的資源。 研究了一下gin框架的源碼, 先說一下…

AGV 無人叉車關鍵技術問題解析:精準定位算法 / 安全避障邏輯 / 系統對接協議全方案

AGV無人叉車作為智能物流的核心裝備,在落地時常面臨定位漂移、系統兼容性差、避障失靈等痛點。本文深度解析5大高頻問題成因與解決方案,助企業規避運營風險,提升效率。 一、定位導航問題:行駛路徑偏移怎么辦? 1.典型…

AI Agent意圖識別

意圖識別:多維度拆解 意圖識別是人機對話系統(Conversational AI)的“大腦皮層”,負責理解用戶言語背后的真實目的。它將用戶的自然語言輸入映射到一個預定義的意圖類別上。可以說,意圖識別的準確性,直接決…

.net 8 項目 一天快速入門

這里有一個解決方案 這里有一個接口類的項目 這會呢如果還想在建一個項目 我們在解決方案這里右鍵,添加,新建項目 點擊 我現在要建立一個類庫,所以就搜一下類庫,這里的第一個就是我們需要創建的類庫 起個名字,計算類 進來了 可以看到這里有多了一個項目,但是他們…

語音大模型速覽(一)F5-TTS

F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching 論文鏈接:https://arxiv.org/pdf/2410.06885代碼鏈接:https://SWivid.github.io/F5-TTS/ 一段話總結 本文提出了 F5-TTS,一種基于流匹配和擴散 Transform…

Codeforces 2021 C Those Who Are With Us

[Problem Discription]\color{blue}{\texttt{[Problem Discription]}}[Problem Discription] 給定一個 nmn \times mnm 的表格 ai,ja_{i,j}ai,j?,你可以恰好進行一次如下操作: 選擇一個格點 (r,c)(r,c)(r,c)。對于所有滿足 iririr 或者 jcjcjc 的格點 (…

chrome插件合集

最近一段時間呢(不到一年),實現了大概二十幾個chrome插件。很多人不知道的是,其實開發插件很解壓,就好像是我喜歡沿著公園的小路散步一樣,每開發一個插件帶給我的成就感和快樂都是獨特的。我依然記得自己開發出第1個插件時的快樂&…

【機器學習深度學習】模型微調的基本概念與流程

目錄 前言 一、什么是模型微調(Fine-tuning)? 二、預訓練 vs 微調:什么關系? 三、微調的基本流程(以BERT為例) 1?? 準備數據 2?? 加載預訓練模型和分詞器 3?? 數據編碼與加載 4?…

大語言模型預訓練數據——數據采樣方法介紹以GPT3為例

大語言模型預訓練數據——數據采樣方法介紹以GPT3為例一、數據采樣核心邏輯二、各列數據含義一、數據采樣核心邏輯 這是 GPT - 3 訓練時的數據集配置,核心是非等比例采樣——不按數據集原始大小分配訓練占比,而是人工設定不同數據集在訓練中被抽取的概率…

針對同一臺電腦,為使用不同 SSH Key 的不同用戶分別設置 Git 遠程倉庫憑據的操作指南

一、準備工作 生成多對 SSH Key 為每個用戶(如“個人”、“公司”)生成一對獨立的 SSH Key。 示例(在 Git Bash 或 Linux 終端中執行): # 個人 ssh-keygen -t rsa -b 4096 -C "personalexample.com" -f ~/.…

【V5.0 - 視覺篇】AI的“火眼金睛”:用OpenCV量化“第一眼緣”,并用SHAP驗證它的“審美”

系列回顧: 在上一篇 《給AI裝上“寫輪眼”:用SHAP看穿模型決策的每一個細節》 中,我們成功地為AI裝上了“透視眼鏡”,看穿了它基于數字決策的內心世界。 但一個巨大的問題暴露了:它的世界里,還只有數字。 它…

Open3D 基于最大團(MAC)的點云粗配準

MAC 一、算法原理1、原理概述2、實現流程3、總結二、代碼實現三、結果展示博客長期更新,本文最新更新時間為:2025年7月1日。 一、算法原理 1、原理概述 最大團(Maximal Cliques, MAC)法在點云配準中的應用,是近年來解決高離群值(outlier)和低重疊場景下配準問題的重要…

Science Robotics發表 | 20m/s自主飛行+避開2.5mm電線的微型無人機!

從山火搜救到災后勘察,時間常常意味著生命。分秒必爭的任務要求無人機在陌生狹窄環境中既要飛得快、又要飛得穩。香港大學機械工程系張富教授團隊在Science Robotics(2025)發表論文“Safety-assured High-speed Navigation for MAVs”提出了微型無人機的安全高速導航…

【數據分析】如何在PyCharm中高效配置和使用SQL

PyCharm 作為 Python 開發者的首選 IDE,其 Professional 版本提供了強大的數據庫集成功能,讓開發者無需切換工具即可完成數據庫操作。本文將手把手教你配置和使用 PyCharm 的 SQL 功能。 一、安裝和配置 PyCharm 老生常談,第一步自然是安裝并…

OpenShift AI - 使用 NVIDIA Triton Runtime 運行模型

《OpenShift / RHEL / DevSecOps 匯總目錄》 說明:本文已經在 OpenShift 4.18 OpenShift AI 2.19 的環境中驗證 文章目錄 準備 Triton Runtime 環境添加 Triton Serving Runtime運行基于 Triton Runtime 的 Model Server 在 Triton Runtime 中運行模型準備模型運行…

物聯網數據安全區塊鏈服務

物聯網數據安全區塊鏈服務 下面是一個專為物聯網數據安全設計的區塊鏈服務實現,使用Python編寫并封裝為RESTful API。該服務確保物聯網設備數據的不可篡改性、可追溯性和安全性。 import hashlib import json import time from datetime import datetime from uui…

數據集-目標檢測系列- 卡車 數據集 truck >> DataBall

數據集-目標檢測系列- 卡車 數據集 truck >> DataBall貴在堅持!* 相關項目1)數據集可視化項目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview2)數據集訓練、推理相關項目&…

vue/微信小程序/h5 實現react的boundary

ErrorBoundary react的boundary實現核心邏輯無法處理的情況包含函數詳細介紹getDerivedStateFromError和componentDidCatch作用為什么分開調用 代碼實現(補充其他異常捕捉)函數組件與useErrorBoundary(需自定義Hook) vue的boundar…

Day113 切換Node.js版本、多數據源配置

切換Node.js版本 1.nvm簡介nvm(Node Version Manager),在Windows上管理Node.js版本,可以在同一臺電腦上輕松管理和切換多個Node.js版本 nvm下載地址:https://github.com/coreybutler/nvm-windows/2.配置nvm安裝之后檢查nvm是否已經安裝好了&a…

應急響應靶機-linux2-知攻善防實驗室

題目: 1.提交攻擊者IP2.提交攻擊者修改的管理員密碼(明文)3.提交第一次Webshell的連接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)4.提交Webshell連接密碼5.提交數據包的flag16.提交攻擊者使用的后續上傳的木馬文件名稱7.提交攻擊者隱藏…