HTTP协议 Cheat Sheet
HTTP协议 Cheat Sheet
HTTP协议基于TCP/IP协议来传递数据,属于应用层的一个协议。其作用于客户端/服务器架构之上,客户端向服务器请求服务时,只需要传送请求方法和路径,请求方法常用的有GET、POST,HTTP协议可以传输任意类型的数据对象,使用Content-Type加以标记。
- HTTP协议是一种无连接的协议,每次连接只处理一个请求,服务器处理完请求后收到客户应答后,断开连接。
- HTTP协议是一种无状态的协议,对于事务处理没有记忆能力,如果后续处理需要前面的信息,则它必须重传。
HTTP使用统一资源标识符来传输数据和建立连接,URL包含了协议、域名、端口、虚拟目录、文件名、锚、参数
Request请求 包括了请求行、请求头部、空行和请求数据四个部分
- 请求行用来说明请求类型,要访问的资源以及所使用的HTTP版本
- 请求头部用来说明服务要使用的附加信息,包括host、User-Agent、Accept、Referer、content-type、conncetion等
- 空行是必须的
- 请求数据
Response响应,包括状态行、消息报头、空行、响应正文
- 状态行由HTTP协议版本号、状态吗、状态消息三部分组成
- 消息报头用来说明客户端要使用的一些附加信息,比如Date、Content-Type
- 空行是必须的
- 响应正文,服务器返回给客户端的文本信息
HTTP状态吗分类
- 1xx: 表示请求已接受,继续处理
- 2xx: 成功,表示请求已被成功处理
- 3xx: 重定向
- 4xx: 客户端错误(Bad Request/ Unauthorized/ Forbidden/ Not Found)
- 5xx: 服务器错误(Internal Server Error/ Server Unavailable)
HTTP请求的方法
- GET 一般用于获取,提交的数据会放在URL之后,大小有限制,提交数据有安全问题
- HEAD
- POST 一般用于修改,大小无限制,提交的数据放在HTTP的body中,较为安全
- PUT 一般用于增加
- DELETE 一般用于删除
- CONNECT
- OPTION
- TRACE
HTTP工作原理
客户端连接到Web服务器,与Web服务器的HTTP端口建立一个TCP套接字链接
然后通过TCP套接字,客户端向Web服务器发送一个文本的请求报文
服务器接受请求并返回HTTP响应,Web服务器解析请求,定位请求资源,服务器将资源复本写到TCP套接字,由客户端读取。
若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接,若connection模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接受请求
客户端浏览器首先解析状态行,查看请求是否成功的状态吗,然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集,客户端浏览器读取响应数据HTML,根据HTML的语法对其进行改格式化,并在浏览器窗口中显示
例如,在浏览器地址栏键入URL后
1 浏览器向DNS服务器请求解析该URL的域名所对应的IP
2 解析出IP后,根据IP和默认端口80,和服务器建立TCP连接
3 浏览器发出读取文件的HTTP请求,该报文作为TCP三次握手的第三个报文的数据发送给服务器
4 服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器
5 释放TCP连接
6 浏览器显示HTML文本内容