HTTP协议基础
因为想要学习抓包工具的使用,而抓包抓到是HTTP头流量包(有点看不太懂),所以学习了一点HTTP协议的相关基础知识。。。。
一、初识HTTP协议
1、HTTP协议是什么
HTTP(Hypertext Transfer Protocol)中文“超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。
**作用:**用于在服务器和客户机之间传输超文本文件。
二、HTTP协议在网络中的应用
三、HTTP协议基础知识
1、HTTP的特点
客户/服务器模式:一个服务器可以为分布在世界的许多客户服务。
简单:HTTP本身处理简单,有效地处理大量请求,HTTP服务器程序规模小,所以经由HTTP的通信速度快,与其它协议相比,时间开销小得多。
灵活: HTTP允许传输任意类型的数据对象,可以通过Content-type来指定数据类型。
无状态:HTTP是无状态的协议,缺少状态记忆,运行速度高,服务器应答速度较快。
2、HTTP的事务处理
- 客户端与服务器端建立连接
- 客户端向服务器端发送请求
- 服务器端向客户端回复响应
- 断开连接
3、消息链
4、HTTP的消息类型
1.请求(Request)消息
**概念:**由客户端发给服务器的消息。其组成包括:请求行(Request-Line),可选的头域(Header Field ),及实体(Entity-Body)。
请求行
请求行有3个元素:请求方法、URI、HTTP版本,最后以CRLF结尾,各个元素之间用SP字符隔开。
- 请求方法:指出客户请求服务器执行的一般操作。HTTP/1.1中定义了八种请求方法,其中GET、POST、HEAD、是常用请求方法。
- URI:统一资源标识,简单地讲被请求资源所处的地址,如:http://www.taobao.com/pub/WWW/page.html,
- HTTP版本:HTTP/1.1,高版本的服务器接受低版本客户的请求,并向客户发送同样版本的应答;高版本的客户接受低版本服务器的应答。
方法:
GET/POST 的区别
-
get是从服务器上获取数据,post是向服务器传送数据。
-
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
-
对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
-
get传送的数据量较小,不能大于2KB。post传送的数据量较大
-
get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
报头行(报文头)
1、Connection:close
是在告知服务器本浏览器不想使用永久连接方式(HTTP/1.0使用非永久连接,HTTP/1.1默认使用永久连接)。
2、User-agent:Mozilla/4.0
指定用户代理服务器的类型。
3、Accept-Encoding:gzip,compress
指出发送此请求的浏览器支持哪些压缩编码方式。
4、Accept-languag:en
指出客户浏览器支持的语言是英语(english)
报文体(请求数据)
2.响应(Response)消息
**概念:**服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息;HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
状态行
HTTP/1.1 200 OK
状态行由协议版本、状态码、原因短语
3个元素组成,各个元素之间用SP分隔。状态码字段由三个数字组成,标识客户请求方法的结果。
状态码5种可能的值:
报头行(报文头)
1、Date:Thu,13Oct200503:17:33GMT
指出服务器创建并发送本响应消息的日期和时间。HTTP允许下面三种不同格式的日期/时间,但必须是格林尼治标准时间:HTTP-date=rfc1123-date|rfc-850-date| asctime-date
2、Server:Apache/2.0.54(Unix)
指出本消息是由Apache服务器产生的,服务器版本为2.0.54
3、Last—Nodified:Mon,22Jun199809;23;24GMT
指出对象本身的创建或最后修改日期或时间。
4、Last—Nodified:
报头项对于对象的高速缓存至关重要,且不论这种高速缓存是发生在本地客户主机上还是发生在网络高速缓存服务器主机(也就是代理服务器主机)上。
5、Content—Length:682l
指出所发送对象的字节数。
6、Content—Type:text/html
指出包含在实体中的对象是HTML文本。
5、HTTP和HTTPS区别
HTTP通常承载在TCP协议之上,有时会承载在TLS、SSL之上,就是HTTPS
HTTPS加解密过程
HTTP基础知识总算有点了解了。可以愉快的抓包分析修改了耶。。。小白进阶ing