1、概念:

  “超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

  设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

2、http协议和tcp协议的区别:  

  1),http对应于应用层

  2),Tcp协议对应于传输层

  3),http协议是在Tcp协议之上建立的,http在发起请求时通过tcp协议建立起连接服务器的通道,请求结束后,立即断开tcp连接

  说明:从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,

  如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接Keep-Alive不会永久保持连接,它有一个保持时间,

  可以在不同的服务器软件(如Apache)中设定这个时间。

  4),Http是无状态的短连接,而TCP是有状态的长连接

3、http特点:

  简单快速          灵活            无连接         无状态

4、http报文组成部分:

  

  请求报文:请求行(http方法 页面地址 http协议版本 ) + 请求头(key + value) +空行 + 请求体

  响应报文:  状态行(http协议版本 状态码 状态描述)+ 响应头 + 空行 + 响应体

5、http方法:

  GET            ----       获取资源

  POST          ----    传输资源

  PUT            ----       更新资源

  DELETE     ----       删除资源

  HEAD         ----       获得报文首部

GET 和 POST 区别是什么?

  1)、get会把请求的参数放在url后面,例如www.xxx.xx?id=1 。也就是别人通过浏览器就可以看到。post请求会把参数放在request body。相对来说,post的安全性更高。

  2)、长度限制。如果参数有很多,对get的长度也会有限制,不同浏览器的限制不一样。

  3)、get请求的内容,浏览器会主动缓存,而post不会,除非手动设置。

  4)、get仅仅支持url编码格式,post支持多种

  5)、post对参数类型没有限制,get仅支持ASCII字符。

  6)、后退页面时,get没有影响,post会再次提交请求。

6、http状态码:

  1xx:指示信息-表示请求一接收,继续处理

  2xx:成功-表示请求被成功接收(200请求成功,206客户发送带有Range头的GET请求,服务器完成了它)

  3xx:重定向(301请求页面转移到新url,302请求页面临时转移到新url,304浏览器有缓存,可以继续使用)

  4xx:客户端错误-请求有语法错误或请求无法实现(400语法错误,401请求未经授权,403请求页面被禁止,404请求资源不存在)

  5xx:服务器错误-服务器未能实现合法请求(500服务器错误,503服务器过载或宕机)

7、http管线化:

  HTTP管线化是将多个HTTP要求(request)整批提交的技术,而在传送过程中不需先等待服务端的回应。管线化机制须通过永久连接(persistent connection)完成,

仅HTTP/1.1支持此技术(HTTP/1.0不支持),并且只有GET和HEAD要求可以进行管线化,而POST则有所限制。此外,初次创建连接时也不应启动管线机制,

因为对方(服务器)不一定支持HTTP/1.1版本的协议。

HTTP协议简单理解的更多相关文章

  1. Http协议与TCP协议简单理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...

  2. Http协议与TCP协议简单理解(转)

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  3. 【转载】Http协议与TCP协议简单理解后续

    写了这么长时间的代码,发现自己对TCP/IP了解的并不是很透彻.虽然会用C#的HttpClient类来进行网络编程,也可以使用Chrome的开发者工具来检测每一次的HTTP请求的报文头与报文体,也知道 ...

  4. 【转载】Http协议与TCP协议简单理解

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  5. http以及http协议简单理解

    HTTP协议是超文本传输协议的缩写,是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议:HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件, 图片文件, 查询结果等)HTTP作 ...

  6. [转]简单理解Socket

    简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html  题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...

  7. HTTPS强制安全策略-HSTS协议阅读理解

    https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security [阅读理解式翻译,非严格遵循原 ...

  8. [svc]简单理解什么是rpc调用?跟restapi有何区别?

    什么是rpc调用 restapi调用方式是对数据的crud. 常见的我们写flash写个api,或者借助django drf写个标准的resetapi,一个url可以借助httpget post pu ...

  9. tcp协议简单了解

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

随机推荐

  1. SpringBootTest 测试工具

    以下内容,翻译自官方文档,并结合了学习过程的demo. Spring Boot提供了许多实用程序和注解,帮助测试应用程序.测试支持由两个模块提供:spring-boot-test 包含核心项,spri ...

  2. DM7的SQL批量插入for、while方法

    示例1,for用法: begin for i in 1...10000 loop insert into test values(i,i,'aaa',sysdate); if i mod 20 = 0 ...

  3. PHP 对接 饿了么开放平台 接单

    <?php # 一开始使用的是API方式对接,所以我这里是API的方式+SDK的结合 (除了获取token之外都是使用SDK方式,所以看到的朋友还是直接使用纯SDK方式对接最好),因为我这里使用 ...

  4. Ant Design中根据用户交互展示不同的标签

    Ant Design中根据用户交互展示不同的标签 Ant Design使用的是React框架,那么我们先看代码: <Fragment> <a onClick={() => th ...

  5. 深入 Create React App 核心概念

    本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...

  6. 编写SQL查询范围分区类型,MAX分区范围

    需求 对于分区表,对于范围分区类型来说,查询MAX分区及对应的分区范围. ==查询分区表对应的最大分区信息 ==排除了自扩展分区(如果是自扩展分区,但是最大的分区不是自扩展的并未排除在外) ==排除了 ...

  7. [论文翻译]Practical Diversified Recommendations on YouTube with Determinantal Point Processes

    目录 ABSTRACT(摘要) 1 INTRODUCTION(简介) 2 RELATED WORK 2.1 Diversification to Facilitate Exploration(对应多样 ...

  8. Go 每日一库之 go-ini

    简介 ini 是 Windows 上常用的配置文件格式.MySQL 的 Windows 版就是使用 ini 格式存储配置的. go-ini是 Go 语言中用于操作 ini 文件的第三方库. 本文介绍g ...

  9. Spring Boot 2.X(十九):集成 mybatis-plus 高效开发

    前言 之前介绍了 SpringBoot 整合 Mybatis 实现数据库的增删改查操作,分别给出了 xml 和注解两种实现 mapper 接口的方式:虽然注解方式干掉了 xml 文件,但是使用起来并不 ...

  10. ES6的Object.assign()基本用法

    Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). 例如: const target = {a:1}, const source1 ...