HTTP传输协议

目录

  • 1.简介
  • 2.请求数据格式
  • 3.响应数据格式

1.简介

HTTP(Hyper Text Transfer Protocol): 超文本传输协议,规定浏览器与服务器之间数据传输(请求、响应)的规则。

查看浏览器与服务器之间的数据请求与响应:
HTTP传输协议_第1张图片

打开任一浏览器→F12→网络→F5刷新页面
HTTP传输协议_第2张图片
随便点一个查看详情
HTTP传输协议_第3张图片
请求发送的数据格式(比较固定)如下
HTTP传输协议_第4张图片

HTTP协议特点:

  1. 基于TCP/IP的高级协议 ,面向连接,安全
    三次握手,四次挥手
  2. 默认端口号:80
  3. 基于请求/响应模型的:一次请求对应一次响应
  4. 无状态的协议:每次请求之间相互独立,不能交互数据(对于事务处理没有记忆能力)

    缺点:多次请求间不能共享数据,Java采用会话技术(Cookie、Session)来解决此问题

    优点:速度快

历史版本:

  1. 1.0:短连接,每一次请求响应都会建立新的连接,请求一完就断开连接。
  2. 1.1:长连接,多个http 请求可以可以复用一个TCP连接
  3. 1.2:多路复用,允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
    HTTP协议1.0/1.1/2.0之间的区别

2.请求数据格式

HTTP请求数据分为3部分:
HTTP传输协议_第5张图片

  1. 请求行:请求数据的第一行

    请求方式 请求url 请求协议/版本
        GET——请求方式
        /——请求资源路径(url)
        HTTP/1.1——协议版本

    请求方式: HTTP协议有7中请求方式,常用的有2种
        GET:请求参数在请求行中,在url后; 请求的url长度有限制的;不太安全
        POST: 请求参数在请求体中;请求的url长度没有限制的;相对安全

  2. 请求头:客户端浏览器告诉服务器一些信息
    key: value格式

    常见的请求头:
        HOST:请求的主机名
        Use-Agent:浏览器版本
        Accept:浏览器能接收的资源类型
        Accept-Language:浏览器偏好的语言,服务器可以根据此返回不同语言的网页
        Accept-Encoding:浏览器可以支持的压缩类型
        Referer:告诉服务器,我(当前请求)从哪里来

  3. 请求空行:是用于分割POST请求的请求头,和请求体的

  4. 请求体:POST请求的最后一部分,存放请求参数

3.响应数据格式

HTTP传输协议_第6张图片

  1. 响应行:响应数据的第一行。
        HTTP/1.1——协议版本
        200——响应状态码
        OK——状态码描述

  2. 响应头:第二行开始
    key:value格式

    常见的响应头:
        Content-Type:该响应内容的类型
        Content-Length:该响应内容的长度
        Content-Encoding:该响应的压缩算法
        Cache-Control:指示客户端应如何缓存

  3. 响应体:最后一部分,存放响应数据

响应状态码分类:

分类 说明
1xx 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求,如果它已经完成则忽略它
2xx 成功——表示请求已经被成功接收,处理已经完成
3xx 重定向——重定向到其他地方:让客户端再发起一个请求以完成整个处理
4xx 客户端错误——处理发生错误,责任在客户端
5xx 服务器端错误——处理发生错误,责任在服务器端

响应状态码大全

常见响应状态码:

状态码 英文描述 说明
200 OK 客户端请求成功
302 Found 重定向状态响应代码指示所请求的资源已暂时移动到由Location标题给定的 URL 。浏览器重定向到这个页面
304 Not Modified 告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用本地缓存。隐式重定向
400 Bad Request 客户端请求有语法错误,服务器无法理解请求
403 Forbidden 服务端收到请求,但是拒绝提供服务,如:没有访问权限
404 Not Found 请求资源不存在,可能是:url输入有误,或者网站资源被删除
405 Method Not Allowed 请求方法有误,如改用GET,却用成了POST
428 Precondition Required 服务器要求有条件的请求,告诉客户端想要访问此资源,必须携带特定的请求头
429 Too Many Requests 请求过多,可以限制客户端请求某个资源的数量,配合Retry-After(多长时间后可以请求)一起使用
431 Request Header Fields Too Large 请求头太大,服务器不愿意处理请求,因为其请求头字段太多。可以减少请求头的大小后重新提交
500 Internal Server Error 服务器发生不可预期的错误,查看日志确认错误
503 Service Unavailable 服务器尚未准备好处理请求,服务器初始化还没好
511 Network Authentication Required 客户端需要进行身份验证才能获得网络访问权限

你可能感兴趣的:(JavaWeb,http,网络,网络协议)