http协议(超文本传输协议)是一套计算机通过网络进行通信的规则,使用http协议客户机能够从http服务器请求信息和服务。http协议采用请求/响应模型,在这一模型中总是客户端向服务器发送请求,服务器根据请求信息,请求实体的权限请求。客户端请求的方式主要有GET,POST,HEAD等。
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
一次完整的http通信过程中,web浏览器与web服务器之间将完成以下七个步骤:
1。 建立TCP连接。在http连接之前web浏览器首先要通过网络与服务器要建立连接,该连接是通过tcp协议来完成的。http协议是比TCP更高层次的协议,根据规则只有低层次的协议建立好之后才能建立更高层次的连接,所以首先建立tcp连接。
2。一旦建立了tcp连接,web浏览器就可以向http服务器发送请求命令。
例如:GET/sample/hello.jsp HTTP/1.1
GET 表示请求的方式为GET,/sample/hello.jsp 表示请求的资源的uri,HTTP/1.1表示http协议的版本。
3。web浏览器发送请求命令后还要以头信息的形式向向web服务器发送一些别的信息,之后浏览器发送一空白行来通知服务器头信息以发送完毕。
头信息主要包括:
Date头域
:Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,
Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知
道用户所在的时区。
Host头域
:Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。
HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回
Referer头域
:Referer 头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、
优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地
址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。
pragma头域
:Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache
Range头域
:Range头域可以请求实体的一个或者多个子范围。例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999
但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206
(PartialContent)返回而不是以200 (OK)。
User-agent头域
:User-Agent头域的内容包含发出请求的用户信息。
Cache-Control头域
:Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消
息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令
包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,响应消
息中的指令包括public、private、no-cache、no- store、no-transform、must-
revalidate、proxy-revalidate、max-age。各个消息中的指令含义如 下:
Public指示响应可被任何缓存区缓存。
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消
息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出
超时期指定值之内的响应消息。
…………等等。
消息头以空行表示结束,消息头后面可接消息体(可选的)如:name=xiaoming&sex=1
4。web 服务器应答。客户机发送请求后,服务器将向客户机回送应答。
例如:HTTP/1.1 200 OK
HTTP/1.1 表示http协议的版本,200表示响应状态码,ok为响应状态码的文字描述信息。
响应状态码的第一个数字可 能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
5。web服务器发送应答头信息。
Location响应头
Location响应头用于重定向接收者到一个新URI地址。
Server响应头
Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排
序。
实体
请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实
体头包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-
Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、
extension-header。extension-header允许客户端定义新的实体头,但是这些域可能无法未接受方识别。实体可
以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-
Length或Content-Range定义。
Content-Type实体头
Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发
送的请求介质类型 Content-Range实体头
Content-Range
实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回
一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth
例如,传送头500个字节次字段的形式:Content-Range:bytes0- 499/1234如果一个http消息包含此节(例如,
对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围, Content-Length表示实际传
送的字节数。
6。web服务器向客户机发送数据。
7。web服务器关闭tcp连接。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
分享到:
相关推荐
HTTP协议学习笔记 包括协议的RFC中英文版本
Tomcat服务器和Http协议学习笔记
HTTP学习笔记,主要有协议的基础和一些自己觉得应该要注意的地方
自己总结的学习笔记,内容包括HTTP的请求 响应 和各种报头的详细解释
HTTP协议学习笔记 HTTP协议是互联网的基础协议,也是做为一名合格开发者的必备知识,本系列主要也是个人在工作和学习中的记录总结,如果此处能为您得到帮助,点击右上角 :star:给予支持!祝你好运 :red_heart: 作者...
此篇Android学习笔记的源码主要内容: 1.使用WebView控件加载网页 2.使用ImageView控件加载网络图片
关于http网络协议的相关笔记,希望对有需要的同学与帮助
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。 31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照...
Python学习笔记-基于socket基础的http服务端程序
基于HTTP协议的WEB服务器,简易版的Tomcat.服务端读取配置文件完成对服务 器的初始化,并通过Socket网络编程架构服务器端.浏览器作为客户端,向服务器发送请求.服务端接受请求并将其封装为一个HTTPRequest对象,并对其...
IPFS学习笔记 版本: 本文档持续更新...... 即将补充Bittorrent和Merkle DAG详细内容 参考: 戴嘉乐:详解IPFS的本质 IPFS白皮书-Juan Benet P2P中DHT网络介绍 IPFS: BitSwap协议 IPFS+区块链系列 默克尔树 IPFS——它...
该资源为个人学习笔记,希望对大家有用。主要是关于Web开发中的服务器Tomcat的问题和HTTP协议。
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
这个月看了一本《Web安全设计之道》,书中的内容多是从微软官方文档翻译而来,这本书的含金量不高,不过也不能说没有收获,本文简单记录一下我学习Web安全方面的笔记。本文不涉及IIS、Windows和SqlServer的安全管理...
REST架构风格是全新的针对Web应用的开发风格,是当今世界最成功的互联网超媒体分布式系统架构,它使得人们真正理解了Http协议本来面貌。随着 REST架构成为主流技术,一种全新的互联网网络应用开发的思维方式开始流行...
自学笔记:内容大纲 PHP的基本语法 PHP和html登陆小案例 http传输协议
本文档适合作为新手入门requests爬虫教程,可以带你简单了解python基础,Http协议以及异常处理,了解Cookies以及带你掌握正则表达式的使用,最后教你用BeautifulSoup如何去定位元素和爬取页面
” “接口协议使用HTTP协议,落地方为发起方提供访问的URL,发起方使用HTTP POST方法发送请求报文并得到应答报文,发起方作为落地方的HTTP客户端,落地方作为发起方的HTTP服务器。因此,各个参与方需要同时实现HTTP...
8.与服务器通讯(创建web服务器,使用Http协议与服务器通讯,使用WebSocket协议与服务器通讯) 9.构建和部署(构建和部署,多环境支撑) 前置知识 html,js,css 不需要AngularJs的知识 需要了解ES6的语法 需要了解...