HTTP协议(1)
HTTP 协议笔记
1. HTTP 传输机制
HTTP 是一个应用层协议,位于 TCP 的层次之上,并且是基于 TCP 协议进行通信的,也就是说 HTTP 在每一次通信之前都要先建立 TCP 连接来保证 HTTP 的可靠性。并且 HTTP 是用的 C/S 模型进行通信,即 Client/Server 的模型,Client 向 Server 发送 Request,Server 根据 Request 的内容对 Client 进行 Response。同时 HTTP 还是无状态协议,即 HTTP 协议本身并不会对已经建立起来的请求和响应对的状态进行持久化处理,这么做的目的是保持 HTTP 协议的简单性,从而提高工作效率。但是在许多时候我们需要记录用户的登录状态以便对用户的请求进行跟踪,提高 Server 的服务质量,如记录用户购物车中的商品,那么这时就需要引入一项技术来实现:Cookie。
对于上面那段话,总结如下:
- HTTP 基于 TCP 进行通信
- HTTP 是 C/S 通信模式
- HTTP 是无状态协议,HTTP 连接的建立状态不会持久
- 使用 Cookie 技术对用户进行标识从而追踪用户的请求提供更好的服务
2. HTTP 报文格式
HTTP 报文实际上分为 2 种,一种用于 Client 向 Server 请求服务,一种用于 Server 向 Client 响应请求。实际上这两种报文的格式都是一样的。
2.1 HTTP Request 报文
如上图所示,Request 报文的结构一共有 4 个部分组成:
第 1 部分是
Request-Line
,一共包含 3 个字段(用空格分开):Method
,URL
和Http-Version
。其中,Method
一共有 GET,POST,PUT,TRACE,OPTIONS,DELETE 这 6 种,最常见的是 GET 和 POST;URL
可以简单理解为浏览器地址栏中的网址;Http-Version
现在已经是 HTTP/1.1 版本了。第 2 部分是
Request-Header
,请求头部为请求报文添加了一些附加信息,是以Key:Value
的形式保存在一个列表中,常见的请求头部如下表所示:
第 3 部分是
Blank-Line
,这是一个空行,代表请求头部结束。用来分隔请求头和请求数据。第 4 部分是
Request-Body
,是请求数据的正文,是可选的,对于 GET 方法来说就没有请求正文。
2.2 HTTP Response 报文
如上图所示,Response 报文的结构也是由 4 部分组成:
第 1 部分是
Response-Line
,一共包含 3 个字段(用空格分开):Version
,Status-Code
和Phrase
。其中,Version
是协议版本,现在一般都是 HTTP/1.1;Status-Code
是状态返回码,共有 5 个系列,如一般情况下表所示;Phrase
是描述状态码的短语。
上表只是笼统的列出了 4 个大类情况,更详细的状态码说明请参考 RFC 文档,在网上看到有一篇博客写得很好,可以参考:https://www.cnblogs.com/lxinxuan/archive/2009/10/22/1588053.html第 2 部分是
Response-Header
,和Request-Header
类似,为响应报文添加的一些附加信息,也是以Key:Value
的形式保存在一个列表中,常见的响应头部如下表所示:
第 3 部分也是
Blank-Line
,用于分隔头部和正文。第 4 部分是
Response-Body
,是响应数据的正文,客户端请求的内容都放在这里。
3. URI URL URN 的区别
- URI(Uniform Resource Identifier),统一资源标识,用来唯一标识一个资源,是一个通用的概念。由 URL 和 URN 组成。
- URL(Uniform Resource Locator),统一资源定位,即资源所在位置,我们浏览器上的地址就是一条 URL。
- URN(Uniform Resource Name),统一资源命名,通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置变了,其 URN 也不会改变。
HTTP协议(1)的更多相关文章
- HTTP协议系列(1)
一.为什么学习Http协议 首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- RTP与RTCP协议介绍(转载)
RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...
随机推荐
- 死磕nginx系列--使用upsync模块实现负载均衡
问题描述 nginx reload是有一定损耗的,如果你使用的是长连接的话,那么当reload nginx时长连接所有的worker进程会进行优雅退出,并当该worker进程上的所有连接都释放时,进程 ...
- SAP客户端 测试机、开发机、生产机
SAP客户端 测试机.开发机.生产机 客户端(即Client),是SAP组织架构里最高层的组织单元,所有数据,包括静态数据(科目.客户.供应商.物料.资产等).业务数据(采购订单.销售订单. ...
- Redis未授权漏洞利用方式
总结一下redis未授权拿shell: redis-cli -h ip >info 查看系统类型 Windows: 1.找网站绝对路径 2.config set dir 绝对路径根路径 conf ...
- pytorch faster_rcnn
代码地址:https://github.com/jwyang/faster-rcnn.pytorch 1.fasterRCNN.train():这个不是让网络进行训练,而是让module in tra ...
- Node.js实战(八)之回调函数
Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都 ...
- python+requests实现接口测试 - cookies的使用 (转载)
出自:https://www.cnblogs.com/nizhihong/p/6699492.html 在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别 ...
- Recent papers on Action Recognition | 行为识别最新论文
CVPR2019 1.An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognit ...
- 微信小程序开发 [02] 页面注册和基本组件
1.页面注册 既然我们希望跳转到新的页面,那自然要新建页面相关的文件才行.在开篇已经讲过,一个小程序页面由四个文件组成,假如我们的页面名为welcome,那么这四个文件则是: welcome.js w ...
- Bat 参数去引号(各种去引号的奇葩方式,三种变量互转),普通变量不能直接去掉外层引号
很多情况下,我们需要脱除一个字符串中可能会存在的引号,然后在加上自己的引 号使其中的特殊字符(命令连接符& .| .&&.||,命令行参数界定符Space .tab . ; . ...
- 20155323刘威良《网络对抗》Exp9 Web安全基础
20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoa ...