計算機網絡(2)——應用層

1.應用層概述

應用層(Application Layer)屬于計算機網絡體系結構中的最頂層,直接面向用戶,提供各種網絡服務和應用程序的接口

本文主要的學習內容如下:
(1)網絡應用進程通信方式

  • 客戶端-服務器方式
  • 點對點方式
  • 混合方式

(2)網絡應用的需求與傳輸層服務

  • 可靠性
  • 帶寬
  • 延遲

(3)各種網絡應用及協議

  • Web應用 -> HTTP
  • Email應用 -> SMTP、POP
  • P2P應用

(4)Socket編程

  • TCP
  • UDP

2.網絡應用進程通信方式

進程:主機上運行的程序
在這里插入圖片描述

Question1:同一主機上運行的進程之間如何通信?
Answer:同一主機上運行的程序通過操作系統提供的進程間通信機制進行通信,這里不展開介紹

Question2:不同主機上運行的進程之間如何通信?
Answer:消息(數據)交換。主要有電路交換報文交換分組交換

Question3:如何定位不同主機上運行的進程?
Answer:不同主機的不同進程都擁有唯一的標識符進程的標識符 = IP地址 + 端口號在這里插入圖片描述

注意1:網絡應用通信需要遵守應用層協議協議主要定義了以下規范

  • 消息的類型(type):請求消息、響應消息
  • 消息的語法格式(syntax):消息中有哪些字段,每個字段如何描述/采取什么結構
  • 字段的語義(semantics):字段中信息的含義
  • 規則(rules):應用何時發送/接收消息,應用如何發送/接收消息

下面是網絡應用中的主要通信方式

2.1 客戶端-服務器方式(Client-Sever,CS)

服務器:接受請求返回響應的終端

  • 7*24(007)小時提供服務
  • IP地址/域名長期固定
  • 利用大量服務器實現可擴展性

客戶端:發起請求接收響應的終端

  • 與服務器通信,使用服務器提供的服務
  • 間歇性接入網絡(不是一直在線)
  • IP地址不固定(IP地址動態分配,網絡層在詳細介紹)
  • 不會與其他客戶端直接通信
    在這里插入圖片描述

2.2 點對點方式(Peer-to-Peer,P2P)

  • P2P結構中的每個節點都可以充當客戶端或服務器的角色
  • 任意節點之間可以直接通訊
  • 節點間歇性接入網絡
  • 節點IP地址不固定
    在這里插入圖片描述

2.3 混合方式

Question:能不能結合以上兩種方式的優點,規避缺點,設計一種新的通信方式/模型?

以Napster為例:Napster 在文件傳輸文件搜索方面采用了混合架構,結合了P2P客戶端-服務器兩種結構。這種混合架構在當時是一個創新設計,既利用了P2P的優勢,又通過中央服務器提高了效率和可控性

(1)客戶端-服務器(CS)結構用于文件搜索:

  • 中央服務器:Napster 使用一個中央服務器來維護一個所有共享文件的索引目錄。當用戶想要查找某個文件時,他們會向中央服務器發送搜索請求

(2)對等網絡(P2P)結構用于文件傳輸:

  • 直接連接:一旦用戶選擇了要下載的文件,Napster 會直接連接文件所有者的計算機,建立點對點連接
  • 文件傳輸:文件直接從文件所有者的計算機傳輸到請求者的計算機,而不經過中央服務器。這種方式大大提高了傳輸效率,并減輕了中央服務器的負擔
    在這里插入圖片描述

3.Web應用

3.1 Web應用結構與協議

Web應用使用客戶端-服務器通信方式,客戶端與服務器之間使用HTTP/HTTPS協議進行通信在這里插入圖片描述
服務器:接受并處理HTTP請求,返回HTTP響應。主要包括:

  • Web頁面(HTML文檔):包含多種對象和鏈接‘
  • Web對象(靜態/動態對象):可以是HTML文檔、圖像文件、視頻文件、音頻文件等
  • URL(統一資源定位符):對象之間的尋址依靠URL

