HTTP协议详解

文章目录

  • 一、HTTP工作过程
  • 二、HTTP 协议格式
    • 2-1 请求(Request)格式
      • 2-1-1 URL格式
      • 2-1-2 方法(method)
        • 2-1-2-1 GET 方法
        • 2-1-2-2 POST 方法
        • 2-1-2-3 GET vs POST
      • 2-1-3 协议头(header)
    • 2-2 响应(Response)格式
      • 2-2-1 状态码
      • 2-2-2 协议头(header)
  • 三、手写HTTP
    • 3-1 HTTP客户端
    • 3-2 HTTP服务端


提示:以下是本篇文章正文内容,Java系列学习将会持续更新

一、HTTP工作过程

HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的应用层协议。

1.基于某个特定的传输层协议(TCP)之上
2.描述业务
3.非OS系统

当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 HTTP 响应。
HTTP协议详解_第1张图片
事实上, 当我们访问一个网站的时候, 可能涉及不止一次的 HTTP 请求/响应 的交互过程。

回到目录…

二、HTTP 协议格式

HTTP协议详解_第2张图片
注意: 为什么 HTTP 报文中要存在空行呢?

  • 因为 HTTP 协议并没有规定报头部分的键值对有多少个,使用空行就相当于是报文的结束标记或报文和正文之间的分隔符
  • HTTP 在传输层依赖 TCP 协议,TCP 是面向字节流的。如果没有这个空行,就会出现”粘包问题“

回到目录…

2-1 请求(Request)格式

HTTP协议详解_第3张图片

2-1-1 URL格式

URL (Uniform Resource Locator 统一资源定位符),互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
HTTP协议详解_第4张图片
URL的具体格式:

  1. 资源在哪台主机上——域名 (domain) 或者ip来体现一主机 (host)
  2. 和主机上的哪个进程去获取资源——端口 (port)
  3. 具体定位到是该进程管理的哪个资源——资源路径/路径 (path)
  4. URL设计之处,不仅仅为HTTP协议使用。所以需要标识出本次资源对应的协议(protocol / schema)
  5. 针对本次请求,除了资源本身之外的特殊要求。(查询字符串 query string、文档片段 fragment)

回到目录…

2-1-2 方法(method)

方法 说明 适用版本号
GET 获取资源 HTTP 1.0、HTTP 1.1
POST 传输实体主体 HTTP 1.0、HTTP 1.1
PUT 传输文件 HTTP 1.0、HTTP 1.1
HEAD 获得报文首部 HTTP 1.0、HTTP 1.1
DELETE 删除文件 HTTP 1.0、HTTP 1.1
OPTIONS 访问支持的方法 HTTP 1.1
TRACE 追踪路径 HTTP 1.1
CONNECT 要求用隧道协议连接代理 HTTP 1.1
LINK 建立和资源之间的联系 HTTP 1.1
UNLINE 断开连接关系 HTTP 1.1

2-1-2-1 GET 方法

GET 是最常用的 HTTP 方法,常用于获取服务器上的某个资源。

GET 请求的特点:

  • 首行里面的第一个部分就是 GET
  • URL 里面的 query string 可以为空,也可以不为空 %E8%9B%8B%E7%B3%95
  • GET 请求的 header 有若干个键值对结构
  • GET 请求的 body 一般是空的

GET 请求示例: 搜狗首页请求
HTTP协议详解_第5张图片

2-1-2-2 POST 方法

POST 方法也是一种常见的方法,多用于提交用户输入的数据给服务器(如登录页面)。

POST 请求的特点:

  • 首行第一个部分就是 POST
  • URL 里面的 query string 一般是空的
  • POST 请求的 header 里面有若干个键值对
  • POST 请求的 body 一般不为空(body 的具体数据格式,由 header 中的 Content-Type 来描述; body 的具体数据长度,由 header 中的 Content-Length 来描述

POST 请求示例: QQ 邮箱登录请求
HTTP协议详解_第6张图片
回到目录…

2-1-2-3 GET vs POST

我们平时构建发送的 GET/POST请求:

请求方法 构建方式
GET 1.地址栏输入url回车
2. 通过一些标签;、

你可能感兴趣的:(网络编程,Web开发,http,java,网络)