第四章 Http协议详解

1.http协议简介:

(1)WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。

(2)HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。

(3)HTTP协议的版本

HTTP/1.0、HTTP/1.1、HTTP-NG

(4)深入理解HTTP协议,对管理和维护复杂的WEB站点、开发具有特殊用途的WEB服务器程序具有直接影响。

2.http1.0的会话方式:

(1)会话方式的四个步骤:

建立连接

发送请求信息

回送响应信

关闭连接

(2)浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。

(3)浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。

(4)支持代理:减少不断网络的流量,不同之间存在着不同的角色

(5)http1.0存在的问题:

每访问一个<img>标签都会再次发送请求,因为这个标签中有src=“”连接,一个页面可能多次的和服务器建立连接,所有会消耗时间和资源

3.http1.1的会话方式的特点:

(1)在同一个页面在一次TCP连接上可以传送多个http请求和响应,可称为持久连接

减少连接的次数

每一个页面都要建立一个连接

(2)多个请求和响应过程可以重复进行,按照请求的顺序应答

(3)增加了更多的请求头和应答头

4.http的请求和应答消息

(1)请求消息

(1)请求消息的结构

一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

(2)请求行格式:请求的方式/请求的资源/http的版本

举例:

GET /books/java.html HTTP/1.1 ------ 请求行:

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: localhost -----------多个消息头

Referer: http://localhost/links.asp

User-Agent: Mozilla/4.0

Accept-Encoding: gzip, deflate

--------------一个空行

注:空行是标实消息行结束

(2)应答消息

(1)应答消息的结构

一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

(2)请求的格式

举例:

HTTP/1.1 200 OK ---------------- 状态行

Server: Microsoft-IIS/5.0

Date: Thu, 13 Jul 2000 05:46:53 GMT

Content-Length: 2291 ----------------------多个消息头

Content-Type: text/html

Cache-control: private

------------------------ 一个空行

<HTML>

<BODY> ------------------- 实体内容

……

注: 200是状态码

请求的方式/请求的资源/http的版本

GET请求有参数和Post请求没有参数

第二行或若干行:消息头(请求头)

空行的作用是标实消息行结束

5.http消息-----细节

(1)响应消息:

(1)使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。

(2)每个消息头包含一个头字段名称,然后依次是冒号、空格、值、回车和换行符。举例: Accept-Language: en-us

(3)消息头字段名是不区分大小写的,但习惯上将每个单词的第一个字母大写。

(4)整个消息头部分中的各行消息头可按任何顺序排列。

(5)消息头又可以分为通用信息头、请求头、响应头、实体头等四类。

(6)许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个项之间以逗号分隔。举例:Accept-Encoding: gzip, compress

(7)有些头字段可以出现多次,例如,响应消息中可以包含有多个“Warning”头字段。

(2)请求消息

Get和Post的

GET请求时在URL后面附加参数提交,没有实体内容。(以参数提交)

GET/books/java.html 参数 HTTP/1.1

http://localhost:8080/index.html?accouny=xx&password=123

参数名=参数值

缺点:长度限制 保密系统不好

Post请求在空格后有实体内容

Post/books/java.html HTTP/1.1

区别:没有长度的限制 保密系统较好

(3)请求行与状态行

请求行:

格式:请求方式 资源路径 HTTP版本号<CRLF>

举例:GET /test.html HTTP/1.1

请求方式:POST、HEAD、OPTIONS、DELETE、TRACE、PUT

状态行:

格式: HTTP版本号 状态码 原因叙述<CRLF>

举例:HTTP/1.1 200 OK

(4)响应状态码

响应状态码用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。响应状态码可归为5种类别,使用最高位为1到5来进行分类,如下所示:(1)100~199

表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程 。

(2)200~299

表示成功接收请求并已完成整个处理过程 。

(3)300~399

为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址。

(4)400~499

客户端的请求有错误。

(5)500~599

服务器端出现错误。

响应码的具体数的表现:

200(正常)表示一切正常,返回的是正常请求结果。

206(部分内容)

客户发送了一个带有Range头(要求服务器只返回文档中的部分内容)的GET请求,服务器按要求完成了这个请求。

302/307(临时重定向)

指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。

304(未修改)

表示客户机缓存的版本是最新的,客户机应该继续使用它。

401(未经授权)

表示客户机访问的是一个受口令和密码保护的页面,结合使用一个WWW-Authenticate响应头提示客户机应重新发出一个带有Authorization头的请求消息。

404(找不到)

服务器上不存在客户机所请求的资源。

