应用层

应用层协议原理

网络应用程序

  • 运行在不同主机上的程序,利用网络相互通信
  • 不需要运行在网络核心中

应用系统结构和网络体系结构

  • 应用系统结构由开发者确定,确定网络应用在不同端中的组织形式
  • 网络体系结构固定且向应用提供特定的服务集合

典型结构

C/S

  • C
    • 客户端。如果基于web,就是浏览器
    • 可能不固定的IP
    • 不永远在线
    • Client不直接通讯
  • S
    • 服务器端
    • 永远在线、提供设施和服务
    • 周知固定的IP
  • 易于管理,Server可能是瓶颈
  • web/FTP/telnet/email

P2P

  • 无居中心位置的Server
  • 主机间直接连接
  • 可能间歇性连接
  • IP地址可能不固定
  • 特点
    • 高扩展性
    • 管理困难

混合型

  • Napster
    • 管理集中(C/S)
    • 传输分布(P2P)
  • 即时通讯
    • 用户间通讯一般是P2P
    • 状态检测/用户定位是C/S

进程间通信机制

  • 进程
    • 运行在主机中的程序
    • 两个进程位于同一主机
      • IPC
      • 操作系统负责IPC
    • 两个进程位于不同主机
      • 使用Socket(套接字)交换信息
    • 网络应用由成对的进程组成
      • 客户进程:发起通信
      • 服务进程:等待连接
  • 进程通过socket向网络发送/从网络接收信息
    • sorket是应用程序和网络之间的接口
    • API可以选择传输层协议/设置协议的某些参数
  • 进程寻址
    • 进程必须有标识符(端口号)
    • Internet主机用IP地址作为标识
    • 进程标识=IP+端口号
      • HTTP:80
      • Mail:25

应用对网络的需求

  • 可靠性
    • 某些应用容忍一定的丢失
    • 某些需要很高的可靠性
  • 及时性
    • 要求延时小
  • 宽带(吞吐率)
    • 带宽敏感
    • 带宽不敏感
  • 安全
    • 机密性
    • 完整性
    • 不可否认性
    • 可用性
  • TCP
    • 面相连接
    • 可靠传输
    • 流量控制
    • 拥塞控制
    • 不提供及时性、带宽保证
  • UCP
    • 不可靠数据传输
    • 不提供
      • 连接
      • 可靠传输
      • ….
    • 为了最小带宽保证,对丢包不敏感

应用层协议

  • 应用层负责进程间如何交换消息
    • 消息类型
      • request & response
    • 消息结构
    • 消息语义
    • 何时发送如何响应

Web和HTTP

概述

  • Web 提供On-Demand服务,用户主动拉取
  • Web由对象组成
    • html语言编写
    • 一个基本html文件和引用其他对象
    • 使用URL标示
    • notion image
  • http是web应用层的协议
    • c用browser利用http请求接收显示对象
    • 利用HTTP消息传输对象
    • 是一种无状态的协议
    • 使用传输层的TCP
    • 不管浏览器如何显示(解释)对象

HTTP使用TCP连接的两种方式

非持续的连接

  • 建立一次连接只能传输一个object
  • http/1.0默认使用
  • 连接是串行或并行由浏览器配置
  • 要多建立一个tcp连接(html)
  • 实效性
    • RTT(往返时间)
    • HTTP响应时间
    • 需要两个RTT加对象传输时间
  • 非流水(串行)
      1. 一个RTT建立连接
      1. 一个RTT获取html文件并传输
      1. 重复N次
  • 流水(并行)
      1. 一个RTT建立连接
      1. 一个RTT获取html基本文件并传输
      1. 一个RTT请求建立连接RTT,根据并发数M确定连接对象个数
      1. 一个RTT获取M个传输对象,
      1. 重复3、4直到所有对象传输成功

持续的连接

  • 建立一次连接
  • http/1.1默认使用
  • 非流水的HTTP协议
    • 串行
    • 一个RTT建立连接
    • 一个RTT获取一html或个传输对象,共重复N+1次
  • 流水的HTTP协议
    • 并行
    • 并行连接前提
      • 一个RTT建立连接
      • 一个RTT获取html基本文件
      • 一个RTT获取N个对象
    • 并行不能减少对象传输时间

