计网协议 | HTTP
发布日期:2022-02-21 17:40:23 浏览次数:32 分类:技术文章

本文共 2922 字,大约阅读时间需要 9 分钟。

计网协议 | HTTP

1. HTTP概述

HTTP : (超文本传输协议)Hypertext Transfer Protocol

  1. 规定了浏览器和服务器之间的信息传递规则,
    ​ (浏览器怎么请求服务器 以及 服务器怎么响应客户端)
  2. HTTP协议是建立在TCP协议之上的一种应用
  3. HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
  4. 因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的 做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。
    • 若服务器长时间无法收到客户端的请求,则认为客户端“下线”
    • 若客户端长时间无法收到服务器的回复,则认为网络已经断开

2. HTTP协议结构

img


2.1 HTTP请求:

客户端发送一个HTTP请求到服务器的请求消息包括以下四个部分组成:

  1. 请求行(request line)
  2. 请求头部(header)
  3. 空行
  4. 请求数据
格式如下:<request-line><headers><blank line><request-body>
  1. 请求行 :

    请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。

    例如,GET /index.html HTTP/1.1

    http请求方法有: GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT

  2. 请求头部

    请求头部key-value结构组成 , 请求头部 通知服务器有关于客户端请求的信息,典型的请求头有:

    User-Agent:产生请求的浏览器类型。Accept:客户端可识别的内容类型列表。Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
  3. 空行

    最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

  4. 请求正文

    请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是 Content-TypeContent-Length


2.2 HTTP响应:

在接收和解释请求消息后,服务器返回一个HTTP响应消息。

HTTP响应也是由三个部分组成,分别是:

  1. 状态行
  2. 消息报头
  3. 响应正文
报文格式:<status-line><headers><blank line>[<response-body>]
  1. 状态行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version表示服务器HTTP协议的版本

Status-Code表示服务器发回的响应状态代码

Reason-Phrase表示状态代码的文本描述

  1. 状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息--表示请求已接收,继续处理2xx:成功--表示请求已被成功接收、理解、接受3xx:重定向--要完成请求必须进行更进一步的操作4xx:客户端错误--请求有语法错误或请求无法实现5xx:服务器端错误--服务器未能实现合法的请求
200 OK   //客户端请求成功400 Bad Request //客户端请求有语法错误,不能被服务器所理解401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务404 Not Found //请求资源不存在,eg:输入了错误的URL500 Internal Server Error //服务器发生不可预期的错误503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常eg:HTTP/1.1 200 OK (CRLF)
  1. 响应报头

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

  1. 响应正文

响应体就是响应的消息体:

  • 如果是纯数据就是返回纯数据
  • 如果请求的是HTML页面,那么返回的就是HTML代码
  • 如果是JS就是JS代码

post与get的区别

get请求:向服务端获取请求;数据放在URL里,有长度限制;

post请求:向服务端发送请求;数据放在body里,无长度限制;更安全

http接口返回json串:一种通用的数据类型

接口的返回值;

{
"error_code": 0,"stu_info": [ {
"id": 1, "name": "暴龙战士", "sex": 男", "age": 18, "addr": "北京市海淀区", "grade": "三年二班", "phone": "18655554444", "gold": 11212 } ]}

2.3 GET与POST可传递的最大值到底是多少?

  1. GET方式提交的数据最多只能是1024字节

  2. 理论上讲,POST是没有大小限制的, 微软出于安全考虑,加大了限制。

    1).IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。

    2).IIS 6.0默认上传文件的最大大小是4MB。
    3).IIS 6.0默认最大请求头是16KB。
    IIS 6.0之前没有这些限制。

3. HTTP1.0 , 1.1和2.0区别和联系

  • HTTP1.1默认使用长连接,可有效减少TCP的三次握手开销。
  • HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接受到100,才开始把请求body发送到服务器。这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。
  • HTTP1.0是没有host域的,HTTP1.1才支持这个参数。
  • HTTP2.0使用多路复用技术(Multiplexing),多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
  • “HTTP1.1在同一时间对于同一个域名的请求数量有限制,超过限制就会阻塞请求”。多路复用底层采用"增加二进制分帧层"的方法,使得不改变原来的语义、首部字段的情况下提高传输性能,降低延迟。
  • 二进制分帧将所有传输信息分割为更小的帧,用二进制进行编码,多个请求都在同一个TCP连接上完成,可以承载任意数量的双向数据流。HTTP/2更有效的使用TCP连接,得到性能上的提升。

在这里插入图片描述

转载地址:https://blog.csdn.net/weixin_40597409/article/details/115460182 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java中的锁 | JDK6 关于锁的优化
下一篇:Redis入门 | 基础概述+五大数据结构及其应用场景

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月02日 00时43分32秒