美文网首页
HTTP协议

HTTP协议

作者: 醒醒Coco | 来源:发表于2017-03-02 01:10 被阅读0次

HTTP 协议是超文本传输协议,用于客户端和服务器之间的通信。
TCP/IP 协议族分为4层:应用层、传输层、网络层、数据链路层。
HTTP 是应用层的协议(FTP 文件传输协议,DNS 域名系统)

TCP/IP 通信传输流

  1. 发送端的客户端在应用层(HTTP协议)发送一个Web页面的HTTP请求。
  2. 在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
  3. 在网络层(IP协议),增加作为通信目的地的MAC地址转发给链路层。
  4. 接收端的服务器在链路层接收到数据,按序往上传发送,一直到应用层。当传输到应用层,才算真正接收到客户端发送过来的请求。

HTTP 协议的特点:

  1. 无状态协议:HTTP协议自身不对请求和响应之间的通信状态进行保存。(为了更快的处理大量事物,减少服务器CPU及内存资源的消耗)。为了实现期望的保持状态
    功能,引入了Cookie技术。
    Cookie技术在请求和响应报文中写入Cookie信息。但Cookie保存在客户端,一些重要信息不安全,所以把重要的信息放在服务器中,也就是SessionCookie拿到Session id,找到对应的Session
  2. 无连接协议
    传输层:TCP(三次握手,四次挥手)
    TCP三次握手:TCP协议把数据发送出去后,不会对传送后的情况置之不理,一定会向对方确认是否发送成功。握手中使用了TCP的标志:SYN和ACK。
    发送端先发送一个带有SYN标志的数据包给对方。接收端收到后,回传一个SYN/ACK标志的数据包以表示传达信息确认。最后,发送端再回传一个带ACK的数据包,代表握手结束。
    1.1版本,引入Keep-alive模式,保持当前TCP连接,避免了建立或重新建立。
HTTP1.1

1.0版本,无状态(每个请求都是独立的)无连接(每次只有一个请求)

HTTP1.0

状态码

  1. 2XX
  • 200(正常)
    表示一切正常,返回的是正常请求结果
  • 204 请求成功,但无资源返回
  • 206 部分返回
  1. 3XX 重定向
  • 301 永久性重定向
  • 303 应采用GET方式请求
  • 304 服务器资源未更新,可以直接使用客户端未过期的缓冲
  • 302/307(临时重定向)
    指出被请求的文档已被临时移动到别处,此文档在新的URL在Location响应头中给出
  1. 4XX 客户端错误
  • 400 Bad Request 请求报文存在错误
  • 401 Unauthorizized 认证失败
  • 403 Forbidden 请求资源被服务器拒绝
  • 404 Not Found 无请求资源, 服务器上不存在客户器所请求的资源
  • 401/407(未经授权)
    表示客户机访问的是一个受口令和密码保护的页面,结合使用一个WWW-Authenticate响应头,提示客户机应重新发送出一个带有Authorization的请求消
  1. 5XX 服务器
  • 500 服务器执行请求发生错误
  • 503 服务器处于超负载或正在进行停机维修

HTTP URL

HTTP默认端口80
HTTPS 默认端口443
HTTP的URL是怎么组成为一个接口的。如图:


一个URL就是一个接口,接口大致会分为一下几个部分:
  1. 请求协议:
    http --- 普通的http请求
    https --- 加密的http请求,传输数据更加安全
    ftp --- 文件传输协议,主要用来传输文件
  2. 请求IP:就是指提供接口的系统所部署的服务器地址
  3. 请求端口:如果不填端口,默认是80,否则需要填写端口号
  4. 接口路径:指系统提供的接口在什么位置
  5. 接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数, 如下示例:
    http://127.0.0.1:8080/light?opt=open&use=yy&pwd=123456

HTTP请求消息

请求消息的结构:


请求消息的结构

GET /simple.html HTTP/1.1 请求行(请求方法,URI协议版本)
多个消息头
空行
(GET请求空行下面无实体,Post请求下面有实体)

HTTP响应消息

响应消息的结构


响应消息的结构

HTTP/1.1 200 OK 状态行(协议版本,状态码,原因短语)
多个消息头
一个空行
body 实体内容

HTTP请求和响应对比

请求方法种类

  • GET方式:获取资源
    用来请求访问已被URI识别的资源(我想要访问你的资源)
    举例:GET /server/ParamsServlet?paraml=abc&param2=xyz HTTP/1.1
    特点:传输的数据量是有限制的,一般限制在1KB以下

  • POST方式:传输实体主体
    (我想把这条信息告诉你)
    举例:

POST /servlet/ParamServlet HTTP/1.1
Host:
Content-Type:application/x-www-form-urlencoded
Content-Length:28

 param-abc&param2=xyz

特点:传送的数据量要比GET方式传送的数据量大得多。

相关文章

网友评论

      本文标题:HTTP协议

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