这是我参与「第四届青训营 」笔记创作活动的第5天
1.网络应用程序体系结构
1.1 客户机/服务器体系结构
-
服务器
- 总是打开的
- 具有固定的、众所周知的IP地址
-
客户机
- 可以拥有动态IP地址
- 客户机相互之间不直接通信
1.2 P2P体系结构
-
没有总是打开的服务器
-
任意一对主机直接相互通信
-
对等方间歇连接并且可以改变IP地址
-
优缺点
- 优点:自扩展性
- 缺点:难以管理
1.3 客户机/服务器和P2P混合的体系结构
举例:
- Napster
- 即时讯息(QQ、Wechat)
2.进程通信
2.1 通信方式
(1)同一主机上的两个进程通过内部进程通信机制进行通信
(2)不同主机上的进程通过交换报文相互通信
2.2 命名
(1)客户进程:发起通信的进程
(2)服务器进程:等待联系的进程
注意:具有P2P体系结构的应用程序既有客户进程又有服务器进程。
2.3 进程与计算机网络的接口-套接字
(1)套接字又叫做应用程序编程接口API
(2)应用层的进程相关的工作由开发者控制,而套接字以下的工作是由操作系统来完成的。
2.4 进程寻址
(1)主机有唯一的32位IP地址
(2)主机上的进程标识包括IP地址和端口号(因为一台主机上有很多个进程
(3)常用应用程序的端口号
- Web服务:80
- 邮件服务:25
2.5 应用层协议
(1)组成
- 报文类型
- 报文类型的语法
- 字段的语义
- 进程何时、如何发送报文及对报文进行响应
(2)分类
- 公共领域协议
- 专用协议
2.6 应用需要的服务
1.数据丢失率
2.带宽和吞吐量
3.安全
4.定时
2.7 因特网传输协议提供的服务
1.TCP服务
- 面向连接的服务(发送方和接收方都已经准备好了才开始通信)
- 可靠的传输服务
- 流量控制
- 拥塞控制
- 没有提供时延保证和最小带宽保证
2.UDP服务
- 无连接的服务(发送方在开始通信前不去询问接收方是否已经准备好)
- 不可靠数据传输
2.8 安全TCP
1.SSL(Sucurity Socket Layer)
- 提供加密的TCP连接
- 保证数据完整性
- 端点认证
- SSL提供套接字API
3.HTTP概况
3.1 概述
(1)HTTP:超文本传输协议
(2)Web的应用层协议
(3)C/S模式
3.2 Web和HTTP
(1)网页由许多对象组成
(2)对象就是文件
(3)多数网页由单个基本HTML文件和若干个所引用的对象构成
(4)URL:协议+主机名+路径名
(5)HTTP是无状态协议
- HTTP服务器不维护客户先前的状态信息
- 维护状态的协议非常复杂
4.非持久连接和持久连接
4.1 非持久HTTP连接
(1)每个TCP连接上只传送一个对象,下载多个对象需要建立多个TCP连接
(2)HTTP/1.0使用非持久HTTP连接
4.2 持久HTTP连接
(1)一个TCP连接上可以传送多个对象
(2)HTTP/1.1默认使用持久HTTP连接
(3)分类
-
不带流水线的持久HTTP连接
- 客户先前响应消息收到,才发出新的消息请求
- 每个引用对象经历一个RTT
-
带流水线的持久HTTP连接
- HTTP/1.1默认使用
- 客户遇到1一个引用对象就发送请求对象
- 所有引用对象只经历一个RTT
4.3 响应时间模型
(1)定义往返时间RTT
- 一个小分组从客户主机到服务器再到客户主机所花费的时间
- 一个RTT用于建立TCP连接
- 一个RTT用于HTTP请求/响应消息的交互
- HTML文件传输时间:total = 2RTT + transmit time
5.HTTP报文格式
5.1 请求报文
(1)都是ASCII文本
(2)
请求行
头部行
回车换行(指示结束)
(3)
请求行 :方法 sp URI sp 版本 cr lf
首部行: 首部字段名 sp 值 cr lf
首部字段名 sp 值 cr lf
首部字段名 sp 值 cr lf
空行:cr lf
实体主体
(4)请求方法类型
-
HTTP/1.0
- GET
- POST
- HEAD
-
HTTP/1.1
- GET,POST,HEAD
- PUT
- DELETE
(5)上载表单(各字段)输入值
-
POST方法
- 网页时常包含表单输入
- 输入值在请求报文的实体主体中被上载到服务器
-
URL方法
- 使用GET方法
- 表单(各字段)输入值被上载,以URL请求行的字段
5.2 响应报文
(1)同样是ASCII码
(2)
状态行
首部行
回车换行
数据
(3)HTTP响应的状态码
- 200 OK
- 301 Moved Permanenly
- 400 Bad Request
- 404 Not Found
- 500 Internal Server Error
6.用户与服务器交互:Cookies
6.1 目的
提高用户和服务器的交互性
6.2 跟踪用户
(1)李四的栗子
(2)cookies的4个重要方面
- Cookie头部行在HTTP响应消息中
- Cookie头部行在HTTP请求消息中
- Cookie文件保存在用户主机中并被用户浏览器管理
- Cookie也保存在Web站点的后端数据库
(3)好处
- 身份认证
- 虚拟购物车
- 推荐广告
- 用户会话状态
(4)Cookies和隐私
- cookies允许网站更加了解你
- 你可以提供名字和E-mail给网站
- 广告公司通过网站获得信息
- cookie不适合游动用户
7. Web缓存(代理服务器)
7.1原理
(1)流程
(2)缓存器既是服务器又是客户机
7.2 好处
- 减少客户机请求的响应时间
- 减少内部网络与接入链路上的通信量
- 能从整体上大大降低因特网上的Web流量
7.3 缓存器举例
- 增加接入链路的带宽(成本高昂)
- 安装缓存服务器
7.4 条件GET方法
-
目的:证实缓存器中的对象是否为最新
-
验证
- 缓存器:在请求报文中包含对象最后修改时间
- 服务器:如果对象是最新的,则响应报文中不包含对象