浅析http协议

2018-08-18  本文已影响0人  冒险小A

HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。
HTTP属于TCP/IP协议族内部的一个子集,TCP/IP协议族按层次分别应用层、传输层、网络层和数据链路层,HTTP协议就处于应用层。


http请求-响应模型

URL

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
URL是一种特殊的URI,是URI的子集。URI用字符串标识某一互联网资源,而URL表示资源的地点。


URI的格式

简单的HTTP协议

HTTP协议用于客户端和服务器之间的通信。HTTP协议规定,请求从客户端发出,最后服务器响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接受到请求之前不会发送响应。


请求响应示例
请求报文:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。 请求报文
响应报文:由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
响应报文

请求方法:

GET和POST的比较:

\ GET POST
请求 在 GET 请求的 URL 中发送 在 POST 请求的 HTTP 消息主体中发送
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中 参数不会保存在浏览器历史中
对数据长度的限制 URL 的长度是受限制的(URL 的最大长度是 2048 个字符) 无限制
对数据类型的限制 只允许 ASCII 字符 没有限制。也允许二进制数据
安全性 GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET,此外还容易造成CSRF攻击 POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中
可见性 数据在 URL 中对所有人都是可见的 数据不会显示在 URL 中
注意点:
  1. GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接,例如www.baidu.com?username=XiaoA&password=123456,如果数据是英文字母/数字,原样发送,如果是+号,转换为空格(这里是坑,需要注意,有时候服务器get拿到字符串需要把空格转成+号再交给业务代码操作),如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
  2. GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

状态码:

状态码的类别:

常见状态码:

200 OK                        //客户端请求成功
400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden                 //服务器收到请求,但是拒绝提供服务
404 Not Found                 //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error     //服务器发生不可预期的错误
503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

HTTP工作原理(当输入一个网址后,发生了什么?):

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
  2. 浏览器根据该 IP 地址和默认端口 80,和服务器建立TCP套接字连接。
  3. 通过TCP套接字,浏览器(客户端)发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器。
  4. 服务器接受请求并返回HTTP响应
  5. 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接(四次挥手);若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。
  6. 客户端浏览器解析HTML内容并显示。

HTTP的特点:

  1. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  2. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  3. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  4. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,一般使用cookie解决。
  5. 支持B/S及C/S模式。

HTTP1.0、HTTP1.1 、HTTP2.0、HTTPS:

网上总结的很好直接放链接了嘿嘿
https://blog.csdn.net/summy_J/article/details/76578239
https://www.jianshu.com/p/be29d679cbff
https://www.jianshu.com/p/11c2614ef3f2

感想总结:

上一篇 下一篇

猜你喜欢

热点阅读