概念

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是属于应用层的协议。

应用层 (Application): 网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS
表示层(Presentation Layer):数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
会话层(Session Layer):建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
传输层 (Transport):定义传输数据的协议端口号,以及流控和差错效验。 协议有:TCP UDP
网络层 (Network):进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层 (Link):建立逻辑连接、进行硬件地址寻址、差错效验等功能。(由底层网络定义协议)
物理层(Physical Layer):建立、维护、断开物理连接。(由底层网络定义协议)

现在已使用五层的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的更多相关文章

  1. Fiddler--一、HTTP协议简介

    在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...

  2. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  3. JavaWeb:Web与HTTP协议简介

    JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...

  4. CC2540开发板学习笔记(九)—— BLE协议简介

    一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...

  5. HTTP 协议简介

    HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议  一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...

  6. OAUTH协议简介

    OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...

  7. GRE 协议简介

    1. 协议简介    gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络 ...

  8. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  9. Tsung MQTT协议简介及MQTT xml文档配置介绍

    MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...

  10. python 全栈开发,Day66(web应用,http协议简介,web框架)

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

随机推荐

  1. SqlServer int型转varchar型 出现*号

    今天调一个bug,错误提示执行语句 * 附近有语法错误,看了存储过程半天没啥反应,我就更本没有* .打印了一下语句发现 where Mor_Id=* 仔细一看set @sqlupdate+=' whe ...

  2. Effective Java 08 Obey the general contract when overriding equals

    When it's the case that each instance of the class is equal to only itself. 1. Each instance of the ...

  3. 在IE8等不支持placeholder属性的浏览器中模拟placeholder效果

    placeholder是一个很有用的属性,可以提示用户在input框中输入正确的内容,但是IE8以及IE8一下的浏览器不支持该属性,我们可以使用js来模拟相似的效果.下面直接上代码: <!doc ...

  4. oracle错误(ORA-01691),单个数据文件大小限制问题

    1.问题:数据库从其他库同步一张大表时,出现错误 ERROR at line : ORA-: illegal parameter value in OCI lob function ORA-: pre ...

  5. 【原】基于 HAproxy 1.6.3 Keeplived 在 Centos 7 中实现mysql mariadb galera cluster 集群分发读写 —— 上篇

    前言 有一段时间没有写blogs,乘着周末开始整理下haproxy + keeplived 实现 mysql mariadb galera cluster 集群访问环境的搭建工作. 本文集中讲hapr ...

  6. html跳转倒计时

    <html> <head> <title>出错啦~~~</title> <link href="css/login1.css" ...

  7. java帮助文档下载

    JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...

  8. C# 遍历枚举类

    framework 4.0 环境下 方法 定义枚举类 判断枚举类中是否存在,若存在则输出 例子: Defined.QrCode.QrCodeType type;//枚举类 if (!Enum.TryP ...

  9. 迅为iTOP-4412嵌入式开发板实现中断驱动例程

    本文转自迅为:www.topeetboard.com 大家好,今天我们来学习一下 linux 中断处理驱动的编写,本节我们实现的功能是通过开发板上的按键来控制 led 发光二极管,在之前的章节我们学习 ...

  10. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...