没有合适的资源?快使用搜索试试~ 我知道了~
HTTP 是 Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万 维网协会(World Wide Web Consortium)和 Internet 工作小组 IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的 RFC, RFC 1945 定义了 HTTP/1.0 版本。其中最著名的就是 RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。
资源推荐
资源详情
资源评论
深入理解 HTTP 协议
---http 协议学习系列
一. 基础概念篇
1.1 介绍
HTTP 是 Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万
维网协会(World Wide Web Consortium)和 Internet 工作小组 IETF(Internet Engineering
Task Force)合作的结果,(他们)最终发布了一系列的 RFC,RFC 1945 定义了 HTTP/1.0
版本。其中最著名的就是 RFC 2616。RFC 2616 定义了今天普遍使用的一个版本——HTTP 1.1。
HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是用于从 WWW 服务器传
输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保
证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先
显示(如文本先于图形)等。
HTTP 是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP
是一个无状态的协议。
1.2 在 TCP/IP 协议栈中的位置
HTTP 协议通常承载于 TCP 协议之上,有时也承载于 TLS 或 SSL 协议层之上,这个时候,
就成了我们常说的 HTTPS。如下图所示:
默认 HTTP 的端口号为 80,HTTPS 的端口号为 443。
1.3 HTTP 的请求响应模型
HTTP 协议永远都是客户端发起请求,服务器回送响应。见下图:
这样就限制了使用 HTTP 协议,无法实现在客户端没有发起请求的时候,服务器将消息
推送给客户端。
HTTP 协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
1.4 工作流程
一次 HTTP 操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP 的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符
(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议
版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内
容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与
服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏
输出。对于用户来说,这些过程是由 HTTP 自己完成的,用户只要用鼠标点击,等待信息显
示就可以了。
1.5 使用 Wireshark 抓 TCP、http 包
打开 Wireshark,选择工具栏上的“Capture”->“Options”,界面选择如图 1 所示:
图 1 设置 Capture 选项
一般读者只需要选择最上边的下拉框,选择合适的 Device,而后点击“Capture Filter”,
此处选择的是“HTTP TCP port(80)”,选择后点击上图的“Start”开始抓包。
图 2 选择 Capture Filter
例如在浏览器中打开 http://image.baidu.com/,抓包如图 3 所示:
http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%
e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-3.jpg
图 3 抓包
在上图中,可清晰的看到客户端浏览器(ip 为 192.168.2.33)与服务器的交互过程:
1)No1:浏览器(192.168.2.33)向服务器(220.181.50.118)发出连接请求。此为 TCP
三次握手第一步,此时从图中可以看出,为 SYN,seq:X (x=0)
2)No2:服务器(220.181.50.118)回应了浏览器(192.168.2.33)的请求,并要求确
认,此时为:SYN,ACK,此时 seq:y(y 为 0),ACK:x+1(为 1)。此为三次握手的第二
步;
3)No3:浏览器(192.168.2.33)回应了服务器(220.181.50.118)的确认,连接成功。
为:ACK,此时 seq:x+1(为 1),ACK:y+1(为 1)。此为三次握手的第三步;
4)No4:浏览器(192.168.2.33)发出一个页面 HTTP 请求;
5)No5:服务器(220.181.50.118)确认;
6)No6:服务器(220.181.50.118)发送数据;
7)No7:客户端浏览器(192.168.2.33)确认;
8)No14:客户端(192.168.2.33)发出一个图片 HTTP 请求;
9)No15:服务器(220.181.50.118)发送状态响应码 200 OK
„„
1.6 头域
每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可
以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制
表符。
在抓包的图中,No14 点开可看到如图 4 所示:
http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%
剩余34页未读,继续阅读
资源评论
Cherry_cold
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- redis-standalone.yml redis k8s单点部署
- 2000-2023年省级产业结构升级数据-最新出炉.zip
- Python基于Scrapy兼职招聘网站爬虫数据分析设计(源码)
- zipkin.yml zipkin k8s部署
- YY9706.102-2021医用电气设备第2-47部分
- 通过运用时间序列ARIMA模型与循环神经网络(LSTM)对中国包装机器数量进行预测(python源码)
- 基于ARIMA模型的股票预测(python源码)
- 基于阿里云对象存储的对文件进行批量修改、批量解冻、批量上传
- 山东联通-海信IP501H-GK6323V100C-1+8G-4.4.2-当贝桌面-卡刷包
- IMG_6338.PNG
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功