1.简介

HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP基于TCP/IP通信协议来传递数据。

HTTP基于客户端/服务端(C/S)架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

2.特点

(1)HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

(2)HTTP是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

(3)HTTP是无状态:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP请求报文

HTTP请求报文由3部分组成(请求行+请求头+请求体):

请求行:

①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。

②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。

③是协议名称及版本号。

请求头:

④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。

与缓存相关的规则信息,均包含在header中

请求体:

⑤是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1&param2=value2”的方式传递请求参数。

HTTP请求报文头属性

Accept

请求报文可通过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。

如下报文头相当于告诉服务端,俺客户端能够接受的响应类型仅为纯文本数据啊,你丫别发其它什么图片啊,视频啊过来,那样我会歇菜的~~~

Accept:text/plain

Accept属性的值可以为一个或多个MIME类型的值(描述消息内容类型的因特网标准, 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据)

cookie

客户端的Cookie就是通过这个报文头属性传给服务端的哦!如下所示:

Cookie: $Version=1; Skin=new;jsessionid=5F4771183629C9834F8382E23

服务端是怎么知道客户端的多个请求是隶属于一个Session呢?注意到后台的那个jsessionid = 5F4771183629C9834F8382E23木有?原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后面哦)。

Referer

表示这个请求是从哪个URL过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的Referer报文头属性值就是http://www.google.com。

Cache-Control

对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。

HTTP响应报文

HTTP的响应报文也由三部分组成(响应行+响应头+响应体)

响应行:

①报文协议及版本;

②状态码及状态描述;

响应头:

③响应报文头,也是由多个属性组成;

响应体:

④响应报文体,即我们真正要的“干货”

响应状态码

和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。

HTTP的响应状态码由5段组成:

1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...

2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.

3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。

4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。

5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。

http协议报文体_Http协议详解 - 榴莲黑芝麻糊的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java sql报错不能catch_java异常(转) - osc_ioa3fr1w的个人空间 - OSCHINA - 中文开源技术交流社区...

    Throwable(所有error和exception的父类:超类) Java将错误变成对象交给异常处理机制 Error(仅靠程序本身无法恢复的严重错误) 一般是环境的问题,JVM的问题,并非程序的问 ...

  2. java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

    java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不 ...

  3. java -p_javap命令详解 - JackieYeah的个人空间 - OSCHINA - 中文开源技术交流社区

    一.用法 javap [ 选项 ] classes 二.描述 javap命令反汇编一个或多个类文件.它的输出由使用的选项决定.如果没有使用选项,javap命令将打印输出传递给它的类的包, protec ...

  4. 高并发服务器开源项目,高并发服务器框架详解 - osc_qgfjs4a5的个人空间 - OSCHINA - 中文开源技术交流社区...

    1)如何设计如何扩展 2)什么是高并发 (1)任务:完成某个功能的一个一个目标任务,服务器程序也是不例外的. (2)CPU核心:完成具体任务的,是CPU核心 + 周围的外设(读写磁盘IO.网络IO) ...

  5. python写等腰三角形的性质_杨辉三角—知识点详解 - osc_8cfq8uoa的个人空间 - OSCHINA - 中文开源技术交流社区...

    杨辉三角 杨辉三角(欧洲叫帕斯卡三角)是一个很奇妙的东西,它是我国数学家杨辉在1261年发现的,欧洲的帕斯卡于1654年发现,比我国的巨佬数学家杨辉晚了393年.(在此show一下我的爱国情怀) 铺垫 ...

  6. linux7的mcelog在哪,mcelog用法详解 - osc_bgoqj0sj的个人空间 - OSCHINA - 中文开源技术交流社区...

    手动启动mcelog方法: # mcelog --daemon Run mcelog in daemon mode, waiting for errors from the kernel. 后台服务启 ...

  7. gogs mysql 报错_Gogs服务搭建 - osc_2ltf3y0p的个人空间 - OSCHINA - 中文开源技术交流社区...

    Gogs 安装教程(最简单版) 简介 Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支 ...

  8. mysql5.7刷脏报错_mysql5.7安装 - osc_136ia3e6的个人空间 - OSCHINA - 中文开源技术交流社区...

    12配置文件 [client] port=3306socket=/data/mysql/run/mysql.sock [mysqld] pid-file = /data/mysql/run/mysql ...

  9. mysql 视图报错1356,mysql视图初探 - osc_ky6f5kf1的个人空间 - OSCHINA - 中文开源技术交流社区...

    mysql视图初探 官方例子如下,从官方的例子就可以看出来视图就是提供一种快捷查询.用视图来查询一些常用的结果. mysql> help create view; Name: 'CREATE V ...

最新文章

  1. 2020年这10大ML、NLP研究最具影响力:为什么?接下来如何发展?
  2. TLS1.3 协议的Golang 实现——ClientHello
  3. linux驱动设备树
  4. webstorm和intellij idea下如何自动编译sass和scss文件
  5. JMeter:报错(Content type 'text/plain;charset=UTF-8' not supported)
  6. Address already in use:JVM_Bind:8080
  7. JVM参数调优详细过程
  8. 《统计学习方法》—— k近邻方法、kd树以及python3实现
  9. 数商云DMS经销商管理系统解决方案:DMS系统实现业务全渠道、销售数据采集
  10. 特殊符号大全分享给大家,直接复制粘贴就可以使用了!
  11. 机器学习之欠采样和过采样
  12. 计算机控制教师端,摆脱学校机房教师端控制的方法汇总
  13. Python爬虫分析,全国结婚率连续5年下降,这届年轻人,为什么不敢结婚?
  14. android旋转的列表,Android利用layer-list实现ProgressBar顺时针及逆时针旋转
  15. Java Web实现用户注册页面的提交
  16. 主流电源的调光协议分析及应用说明
  17. 新页微QI发射5w原理
  18. CodeForces - 514B Han Solo and Lazer Gun
  19. Hollo world
  20. luoguP3600 随机数生成器概率与期望Dp

热门文章

  1. 苹果cms搜索功能的开关与设置
  2. 双指针,二分,模拟,贪心经典题目
  3. 二阶齐次线性微分方程的通解公式_二阶常系数齐次线性微分方程 通解
  4. 台式高端计算机,台电27英寸一体机电脑 台式机性能高端体验
  5. 欧暇·地中海酒店以全新面貌赢得行业认可,荣膺2022年度卓越休闲度假酒店品牌
  6. 图片压缩怎么做?教你一个非常有用的压缩方法
  7. Windows: windows10文件夹查看“png”图片缩略图
  8. C++实现的复数运算符重载
  9. 攻略分队(java实现)
  10. 步进电机-四相五线步进电机原理