HTTP中传输协议的数据格式

HTTP

  • 概述:超文本传输协议(Hyper Text Transfer Protocol)

  • 传输协议:定义了客户端和服务器通信时,发送数据的格式

  • 客户端和服务器端交互:客户端向服务器端发送请求,服务器端向客户端响应请求

    HTTP中传输协议的数据格式_第1张图片

  • HTTP特点:

    • 基于 TCP/IP 的高级协议
    • 默认端口号:80
    • 基于请求/响应模型的-一次请求对应一次响应
    • 无状态的:每次请求之间相互独立,不能交互数据

Request:请求消息数据格式

  • 概述:客户端发送给服务器端的数据

  • 请求行的格式

    GET /login.html HTTP/1.1				 // 请求方式 请求url 请求协议/版本
    
  • 请求方式:HTTP协议中有 7 种请求方式,常用的有下边 2种

    • GET
      • 请求参数在请求行中,在URL后
      • 请求的URL长度有限制
      • 不太安全
    • POST
      • 请求参数在请求体
      • 请求的URL长度没有限制
      • 相对安全
  • 请求头:客户端浏览器告诉服务器一些信息

    • 请求头格式

      • 请求头名称:请求头值
    • 常见的请求头

      • User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题

      • Referer:告诉服务器,当前请求从哪里来,可以用于防盗链和统计工作

        HTTP中传输协议的数据格式_第2张图片

  • 请求空行:用来分割 POST 请求的请求头和请求体的

  • 请求体(正文):封装 POST 请求消息的请求参数

  • 示例代码

    POST /login.html	HTTP/1.1									// 请求行
    Host: localhost                                                 // 请求头
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Referer: http://localhost/login.html
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    														//	请求空行	
    username=zhangsan	                                    //  请求体
    

Response:响应消息数据格式

  • 概述:服务器端发送给客户端的数据

  • 响应行:

    • 格式:协议/版本 响应状态码 状态码描述
    • 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态,状态码都是 3 位数字
    • 响应状态码分类:
    响应状态码 作用
    1xx 服务器接收客户端的消息,但没有接收完成,等待一段时间后,发送 1xx 状态码
    2xx 成功,状态码:200
    3xx 重定向,代表:302(重定向),304(访问缓存)
    4xx 客户端错误,代表:404(请求路径没有对应的资源),405(请求方式没有对应的 doXxx方法)
    5xx 服务器端错误,代表:500(服务器内部出现异常)
  • 响应头:

    • 格式:头名称:值
    • 常见响应头:
    响应头名称 作用
    Content-Type 服务器告诉客户端本次响应体数据格式以及编码格式
    Content-disposition 服务器告诉客户端以什么格式打开响应体数据
    响应头的名称 响应头的值 响应值的作用
    Content-Type text/plain 纯文本格式,适合显示普通文本内容
    text/html HTML格式,用于显示网页内容
    application/json JSON格式,用于传输和解析 JSON 数据
    application/xml XML格式,用于传输和解析 XML 数据
    application/pdf PDF格式,用于传输和现实 PDF 文档
    image/jpeg JPEG图像格式,用于传输和显示 JPEG 图片
    image/png PNG图像格式,用于传输和显示 PNG 图片
    audio/mpeg MPEG 音频格式,用于传输和播放音频文件
    video/mp4 MP4 视频格式,用于传输和播放视频文件
    multipart/form-data 用于在 HTTP POST 请求中上传文件和表单数据
    Content-disposition in-line 默认值,在当前页面内打开
    attachment;filename=xx 以附件形式打开响应体。文件下载
  • 响应空行

  • 响应体:通过POST方式传输的数据

  • 示例代码

    HTTP/1.1 200 OK									// 响应体
    Content-Type: text/html;charset=UTF-8			// 响应头,html 方式传输
    Content-Length: 101
    Date: Wed, 06 Jun 2018 07:08:42 GMT
    
    
    
    响应消息
    
    
    	hello , response
    
    
    

你可能感兴趣的:(Java,Web专栏,http,网络协议,网络)