当前课程知识点:计算机网络 > 第六章 应用层 > 6.4 HTTP > HTTP
你好
这一讲要学习的是
HTTP协议的相关知识
我们首先对HTTP协议
进行简要的概述
将会从HTTP概述
HTTP连接
HTTP消息格式
Cookie技术四个部分
来帮助大家了解HTTP协议
万维网遵循的是什么协议呢
万维网遵循的其实是超文本传输协议
即HTTP(HyperText Transfer Protocol)
而HTTP基于客户机/服务器结构
C/S结构即Client/Sever
在HTTP协议中
C为客户机—Browser
请求、接收、展示Web对象
S是服务器—Web Server
响应客户机的请求
如图显示的是
客户与服务器的交互
HTTP版本有1.0 RFC 1945
1.1 RFC 2068
HTTP使用TCP传输服务分为5个步骤
1.服务器在80端口等待客户的请求
2.浏览器发起到服务器的TCP连接
创建套接字Socket
服务器接受来自浏览器的TCP连接
浏览器(HTTP客户端)
与Web服务器(HTTP服务器)
交换HTTP消息
关闭TCP连接
HTTP是无状态的(stateless)
即服务器不维护任何有关
客户端过去所发请求的消息
有状态的协议要更复杂
需要维护状态
状态指的是历史信息
如果客户或服务器失效
会产生状态的不一致
解决这种不一致的代价很高
HTTP连接有两种类型
分别是非持久性连接和持久性连接
非持久性连接每个TCP连接
最多允许传输一个对象
HTTP 1.0版本使用非持久性连接
而持久性连接每个TCP连接
允许传输多个对象
HTTP 1.1版本默认使用持久性连接
下面我们来详细了解一下
非持久性连接的过程
假定用户在浏览器中输入一个URL
这是一个包含文本和
指向10 个jpeg图片的链接
第一 HTTP客户端
向指定地址的服务器上的
HTTP服务器进程端口80
发起TCP连接请求
HTTP服务器在端口80等待TCP连接请求
接受连接并通知客户端
第二 HTTP客户端将HTTP请求消息
包含URL地址
通过TCP连接的套接字发出
消息中所含的URL
表明客户端需要对象
下面这是一个请求地址
第三 HTTP服务器收到请求消息
解析后
产生包含所需要对象的响应消息
并通过套接字发送客户端
第四 HTTP服务器关闭TCP连接
第五 HTTP客户端收到响应消息
解析html文件
显示html文件
发现有10个指向jpeg对象的超链接
第六 为每个jpeg对象重复步骤1-5
非持久连接有什么问题呢
由于其传输方式导致了
1.每个对象需要2个RTT
这里的RRT指响应时间
从客户端发送一个数据包
到服务端并返回所需时间
2.操作系统需要
为每个TCP连接开销资源
3.浏览器会怎么做
打开多个并行的TCP连接
以获取网页所需对象
给服务器端造成什么影响
相比之下持久连接的优点显而易见
1.发送响应后
服务器保持TCP连接的打开
2.后续的HTTP消息
可以通过这个连接持续发送
由此引出了无流水的持久性连接
和带有流水机制的持久性连接
无流水的持久性连接
客户端只有收到前一个响应后
才发送新的请求
每个被引用的对象耗时1个RTT
拥有流水机制的持久性连接
这是HTTP 1.1版本的默认选项
客户端只要遇到一个引用对象
就尽快发出请求
理想状况下
收到所有的引用对象
只需耗时约1个RTT
HTTP协议有两类消息
1.请求消息
从客户向服务器发送请求报文
2.响应消息
这是从服务器到客户的回答
如图 这是一个HTTP报文的举例
报文中包括了请求行和首部
请求消息可以用ASCII码格式
便于人们可读
接下来给大家讲解HTTP的消息格式
以GET请求为示例
报文格式如下图所示
GET响应报文格式
与请求报文的格式略有不同
如图 有些地方需要注意一下
了解了HTTP的报文
我们会思考到底是如何上传数据的呢
上传数据涉及到对方法的使用
POST方法用于
网页经常需要填写表格
在请求消息的消息体上
上传客户端的输入
URL方法是使用GET方法
输入信息通过request行的URL字段上传
而GET请求在其他时候
一般用于请求的发起
如资源加载等
发起请求后
会得到响应消息
这个响应消息仍需要我们去了解
一般包括状态、头部、正文
其中的响应状态码
则是判断请求状态的重要依据
成功、失败等
响应代码位于响应消息的第一行
下面是一些例子
基本的格式是状态码
加上解释状态码的简单语句
当出现差错时
网页也会显示响应的信息
如图 这张显示404 not found
意思是没有找到服务器
下面的图显示的是无法找到网页
我们对状态码再进行一遍回顾
这是http中非常重要的一部分
有很多状态码十分常见
我们一一的来介绍
200 这是您最希望看到的
即处理成功
303 表示
我把你redirect到其它的页面
目标的URL通过响应
报文头的Location告诉你
304 表示我把你
把你redirect到其它的页面
目标的URL
通过响应报文头的Location告诉你
404这是你最不希望看到的
即找不到页面
如果你在google上找到一个页面
点击这个链接返回404
表示这个页面已经被网站删除了
500 表示服务器端出现错误
下面我们来体验一下HTTP
看HTTP是怎样为用户提供服务的
首先利用telnet登录某个Web服务器
输入一个HTTP请求
然后我们可以查看HTTP服务器
所返回的响应消息
这时我们获得了一个网页
什么是Cookie
Cookie技术是某些网站
为了辨别用户身份
进行session跟踪
而储存在用户本地终端上的数据
通常经过加密
标准是RFC6265
Cookie的组成包括了
HTTP响应消息的cookie头部行
HTTP请求消息的cookie头部行
保存在客户端主机上的cookie文件
由浏览器管理
以及Web服务器端的后台数据库
Cookie的原理是什么
1. Cookie定义了
HTTP请求头和HTTP响应头
通过这些HTTP头信息
使服务器可以与客户进行状态交互
2. 客户端请求服务器后
如果服务器需要记录用户状态
服务器会在响应信息中
包含一个Set-Cookie的响应头
客户端会根据这个响应头
存储Cookie信息
3. 再次请求服务器时
客户端会在请求信息中
包含一个Cookie请求头
而服务器会根据这个请求头
进行用户身份、状态等校验
Cookie能够用于
身份认证、购物车
推荐、Web e-mail等等
但Cookie在用户的隐私保护问题上
争议很大
现如今
科技巨头们已经开始了
替代Cookie的技术的研究
课程到了尾声
有几个思考问题
Cookie能够怎样被用于收集隐私
能够收集哪些隐私
你在上网的时候感觉到
自己的隐私被严重侵犯吗
事实上Cookie可以记忆您登录的时间
记忆您的用户优先选项、搜索和收藏
跟踪您的网站使用情况
跟踪营销活动的成果
这些均是个人隐私信息
-1.1 计算机网络的发展历程及其在信息时代中的作用
-1.2 互联网的组成
--互联网的组成
-1.3 电路交换和分组交换
-1.4 计算机网络的性能
--计算机网络的性能
-1.5 计算机网络体系结构和层次划分
-第一章
-2.1 数据通信系统模型
--数据通信系统模型
-2.2 导向型传输媒体
--导向型传输媒体
-2.3 光导纤维
--光导纤维
-2.4 非导向型传输媒体
--非导向型传输媒体
-2.5 信道的极限容量
--信道的极限容量
-2.6 信道复用技术
--信道复用技术
-2.7 ADSL
--ADSL
-第二章
-3.1 数据链路层的三个基本问题
-3.2 CSMA/CD协议
-3.3 虚拟局域网
--虚拟局域网
-3.4 扩展的以太网
--扩展的以太网
-3.5 高速以太网
--高速以太网
-第三章
-4.1 分类的IP地址-划分子网
-4.2 无分类编址-构造超网
-4.3 ICMP协议
--ICMP协议
-4.4 路由器结构
--路由器结构
-4.5 RIP协议
--RIP协议
-4.6 IP多播
--IP多播
-第四章
-5.1 用户数据报协议UDP
-5.2 TCP报文段首部格式
-5.3 可靠传输工作原理
--可靠传输工作原理
-5.4 字节为单位的滑动窗口实现
-第五章
-6.1 网络应用层
--网络应用层
-6.2 DNS
--DNS
-6.3 FTP
--FTP
-6.4 HTTP
--HTTP
-6.5 P2P
--P2P
-6.6 计算机网络面临的安全性威胁
-6.7 防火墙
--防火墙
--第六章
-7.1 交换机基本配置
--交换机基本配置
-7.2 路由器基本配置
--路由器基本配置
-7.3 交换机端口隔离
--交换机端口隔离
-7.4 跨交换机实现相同VLAN通信
-7.5 动态路由
--动态路由
-7.6 静态路由
--静态路由