计算机网络•自顶向下方法:网络应用原理

网络应用原理

网络应用架构

目前有两种主流的网络应用架构:

  • 客户-服务器架构(Client-server)

    • 服务器(server):
      • 有一台总是在线 的主机,上面运行着服务器程序(server)
      • 服务器主机(server machine)具有永久的、众所周知的地址
    • 客户(client)
      • 用户终端上运行一个客户程序(client),需要时与服务器程序通信,请求服务
      • 客户机(client machine)使用动态地址,通常不会总是在线

    客户只与服务器通信,客户之间不通信

  • 对等架构(Peer-to-peer ,P2P)

    • 没有总是在线的服务器主机
    • 任意一对端系统(对等方)可以直接通信
    • 对等方多为用户自己的计算机,使用动态地址
    • 每个对等方既可请求服务 ,也可提供服务
    • 典型的P2P应用:
      • BT、迅雷
      • Skype
      • PPLive

两种架构的比较

客户-服务器架构 P2P架构
资源集中:资源(服务)只在某些固定的终端上提供 任何终端都可以提供资源(服务)
资源发现简单 易于扩展、均衡网络流量
集中式计算带来的问题:服务端扩容压力、网络流量不均衡、响应延迟长 资源发现困难、社会问题(版权、安全性等)

不同终端上的进程通信

不管采用哪种网络应用架构,都需要解决不同终端上应用程序之间的通信问题。按照操作系统的术语,在端系统上运行的程序称为进程。因此,不同终端上的网络应用程序通信,就是不同终端上的进程进行通信。

  • 进程:主机上运行的程序
  • 在分布式应用中,不同终端上的进程需要通信
  • 进程通信的方法:
    • 同一个主机内:进程间通信机制(OS提供)
    • 在不同主机上:通过交换报文进行通信
  • 一次确定的通信会话中,总能标示一方为客户进程,另一方为服务器进程
    • 客户进程:主动发起请求的进程
    • 服务器进程:接收请求的进程

进程与网络的接口:套接字(socket)

设想在应用程序和网络之间存在一扇门(套接字):

  • 发送报文:发送进程将报文推到门外
  • 门外的运输设施(因特网)将报文送到接收进程的门口
  • 接收报文:接收进程打开门,艮即可收到报文

套接字是应用层和传输层的接口,也是应用程序和网络之间的API

进程编址

每个进程都需要一个标识,以便其它进程能够找到它。

在因特网中,主机是使用IP地址标识的,使用IP地址能够标识进程吗?

不能,因为一台主机上通常运行着许多进程

端口号:用于区分同一个主机上的不同进程。

进程标识包括:

  • 主机地址
  • 与该进程关联的端口号

端口范围:端口号是一个16位的整数,范围是0-65535。

端口号的例子:HTTP server使用端口80,Mail server使用端口25

端口号与IP地址结合 :在网络通信中,IP地址 + 端口号 共同组成了一个完整的标识符,这就是所谓的套接字(Socket)地址 。例如,192.168.1.1:80表示IP地址为192.168.1.1的设备上,HTTP服务的端口号为80。

传输服务

在创建一个应用程序时,开发者需要选定一种传输服务

数据完整性 (Data Integrity)

  • 要求:确保传输的数据在传输过程中不被损坏或篡改。
  • 适用应用 :许多应用需要完全可靠的数据传输,尤其是涉及重要文件或信息的传输,如文件传输邮件传输等。

吞吐量 (Throughput)

  • 要求:应用程序需要根据网络带宽的需求来选择适当的吞吐量。某些应用(如文件传输、视频流)可能需要较高的吞吐量。
  • 适用应用 :高吞吐量需求的应用包括文件传输大规模数据传输等。

延迟 (Timing)

  • 要求:一些应用对传输的延迟非常敏感,需要尽可能减少延迟,确保数据能迅速到达。
  • 适用应用 :延迟敏感的应用包括网络电话实时视频会议交互式网络游戏等。

安全性 (Security)

  • 要求:某些应用对数据的加密性和完整性有很高的要求,防止数据在传输过程中被窃听或篡改。
  • 适用应用 :涉及敏感信息的应用,如银行交易在线购物电子邮件等,需要提供安全保障。

因特网能够提供的传输服务

因特网提供2种传输服务,分别用TCP和UDP协议实现

TCPservice:

  • 面向连接:保证传输顺序
  • 可靠传输:不出错
  • 流量控制:发送进程不会"压垮"接收进程
  • 拥塞控制:网络超载时抑制发送进程

不提供:及时性,最低带宽保证,安全性

UDP service:通过因特网接收和发送报文

不提供:顺序保证,可靠传输,流量控制,拥塞控制,及时性,最低带宽保证,安全性

应用层协议

应用层协议定义了不同应用进程之间交换的报文格式、字段及其语义,同时也规定了发送和接收报文时应遵循的规则。它是应用程序和网络之间的"语言",通过这种协议,应用进程可以在不同计算机或设备间进行有效的通信。

应用层协议通常包括以下几个组成部分:

  • 报文类型:规定了应用程序中不同类型的消息(请求、响应等)。
  • 报文语法:定义了消息中各字段的格式和组织方式。例如,在HTTP协议中,报文由请求行、头部、体部分组成。
  • 报文语义 :每个字段或部分的具体含义。例如,HTTP的User-Agent字段表示客户端使用的浏览器或操作系统信息。
  • 交换规则:定义了如何正确地交换报文,包括哪些报文可以顺序发送,哪些应该等待响应等。

协议分类

  • 公共域协议:公共域协议通常是由标准组织(如IETF)定义,并且公开可用的协议。这些协议通常具有明确的报文格式和定义,且支持跨平台和跨应用程序的互操作性。
  • 专用协议:除了公共域协议,某些应用程序或服务使用专用的协议,这些协议通常为特定应用或服务设计,并且可能不公开或为内部使用。专用协议通常用于公司或组织内部的特殊应用,

小结

为创建一个新的网络应用,需要:

  • 选择一种网络应用架构:客户-服务器 or P2P
  • 选择一种网络服务:TCP or UDP
  • 确定一个端口号
  • 定义应用层协议
  • 编写客户程序和服务器程序(调用套接字接口)

网络应用和应用层协议:

  • 应用层协议只是网络应用的一部分
  • 网络应用还包括客户程序、服务器程序等
相关推荐
西岸行者12 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意12 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码12 天前
嵌入式学习路线
学习
毛小茛12 天前
计算机系统概论——校验码
学习
babe小鑫12 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms12 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下12 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。12 天前
2026.2.25监控学习
学习
im_AMBER12 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J12 天前
从“Hello World“ 开始 C++
c语言·c++·学习