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

网络应用原理

网络应用架构

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

  • 客户-服务器架构(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
  • 确定一个端口号
  • 定义应用层协议
  • 编写客户程序和服务器程序(调用套接字接口)

网络应用和应用层协议:

  • 应用层协议只是网络应用的一部分
  • 网络应用还包括客户程序、服务器程序等
相关推荐
汤圆真的好可爱9 分钟前
关于新手学习React的一些忠告
前端·学习·react.js
无所谓จุ๊บ30 分钟前
VTK知识学习(28)-区域提取
学习·vtk
奔跑的犀牛先生1 小时前
unity学习5:创建一个自己的3D项目
学习
计算机学无涯1 小时前
计算机网络复习(练习题)
网络·计算机网络
Linux运维老纪1 小时前
Nginx常用配置之详解(Detailed Explanation of Common Nginx Configurations)
计算机网络·nginx·微服务·云原生·架构·云计算·运维开发
菠菠萝宝1 小时前
【Go学习】-01-4-项目管理及协程
数据库·学习·golang·操作系统·软件工程·协程·os
泰山小张只吃荷园2 小时前
SCAU软件体系结构期末复习-名词解释题
java·开发语言·后端·学习·spring·面试
虾球xz2 小时前
游戏引擎学习第69天
学习·游戏引擎
Themberfue2 小时前
HTTP/HTTPS ①-代理 || URL || GET/POST || CDN
网络·网络协议·计算机网络·http·https·cdn
网络安全筑盾者-燕子3 小时前
【入门级】零基础小白入门挖漏洞看——漏洞扫描工具大全
网络·计算机网络·网络安全·漏洞·挖漏洞·漏洞工具