HTTP消息格式

request

  • 是ASCII编码
  • 每行之间用<cr><lf>隔开
  • 请求头request line
    • GET 路径名+对象名 HTTP版本
  • 头部行head line
    • host主机服务器域名(域名加端口)
    • user-agent浏览器类型
      • 便于对不同浏览器类型发送不同的版本
    • connection:是否持续连接(close/keep-alive)
    • URL
      • http:// + 服务器域名 + 路径名 + 对象名
    • 无法从中看出IP地址

response

  • status line
    • 版本号 状态代码 状态短语
  • head line
    • Data:创建resond的时间
    • Server:Server基本信息
    • Last-Modified:创建或最后修改时间(提供回答时间)
    • connection: 是否持续链接
    • Content-Length:对象的长度
    • Content-type:对象的类型
    • 两个连续的<cr><lf>后是文件内容

版本方法

  • GET
    • 返回网页等
  • POST
    • 向server发送内容并返回对象
    • GET+URL方式可以实现相同功能
  • HEAD
    • 用于调试
    • 没有消息体
  • PUT
    • 把对象上载到sever
  • DELET
    • 删除服务器内容

状态代码和状态短语

  • 200 ok
  • 301 Moved Permanently
  • 400 Bad Request
  • 404 NOT FOUND
  • 505 HTTP Version Not Supported

c和s的交互:cookie

  • 实现了无状态的HTTP上实现用户会话层的功能
  • sever在response中利用头部行设定cookie (携带id)
  • 在request 时set cookie头部行携带cookie
  • 主要信息存储在客户端cookie file
  • 服务器存在各种数据库
  • 保存到服务器:session

Web Catching

  • 距离客户较近的地方设置缓存,代替sever向客户发送requst,缩短访问时间
  • 代理服务器充当客户和服务器角色
  • 降低access link流量强度
  • 降低内容提供商的效率
  • 可能获得陈旧内容
    • 条件GET
    • >>>

Email

  • 前言
    • 异步通信
  • 组成
    • 用户代理
    • 邮件服务器
    • 简单邮件传输协议(SMTP)
    • 在服务器中存储
  • 简介
    • Mail sever
      • 电子邮件系统中的核心部件
      • 邮箱保存用户到达的邮件
      • 消息队列暂存发送的邮件
    • SMTP
      • 电子邮件应用层协议
      • 负责发送端和接收端服务器的通信
      • 传输层用TCP协议
      • 是push协议区别于HTTP
  • 邮件访问协议
    • SMTP发送方
    • POP3接收
    • IMAP接收
    • HTTP接收
  • DNS
    • 域名服务/域名服务

