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

网络应用原理

网络应用架构

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

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

网络应用和应用层协议:

  • 应用层协议只是网络应用的一部分
  • 网络应用还包括客户程序、服务器程序等
相关推荐
wixzjsh13 小时前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
ZhiMuZhiLing13 小时前
拓客软件学习成本实测方法论:从注册到出第一批名单要多久
学习·流量运营·用户运营
程序员大雄学编程14 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
啊阿狸不会拉杆14 小时前
《计算机网络-自顶向下方法》2.5 P2P 文件分发 读书笔记
计算机网络·wireshark·asp.net·p2p
指针常量16 小时前
【RL系列文章】难样本学习等
学习·大语言模型·rl·后训练
白狐_79816 小时前
408 计算机网络|TCP 可靠传输:ACK、重传、RTT、RTO
网络·tcp/ip·计算机网络
wuyk55516 小时前
从零吃透Modbus通信|第7章:终极工程整合(模块化架构、双模式主机从机、RTOS适配、量产级模板)
c语言·stm32·学习·架构
一条破秋裤17 小时前
STM32 学习笔记:PWM 驱动 LED 呼吸灯与舵机代码
笔记·stm32·学习
2501_9151063218 小时前
安卓抓包软件2026,免证书抓包 应用层抓包 代理抓包全解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
kyrie_sakura19 小时前
python学习笔记11 -- 进程和线程
笔记·python·学习