【計算機網絡】第2章:應用層—應用層協議原理

目錄

1. 網絡應用的體系結構

2. 客戶-服務器(C/S)體系結構

3. 對等體(P2P)體系結構

4. C/S 和 P2P 體系結構的混合體

Napster

即時通信

5. 進程通信

6. 分布式進程通信需要解決的問題

7. 問題1:對進程進行編址(addressing)

8. 問題2:傳輸層提供的服務

需穿過層間的信息(層間接口)

層面信息代表(Socket)

9. TCP 套接字(Socket)詳解

10. TCP socket

11. 問題2:傳輸層提供的服務-層間信息代碼

UDP Socket

12. UDP之上的套接字(Socket)

13. UDP socket

14. 套接字(Socket)

15. 問題 3:如何使用傳輸層提供的服務實現應用

16. 應用層協議


1. 網絡應用的體系結構

可能的應用架構:

  • 客戶-服務器模式(C/S: Client/Server)
  • 對等模式(P2P: Peer To Peer)
  • 混合體:客戶-服務器和對等體系結構

2. 客戶-服務器(C/S)體系結構

服務器:

  • 一直運行
  • 固定的 IP 地址和周知的端口號(約定)
  • 擴展性:服務器場
    • 數據中心進行擴展
    • 擴展性差

客戶端:

  • 主動與服務器通信
  • 與互聯網有間歇性的連接
  • 可能是動態 IP 地址
  • 不直接與其它客戶端通信


3. 對等體(P2P)體系結構

  • (幾乎)沒有一直運行的服務器
  • 任意端系統之間可以進行通信
  • 每一個節點既是客戶端又是服務器
    • 自擴展性:新 peer 節點帶來新的服務能力,也帶來新的服務請求
  • 參與的主機間歇性連接且可以改變 IP 地址
    • 難以管理
  • 例子:Gnutella, 迅雷


4. C/S 和 P2P 體系結構的混合體

Napster
  • 文件搜索:集中
    • 主機在中心服務器上注冊其資源
    • 主機向中心服務器查詢資源位置
  • 文件傳輸:P2P
    • 任意 Peer 節點之間傳輸文件
即時通信
  • 在線檢測:集中
    • 用戶上線時向中心服務器注冊 IP 地址
    • 用戶聯系中心服務器查找在線好友位置
  • 用戶間聊天:P2P
    • 兩個用戶直接通信

5. 進程通信

進程:在主機上運行的應用程序

  • 在同一個主機內:使用進程間通信機制通信(操作系統定義)
  • 不同主機:通過交換報文(Message)來通信
  • 使用 OS 提供的通信服務
  • 按照應用協議交換報文
  • 借助傳輸層提供的服務

客戶端進程:發起通信的進程
服務器進程:等待連接的進程

注意:P2P 架構的應用也有客戶端進程和服務器進程之分


6. 分布式進程通信需要解決的問題

  1. 進程標示和尋址問題(服務用戶)
  2. 傳輸層-應用層提供服務方式(服務)
    • 位置:層間界面的 SAP(TCP/IP:socket)
    • 形式:應用程序接口 API(TCP/IP:socket API)
  3. 如何使用傳輸層服務實現應用(用戶使用服務)
    • 定義應用層協議:報文格式、解釋、時序等
    • 編制程序,使用 OS API 調用網絡設施傳報文

7. 問題1:對進程進行編址(addressing)

  • 進程接收報文必須標識 SAP(發送同理)
  • 主機:唯一 32 位 IP 地址(但不足以唯一標識進程)
  • 需額外標識:
    • 傳輸層協議:TCP/UDP
    • 端口號(Port Numbers)
  • 知名端口號示例
    • HTTP: TCP 80
    • Mail: TCP 25
    • FTP: TCP 21(注:原圖標注為 TCP 2,實際應為 21)
  • 進程唯一標識IP地址 + 端口號(端節點)
  • 本質:主機間通信由?2 個端節點構成