客戶端:發送請求,接受并解析響應在這里插入圖片描述
在這里插入圖片描述

3.2 HTTP協議

Java EE(17)——網絡原理——應用層HTTP協議

3.3 HTTPS協議

Java EE(18)——網絡原理——應用層HTTPS協議

3.4 Web緩存技術

目的:在不訪問服務器的情況下滿足客戶端的HTTP/HTTPS請求
意義:

  • 縮短客戶端的響應時間
  • 減少服務器的并發量

在客戶端-服務器中間架設代理服務器用來保存緩存在這里插入圖片描述

  • 當clientA發起HTTP請求某資源時,該HTTP會先到達代理服務器,代理服務器優先在自己的數據庫中查找。如果有相應資源,直接返回給clientA;如果沒有,則向原始服務器發送HTTP請求,原始服務器返回響應后,代理服務器先緩存該資源,再返回給clientA
  • 當clientB再次請求相同資源時,HTTP請求將不會到達原始服務器,而是由代理服務器返回資源,一定程度上減輕了服務器的壓力
    Question1:如果當clientB發送請求時,該資源已經經歷了一次版本更新,如何保證獲取到最新版資源?
    Answer1:當代理服務器收到HTTP請求時,代理服務器會一個HTTP請求檢測該資源的版本是否和原始服務器中的一致。如果版本一致,原始服務器會返回304 Not Modified,告訴代理服務器版本一致;如果版本不一致,原始服務器會返回最新版資源,代理服務器緩存后再返回給clientB
    Question2:既然每次代理服務器收到請求之后都會跟原始服務器檢測版本,會不會加重服務器負擔?
    Answer2:當版本一致時,原始服務器只會返回304 Not Modified,并不攜帶額外資源,相較于客戶端直接訪問服務器的負擔會小很多

4.Email應用

4.1 Email應用的構成

Email應用的構成

  • 郵件客戶端(user agent):撰寫、發送、接收和管理電子郵件的應用程序
  • 郵件服務器:處理電子郵件的傳輸和存儲的計算機,負責在用戶之間傳遞郵件,并儲存用戶的郵件數據
  • SMTP協議(Simple Mail Transfer):定義了郵件在互聯網上傳輸的標準

4.2 Email應用示例

在這里插入圖片描述
A想發送一封郵件給B,該郵件會先傳輸到A對應的服務器③,再傳輸給B對應的服務器⑤,等到B上線的時候再接收郵件

Question:為什么郵件不能直接發送到B?
Answer:因為B不一定在線。想直接發送到B的前提是A和B要建立連接,但如果B不在線就無法建立連接,所以無法直接發送到B。但是B對應的服務器⑤一定在線,服務器⑤會保存該郵件等到B來接收

4.3 SMTP協議

概述:

  • SMTP協議:簡單郵件傳輸協議
  • 使用C/S結構工作在TCP的25號端口
  • 持久連接

交互過程:

  • 三次握手建立連接(傳輸層再詳細介紹)
  • 身份認證
  • 郵件傳輸
  • 斷開連接

在這里插入圖片描述
命令/響應交互模式

  • 命令(command):ASCII文本
  • 響應(response):狀態代碼和語句

協議格式:
在這里插入圖片描述
頭部(header):包含郵件的元信息,如發件人、收件人、主題等。常見頭部字段如下:

  • From:發件人郵箱
  • To:收件人郵箱
  • Subject:郵件主題
  • Date:發送日期
  • Contect-Type:正文類型(body中的格式)

空行:用于分割頭部和body
正文(body):郵件的實際內容

注意:根據RFC5321規定,傳統的SMTP協議使用7為ASCII字符集進行通信,這意味著所有的SMTP命令、響應和header都必須是ASCII字符。因為SMTP協議必須使用ASCII字符集,直接傳輸非ASCII數據(如二進制文件)時會出問題,為了解決這個問題。引入了MIME(多用途互聯網郵件擴展),允許在電子郵件中使用非ASCII數據在這里插入圖片描述

