文章目录

  • 1. HTTP协议用于客户端和服务器端之间的通信
  • 2. 通过请求和响应的交换达成通信
  • 3. HTTP是不保存状态(stateless)的协议
  • 4. 请求URL定位资源
  • 5. 告知服务器意图的HTTP方法
  • 6. 使用方法下达命令
  • 7. 持久连接节省通信量
    • 7.1 持久连接
    • 7.2 管线化
  • 8. 使用Cookie的状态管理

1. HTTP协议用于客户端和服务器端之间的通信

  • 客户端:请求访问文本或图像等资源的一端
  • 服务端:提供资源响应的一端

在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。

两台计算机作为客户端和服务端的的角色可能会互换。

HTTP协议能够明确区分哪端是客户端,哪端是服务端。

2. 通过请求和响应的交换达成通信

  • HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
GET /index.htm HTTP/1.1
Host: hackr.jp
  • G E T GET GET表示请求访问服务器的类型,称为 m e t h o d method method
  • / i n d e x . h t m /index.htm /index.htm指明了请求访问的资源对象,也叫做请求 U R I ( r e q u e s t − U R I ) URI(request-URI) URI(request−URI)
  • H T T P / 1.1 HTTP/1.1 HTTP/1.1,即 H T T P HTTP HTTP的版本号,用来提示客户端使用的 H T T P HTTP HTTP协议功能

综合来看,访求访问某台 H T T P HTTP HTTP服务器上的 / i n d e x . h t m /index.htm /index.htm页面资源

HTTP/1.1 200 OK
Date: Fri, 31 Dec 2021 10:10:10 GMT
Content-Length: 362
Content-Type: text/html
<html>
...
  • 200 200 200 O K OK OK,状态码和 r e a s o n − p h r a s e reason-phrase reason−phrase
  • D a t e Date Date 创建响应的日期时间,是 h e a d e r header header f i e l d field field内的一个属性

3. HTTP是不保存状态(stateless)的协议

H T T P HTTP HTTP协议自身不具备保存之前发送过的请求或响应的功能

  • 为了更快地处理大量事务
  • 确保协议的可伸缩性

4. 请求URL定位资源

H T T P HTTP HTTP协议使用 U R L URL URL定位互联网上的资源。因为 U R L URL URL的特定功能,在互联网上任意位置的资源都能访问到。

  • U R I URI URI为完整的请求 U R I URI URI
GET http://hackr.jp/index.htm HTTP/1.1
  • 在首部字段 H o s t Host Host中写明网络域名或 I P IP IP地址
GET /index.htm HTTP/1.1
Host: hackr.jp
  • 查询 H T T P HTTP HTTP服务器端支持的 H T T P HTTP HTTP方法种类
OPTIONS * HTTP/1.1

5. 告知服务器意图的HTTP方法

  • G E T GET GET 获取资源
GET /index.html HTTP/1.1
Host: www.hackr.jp

返回 i n d e x . h t m l index.html index.html的页面资源

GET /index.html HTTP/1.1
Host: www.hackr.jp
If-Modified-Since: Fri, 31 Dec 2021 12:00:00 GMT
  • P O S T POST POST 传输实体主体
POST /submit.cgi HTTP/1.1
Host: www.hackr.jp
Content-Length: 1560

返回submit.cgi接受数据的处理结果

  • P U T PUT PUT 传输文件
PUT /example.html HTTP/1.1
Host: www.hackr.jp
Content-Type: text/html
Content-Length: 1560

返回状态码204 No Content(请求执行成功,但无数据返回)

  • H E A D HEAD HEAD 获得报文首部
HEAD /index.html HTTP/1.1
Host: www.hackr.jp

返回index.html有关的响应首部

  • D E L E T E DELETE DELETE 删除文件
DELETE /example.html HTTP/1.1
Host: www.hackr.jp

返回状态码204 No Content 该html已从该服务器上删除

  • O P T I O N S OPTIONS OPTIONS 询问支持的方法
OPTIONS * HTTP/1.1
Host: www.hackr.jp
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
  • T R A C E TRACE TRACE 追踪路径

TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法

TRACE / HTTP/1.1
Host: hackr.jp
Max-Forwards: 2
HTTP/1.1 200 OK
Content-Type: message/http
Content-Length: 1024TRACE / HTTP/1.1
Host: hackr.jp
Max-Forwards: 2
  • C O N N E C T CONNECT CONNECT 要求用隧道协议连接代理

使用SSL和TLS协议把通信内容加密后经网络隧道传输

CONNECT proxy.hackr.jp:8080 HTTP/1.1
Host: proxy.hackr.jp
HTTP/1.1 200 OK

6. 使用方法下达命令

方法的作用在于,可以指定请求的资源按期望产生某种行为。方法名用大写字母

7. 持久连接节省通信量

7.1 持久连接

特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态

7.2 管线化

持久连接使得多数请求以管线化(pipelining)方式发送成为可能。这样就能够做到同时并行发送多个请求。

8. 使用Cookie的状态管理

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务器端发送的响应报文内的一个叫作Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

  • 请求报文(没有Cookie信息的状态)