500(内部服务器错误)

服务器端的CGI、ASP、JSP等程序发生错误。

(5)通用消息头:

通用信息头字段既能用于请求消息,也能用于响应消息,它包括一些与被传输的实体内容没有关系的常用消息头字段。消息头相当于服务器和浏览器之间的一些暗号指令

消息头的结构

消息头的分类:

请求头:

请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型、压缩方法、语言、以及发出请求的超链接所属网页的URL地址等信息。

响应头(应答):

响应头字段用于服务器在响应消息中向客户端传递附加信息,包括服务程序名,被请求资源需要的认证方式,被请求资源已移动到的新地址等信息。

实体头:

实体头用作实体内容的元信息,描述了实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。

扩展头:

在HTTP消息中,也可以使用一些在HTTP 1.1正式规范里没有定义的头字段,这些头字段统称为自定义的HTTP头或扩展头,它们通常被当作是一种实体头处理。

第四章 Http协议详解相关推荐

  1. JavaWeb --第三章 HTTP协议详解

    JavaWeb --第三章 HTTP协议详解 Http 什么是HTTP HTTP: 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常 ...

  2. 计网第四章作业题答案详解

    第四章作业 一.单选题 二.简答题 三.论述题 四.计算题 第四章作业 详细知识点请戳:2万字全面总结计网 之 网络层,建议考前通读复习 选择题知识点不在单独列出,大题附带解题过程. 一.单选题 1. ...

  3. 算法与数据结构 第四章 字符串(详解)

    目录 一.判断题 二.选择题 在开始之前,先为大家推荐两篇介绍该章两个主要算法的的文章,供大家参考. KMP算法详解:KMP算法(快速模式匹配算法)C语言详解 求后缀表达式:求后缀表达式 一.判断题 ...

  4. 等保2.0.第四章.网络安全厂商详解

    文章目录 厂商分类 网络兼安全厂商 传统网络安全厂商 细分领域安全厂商 互联网安全厂商 思科 防火墙 Cisco Firepower 下一代防火墙(官方介绍) 小结 华为 华为网络安全产品 华为网络安 ...

  5. Acwing 第四章模板及详解(数学知识)

    一.质数 二.约数 三.欧拉函数 四.快速幂 五.扩展欧几里得算法 六.中国剩余定理 七.高斯消元 八.组合计数 九.容斥原理 十.简单博弈论 一.质数 质数 质数,在大于1的整数中,有且只有1和他本 ...

  6. HTTP协议详解(转)

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...

  7. HTTP协议详解(真的很经典)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  8. Http 协议详解笔记

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...

  9. Http协议 详解(转载)

    http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分 ...

最新文章

  1. form实现登陆操作
  2. sdr 软件_SDR 软件定义的无线电
  3. N76E003快速上手使用和大坑提示
  4. Asp.Net Core 轻松学-多线程之Task快速上手
  5. Android智能指针
  6. Java面对面向程序设计_语言与文化网课章节测试答案
  7. 两台机器做互相信任 scp不使用密码
  8. SAP UI5 testFLPService - local run will start mock server
  9. Spring WebClient和Java日期时间字段
  10. 【数据库系统】数据模型、模式、数据的概念辨析
  11. mysql任务调度器_mysql存储过程和任务调度器
  12. 微信服务通知消息找回_抖音回应无法用微信登录疑:不清楚是否是人为因素
  13. ❤️「Python」初阶,必看系列, 万字只为你,建议点赞收藏~❤️
  14. 【三】rabbitmq消费者ACK机制message acknowledgment
  15. java.io.IOException:Permission denied
  16. 根据OVF文件在VMware Workstation中恢复虚拟机
  17. 用VBA合并计算Excel多个工作簿及工作表
  18. bing搜索PubHub发布商指南
  19. Matlab数组中符号“~”的使用
  20. oracle级联 drop,请教:oralce自带主外键级联删除的原理?

热门文章

  1. PLC、运动控制卡、运动控制器,你分的清吗?
  2. C语言变量类型转换之float与int互相转换
  3. ubuntu 22.04搭建OpenVPN服务器
  4. 区块链赋能新能源汽车新业态——车电分离
  5. 2021-01-22 PMP 群内练习题 - 光环
  6. 第八部分 验证码的识别(极验验证码)
  7. vue项目中添加水印效果
  8. 快速查看图片中某点的像素 X、Y 坐标
  9. thinking in java 学习笔记 14 类型信息
  10. WebRTC[54] - WebRTC之RTCP详解