4.4 POP3

客戶端向服務器發送電子郵件的時候使用SMTP協議,但客戶端讀取服務器中的郵件時使用郵件訪問協議(Post Office Protocol),本文介紹POP3協議在這里插入圖片描述

概述:

  • POP3:郵局協議版本3(Post Office Protocol-Version 3)
  • 作用是將存儲在郵件服務器上的電子郵件離線下載到本地
  • 使用C/S結構工作在TCP的110號端口

交互流程:
在這里插入圖片描述
Question:為什么上面獲取某一封郵件后,要刪除該郵件呢?
Answer:這和POP3協議的訪問模式有關

訪問模式:
(1)下載并刪除模式:客戶端下載郵件后刪除該郵件

  • 優點:節省空間
  • 缺點:如果用戶換了客戶端,就無法重讀該郵件

(2)下載并保持模式:客戶端下載郵件不刪除該郵件

  • 優點:不同的客戶端都可以保留郵件的拷貝
  • 缺點:占用大量空間

5.P2P應用

5.1 文件分發耗時分析

Question:從一個服務器向N個節點分發一個文件需要多長時間?
在這里插入圖片描述

客戶端-服務器結構

  • 服務器向網絡核心中串行地發送N個文件,所需時間:N×F/us
  • 節點i下載,所需時間:F/min(di)
    該結構所需時間dcs =
    max{N×F/us,F/min(di)}

P2P結構

  • 服務器必須向網絡核心中發送一個副本,所需時間:F/us
  • 節點i下載,所需時間:F/min(di)
  • 總下載量:NF,總上傳速率: U s + ∑ u i Us+\sum_{}^{} u_i Us+?ui?
    該結構所需時間dP2P = max{F/us,F/min(di), N ? F / ( U s + ∑ u i ) N*F/(Us+\sum_{}^{} u_i) N?F/(Us+?ui?)}

客戶端-服務器結構 VS P2P結構
在這里插入圖片描述
隨著節點數量的不斷增加,C/S結構完成文件轉發所需的時間線性增長,P2P結構完成文件轉發所需的時間趨于不變

5.2 P2P文件分發協議:BitTorrent

概述:
BitTorrent是最廣泛使用的P2P文件分發協議之一。它通過將文件分割成小塊(pieces),并允許多個用戶同時下載和上傳這些小塊,從而實現高效的文件分發
工作原理:

  • 種子文件(.torrent): 包含有關要下載的文件的信息,如文件大小、名稱、tracker服務器的地址等
  • Tracker服務器: 跟蹤參與下載的peer,并幫助peer之間建立連接。
  • peer:BitTorrent網絡中任何一個正在下載或上傳文件的節點
  • chunk:在BitTorrent協議中,文件被分割成多個較小的部分,每個部分稱為一個chunk
    在這里插入圖片描述

場景假設:現在有一個peer(Alice)加入該torrent組,一開始Alice沒有任何chunk,隨著時間的推移會逐漸積累。Alice會向tracker注冊并獲取節點清單,與某些節點建立連接以獲取目標chunk(稀缺優先),在獲取chunk的同時Alice也會向其他peer發送chunk(tit-for-tat)在這里插入圖片描述
Question:上述提到的稀缺優先tit-for-tat是什么?
在這里插入圖片描述

5.3 索引

P2P結構中的索引:信息到節點位置(IP地址+端口號)的映射

應用場景:
(1)文件共享

  • 利用索引動態跟蹤節點所共享的文件的位置
  • 節點告訴索引它擁有哪些文件
  • 節點搜索索引,從而獲知能夠得到哪些文件

(2)即時消息(QQ)

  • 索引負責將用戶名映射到位置
  • 當用戶開啟即時通訊(Instant Message)應用時,需要通知索引它的位置
  • 節點檢索索引,確定用戶的位置

5.3.1 集中式索引

