HTTP协议--超文本传输协议
浏览器与服务端之间的应用层协议使用的就是HTTP协议,HTTP协
议要求建立在可靠传输协议基础上进行。而通常传输层协议使用
的是TCP协议。

HTTP协议规定了客户端与服务端传输的数据内容格式,以及通讯
的方式。
HTTP协议要求客户端与服务端之间的通讯方式为:一次请求一次响
应,即:客户端发送一个HTTP请求(request)给服务端,而服务端
处理该请求后会给客户端发送一个HTTP响应(response)。
在这个通讯的过程中不允许服务端主动发送内容给客户端。

HTTP协议现在常用的版本为HTTP1.1
HTTP1.0协议与1.1协议有一个比较大的改变
1.0协议中:客户端与服务端建立TCP连接后会发送一个请求,当
服务端处理并予以响应后就断开连接。
1.1协议中:客户端与服务端建立TCP连接后可以进行多次的请求
与响应操作后再断开连接(对于传输复杂数据时,这样做速度快,
资源占用小)。

HTTP协议可以参考万维网(w3c),有相关定义和解释。

HTTP协议要求请求与响应中的内容只能出现ISO8859-1字符集规
定的字符(字母,数字,符号),不得直接出现如中文这样的字符。

HTTP请求(Request)
请求是客户端发送给服务端的内容

请求包含三部分信息
请求行,消息头,消息正文

1:请求行
请求行是由一行字符串组成,用空格分割为三部分。
格式:
Method Url Protocol(CRLF)
请求方式 请求路径 协议版本
如:
GET /index.html HTTP/1.1(CRLF)

注:CR是回车符,ASC编码对应为:13
   LF是换行符,ASC编码对应为:10
   HTTP协议中以CRLF结尾被规定为一行字符串结束。
     本身回车符,换行符都是空白字符,不可见。这里使用CR表示
     一个回车符,LF表示一个换行符。

2:消息头
消息头由若干行组成,是客户端发送给服务端的一些附加信息
有的用来说明客户端信息(浏览器版本,所使用的操作系统等)
有的用来说明与服务端交互数据的细节方式
有的用来说明消息正文内容等等
消息头的格式:
name: value(CRLF)
消息头的名字: 消息头对应的值(CRLF)

最后一个消息头发送完毕后,要单独发送一个CRLF,表示消息头
部分结束。

例如:
Host: localhost:8088(CRLF)
Connection: keep-alive(CRLF)
Upgrade-Insecure-Requests: 1(CRLF)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36(CRLF)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8(CRLF)
Accept-Encoding: gzip, deflate, br(CRLF)
Accept-Language: zh-CN,zh;q=0.9(CRLF)(CRLF)

3:消息正文
消息正文是纯2进制数据,是用户提交给服务端的数据。一个请求
中不一定包含消息正文部分。

一个请求的完整内容如:
GET /index.html HTTP/1.1
Host: localhost:8088
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
1010010101010010101000......

HTTP响应(Response)
响应是服务端回复客户端的内容。HTTP协议规定了响应的格式。
一个HTTP响应也包含三部分:
状态行,响应头,响应正文

1状态行
状态行也是由一行字符串构成(CRLF结尾)
格式:
protocol statusCode statusReason(CRLF)
协议版本 状态代码 状态描述(CRLF)

状态代码是由一个三位数组成,包含5类
1xx:保留,将来使用
2xx:成功 - 操作被接收、理解、接受(received, understood, accepted)。
3xx:重定向(Redirection)- 要完成请求必须进行进一步操作。
4xx:客户端出错 - 请求有语法错误或无法实现。
5xx:服务器端出错 - 服务器无法实现合法的请求。

常见状态代码与对应描述:
"200"    OK
"201"    Created
"202"    Accepted
"204"    No Content
"301"    Moved Permanently
"302"    Moved Temporarily
"304"    Not Modified
"400"    Bad Request
"401"    Unauthorized
"403"    Forbidden
"404"    Not Found
"500"    Internal Server Error
"501"    Not Implemented
"502"    Bad Gateway
"503"    Service Unavailable

2:响应头
响应头与请求中的消息头格式一致,是服务端发送给客户端的
附加信息。
比较常见的头:
Content-Type:用于说明响应正文的数据类型
Content-Length:用于说明响应正文的数据长度(字节量)

3:响应正文
响应正文也是2进制数据,是服务端发送给客户端实际要响应
的数据,通常是客户端实际请求的资源数据。比如图片,页面
等等。
一个响应中也不一定必须包含响应正文部分。
若要让浏览器能够正确理解该响应正文内容,必须设置上述对应
的两个响应头。

