今天学了下http协议,总结了以下几个问题。
1. 什么是http协议
- http协议是基于TCP/IP通信协议来传递数据。
- http协议又叫超文本传输协议,是万维网服务器传输超文本到本地浏览器的协议。
2. URI,URL和URN的理解。
首先我们来看下面这张图:
关系图.png
从这张图中很容易看出它们的关系。
1.URI包括了URN和URL。
2.URL和URN都是URI的一种,但URI却不一定是它们。
看到一个很贴切的比喻,我们把URI比作人,URN就是人的名字,URL就是人的地址。
- 也就是说URN确定了人的身份。有了名字,就算地址换了我们也能找到这个人。
- URN提供了找到人的地址。但一旦地址换了我们可能就找不到这个人了。
- 换句话说:URN和URL的区别就是,URN与资源的位置无关,当某个URN标识的资源在位置发生变化时,其URI可以保持不变。
URI,URL,URN的定义:
URI:
Uniform Resource Identifier,即统一资源标志符,用来唯一的标识一个资源。
URL:
Uniform Resource Locator,统一资源定位符。即URL可以用来标识一个资源,而且还指明了如何locate这个资源。(能知道这个资源的位置)
URN:
Uniform Resource Name,统一资源命名。即通过名字来表示资源的。
参考文章:
3.http中的request和response
request包和response包
http中resquest和response是对应的。
request中有请求行,请求头部,空行,和主体
response中有状态行,消息报头,空行,响应正文
用burpsuite抓的包
1.GET /osjson.aspx?query=%E9%AB%98%E6%9C%A8%E5%90%8C%E5%AD%A6&form=OSDJAS&language=zh-CN HTTP/1.1
2.Host: www.bing.com
3.User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
4.Accept: */*
5.Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
6.Accept-Encoding: gzip, deflate
7.Connection: close
8.
- 1是请求行,请求类型为GET,使用的是HTTP/1.1版本
- 2~7是请求头部
- 8是空行
- 这个request包没有主体
1.HTTP/1.1 302
2.Cache-Control: private
3.Content-Length: 208
4.Content-Type: text/html; charset=utf-8
5.Location: https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&form=OSDJAS&language=zh-CN
Vary: Accept-Encoding
6.Set-Cookie: SNRHOP=TS=636798042541327291&I=1; domain=.bing.com; path=/
X-MSEdge-Ref: Ref A: 195BE0810738433CA3E8475AD27BBC3C Ref B: BJ1EDGE0214 Ref C: 2018-12-07T18:30:49Z
Date: Fri, 07 Dec 2018 18:30:48 GMT
7.Connection: close
8.
9.<html><head><title>Object moved</title></head><body>
10.<h2>Object moved to <a href="https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&form=OSDJAS&language=zh-CN">here</a>.</h2>
12.</body></html>
- 1.是状态行,状态码为302,协议版本是HTTP/1.1
- 2~7是消息报头
- 8是空行
- 9~11是响应正文
HTTP中的一些请求方式
- GET 请求指定的页面信息,并返回实体主体。
- HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
- PUT 从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE 请求服务器删除指定的页面。
- CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- OPTIONS 允许客户端查看服务器的性能。
- TRACE 回显服务器收到的请求,主要用于测试或诊断。
4.HTTP中的状态码
状态码是当浏览器发送请求时,网页所在服务器返回的一个信息头。
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类:
- 1xx:指示信息--表示请求已接收,继续处理
- 2xx:成功--表示请求已被成功接收、理解、接受
- 3xx:重定向--要完成请求必须进行更进一步的操作
- 4xx:客户端错误--请求有语法错误或请求无法实现
- 5xx:服务器端错误--服务器未能实现合法的请求
常见的HTTP状态码
- 200 OK //请求成功。一般用于GET与POST请求
- 400 Bad Request //客户端请求的语法错误,服务器无法理解
- 401 Unauthorized //请求要求用户的身份认证
- 403 Forbidden //服务器收到请求,但是拒绝提供服务
- 404 Not Found //请求资源不存在,eg:输入了错误的URL
- 500 Internal Server Error //服务器发生不可预期的错误
- 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
参考文章:
http://www.cnblogs.com/ranyonsue/p/5984001.html
https://www.cnblogs.com/wuyun-blog/p/5706703.html
网友评论