第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
11
第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
22
万维网(World Wide Web)
概述
工作模式
浏览器
URL
超文本
HTML
万维网文档
33
万维网概述
万维网不是一种独立意义的互联网
万维网是因特网提供的一种服务
万维网是一个由许多包含链接的超文本文档,
通过相互链接组成的复杂而又庞大的资源系
统
44
万维网(World Wide Web)
概述
工作模式
浏览器
URL
超文本
HTML
万维网文档
55
工作模式
1.获取用户请求
(URL地址)
服务器根据
请求查找信息资源
3.根据需要进
行编译,生成
HTML页面
4.获得所要的
页面并显示
客户端浏览器 Web服务器
请求
响应
HTTP
66
万维网(World Wide Web)
概述
工作模式
浏览器
URL
超文本
HTML
万维网文档
77
浏览器
客户端浏览器包含三个构成部分:控制器、解释客户端浏览器包含三个构成部分:控制器、解释
程序和协议处理程序程序和协议处理程序
显示输出
88
浏览器构成
控制器控制器:是浏览器的中心部件,它控制鼠标单击与键盘输:是浏览器的中心部件,它控制鼠标单击与键盘输
入,并且调用其它组件来执行用户指定的操作,并把结果入,并且调用其它组件来执行用户指定的操作,并把结果
显示出来。显示出来。
例如,当用户输入一个例如,当用户输入一个URL URL 或者单击一个超文本引用时,控制器或者单击一个超文本引用时,控制器
调用一个客户从所需文档所在的远程服务器上取回该文档,并且调调用一个客户从所需文档所在的远程服务器上取回该文档,并且调
用解释器向用户显示该文档。用解释器向用户显示该文档。
解释程序解释程序:通过将:通过将HTML HTML 规格转换成适合用户显示硬件的规格转换成适合用户显示硬件的
命令来处理版面细节。若包含命令来处理版面细节。若包含VBScriptVBScript或或JavaScriptJavaScript脚本程脚本程
序,则要解释执行序,则要解释执行
协议处理程序协议处理程序:根据用户使用的通信协议调用相应的通信:根据用户使用的通信协议调用相应的通信
接口,完成通信功能接口,完成通信功能
HTTPHTTP协议协议 → Web → Web服务器服务器 FTP FTP协议协议 → FTP → FTP服务器服务器
99
万维网(World Wide Web)
概述
工作模式
浏览器
URL
超文本
HTML
万维网文档
1010
URL
万维网是包含链接的超文本文档通过相互链接组万维网是包含链接的超文本文档通过相互链接组
成的系统成的系统
万维网是分布式的,链接的指向是世界范围内的万维网是分布式的,链接的指向是世界范围内的
文档,这给如何描述这类链接带来了一定的困难文档,这给如何描述这类链接带来了一定的困难
链接必须标明所指向文档的存放链接必须标明所指向文档的存放地点和文档名地点和文档名
Internet Internet 上有各种各样的上有各种各样的应用应用,如何获取各种应用的文,如何获取各种应用的文
档档
解决:统一资源定位符(解决:统一资源定位符(Uniform Resource Uniform Resource
Locator , URL Locator , URL ),一种通用的为万维网各种资源),一种通用的为万维网各种资源
进行定位的文本字符串。进行定位的文本字符串。
1111
URL格式
URL URL 的一般形式为:的一般形式为:
<协议>://<主机>[:端口]/<文件名>
访问文档所采用的协议名,如:访问文档所采用的协议名,如:
http—— http——超文本传输协议资源超文本传输协议资源
https—— https——用加密传送的超文本传输协议用加密传送的超文本传输协议
ftp—— ftp——文件传输协议文件传输协议
mailto—— mailto——电子邮件地址电子邮件地址
file—— file——本地电脑或网上分享的文件本地电脑或网上分享的文件
1212
URL格式
URL URL 的一般形式为:的一般形式为:
<协议>://<主机>[:端口]/<文件名>
存放资源的服务器在因存放资源的服务器在因
特网中的地址或域名特网中的地址或域名
1313
URL格式
URL URL 的一般形式为:的一般形式为:
<协议>://<主机>[:端口]/<文件名>
协议在服务器上开放的端口协议在服务器上开放的端口 ,可,可
有可无(缺省为有可无(缺省为8080))
1414
URL格式
URL URL 的一般形式为:的一般形式为:
<协议>://<主机>[:端口]/<文件名>
在服务器上的文档名,在服务器上的文档名,
包括路径和文件名包括路径和文件名
1515
万维网(World Wide Web)
概述
工作模式
浏览器
URL
超文本
HTML
万维网文档
1616
超文本的概念
超文本:是用超链接的方法,将各种不同空间的文字超文本:是用超链接的方法,将各种不同空间的文字
信息组织在一起的网状文本。利用链接可找到另一个信息组织在一起的网状文本。利用链接可找到另一个
文档,而在新文档中又可以链接到其它的文档,这些文档,而在新文档中又可以链接到其它的文档,这些
文档可位于因特网上任何一个超文本系统(可在不同文档可位于因特网上任何一个超文本系统(可在不同
的服务器上)的服务器上)
1717
从超文本到超媒体
早期的超文本中节点只能以文本形式呈现,随着信息技术早期的超文本中节点只能以文本形式呈现,随着信息技术
的发展,现在节点可以包括不同类型的数据:如文本、图的发展,现在节点可以包括不同类型的数据:如文本、图
像、音频、视频、动画等。可称之为超媒体。像、音频、视频、动画等。可称之为超媒体。
超媒体与超文本之间的不同之处是,超文本主要是以文字超媒体与超文本之间的不同之处是,超文本主要是以文字
的形式表示信息,建立的链接关系主要是文句之间的链接的形式表示信息,建立的链接关系主要是文句之间的链接
关系。关系。
超媒体除了使用文本外,还使用图形、图像、声音、动画超媒体除了使用文本外,还使用图形、图像、声音、动画
或影视片断等多种媒体来表示信息,建立的链接关系是文或影视片断等多种媒体来表示信息,建立的链接关系是文
本、图形、图像、声音、动画和影视片断等媒体之间的链本、图形、图像、声音、动画和影视片断等媒体之间的链
接关系。接关系。
习惯上还是叫做超文本习惯上还是叫做超文本
1818
万维网(World Wide Web)
概述
工作模式
浏览器
URL
超文本
HTML
万维网文档
1919
HTML
HTMLHTML是一种标记语言,主要是在文档上做各种是一种标记语言,主要是在文档上做各种
标准化记号,比如何处使用什么字体标准化记号,比如何处使用什么字体
<B>This is the text that must be boldfaced.</B>
粗体开始
标记
标记的文字 粗体结束
标记
2020
HTML文档结构
HTMLHTML文档的一般形式文档的一般形式
<HTML> <HTML>
<HEAD><HEAD>
<TITLE><TITLE>
Hello, World!Hello, World!
</TITLE></TITLE>
</HEAD></HEAD>
<BODY><BODY>
Hello, World!Hello, World!
</BODY></BODY>
</HTML></HTML>
头部头部,一般包含了文档,一般包含了文档
的标题和编码方案等基的标题和编码方案等基
本信息本信息
主体主体,在浏览器的主窗,在浏览器的主窗
口中显示的内容。可以口中显示的内容。可以
有文字、图形图像、表有文字、图形图像、表
格等元素格等元素
2121
万维网(World Wide Web)
概述
工作模式
浏览器
URL
超文本
HTML
万维网文档
2222
万维网文档
静态文档
动态文档
活动文档
2323
静态文档
2424
动态文档
2525
活动文档
2626
第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
2727
SocketSocket
HTTP协议概述
FTP HTTP SMTP DNS
TCP UDP
IP
LANs MANs WANs
DNS TFTP SNMP
ICMP IGMP
ARP RARP
HTTP
2828
HTTP协议概述
2929
HTTP 协议概述
3030
HTTP协议概述
HTTP使用TCP而不是UDP
打开一个网页需要传送很多数据,而打开一个网页需要传送很多数据,而TCPTCP协议提协议提
供传输控制,按顺序组织和交付数据供传输控制,按顺序组织和交付数据
HTTP也可以被用于传输HTML之外的数据
例如图像、声音、动画或视频等例如图像、声音、动画或视频等
Content-TypeContent-Type:指明文档类型,使浏览器了解如:指明文档类型,使浏览器了解如
何处理接收到的文档何处理接收到的文档
3131
第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
3232
浏览器
Web服务器1.建立TCP连接
2.发送HTTP请求
应答
4.关闭TCP连接
HTTP协议的工作模式
HTTP协议是一种请求/响应协议
3333
第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
3434
HTTP 协议特点
支持客户/服务器模式支持客户/服务器模式
请求请求//响应响应
简单快速简单快速
客户向服务器请求服务时,只需传送请求方法和路径。客户向服务器请求服务时,只需传送请求方法和路径。
请求方法常用的只有请求方法常用的只有GET GET 、、HEAD HEAD 、、POST POST 等几种。由等几种。由
于于HTTP HTTP 协议简单,使得协议简单,使得HTTP HTTP 服务器的程序规模小,因服务器的程序规模小,因
而通信速度很快而通信速度很快
灵活灵活
HTTP HTTP 允许传输任意类型的数据对象。传输的类型由允许传输任意类型的数据对象。传输的类型由
Content - Type Content - Type 加以标记。加以标记。
无状态无状态
无状态是指协议对于事务处理没有记忆能力。缺少状无状态是指协议对于事务处理没有记忆能力。缺少状
态意味着如果后续处理需要前面的信息,则它必须重态意味着如果后续处理需要前面的信息,则它必须重
传,这样可能导致每次连接传送的数据量增大传,这样可能导致每次连接传送的数据量增大
3535
如何解决HTTP无状态问题
通过技术层面
Session —— 服务器端的解决方案
服务器端为客户所开辟的存储空间,在其中保存的就是服务器端为客户所开辟的存储空间,在其中保存的就是
用户状态信息用户状态信息
Cookie —— 客户器端的解决方案
在客户端保存在客户端保存Session IDSession ID
在发送请求时附带在发送请求时附带IDID
重写Url —— 无Cookie的解决方案
将将Session IDSession ID以参数的形式写入到以参数的形式写入到URLURL中中
WAPWAP((Wireless Application ProtocolWireless Application Protocol)无线应用协议)无线应用协议
3636
无连接 与 持续连接
HTTP HTTP 和和 HTTP HTTP 是无连接的通信协议是无连接的通信协议
HTTP 采用两种:无连接采用两种:无连接 和和 持续连接(默认)持续连接(默认)
Defined in RFC 2068 (1997)Defined in RFC 2068 (1997)
Updated in RFC 2616 (1999)Updated in RFC 2616 (1999)
无连接无连接
含义:限制每次连接只处理一个请求。服务器处理完客户的请求,含义:限制每次连接只处理一个请求。服务器处理完客户的请求,
并收到客户的应答后,即断开连接。采用这种方式可以节省传输时并收到客户的应答后,即断开连接。采用这种方式可以节省传输时
间。间。
持续连接持续连接
建立连接后一直处于连接状态建立连接后一直处于连接状态
每次响应数据的长度由头部每次响应数据的长度由头部Content-LengthContent-Length指出指出
连接断开:客户端断开时或服务器空闲一段时间后连接断开:客户端断开时或服务器空闲一段时间后
3737
第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
3838
HTTP报文
HTTPHTTP报文:请求报文和响应报文报文:请求报文和响应报文
HTTPHTTP报文格式:报文格式:
开始行开始行
首首 部部
一个空行一个空行
主主 体体
首部名首部名 :: 首部值首部值
空格
请求行 与 状态行
3939
HTTP请求报文
请求报文由客户机发送给服务器以请求数据请求报文由客户机发送给服务器以请求数据
典型的典型的HTTP HTTP 请求报文格式如下:请求报文格式如下:
请求行请求行
首首 部部
一个空行一个空行
主主 体体
请求类型请求类型 URLURL HTTP/HTTP/版本版本
空格 空格
4040
HTTP请求类型
HTTP 支持请求方法:支持请求方法:
方方 法法 说说 明明
GETGET 请求请求URLURL所指的文档所指的文档
HEADHEAD 只请求文档的首部信息,而不包含文档的内容只请求文档的首部信息,而不包含文档的内容
POSTPOST 从客户端向服务器端发送一些信息(需要主体从客户端向服务器端发送一些信息(需要主体
部分)部分)
PUTPUT 从服务器向客户端发送一些信息从服务器向客户端发送一些信息
TRACETRACE 把到达的请求回送把到达的请求回送
CONNECTCONNECT 保留保留
OPTIONOPTION 询问关于可用的选项询问关于可用的选项
4141
HTTP响应报文
响应报文由服务器发送给客户端,包含客户端请求响应报文由服务器发送给客户端,包含客户端请求
的内容的内容
典型的典型的HTTP HTTP 响应报文格式如下:响应报文格式如下:
状态行状态行
首首 部部
一个空行一个空行
主主 体体
HTTP/HTTP/版本版本 状态码状态码 状态短语状态短语
空格 空格
4242
HTTP 响应报文
状态代码的类型及说明:状态代码的类型及说明:
代码代码 说说 明明
1XX1XX 信息响应类,表示接收到请求并且继续处理信息响应类,表示接收到请求并且继续处理
2XX2XX 处理成功响应类,表示动作被成功接收、理解处理成功响应类,表示动作被成功接收、理解
和接受和接受
3XX3XX 重定向响应类,为了完成指定的动作,必须接重定向响应类,为了完成指定的动作,必须接
受进一步处理受进一步处理
4XX4XX 客户端错误,客户请求包含语法错误或者是不客户端错误,客户请求包含语法错误或者是不
能正确执行能正确执行
5XX5XX 服务端错误,服务器不能正确执行一个正常的服务端错误,服务器不能正确执行一个正常的
请求请求
4343
常见状态码
状态码状态码 原因短语原因短语
200200 正确正确 ok ok
201201 创建创建 created created
202202 接收接收 accepted accepted
204204 无内容无内容 no content no content
300300 多种选择多种选择
301301 永久移动永久移动
302302 暂时移动暂时移动
304304 未被修改未被修改
4444
常见状态码
状态码状态码 原因短语原因短语
400400 错误请求错误请求
401401 未授权未授权
403403 禁止禁止
404404 未发现未发现
500500 内部服务错误内部服务错误
501501 未实现未实现
502502 错误网关错误网关
503503 服务未提供服务未提供
4545
HTTP报文首部
首部字段又称为元信息,即关于信息的信息首部字段又称为元信息,即关于信息的信息
首部字段可分为首部字段可分为四类四类::
请求首部请求首部:告诉服务器用户可以接受的数据类型、压:告诉服务器用户可以接受的数据类型、压
缩方法和语言等缩方法和语言等
响应首部响应首部:指明服务器的配置或主体信息类型、长度、:指明服务器的配置或主体信息类型、长度、
压缩方法、最后一次修改时间、数据有效期压缩方法、最后一次修改时间、数据有效期
通用首部通用首部:两类报文中均可出现:两类报文中均可出现
主体首部主体首部:描述文档主体的相关信息:描述文档主体的相关信息
开始行开始行
首首 部部
一个空行一个空行
主主 体体
首部名首部名 :: 首部值首部值
空格
4646
请求首部示例
4747
响应首部示例
4848
常见首部字段
字段名称字段名称 请求请求 应答应答 主体主体 含义含义
AllowAllow 主体所允许的方法主体所允许的方法
AuthenticationAuthentication 客户授权信息客户授权信息
ConnectionConnection 指明是否连接持续或关闭指明是否连接持续或关闭
Content-encodingContent-encoding 主体所用的编码主体所用的编码
Content-lengthContent-length 主体长度主体长度
Content-TypeContent-Type 指明文档类型指明文档类型
DateDate 客户或服务器的时间客户或服务器的时间
ExpiresExpires 主体的有效期主体的有效期
4949
常见首部字段
5050
第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
5151
HTTP抓包分析
设置Sniffer 抓包过滤器
本地IP地址
5252
HTTP抓包分析
抓包的对象为百度抓包的对象为百度
抓包的目标是查看抓包的目标是查看 HTTP HTTP连接、请求连接、请求//响应响应 和和 关闭过程关闭过程
5353
TCP连接之一
TCP连接
请求信号
5454
TCP连接之二
服务器确认
服务器同时也
发出连接请求
5555
TCP连接之三
客户端确认
TCP连接成功啦!
5656
客户端HTTP
连接请求
HTTP请求命令
持续连接
5757
服务器端
HTTP响应
响应码:成功
主体部分数
据量大小
文档类型及
编码方案
空行,表明后
面是主体部分
5858
获取网页图片
请求命令及请
求的文件名
5959
HTTP响应
发送的文档类型
主体部分数据
量大小
HTTP响应:成功
6060
客户端停止连接
6161
发送TCP报文段
关闭TCP连接
6262
第9章 HTTP 协议
万维网
HTTP协议概述
HTTP协议的工作模式
HTTP协议的特点
HTTP协议的报文格式
HTTP抓包分析
HTTP编程要点示例
6363
HTTP编程要点示例
开发语言:开发语言:JAVAJAVA
客户端编程要点客户端编程要点
6464
6565
6666
发出发出HTTPHTTP请求命令(测试只使用请求命令(测试只使用))
注:如何获取用户的请求请自己考虑实现
6767
6868
下面根据响应的文件及文件类型(文本或二进制),初
始化两个文件写入对象:TxtFile和PicFile(略)
6969
7070
HTTP服务器编程要点
7171
7272
下面获取用户的请求,并从中获取文件名(requestfile)、
文件类型(type)及文件长度(filesize)(略)
7373
注:TestType()是自定义函数,根据文件类型判别
是文本还是二进制
7474
7575
7676
7777
注:请大家自己完善这部分内容
7878
Summary
万维网的概念、万维网与HTTP的关系
万维网文档的类型
浏览器的构成
HTTP协议的版本、特点
HTTP协议的工作模式
HTTP协议的请求报文、响应报文
利用工具抓包分析HTTP协议的通信过程
了解HTTP服务器及客户端编程要点
7979