TCP 和 UDP 编程相关总结暂缺。

# 第二章 应用层

# 应用层协议原理

# 网络应用程序体系结构

  1. 客户 - 服务器体系结构

  2. P2P 体系结构

    主机为对等方,具有自扩展性

  3. C/S 和 P2P 体系结构的混合体

# 进程通信

  1. 客户端与服务器的进程

    发起通信的进程被识别为客户,在会话开始时等待联系的进程是服务器

  2. 进程与计算机网络之间的接口

    套接字接口,也成为应用程序编程接口,是同一台主机内应用层与运输层直接的接口。

    层间接口必须要携带:

    • 传什么(要传输的报文)
    • 谁传的(IP + 端口号)
    • 传给谁(IP + 端口号)
  3. 进程寻址

    • TCP 四元组(源 IP、源端口号、目标 IP、目标端口号)
    • UDP 二元组

# 可供应用程序使用的运输服务

  1. 可靠的数据传输
  2. 吞吐量
  3. 定时
  4. 安全性

# 因特网提供的运输服务

# TCP

  • 面向连接的服务
  • 可靠的数据传送服务
  • 拥塞控制
  • 流量控制
  • SSL 加密
  • 不保证吞吐量和定时

# UDP

  • 可以区分进程,无需建立链接
  • 不可靠
  • 没有拥塞、流量控制,不保证吞吐量和定时

# Web 和 HTTP

# HTTP 概况

HyperText Transfer Protocal, HTTP 超文本传输协议

HTTP 定义了 Web 客户向 Web 服务器请求 Web 页面的方式,以及服务器向客户传送 Web 页面的方式。

HTTP 使用 TCP 作为它的支撑运输协议。

HTTP 是一个无状态协议,因为 HTTP 不保存关于客户的任何信息。

# 非持续性连接和持续连接

  • 非持续连接:每个请求 / 相应对是经一个单独的 TCP 连接发送,HTTP/1.0 使用非持久连接

  • 持续连接:所有的请求及其相应经相同的 TCP 连接发送,HTTP/1.1 默认使用持久连接

    • 非流水方式的持久 HTTP(客户端在收到前一个请求的相应之后再发出下一个请求)
    • 流水方式的持久 HTTP

# HTTP 报文格式

  1. HTTP 请求报文
    • 请求行
    • 首部行
    • 空行
    • 实体体
  2. HTTP 响应报文
    • 状态行
    • 首部行
    • 空行
    • 实体体

提高 Web 服务器的性能,希望把内容和用户身份联系起来。

cookie 的技术有 4 个组件:

  1. 在 HTTP 响应报文中有一个 cookie 首部行
  2. 在 HTTP 请求报文中有一个 cookie 的首部行
  3. 在用户端系统中存有 cookie 组件,并由用户的浏览器进行管理
  4. 位于 Web 站点的一个后端数据库

# Web 缓存

web 缓存器也叫代理服务器

# Get 方法

缓存是为了性能,清除是为了更新

# 因特网中的电子邮件

SMTP

POP3 - 本地管理文件夹

IMAP - 远程管理文件夹

# DNS:因特网的目录服务

DNS - Domain Name System 域名系统

DNS 协议运行在 UDP 之上,使用 53 号端口。

# 目的

实现域名和 IP 地址的转换

主机别名

邮件服务器别名

负载分配

# 集中式设计

  • 单点故障
  • 通信容量
  • 远距离的集中式数据库
  • 维护

# 分布式、层次数据库

  • 根 DNS 服务器
  • 顶级域 DNS 服务器
  • 权威 DNS 服务器

域与物理划分无关,是逻辑的划分

# 查询

迭代查询

递归查询

# 报文

DNS 查询和响应的报文格式相同

# P2P 文件分发

可扩展性好,随着用户数增加,最短分配时间上升得较慢

BitTorrent 是一种用于文件分发的流行的 P2P 协议,参与一个特定文件夹分发的所有对等方的集合被称为一个洪流。

# 最稀缺优先

首先请求最稀缺的块

# 一报还一报

向给自己提供最大宽带的服务发送块

每个 30s,随机选择其他 peer 发送块

# 结构

集中

分散

半分散

# 视频流和内容分发网

# DASH

Dynamic Adaptive Streaming over HTTP 经 HTTP 的动态适应性流

服务器:将视频文件分割成多个块,每个块独立存储,编码于不同码率,告示文件提供不同块的 URL

客户端:获取告示文件,测量服务器到客户端的带宽,选择合适的码率的编码块

# 内容分发网 CDN

Content Distribution Network CDN

做一些 copy

# 套接字编程

# TCP 编程

# UDP 编程