8. 問題2:傳輸層提供的服務

需穿過層間的信息(層間接口)
  • 要傳輸的報文(本層 SDU)
  • 對方應用進程標識:
    • 目標 IP + TCP/UDP 端口號
  • 傳輸層實體(TCP/UDP)據此封裝:
    • TCP 段/UDP 數據報(含源/目標端口號)
    • 將 IP 地址交 IP 實體封裝數據報(源/目標 IP)
層面信息代表(Socket)
  • Socket 作用
    • 避免每次攜帶完整 4 元組信息(繁瑣易錯)
    • 用戶通過代號(socket)標識通信方
    • 類似 OS 文件句柄:操作句柄=操作文件
  • TCP Socket 特性
    • 需預先建立連接(會話關系穩定)
    • 用整數本地標示通信關系
    • 層間接口攜帶信息量最小
    • 本質代表 4 元組:(源IP, 源端口, 目標IP, 目標端口)

9. TCP 套接字(Socket)詳解

  • 定義:面向連接服務(TCP)的本地意義標示
  • 4 元組(源IP, 源端口, 目標IP, 目標端口)
  • 核心特性
    • 唯一指定一個會話(兩進程間)
    • 應用通過此標示與遠程程序通信
    • 無需每次發送報文指定完整 4 元組
  • 優勢
    • 類似 OS 文件句柄(替代目錄名/文件名)
    • 簡單高效,便于管理

10. TCP socket

11. 問題2:傳輸層提供的服務-層間信息代碼

UDP Socket
  • UDP服務特性
    • 無需預先建立連接
    • 每個報文獨立傳輸
    • 前后報文可能發送至不同分布式進程
  • 本地標識
    • 僅需一個整數表示本應用實體
    • 原因:報文可能傳輸至不同進程(無固定通信關系)
  • 層間接口信息
    • 最小化信息量
    • UDP Socket內容:本機IP + 本機端口
  • 傳輸要求
    • 發送報文時必須提供目標IP及端口
    • 接收報文時,傳輸層需上傳發送方的IP及端口

12. UDP之上的套接字(Socket)

  • 無連接服務(UDP)的Socket定義
    • 本地意義的2元組標識:(本機IP, 本機端口)
      • 指定應用所在的端節點(end point)
  • 發送數據時的優勢
    • 使用預創建的本地Socket(標識ID),避免每次發送都重復指明本機IP和端口
  • 關鍵限制
    • 發送報文時必須顯式指定目標IP和UDP端口(另一端點)

13. UDP socket

14. 套接字(Socket)

  • 進程向套接字發送報文或從套接字接收報文
  • 套接字 <-> 門戶
    • 發送進程將報文推出門戶,發送進程依賴于傳輸層設施在另外一側的門將報文交付給接受進程
    • 接收進程從另外一端的門戶收到報文(依賴于傳輸層設施)

15. 問題 3:如何使用傳輸層提供的服務實現應用

  • 定義應用層協議:報文格式,解釋,時序等
  • 編制程序,通過 API 調用網絡基礎設施提供通信服務傳報文,解析報文,實現應用時序等

16. 應用層協議

  • 定義了:運行在不同端系統上的應用進程如何相互交換報文
    • 交換的報文類型:請求和應答報文
    • 各種報文類型的語法:報文中的各個字段及其描述
    • 字段的語義:即字段取值的含義
    • 進程何時、如何發送報文及對報文進行響應的規則
  • 應用協議僅僅是應用的一個組成部分
    • Web 應用:HTTP 協議,web 客戶端,web 服務器,HTML

公開協議

  • 由 RFC 文檔定義
  • 允許互操作
  • 如 HTTP, SMTP

專用(私有)協議

  • 協議不公開
  • 如:Skype

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

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

相關文章

PHP+MySQL開發語言 在線下單訂水送水小程序源碼及搭建指南

