HTTP | 青训营笔记

126 阅读5分钟

这是我参与「第四届青训营 」笔记创作活动的第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方法

  • 目的:证实缓存器中的对象是否为最新

  • 验证

    • 缓存器:在请求报文中包含对象最后修改时间
    • 服务器:如果对象是最新的,则响应报文中不包含对象