应用层计网通览

66 阅读5分钟

应用构架

C/S架构

Client & Server

  • 性能具有瓶颈,用户达到一定门限的时候,服务能力会急速下降
  • 可拓展性比较差
  • 所有用户都依赖服务器
Server
  • 一直运行,ip固定和周知的端口号
  • 拓展性差:服务器场
Client
  • 主动与服务端通信

  • 与互联网间歇性连接

  • IP不一定固定,不是直接与客户端通信

P2P架构

是用户同时也是服务器,Gnutella,迅雷等

  • 几乎不会一直运行

  • 任意系统之间都可以通信

  • 每个节点既是客户端也是服务器

    • 自拓展性
  • 参与的主机间歇性连接且可以改变ip地址

  • 进程: 主机上运行的应用程序

    • 同一个主机内,使用进程间通信机制(操作系统定义的)

    • 不同主机,通过报文(message)交换来通信

      • 使用OS提供的通信服务
      • 按照协议交换报文

P2P架构的应用也有服务器进程和客户端进程之分

混合体

Napster
  • 文件搜索:集中

    • 主机在中心服务器注册资源
    • 主机向中心服务器查询资源位置
  • 文件传输: P2P

    • 任意Peer节点之间
即时通信
  • 在线检测:集中

    • 用户上线:向中心服务器注册IP
    • 用户与中心服务器联系,找到好友位置
  • 两个用户之间聊天:P2P

分布式进程通信问题


  1. 进程标识和寻址(服务用户)

      进程标识- IP :唯一的32位的地址,不能标识进程
    • 端口号 (port Number)
    • TCP/UDP 所采用的传输协议

    知名端口: HTTP:TCP 80 | Mail: TCP 25 | ftp:TCP 2

    进程:IP + port标识端节点

    本质:一对主机进程的通信由两个端节点构成

      层间接口携带的信息- 谁传的 IP+UDP(TCP)端口
    • 传给谁 对方的标识(IP+TCP(UDP)端口)
    • 传的报文 SDU(对本层来说)
      传输层实体工作> tcp或者udp实体- 根据上面的信息对TCP报文端 或者 UDP数据段进行封装
    • 包括:源端口号,目标端口号,数据
    • 将IP往下交IP实体,用于封装IP数据报:源IP和目标IP

  1. 传输层-应用层提供服务如何(服务)

    1. 位置:层间界面SAP (TCP|IP:socket)
    2. 形式:应用接口程序API (TCP/IP:socket)
socket

提供网络通信中端点抽象化和跨层数据传递效率问题的解决方案 ( 统一编程接口 , 优化数据封装和传递 )

  • TCP 需要发送 4 元组,socket API 统一封装(操作系统完成),应用层无需手动添加。不是传递完整的 4 元组, 而是维护一个连接标识符,减少数据的冗余
  • UDP 只需要发送目标 IP 和 端口。由操作系统统一封装,无需应用层处理底层协议。
  • Socket API 承接了对协议头部解析和生成的责任,交由操作系统处理,而不是应用层手动处理。(自动添加头部协议)

通过提供统一的网络编程接口,抽象传输层细节,减少了应用层的代码冗余和带宽浪费,从而降低了整体的信息复杂度

  • 主要作用:提供标准化的通信端点抽象,简化网络编程,并通过协议栈的协作优化数据传输效率。
  • 带宽优化的实现:依赖于协议特性(如 TCP 连接复用、UDP 简单头部)和操作系统对协议头部的自动封装,而非 Socket 本身的直接设计目标。
TCP socket (TCP之上的套接字)
  • TCP服务,面向连接的

    • 进程通信会持续一段时间
    • 用一个 整数 标识两个应用实体之间的通信关系
  • 令穿过层间的信息量最小

  • TCP socket包含: 源IP,源端口,目标IP,目标端口 (4元组)

image.png

UDP socket (UDP之上的套接字)
  • UDP 是无连接的

    • 用一个整数指定应用所在的一个端节点 (end point)
  • 发送数据报时:采用创建好的本地套接字(不必指定自己的ip和port)

  • 发送报文时:

    • 传输报文:必须提供对方的IP,port
    • 接受报文:传输层必须上传对方的IP,port
  • UDP socket包含: 源IP,源端口,(2元组)

image.png


  1. 如何使用传输层提供的服务,实现应用进程之间的报文交换(用户使用服务)

    1. 定义应用层协议:报文格式,解释,时序
    2. 编制程序,使用OS提供的API,调用网络基础设施提供通信服务传报文,实现应用时序
应用层协议
  • 定义

    • 定义了:报文类型;报文语法;字段语义;发送和响应规则
  • 协议是应用的组成部分:

    • Web应用: HTTP协议;web客户端;web服务器;HTML等多个组成部分
  • 协议分类:

    • 公开协议和私有(专用)协议
  • 衡量标准

    • 数据丢失率

    • 延迟

    • 吞吐

    • 安全性

UDP
  • 不可靠的数据传输

  • 不提供:可靠,流量控制,拥塞控制,时间,带宽保证,建立连接

TCP
  • 可靠

  • 流量控制

  • 拥塞控制

  • 不能提供:时间保证,最小吞吐量和安全

  • 面向连接:客户端进程和服务器进程之间建立连接

SSL
  • 在TCP上实现,提供加密的TCP通信

  • 私密性,数据完整性,端到端的鉴别

  • 处于应用层

    • 采用SSL库,SSL库使用TCP通信
  • SSL socket API

    • 应用通过API将明文传输给socket,SSL加密后在互联网传输

都不能提供安全的通信服务

通过SSL(在TCP之上)来建立安全的通信服务 (在应用层)

HTTP 是跑在TCP之上的,HTTPS是跑在SSL协议之上的


笔者才疏学浅,请多多指教