美文网首页
浅析http协议

浅析http协议

作者: 冒险小A | 来源:发表于2018-08-18 17:20 被阅读0次

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 :请求访问已被URI识别的资源。如果请求的资源是文本→原样返回;请求的是程序(例如CGI)→返回输出结果。
  • POST:传输实体的主体。向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  • HEAD:获取报头,类似于get请求,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等。
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容(安全性低,需要配合验证或者REST架构使用)。
  • DELETE:按请求URI删除指定的资源(安全性低,一般不用,需要配合验证或者REST架构使用)。
  • CONNECT :与代理服务器通信时使用隧道协议进行TCP通信。
  • OPTIONS:用来查询指定URI资源支持的方法。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。客户端通过TRACE方法可以查询发送出去的请求是怎样被加工修改/篡改的。(容易引发XST攻击,通常不会用到此方法)
  • LINK和UNLINK:被HTTP/1.1废弃,此处不提

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一般用于更新资源信息。

状态码:

状态码的类别:

  • 1xx:指示信息--表示请求已接收,正在处理
  • 2xx:成功--表示请求已被成功接收、理解、接受、处理完毕
  • 3xx:重定向--要完成请求必须进行更进一步的操作
  • 4xx:客户端错误--请求有语法错误或请求无法实现
  • 5xx:服务器端错误--服务器处理请求出错

常见状态码:

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

感想总结:

  • 《图解HTTP》非常棒,辅以画图讲解,通俗易懂
  • 关于http的坑也不少,写网络api时出现过各种bug,例如那个+号会自动转换为空格,那天让我debug了好久!

相关文章

  • iOS网络协议----HTTP/TCP/IP浅析

    iOS网络协议----HTTP/TCP/IP浅析

  • 浅析http协议

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用...

  • HTTP协议浅析

    � 应用范围 Web的应用层协议是Http.Http协议并不规定浏览器如何解析HTML页面,仅仅是制定了Http客...

  • HTTP协议浅析

    一、HTTP协议简介 浏览器和Web服务器之间一问一答的交互过程遵守一定的规则,这个规则就是HTTP协议。HTT...

  • 浅析http协议

    HTTP协议是无状态(stateless)协议。为了更快地处理大量事务,确保协议的可伸缩性,特意把HTTP协议设计...

  • 我整理的网上讲解详细的文章

    讲算法的 RSA算法原理(一) RSA算法原理(二) 网络协议 iOS网络协议----HTTP/TCP/IP浅析 ...

  • QUIC协议浅析与HTTP/3.0

    QUIC协议浅析与HTTP/3.0 1. 简介 QUIC(Quick UDP Internet Connectio...

  • 浅析web协议之http协议

    浏览器发起http请求的典型场景 1、服务器:监听80或者443等web端口 2、浏览器:从URL中解析出域名,根...

  • IOS 网络协议浅析

    转载:iOS网络协议----HTTP/TCP/IP浅析 一、TCP/IP协议 话说两台电脑要通讯就必须遵守共同的规...

  • iOS-10 网络协议

    转载:iOS网络协议----HTTP/TCP/IP浅析 一、TCP/IP协议 话说两台电脑要通讯就必须遵守共同的规...

网友评论

      本文标题:浅析http协议

      本文链接:https://www.haomeiwen.com/subject/acmfiftx.html