一个响应的内容大致为:
HTTP/1.1 200 OK(CRLF)
Content-Type: text/html(CRLF)
Content-Length: 12398(CRLF)(CRLF)
10010101010101010101010010110000111.....

http协议规定的数据格式相关推荐

  1. GPS NMEA-0183协议常用报文数据格式

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 整理的GPS有关的协议分析资料." 之前分析一些车载设备的流量时,有部分经验,在这里和大家分享. 产生这些流量的设备通常是实体终端 ...

  2. NEMA 协议:GPRMC数据格式

    NEMA协议的由来 NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The   National Marin ...

  3. 8,协议序列化组件NewLife.Serialization

    <?xml:namespace prefix = o /> 在开发某些需要跟第三方平台交互的项目时,往往需要解析或者构造符合对方协议要求的数据格式,该操作在.Net中有个很漂亮的名字--序 ...

  4. 如何学习网络协议(学习笔记)

    引: 抓包软件---tcp状态转换..构造包--->2011-12-31 15:51:26 一个前辈写的网络协议学习方法 分类: Linux开发c/c++2008-10-02 00:35 257 ...

  5. TCP/IP协议簇简介

    参考: https://blog.csdn.net/wuzhiwei549/article/details/105965493 https://blog.csdn.net/weixin_4419896 ...

  6. php 腾讯企业邮箱接口,帮助中心 腾讯企业邮箱OpenApi协议

    欢迎你,开发者 腾讯企业邮开放平台旨在为企业拓展.定制邮箱的功能.我们为开发者提供了五大开放接口:通讯录管理.新邮件提醒.单点登录.系统日志.功能设置.希望帮助企业提升开发效率.降低开发成本和难度,从 ...

  7. nema gps数据转换 matlab,GPS通信的NEMA协议与定位数据的提取.pdf

    第 2 1 卷第 12 期 计算机应用与软件 Vol 2 1 ,No12 2004 年 12 月 Computer Applications and Software Dec2004 GPS 通信的 ...

  8. Java工作笔记-发送SOAP协议请求

    这里搭建WebService采用JDKService那种最简单的方式,在此博文中不再说明. 以前说过,调用javaw的API封包是这样的: 这里模拟下. 客户端结构如下: 源码如下: Main2.ja ...

  9. 数据链路层协议 ——— 以太网协议

    文章目录 链路层解决的问题 以太网协议 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU MUT对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ...

最新文章

  1. CheckM——国家微生物科学数据中心云工具
  2. 剪绳子python_Python剪绳子如何实现 Python剪绳子实现代码
  3. 计算机如何改变沟通方式,雅思阅读模拟题:计算机改变沟通方式
  4. Codeforces 600E Lomsat gelral (树上启发式合并)
  5. 方便的Chrome取色插件ColorPick Eyedropper [设计, FE必备]
  6. Android—修改button属性
  7. k8s删除deployment_k8s灾备指南(Velero)
  8. zkcli远程连接_ZooKeeper客户端 zkCli.sh 节点的增删改查
  9. 使用ELK实时分析SSH暴力破解
  10. 常用编码说明-GBKBIG5GB18030
  11. 使用MusicTools下载全网音乐
  12. ESP8266开发之旅 阿里云物联网平台篇⑥ LED智能灯控制系统 全面讲解,上手一个小项目(MQTT客户端直连 + Web配网 + WebSocket局域网通信)
  13. Flink流式计算从入门到实战 三
  14. vue 中v-model原理及应用
  15. 2000-2020年上市公司制造业数据/制造业上市公司数据
  16. Focal Loss 简介
  17. 电子元器件行业SRM供应商系统加强产业链协同,保证零差错高效率
  18. unix/linux io监控
  19. xp无法搜索计算机,xp系统的笔记本电脑为什么搜不到手机热点的信号
  20. 优粉吧-微信大号推广微信公众平台大号直发转发自媒体推广

热门文章

  1. 解决 Adobe Acrobat Pro DC更新后提示登录激活问题
  2. English Learning - L1-1 站在高处建立灵魂 2022.12.5 周一
  3. 中科院广州电子CASAIM与东风日产在3D打印生产制造发动机检具及治具应用研究项目顺利落地
  4. 服务器七雄争霸官方网站,腾讯七雄争霸微端登录器
  5. 【GANs】将普通图片转换为梵高大作
  6. RFC1952的部分翻译及原文 (转)
  7. Visual2022安装步骤社区版,专业版or企业版安装(附注册码)(没有桌面图标的解决方法)
  8. RFID固定资产定位管理系统-智慧资产人员可视化管理系统
  9. 【完美解决:绝对路径含中文问题】bat一键启动应用绝对路径中含中文导致无法执行
  10. TiggerRamDisk的超详细使用教程(亲测成功)