1、什么是http协议?

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

通俗来讲,协议就是一种规则,比如说普通话,全中国包含各种方言(东北话、粤语、客家话等等),制定一种协议(普通话),那么全国人民之间的交流就没有问题了。

协议也是这个意思,协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。

2、五层网络架构

3、URL概念

在百度百科上看下url的定义:

URL(Uniform Resource Locator),统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。

基本格式如下:

protocol :// hostname[:port] / path / [?query]#fragment

1、protocol(协议):

最常用的是HTTP协议,http 通过 HTTP 访问该资源。 格式 HTTP://

file 资源是本地计算机上的文件。格式file:///,注意后边应是三个斜杠。

ftp 通过 FTP访问资源。格式 FTP://

2、hostname(主机名),是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。

3、port(端口号),整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如

http的默认端口为80。https默认端口号为443。

4、path(路径),由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

5、query(查询),发送给http服务器的数据

6、fragment(信息片断)

举个栗子:

https://www.v2ex.com/api/nodes/show.json?name=python

protocol:                https
host: www.v2ex.com
path: /api/nodes/show.json
? 问号是分割符号
Query : name=python, 多个参数用&隔开

4、HTTP协议请求方法

HTTP1.0定义了三种请求方法:GET,POST和HEAD。

HTTP1.1新增了五种请求方法:OPTION,PUT,DELETE,TRACE和CONNET。

  • GET: 是最常用的方法,通常用于请求服务器发送某个资源。
  • POST: 向指定资源提交数据进行处理请求(比如提交表单或者上传文件),比如登录一般都是POST请求。
  • HEAD: 与GET请求类似,只是返回的响应中没有具体内容,用于获取报头,主要测试超链接的有效性。
  • PUT: 与GET相反,向服务器写入资源,像修改内容用PUT方法。
  • DELETE: 请求服务器删除指定的页面。
  • OPTIONS 允许客户端查看服务器的性能。
  • TRACE 回显服务器收到的请求,主要用于测试或诊断。
  • CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

日常中比较常用的方法:GET、POST、PUT和DELETE

http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态。

5、HTTP消息结构

(1)请求信息结构

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

  • 请求行(request line)
  • 请求头部(header)
  • 空行
  • 请求数据(body)

眼见为实,抓包看一下:

(2)请求报头

请求报头概念:请求报头允许客户端向服务器传递请求的附加信息以及客户端自身的信息。

  • Accept:Accept请求头用于指定客户端接受哪些类型的资源

    Text/html 表示客户端接受html文本

    Image/gif 表示客户端接受gif图像格式的资源
  • Accept-Encoding:指定客户端接受的内容编码,没有设置的话表示都可以接受。
  • Accept-Charset:请求报头域用于指定客户端接受的字符集,没有设置的话表示都可以接受。
  • Aceept-Language:指定一种语言。
  • HOST:必须的报头,指定请求资源的internet主机和端口号。
  • User-Agent:请求的客户端类型
  • Authorization:用于证明客户端有权查看某个资源
  • Entity:Contet-Type:发送post时候,body的数据类型声明。

(3)响应信息结构

我们再看Response消息的结构, 和Request消息的结构基本一样。 同样也分为三部分,第一部分叫Response line(响应行),

第二部分叫Response header(响应头),第三部分是body,header和body之间也有个空行。

6、状态码

Response 消息中的第一行叫做响应行,也叫状态行,由HTTP协议版本号、状态码、状态消息三部分组成。

示例:HTTP/1.1 200 OK

  • 1xx:指示信息 - 表示请求已接收,继续处理
  • 2xx:成功 - 表示请求已成功接收、理解和接受
  • 3xx:重定向 - 要完成请求必须进行更进一步的处理
  • 4xx:客户端错误 - 请求语法有误或者请求无法实现
  • 5xx:服务器端错误 - 服务器无法实现合法请求

7、GET和POST的区别

  • Get方式提交的数据最多只能是1024字节,因为客户端有限制,POST方式没有此限制
  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连;POST请求参数放在body中。
  • GET请求相对安全一些。
  • GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

8、body常见的数据类型

HTTP协议-简介的更多相关文章

  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. Spring_通过注解配置 Bean(1)

    beans-annotation.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns ...

  2. Spring_通过 FactoryBean 配置 Bean

    beans-factorybean.xml <?xml version="1.0" encoding="UTF-8"?><beans xmln ...

  3. ScrollView嵌套使用ListView冲突的解决与分析

    因为ScrollView与ListView都是具有滚动条的控件,所以嵌套在一起使用的时候可能会出现事件的冲突,比如我就遇见了ListView中只显示一条数据的问题.解决的办法,就是自定义了一个List ...

  4. JavaWeb -- Struts2 模型驱动

    1. 模型驱动 示例: 注册表单reg.jsp <%@ page language="java" contentType="text/html; charset=u ...

  5. ubuntu 14.04中安装 ruby on rails 环境(填坑版) 呕血推荐

    环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 开发相关: ruby 2.2.0 rails 4.2.0 sublime text 3 本文说明:所有的命令均在$ 之后,若 ...

  6. MyEclipse安装git插件

    安装egit插件的步骤(安装egit不成功的原因主要是下载的egit版本不适合当前使用的eclipse版本).先检查自己MyEclipse适用egit的版本. 查看自己MyEclipse版本,如下图: ...

  7. LightOJ - 1248 期望

    题意:有一个n面筛子,每次扔一下,每面概率相同,要求扔出n面的期望次数 题解:和第三篇论文里的例题一样,算从第i个到第i+1个的概率是(n-i)/n,n面中找n-i个没有扔到过的,期望是n/(n-i) ...

  8. lightoj1370欧拉函数/素数筛

    这题有两种解法,1是根据欧拉函数性质:素数的欧拉函数值=素数-1(可根据欧拉定义看出)欧拉函数定义:小于x且与x互质的数的个数 #include<map> #include<set& ...

  9. CSS颜色表示法、颜色表(调色板)

    1.CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义.对光源进行设置的最低值可以是 0(十六进制 00).最高值是 255(十六进制 FF). 2.十六进制值使用 ...

  10. mongodb停止遇到shutdownServer failed: unauthorized: this command must run from localhost when running db without auth解决方法

    停止mongodb use admin db.shutdownServer(); mongos> db.shutdownServer(); assert failed : unexpected ...