在這里插入圖片描述

  • 節點加入時,向中央目錄服務器登記本節點的IP地址和擁有的資源
  • 節點在中央目錄服務器中搜索索引,從而獲知目標資源在哪個節點中
  • 節點之間直接建立連接來請求資源

缺點:

  1. 單點失效問題:中央服務器崩潰會導致整個網絡無法搜索資源
    
  2. 性能問題:中央服務器需要處理所有請求,導致負載過高
    

5.3.2 分布式索引

  • 每個節點對它共享的文件進行索引,且只對它共享的文件進行索引
  • 所有節點構成分布式網絡:任意兩個節點間有TCP連接,則構成分布式網絡的一條邊
  • 節點通過洪泛式查詢搜索資源
    在這里插入圖片描述

缺點:

  1. 網絡擁塞:在大規模網絡中,大量的查詢請求會導致網絡擁塞
    
  2. 資源消耗:每個節點都需要處理大量的查詢請求
    
  3. 重復查詢:同一個查詢可不能會被多次處理,導致不必要資源浪費
    

5.3.2 混合式索引

介于集中式索引和分布式索引的方法

  • 整個網絡中分為普通節點超級節點
  • 超級節點和其子節點(普通接待你)之間維持TCP連接,超級節點之間維持TCP連接
  • 超級節點負責跟蹤子節點的內容
    在這里插入圖片描述

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

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

相關文章

Android 繪制折線圖