隨著互聯網技術的不斷發展&#xff0c;在線下單訂水送水服務為人們所需要。分享一款 PHP 和 MySQL 搭建一個功能完善的在線訂水送水小程序源碼及搭建教程。這個系統將包含用戶端和管理端兩部分&#xff0c;用戶可以在線下單、查詢訂單狀態&#xff0c;管理員可以處理訂單、管理…

vBulletin未認證API方法調用漏洞(CVE-2025-48827)

免責聲明 本文檔所述漏洞詳情及復現方法僅限用于合法授權的安全研究和學術教育用途。任何個人或組織不得利用本文內容從事未經許可的滲透測試、網絡攻擊或其他違法行為。使用者應確保其行為符合相關法律法規,并取得目標系統的明確授權。 對于因不當使用本文信息而造成的任何直…

計算機模擬分子合成有哪些應用軟件?

參閱&#xff1a;Top 創新大獎 以下是用于計算機模擬分子合成&#xff08;包括逆合成設計、分子對接、分子動力學模擬及綜合設計平臺&#xff09;的主流應用軟件分類總結&#xff0c;結合其核心功能和應用場景進行整理&#xff1a; &#x1f52c; 一、逆合成設計與路線規劃軟件…

Excel 中的SUMIFS用法(基礎版),重復項求和

1. 首先復制篩選條件所在的列&#xff0c;去除重復項目 數據 》重復項 》刪除重復項 2. 輸入函數公式 SUMIFS(C:C,A:A,E2) 3. 選中單元格&#xff0c;通過 ShiftF3 查看函數參數 第一個參數&#xff1a;求和區域&#xff0c;要累加的值所在的區域范圍 第二個參數&#xff1a…

【xmb】內部文檔148344597

基于小米CyberDog 2的自主導航與視覺感知系統設計報告 摘要&#xff1a; 本文針對2025年全國大學生計算機系統能力大賽智能系統創新設計賽&#xff08;小米杯&#xff09;初賽要求&#xff0c;設計并實現了基于小米仿生四足機器人CyberDog 2的平臺系統方案。參賽作品利用Cyber…

從零開始理解機器學習:知識體系 + 核心術語詳解

你可能聽說過“機器學習”&#xff0c;覺得它很神秘&#xff0c;像是讓電腦自己學會做事。其實&#xff0c;機器學習的本質很簡單&#xff1a;通過數據來自動建立規則&#xff0c;從而完成預測或決策任務。 這篇文章將帶你系統梳理機器學習的知識體系&#xff0c;并用貼近生活…

springboot集成websocket給前端推送消息

一般通常情況下&#xff0c;我們都是前端主動朝后端發送請求&#xff0c;那么有沒有可能&#xff0c;后端主動給前端推送消息呢&#xff1f;這時候就可以借助websocket來實現。下面給出一個簡單的實現樣例。 首先創建一個websocketDemo工程&#xff0c;該工程的整體結構如下&a…

【清晰教程】查看和修改Git配置情況

目錄 查看安裝版本 查看特定配置 查看全局配置 查看本地倉庫配置 設置或修改配置 查看安裝版本 打開命令行工具&#xff0c;通過version命令檢查Git版本號。 git --version 如果顯示出 Git 的版本號&#xff0c;說明 Git 已經成功安裝。 查看特定配置 如果想要查看特定…

【Github/Gitee Webhook觸發自動部署-Jenkins】

Github/Gitee Webhook觸發自動部署-Jenkins #mermaid-svg-hRyAcESlyk5R2rDn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hRyAcESlyk5R2rDn .error-icon{fill:#552222;}#mermaid-svg-hRyAcESlyk5R2rDn .error-tex…

C語言數據結構-鏈式棧

頭文件&#xff1a;stack.h #ifndef __STACK_H__ #define __STACK_H__ #include <stdio.h> #include <stdlib.h> typedef int DataType; /* 鏈式棧節點類型 */ typedef struct staNode { DataType data; struct staNode *pNext; }StackNode; /* 鏈式棧…

