1.HTTP简介

http是用于客户端与服务端之间的通信

实际情况中客户端与服务端角色有可能互换,但从一条通信线路来说服务器端和客户端角色是确定的,http协议知道那个是服务端那个是客户端呢。

http协议规定,请求从客户端发出,服务端响应请求并返回。服务端没有接受请求时是不会发送响应。

客户端发送给服务器端的请求报文中内容

GET:请求类型,称之为方法(method);

/index.htm:请求的资源对象,也叫作URI(request-URI);

HTTP/1.1:http的版本号

服务器端相应内容如下

2.HTTP是无状态协议

http协议不保存请求和响应信息

每当有新的请求发送时,就会有对应的新响应产生,协议本身不保留之前一切的请求或响应报文的信息,这是为了更快的处理大量事务,确保协议的可伸缩性,而特意把HTTP协议涉及成如此简单的。

虽然HTTP协议是无状态协议,但是为了实现期望的保持状态功能,于是引入了Cookie技术,有了Cookie就可以管理状态了。

3.HTTP协议的方法

GET:获取资源

GET方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回相应内容。

POST:传输实体主体

post方法用来传输实体的主体,虽然get方法也可以传输实体的主体,但是一般情况不使用get方法传输,而是使用post方法传输。post的功能和get很相似,但是post的主要目的并不是获取响应的主体内容。

PUT:传输文件

put方法用来传输文件,就像FTP协议的文件上传一样,要求请求报文的主体中包含文件内容,然后保存到请求的URI指定的位置。但是由于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般WEB网站不使用该方法。若配合WEB应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer,表征状态转移)标准的同类Web网站,就可能开发使用PUT方法。

HEAD:获得报文首部

head方法和get方法一样,知识不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等。

DELETE:删除文件

delete方法与put方法相反,用于请求删除指定文件,情况与put方法一样。

OPTIONS:询问支持的方法

options方法用来查询针对请求URI的资源支持的方法。

TRACE:追踪路径

trace方法是让web服务器端将之前的请求通信环回给客户端的方法。发送请求时,在Max-Forwards首部字段中填入数值,没经过一个服务器端就将该数字减1,当数值刚好减到0时,就停止继续传输,最后接收到请求的服务器端则放回状态码200OK的响应。

客户端通过trace方法可以查询发出的请求时怎样被加工修改/窜改的,但是它容易引发XST攻击,通常不会用到。

CONNECT:要求用隧道协议连接代理

它要求在于代理服务器通信是建立隧道,实现用隧道协议进行TCP通信,主要使用SSL(安全套接字)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输

connect方法格式:

3.持久连接节省通信量

之前通信情况都是传输较小的文本,所以问题不大,随着HTTP的普及,文档中包含大量图片的情况多了起来,比如一个浏览器浏览一个包含多张图片的页面时,也会请求html页面中包含的其他资源,每次请求都会造成无谓的TCP连接的建立和断开,增加通信量的开销。

为了解决上述TCP连接的问题,HTTP/1.1提出了持久连接的方法。持久连接的特点就是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

管线化

持久连接是的多数请求以管线化方式发送成为可能。之前发送请求后需等待并受到响应才能发送下一个请求,管线化技术出现后不用等待响应可直接发送下一个请求。这样就可以做到同时并行发送多个请求,而不需要一个接一个的等待响应。

4.Cookie状态管理

Cookie技术通过请求和响应报文中写入Cookie信息来控制客户端的状态

Cookie通过响应报文中的Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再次发往服务器请求时,客户端会自动在请求报文中加入cookie值。服务器端发现客户端发送来得Cookie后,检查从哪个客户端发来的连接请求,然后对比服务器的记录,最后得到状态信息。

