TCP 和 UDP 编程相关总结暂缺。
# 第二章 应用层
# 应用层协议原理
# 网络应用程序体系结构
客户 - 服务器体系结构
P2P 体系结构
主机为对等方,具有自扩展性
C/S 和 P2P 体系结构的混合体
# 进程通信
客户端与服务器的进程
发起通信的进程被识别为客户,在会话开始时等待联系的进程是服务器
进程与计算机网络之间的接口
套接字接口,也成为应用程序编程接口,是同一台主机内应用层与运输层直接的接口。
层间接口必须要携带:
- 传什么(要传输的报文)
- 谁传的(IP + 端口号)
- 传给谁(IP + 端口号)
进程寻址
- TCP 四元组(源 IP、源端口号、目标 IP、目标端口号)
- UDP 二元组
# 可供应用程序使用的运输服务
- 可靠的数据传输
- 吞吐量
- 定时
- 安全性
# 因特网提供的运输服务
# 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 报文格式
- HTTP 请求报文
- 请求行
- 首部行
- 空行
- 实体体
- HTTP 响应报文
- 状态行
- 首部行
- 空行
- 实体体
# Cookie
提高 Web 服务器的性能,希望把内容和用户身份联系起来。
cookie 的技术有 4 个组件:
- 在 HTTP 响应报文中有一个 cookie 首部行
- 在 HTTP 请求报文中有一个 cookie 的首部行
- 在用户端系统中存有 cookie 组件,并由用户的浏览器进行管理
- 位于 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