M4Pro安裝ELK(ElasticSearch+LogStash+Kibana)踩坑記錄

ElasticSearch安裝&#xff0c;啟動端口9200&#xff1a; docker pull elasticsearch:8.13.0 新增配置文件elasticsearch.yml&#xff1a; cd /opt/homebrew/etc/ mkdir elasticsearch_config cd elasticsearch_config vi elasticsearch.yml cluster.name: "nfturbo…

uni-app學習筆記十六-vue3頁面生命周期(三)

uni-app官方文檔頁面生命周期部分位于頁面 | uni-app官網。 本篇再介紹2個生命周期 1.onUnload&#xff1a;用于監聽頁面卸載。 當頁面被關閉時&#xff0c;即頁面的緩存被清掉時觸發加載onUnload函數。 例如:在demo6頁面點擊跳轉到demo4&#xff0c;在demo4頁面回退不了到d…

Java互聯網大廠面試:從Spring Boot到Kafka的技術深度探索

Java互聯網大廠面試&#xff1a;從Spring Boot到Kafka的技術深度探索 在某家互聯網大廠的面試中&#xff0c;面試官A是一位技術老兵&#xff0c;而被面試者謝飛機&#xff0c;號稱有豐富的Java開發經驗。以下是他們的面試情景&#xff1a; 場景&#xff1a;電商平臺的后端開發…

機器學習算法——KNN

一、KNN算法簡介 1.KNN思想 &#xff08;1&#xff09;K-近鄰算法 根據你的“鄰居”來推斷你是什么類別 KNN算法思想&#xff1a;如果一個樣本在特征空間&#xff08;訓練集&#xff09;中的k個最相似的樣本中的大多數屬于某一個類別。則該樣本也屬于這個類別 &#xff08…

如何評估CAN總線信號質量

CAN總線網絡的性能在很大程度上取決于其信號質量。信號質量差可能導致通信錯誤&#xff0c;進而引發系統故障、效率降低甚至安全隱患。因此&#xff0c;評估和確保CAN總線信號質量是維護系統健康和可靠性的關鍵。 在CAN總線網絡中&#xff0c;數據通過雙絞線上的差分信號傳輸。…

封裝一個小程序選擇器(可多選、單選、搜索)

組件 <template><view class"popup" v-show"show"><view class"bg" tap"cancelMultiple"></view><view class"selectMultiple"><view class"multipleBody"><view class&…

2.1HarmonyOS NEXT開發工具鏈進階:DevEco Studio深度實踐

HarmonyOS NEXT開發工具鏈進階&#xff1a;DevEco Studio深度實踐 在HarmonyOS NEXT全棧自研的技術體系下&#xff0c;DevEco Studio作為一站式開發平臺&#xff0c;通過深度整合分布式開發能力&#xff0c;為開發者提供了從代碼編寫到多端部署的全流程支持。本章節將圍繞多設…

LLMs之Tool:Workflow Use的簡介、特點、安裝和使用方法、以及案例應用

LLMs之Tool&#xff1a;Workflow Use的簡介、特點、安裝和使用方法、以及案例應用 目錄 Workflow Use的簡介 1、Workflow Use的特點 2、Workflow Use的愿景和路線圖 Workflow Use的安裝和使用方法 1、安裝 2、使用方法 查看所有命令 從 Python 中使用&#xff1a; 啟動…

二分法算法技巧-思維提升

背景&#xff1a; 在寫力扣題目“搜素插入位置 ”時&#xff0c;發現二分法的一個細節點&#xff0c;打算記錄下來&#xff0c;先看一張圖&#xff1a; 我們知道&#xff0c;排序數組&#xff0c;更高效的是二分查找法~~~而二分法就是切割中間&#xff0c;定義left是最開始的&…

Python 訓練營打卡 Day 40

訓練和測試的規范寫法 一、黑白圖片的規范寫法&#xff0c;以MNIST數據集為例 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 用于加載MNIST數據集 from torch.utils.data import DataLoader # 用于創建…