HTTP协议图解的更多相关文章

  1. 第8章 应用协议 图解TCP/IP 详解

    第8章 应用协议 图解TCP/IP 详解 8.1 应用层协议概要 应用层协议的定义 TCP和IP等下层协议是不依赖上层应用类型.实用性非常广的协议.而应用协议则是为了实现某种应用而设计和创造的协议. ...

  2. [I2C]I2C总线协议图解

    转自:http://blog.csdn.net/w89436838/article/details/38660631 1  I2C总线物理拓扑结构      I2C 总线在物理连接上非常简单,分别由S ...

  3. HTTP协议 --- 图解三次握手过程

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...

  4. I2C总线协议图解(转载)

    转自:http://blog.csdn.net/w89436838/article/details/38660631 另外,https://blog.csdn.net/qq_38410730/arti ...

  5. HTTP 协议图解

    HTTP 协议是一个非常重要的网络协议,我们平时能够使用浏览器浏览网页,其中一个非常重要的条件就是HTTP 协议. 0,什么是网络协议 互联网的目的是分享信息,网络协议是互联网的重要组成部分. 在互联 ...

  6. TCP/IP协议图解

    联网的各个终端之间能否进行交互的软件基础是网络协议栈,目前主流的网络协议栈是TCP/IP协议栈. 1.主机到网络层协议:以太网协议 主机到网络层主要为IP协议和ARP协议提供服务.发送和接收网络数据报 ...

  7. I2C总线协议图解

    原帖地址:https://www.cnblogs.com/aaronLinux/p/6218660.html

  8. 《图解 HTTP》读书笔记

    <图解 HTTP>一书是日本学者上野宣所著,2014 年由于均良先生翻译并在国内出版.因为作者使用十分生动的语言和浅显易懂的案例将 HTTP 协议讲解得深入浅出,所以深受开发者喜爱.现在在 ...

  9. Dubbo(五):Dubbo中的URL统一资源模型与Dubbo协议

    一.URL简介 URL也就是Uniform Resource Locator,中文叫统一资源定位符.Dubbo中无论是服务消费方,或者服务提供方,或者注册中心.都是通过URL进行定位资源的.所以今天来 ...

随机推荐

  1. flask框架基本使用(3)(session与cookies)

    #转载请留言联系 flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html flask 框架基本使用(2):https://www ...

  2. python每日一类(4):slice

    class slice(stop)class slice(start, stop[, step]) Return a slice object representing the set of indi ...

  3. Visual Studio跨平台开发(5):Xamarin Android多页面应用开发

    前言 大部份的Android 都具有实体或虚拟的Back键. 因此在处理多页面应用程序时, 与先前所介绍的iOS Navigation controller 比较起来会简单许多. 1. 开启Visua ...

  4. (2)oracle服务、建库

     一.oracle的服务 oracle 11g安装后服务一般是7到8个 1.Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务(非必须启动) 2.Oracle ...

  5. 背包【p1858】 多人背包(次优解 or 第k优解)

    题目描述--->p1858 多人背包 分析: 很明显,这题是背包问题的一种变形. 求解 次优解or第k优解. 表示刚开始有点懵,看题解也看不太懂. 又中途去补看了一下背包九讲 然后感觉有些理解, ...

  6. oracle free space

    --Size of All Table Space --1. Used Space SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024 ...

  7. [POI2015]Kinoman

    题目大意: 给你一个长度为n的数列f,f中共有m种不同的数,每种数都有一个权值w[i]. 你可以选定一个f中的区间,定义区间的权值为这一区间只出现一次的数的权值和. 问权值最大的区间的权值是多少? 思 ...

  8. javascript与java的不同之处

    javascript与java的不同之处   虽然很像,但不是一种语言. 二者的区别体现在: 首先,它们是两个公司开发的不同的两个产品,Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合 ...

  9. IE8兼容性问题

    由于业务的需要,我们竟然还要支持IE8,听着就让人很心酸呀.不过在进行适配的过程中,会发现还是有一定规律的,基本上帮相关问题改了,页面也就能正常显示了.下面就总结下对IE8适配过程中所进行的修改. 1 ...

  10. android RelativeLayout控件或view实现叠加效果

    在开发android程序的时候,我们经常会遇到让控件或是view实现叠加的效果,一般这种情况,很多人会使用Framelayout来处理,可是有一个问题Framelayout布局在布局上会有很多限制,不 ...