DNS

  • 分布式数据库
    • 存储IP和名字对应关系
    • 层次结构的名字服务器实现
  • 应用层协议
    • 运行在UDP上,端口号:53
  • IP地址
    • 网络层
    • 点分十进制表示
    • 32bit
  • DNS的服务
    • 主机别名
    • 邮件服务器别名
  • DNS工作原理
    • 分布式
    • 不是集中式
      • 单点故障
      • 通信容量
      • 查询延迟大
      • 数据库系统维护和扩展问题
    • DNS服务器层次结构
      • 13个根服务器集群
        • 12家机构,1698个实例
      • TLD顶级域服务器
      • 权威服务器
      • Local DNS服务器
        • 不严格属于名字服务器的层次结构
          • C和DNS服务器层次结构的桥梁
          • 主机查询服务器,若有,则走本地,否则走DNS服务器层次服务器
          • 默认
    • 主机名字的层次结构
      • 节点服务器标识符(包括点)不能超过63字节
      • 树形,路径逆序形成
    • 域名解析方式
      • 递归(recusive)
        • “我替你查”
        • 每一层返回确定结果
        • 一般保存到权威服务器
      • 迭代(iterated)
        • “我不知道,他可能知道”
        • 每一层不一定返回确定结果
      • 根服务器只提供迭代
    • DNS缓存
      • Cacting table
      • 存到本地或local DNS
      • 提高查询速度
      • 一致性问题
  • DNS记录
    • 名字与IP资源记录(RR)
      • name value type ttl(存活时间)
    • Type A
      • 域名 IP地址
    • Type NS
      • 域名 管理该域的DNS服务器的名字
    • Type CNAME
      • 别名 规范化名字
    • Type MX
      • 邮件服务器别名 邮件服务器规范化名字
    • 如果一服务器是主机的DNS服务器
      • 会给出type A的RR
    • 如果一服务器不是主机的DNS服务器
      • 给出应该存在的DNS服务器的type NS的RR
      • 以及该DNS服务器的type A的RR
  • DNS协议-消息
    • request和reply
  • 注册域名
    • 注册权威服务器,向顶级域名服务器要求提供:负责域所注册服务器的权威服务器的名字和IP地址
    • 注册机构将在.com 域名服务器中添加两条记录:
      • (networkutopia.com, dns1.networkutopia.com, NS)
      • (dns1.networkutopia.com, 212.212.212.1, A)
  • 课堂练习
    • DNS采用客户服务器工作模式
    • 子节点不能识别父节点的IP地址
    • 父节点存子节点IP地址
    • 域名不能反应计算机的物理地址

P2P文件分发

  • P2P结构
    • 特征
      • 数量庞大,连接时断时续
    • 定位内容方法
      • 目录
      • 查询泛洪
      • 层次
    • CS
      • Us服务器上行速度
      • di用户端下行速度
      • ui
      • NF/Us服务器发送N个F所需时间
      • F/ui用户端下载文件时间
      • Ucs=max(NF/Us,min(F/ui))
    • P2P
      • F/Us(P2P只要上传一份就可)
      • F/d min
      • U total=Us+sum(ui)
      • NF/U total
      • U p2p =max(F/Us,F/d min,NF/U total)
  • P2P协议birTorrent分流
    • tracker: 跟踪torrent中节点的进入/离开
    • torrent: 交换同一文件的节点集合
    • 文件被划分成(chunk,256KB)
      • peer 加入torrent: 最初没有chunk,逐步积累chunk.
      • 向tracker注册,以获得torrent中的peer列表,并选择性地与其中的某些peer建立TCP连接.
      • 下载数据块的同时也向其他peer上载数据
      • peer可以随时加入/离开torrent
  • 视频流和内容分发网络
    • 网络视频是Internet带宽消耗大户
    • 可扩展和异构性面临挑战
      • 分布式,应用层视频基础设施
  • 视频流和CDN
    • 视频
      • 编码解码
      • 压缩方法
    • 流式视频存储
      • HTTP流
        • 使用URL地址并找到,发送
      • DASH
        • 自适应,根据用户条件选择不同的URL链接
    • CDN内容分发网站
    • 集群选择策略
      • 地理距离最近
      • 基于性能测量

Socket程序设计

  • 简介
    • 标准/专用的网络应用
    • Socket由应用创建,OS控制,是应用层和传输层的接口
  • TCP Socket程序设计
    • Socket:进程和传输层之间的接口
    • TCP:进程间基于字节的可靠传输管道
    • S
      • S必须事先启动,等待C的连接
        • 创建S并标识
        • Port是Socket的本地标识
      • 侦听
      • 交互C
      • 关闭
    • C
      • 创建TCP Socket
        • 指定服务器的ip和Port
        • 连接
      • 服务器收到C的连接请求,Accept并创建新的TCP Socket
    • 先向welcome Socket三次握手再创建新的连接
    • 并行
    • 字节流
      • 输入流
      • 输出流
      • 字节流中无需目的地址
  • UDP
    • 无三次握手,
    • 数据里要写地址
    • Sever需要解析出源地址和源端口号
    • 不可靠的数据传输
    • UDP Socket 程序设计
 
Prev
计算机网络和因特网
Next
传输层
Loading...
Article List
一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++