HTTP协议简介1
概念
HTTP协议:超文本传输协议,用于服务端传输超文本到客户端的传输协议。是一个应用层协议。
工作流程
一次http请求就是一个事务。过程可分为四步:
1.客户端与服务器建立链接。页面上单击某个链接,http开始建立链接。
2.建立链接后,客户端向服务器发送请求,请求的内容有:统一资源定位符(url),协议的名称,MIME类型(请求超文本的类型,比如图片,文字,视频等)。
3.服务器收到请求后给出响应。并返回响应信息,带上状态码。
4.客户端浏览器收到响应信息后显示出来,此时用户可以看到浏览器上展示的内容。此时http请求完成,断开连接。
如果想再次获得服务器响应信息,必须客户端重新发送请求。而且客户端每次发送的请求都是独立的,相互间没有任何关系,所以HTTP请求也是无状态的。
请求过程中如果出现错误,服务器则会返回相应的错误状态码信息给客户端,比较常见的是404,表示文件没有请求到。
总结就是:一个http请求的过程就是客户端发起请求,服务器响应请求并快速给出响应内容。
URL
URL:统一资源定位符,指网页地址,通过这个资源地址可以访问具体某个页面。
格式:
协议地址:http://或https://(加密的协议)
主机地址:10.240.110.23:80主机IP地址(加端口号),一把都是用域名来表示,通过DNS解析域名到指定的IP地址,比如www.baidu.com
主机资源的具体地址:/app 斜线后面的地址,指具体的目录或文件名
例如,一个完整的URL为: htttp://www.baidu.com/app 前两部分是必须有的
TCP协议-三次握手
HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:
建立HTTP链接时,需建立TCP/IP链接,TCP链接必须经过三次握手的过程。
第一次握手:SYN(synchronous)是TIPC/IP建立链接时的握手信号,当客户端与服务器建立链接时,客户端发送SYN信息包给服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到SYN包之后,进行确认,并且自己也发送一个SYN包,也就是回传SYN+ACK包给客户端,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器发过来的SYN+ACK包,向服务器再次发送确认包ACK,此包发送完毕后,客户端和服务器端建立链接状态,并且开始传输数据。
HTTP的请求头信息
客户端浏览器发送请求给服务器的时候,浏览器在请求头里附加的一些信息。规范如下:
General一栏包括:
Remote Addresss:要请求的远程主机地址
Request URL:要请求的域名
Request Method:http请求的方式,HTTP1.1目前支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。比较常见的是POST和GET方式。
GET:请求获取相应URL的资源,参数会添加在URL的后面
POST:在请求的资源后附加新的数据,把新的数据封装起来,一起传给服务器端
Status Code:请求的状态码,200表示请求成功。
Request Headers一栏包括:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8,浏览器支持的MIME类型,也就是浏览器支持的媒体类型或内容类型。大类/小类,text类型表示文本类型;text/html表示html文档;application/xhtml+xml表现xhtml文档,application/xml表示xml文档。image表示图片信息。另外还包括其他多媒体信息。
Accept-Encoding:gzip, deflate, sdch,表示浏览器有能力解码的编码类型。这里浏览器支持的压缩编码是gzip,deflate,sdch;
Accept-Language:zh-CN,zh;q=0.8,浏览器所支持的语言类型。zh-CN表示简体中文,q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。
Accept-Charset:GB2312,utf-8,告诉服务器,浏览器支持的编码类型
Connection:keep-alive表示客户端与服务器的链接类型。keep-alive表示持久连接。
Cookie:指浏览器所设置的cookie信息。从这里浏览器可以附带一些数据给服务器。
Host:表示请求的服务网址
UserAgent:用户代理,一个特殊的字符串,使得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
If-Modified-Since:浏览器告诉服务器,数据需要缓存的时间
Referer:浏览器告诉服务器,是从哪个页面过来的(放盗链)
HTTP响应头信息
Response Headers指客户端发送请求头信息后,服务器做出应答,并返回过来的描述信息,也就是响应头信息。下面介绍比较常见的:
Server:指服务器的类型
Content-Encoding:gzip,服务器返回的数据所采用的压缩格式
Content-Type:text/html;charset=utf-8;指服务器返回数据的编码格式
Connection: keep-alive,表示服务器与客户端的链接类型。keep-alive表示持久链接
Cache-Control:public,private,no-cache,no- store,no-transform,must-revalidate,proxy-revalidate,max-age指服务器返回的数据所遵循的缓存机制。public表示响应数据可被任何缓存区缓存;private指部分响应信息不能被共享缓存处理;no-cache表示请求或响应不能被缓存;no-store指响应数据不能被缓存。
Date:指请求所发送的时间。时间表示的是世界标准时间。
Expires:返回数据的过期时间
Last-Modified:与请求头里的If-Modified-Since结合使用。客户端通过设置请求头里的If-Modified-Since提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可setDateHeader方法来设置。
HTTP请求除了返回响应头信息之外,还返回响应码来表示返回状态,常见的状态码如下:
200 OK:表示客户端请求成功,服务端成功的返回响应信息
400 Bad Request:客户端的请求有语法错误,服务器不能正常解析
401 Unauthorized:请求未经授权,这个状态码需要和WWW-Authenticate抱头域一起使用
403 Forbidden:服务器已经收到请求,但是拒绝响应
404 Not Found:请求资源不存在,比如错误的请求地址
500 Internal Server Error:服务器发生错误
503 Server Unavailable: 服务器当前状态不能处理客户端的请求,可能过段时间会恢复正常
HTTP协议的特点
1.支持客户端/服务器模式。
2.简单快速:只需提供请求地址和请求方式。请求方式包括POST,GET等方式。
3.灵活:请求数据多样性。比如html,xhtml,text,以及其他的多媒体资源。
4.无连接:当客户端发起请求后,服务器给出回应,返回响应数据,即表示连接已经结束。
5.无状态:http的每次请求都是独立的,互相不影响。如果想要再获取请求数据,必须客户端再次发送请求。
OSI七层协议
OSI把网络的通信划分成七层。http是属于应用层的协议。
现在已使用五层的TCP/IP协议
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。模型如下:
参考地址:http://www.imooc.com/learn/304
http://www.360doc.com/content/10/0930/17/3668821_57590979.shtml
http://jingyan.baidu.com/article/375c8e19770f0e25f2a22900.html
HTTP协议简介1的更多相关文章
- Fiddler--一、HTTP协议简介
在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- JavaWeb:Web与HTTP协议简介
JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...
- CC2540开发板学习笔记(九)—— BLE协议简介
一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...
- HTTP 协议简介
HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...
- OAUTH协议简介
OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...
- GRE 协议简介
1. 协议简介 gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络 ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
- Tsung MQTT协议简介及MQTT xml文档配置介绍
MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...
- python 全栈开发,Day66(web应用,http协议简介,web框架)
一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
随机推荐
- Retrofit源码设计模式解析(下)
本文将接着<Retrofit源码设计模式解析(上)>,继续分享以下设计模式在Retrofit中的应用: 适配器模式 策略模式 观察者模式 单例模式 原型模式 享元模式 一.适配器模式 在上 ...
- iOS-UICollectionView的简单使用(原创)
前言 UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView(请一定注意这是UICollectionView的最最简单的形式).如果你用过iBook ...
- UISearchBar改变搜索框的高度
系统的searchBar UISearchBar的中子控件及其布局 UIView(直接子控件) frame 等于 searchBar的bounds,view的子控件及其布局 UISearchBarBa ...
- 阿里云ECS/Ubuntu Server安装Gnome图形桌面
一.配置好Source源列表 可以参考:http://blog.csdn.net/xukai871105/article/details/24887245 另附一个比较好方便的Source源更新方法: ...
- mysql高可用之DRBD + HEARTBEAT + MYSQL
1. 架构 Mysql: master<=slave 10.24.6.4:3306<=10.24.6.6:3306 VIP: 10.24.6.20 必须使得VIP和mysql处于同一网段, ...
- PS网页设计教程XXVII——设计一个大胆和充满活力的作品集
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
- 问题解决——VS2010 将生成的文件复制到指定位置
我是从VC6直接过渡到VS2010的,VS2008没怎么用过.用VS2010的时候,每次生成dll后,手工把dll.lib..h文件复制到指定文件夹太麻烦了,所以着手写了这个. =========== ...
- 应用Spring MVC发布restful服务是怎样的一种体验
摘要:“约定优于配置”这是一个相当棒的经验,SOAP服务性能差.基于配置.紧耦合,restful服务性能好.基于约定.松耦合,现在我就把使用Spring MVC发布restful服务的 ...
- PPT制作教程:如何制作ppt
PowerPoint(PPT)是专门用于制作演示文稿(俗称幻灯片).广泛运用于各种会议.产品演示.学校教学等.学会如何制作ppt,成为提升工作效 率的好帮手.PPT包含有很多的功能,我们可以根据个人喜 ...
- html列表
有序列表 <ol type="A", start="C"> <!--ordered list--> <li>第一项</ ...