用了一段時間的 Jetpack Compose ,感覺寫 UI 的效率確實會提升不少 。 配合 AI 編程繪制了一個折線圖。供大家學習參考! @Composable fun TemperatureChart() {val timeLabels = listOf("7:00", "8:00", "9:00", "10:00", "11:…

JavaScript- 1.3 DOM對頁面內容進行操作

本系列可作為前端學習系列的筆記,代碼的運行環境是在HBuilder中,小編會將代碼復制下來,大家復制下來就可以練習了,方便大家學習。 HTML和CSS系列文章 已經收錄在前端專欄,有需要的寶寶們可以點擊前端專欄查看&#xff…

CSS-5.1 Transition 過渡

本系列可作為前端學習系列的筆記,代碼的運行環境是在HBuilder中,小編會將代碼復制下來,大家復制下來就可以練習了,方便大家學習。 HTML系列文章 已經收錄在前端專欄,有需要的寶寶們可以點擊前端專欄查看! 點…

使用Google 最新發布的veo-3 視頻生成和數字人技術制作介紹核聚變技術的短視頻:《逐夢星海:中國聚變照亮未來》

文章大綱 結合谷歌最新模型說明示例分鏡提示詞(基于 Gemini 2.5)最終視頻生成(基于 Veo3)解說詞文稿應用場景參考文獻先來看看效果: 視頻中混入了一些字幕,看來Google的技術還有待提高哈,里面有的托卡馬克好像挺像那么回事!厲害 逐夢星海:中國聚變照亮未來 #mermaid-sv…

服務器數據恢復—Linux系統服務器崩潰且重裝系統的數據恢復案例

服務器數據恢復環境: linux操作系統服務器中有一組由4塊SAS接口硬盤組建的raid5陣列。 服務器故障: 服務器工作過程中突然崩潰。管理員將服務器操作系統進行了重裝。 用戶方需要恢復服務器中的數據庫、辦公文檔、代碼文件等。 服務器數據恢復過程&#…

結構型:門面模式(外觀模式)

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 1、核心思想 目的:通過高層接口(門面類)封裝多個子系統的復雜交互,客戶端只需與門面交互,簡化入口;同時隔離客…

MidJourney生成王昭君全身像提示詞

漢服王昭君全身像,中國水墨融合工筆畫風格,低飽和度暖色調,絹本設質感: 服飾細節:身著朱紅色曲裾深衣,衣擺拖地三層,金線刺繡鳳凰祥云暗紋,寬袖綴珍珠滾邊,腰間白玉組佩…

GitHub 趨勢日報 (2025年05月21日)

本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星總星數語言1microsoft/WSLLinux的Windows子系統? 1731? 25184C2virattt/ai-hedge-fundA…

電子電氣架構 --- 細化造車階段流程

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

談談Oracle BUFFER CACHE的命中率

BUFFER CACHE的命中率已成為一個老生常談的話題,在數據庫等待事件出現之前,DBA進行數據庫系統級優化時,往往會首先觀察BUFFER CACHE的命中率。命中率高就意味著數據庫運行正常,很多Oracle官方提供的巡檢腳本都將BUFFER CACHE的命中…

云渲染技術解析與渲酷平臺深度測評:如何實現高效3D創作?

一、云渲染技術核心原理 1.1 分布式計算架構 云渲染的本質是通過多節點并行計算實現效率突破。以動畫渲染為例,一個30秒的動畫通常包含720幀(按24幀/秒計算),傳統單機需要連續處理所有幀,而云渲染可將任務拆解為720個…

JavaScript-DOM-02

自定義屬性&#xff1a; ? <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

Kind方式部署k8s單節點集群并創建nginx服務對外訪問

資源要求 請準備好doker環境&#xff0c;盡量用比較新的版本。我的docker環境如下 docker 環境&#xff1a; Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3 安裝kind kind表現上就是一個二進制程序&#xff0c;下載對應版本并增加執行權限即可&#xff1a; cu…

MySQL備份恢復:數據安全的終極指南

引言 各位數據庫愛好者們好&#xff01;今天我們要深入探討MySQL數據庫的"生命保險"——備份與恢復策略 &#x1f6e1;?。在數據即資產的時代&#xff0c;任何數據丟失都可能造成災難性后果。本教程將帶你全面掌握從邏輯備份到物理備份&#xff0c;從二進制日志恢復…

id分頁遍歷數據漏行問題

令入參id為0 while(true){ select * from table where id>#{id} order by id asc limit 100; 取結果集中最大id作為下次查詢的入參 其他操作 } 這個算法一般沒問題&#xff0c;但在主從數據系統中&#xff0c;主庫寫&#xff0c;查詢從庫遍歷數據時&#xff0c;出現了…

OpenCV級聯分類器

概念 OpenCV 級聯分類器是一種基于 Haar 特征、AdaBoost 算法和級聯結構的目標檢測方法&#xff0c;通過多階段篩選快速排除非目標區域&#xff0c;實現高效實時檢測&#xff08;如人臉、行人等&#xff09;。 加載級聯分類器 // 加載級聯分類器CascadeClassifier cascade;// …

C++ inline 內聯函數

一、定義與設計初衷 inline 函數是 C 中通過 減少函數調用開銷 優化程序效率的機制。其核心設計初衷是 取代 C 語言中宏定義&#xff08;#define&#xff09;&#xff0c;同時解決宏的以下缺陷&#xff1a; 類型安全問題&#xff1a;宏僅進行文本替換&#xff0c;無法進行參數…

uniapp-商城-64-后臺 商品列表(商品修改---頁面跳轉,深淺copy應用,遞歸調用等)

完成了商品的添加和展示&#xff0c;下面的文字將繼續進行商品頁面的處理&#xff0c;主要為商品信息的修改的頁面以及后天邏輯的處理。 本文主要介紹了商品信息修改頁面的實現過程。首先&#xff0c;頁面布局包括編輯和刪除功能&#xff0c;未來還可添加上架和下架按鈕。通過c…

digitalworld.local: VENGEANCE靶場

1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.182&#xff0c;靶場IP192.168.23.3 3&#xff0c;對靶機進行端口服務探測 nmap -sV -T4 -p- -A 192.168.23.3 端口號 協…

微店平臺店鋪商品接口開發指南

微店API獲取店鋪所有商品實現方案 以下是使用微店開放平臺API獲取店鋪所有商品的完整實現代碼&#xff0c;包含請求封裝、分頁處理和錯誤處理機制。 點擊獲取key和secret from weidian_api import WeidianAPI # 配置你的微店應用憑證 APP_KEY "your_app_key" APP_…