GET /reader/ HTTP/1.1
Host: hackr.jp
  • 响应报文(服务器端生成Cookie信息)
HTTP/1.1 200 OK
Date: Fri, 12 Dec 2021 11:30:00 GMT
Server: Apache
<Set-Cookie: ...>
Content-Type: text/plain; charset=UTF-8
  • 请求报文(自动发送保存着的Cookie信息)
GET /image/ HTTP/1.1
Host: hackr.jp
Cookie: sid=1342077140226724

参考资料:《图解HTTP》

【HTTP协议】简单的HTTP协议相关推荐

  1. LinuxProbe 0x14 虚拟网站主机功能(基于端口)、Vsftpd服务传输文件、TFTP简单文件传输协议

    虚拟网站主机功能 基于端口号 基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源.在使用Apache配置虚拟网站主机功能时,基于端口号的配置方式是最复杂的. 因此我们不仅要考虑 ...

  2. TR069协议简单理解

    TR069协议简单理解 tr069 协议代码逻辑整理总结: 1.协议初始化 1) log相关的初始化工作: 2) 读取配置文件,包括协议相关参数的初始化.是否第一次运行(为之后第一次inform做准备 ...

  3. 简单文件传输协议TFTP分析还原

    " 介绍TFTP协议及传输内容的还原." TFTP,全称为Trivial File Transfer Protocol,即简单文件传输协议,是一个用来在客户端与服务器之间进行简单文 ...

  4. 简单邮件传送协议SMTP

    SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息. 负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器. SMTP规定了14条命令(几个字母)和21种应答信息 ...

  5. 微信协议简单调研笔记

    前言 微信可调研点很多,这里仅仅从协议角度进行调研,会涉及到微信协议交换.消息收发等.所谓"弱水三千,只取一瓢"吧. 杂七杂八的,有些长,可直接拉到最后看结论好了. 一.微信协议概 ...

  6. 《图解HTTP》读书笔记--第2章简单的HTTP协议

    写在前面:本文仅供个人学习使用,如有侵权,请联系删除.文章中所用图片绝大多数来源于<图解HTTP>,请读者支持原版. 文章目录 第 2章 简单的HTTP协议 2.1 HTTP协议用于客户端 ...

  7. java,UDP协议简单实现

    //UDP协议简单实现-----Serverpackage UDP;import java.net.DatagramPacket; import java.net.DatagramSocket; im ...

  8. Android PC投屏简单尝试- 自定义协议章(Socket+Bitmap)

    代码地址 :https://github.com/deepsadness/MediaProjectionDemo 效果预览 投屏效果预览 简单说明: 使用Android MediaProjection ...

  9. ssdp协议 upnp_SSDP 简单服务发现协议

    SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一.它为网络客户端(network client)提供了一种发现网络服务(network services)的机 ...

  10. 计算机网络原理笔记-简单邮件传输协议

    简单邮件传送协议,简称SMTP(Simple Mail Transfer Protocol). 一个电子邮件系统应具有三个主要组成构件,用户代理.邮件服务器.SMTP和POP3(注:POP3是邮局协议 ...

最新文章

  1. 让iPhone帮你找钥匙钱包?这事还真的可行
  2. JDK和cglib生成代理类
  3. 大一高数下册笔记整理_初中化学期中重难点解读,复习不用愁啦,建议抄笔记...
  4. C/S框架-WebService架构用户凭证(令牌)解决方案
  5. php xml getattribute,PHP XMLReader getAttribute()用法及代码示例
  6. mysql怎样搞一个项目_程序员如何快速上手一个自己不太熟悉的新项目?有什么技巧?...
  7. JS页面打开方式丶对话框及页面跳转方式
  8. oracle 关系 表 视图_在Oracle数据库中,表和视图的区别与联系
  9. java软件工程师月薪多少?
  10. win98 支持html5,对“让sbpci 128在win98下支持WDM”的补充
  11. python 电子签名去背景
  12. winsat查询windwos里disk、mem、cpu性能
  13. Excel-VBA应用(1):批量提取单元格中的超链接URL
  14. Flutter 导包错误 Target of URI doesn't exist
  15. 苹果x电池容量_苹果iPhone X电池老化严重:越来越多用户收到性能劣化影响
  16. linux 限速工具
  17. 程序员『天梯排行榜』,看看你在哪一级?
  18. 又一个跨平台的快速app开发工具:AppArchitect
  19. Java微服务框架之Undertow
  20. Office - PPT 01

热门文章

  1. IDEA文件UTF-8格式控制台输出中文乱码
  2. VVC中对CU进行分类,同时进行分区模式选择
  3. 【Pygame】细致讲解开发Flappy Bird小游戏
  4. Matlab函数封装为DLL供Cpp调用
  5. Linux下的视频采集(V4L2)
  6. JSJ——java基本概念一
  7. 【STL源码剖析】迭代器
  8. 数据结构实验报告—学生成绩管理系统(Java实现)
  9. 什么情况下产品要做CQC认证
  10. finereport实现数据替换和重复填报提示