【计算机网络】第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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 # 用于创建…