什么是协议

是指关于计算机通信的一整套规则,是为完成计算机网络通信而制订的规则、约定和标准。

http协议是众多通信协议中的一种,超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则 , 通过因特网传送万维网文档的数据

传送协议,简单的说就是访问网站用到的协议。Internet中所有的传输都是通过TCP/IP进行的,HTTP协议作为TCP/IP模型中应用层的协议也是如此,HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,此时就是常说的HTTPS,如下所示:HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP同样也是一个无状态的协议。HTTP默认的端口是80,HTTPS端口是443。

特点:

  1. 支持客户/服务器模式。
2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

工作流程

  比如说我们在浏览器地址栏输入www.cnblogs.com然后回车,就会显示博客园首页(前提是你要联网),在此过程,客户端到服务端发生了什么?浏览器和服务器是怎么通信的?服务器是如何处理的?处理后如何将信息反馈给浏览器然后展现给用户的?。。。这些流程主要可以归纳为四点:
1. 客户端与服务端需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2. 浏览器首先向服务器发送HTTP请求,请求格式如下:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3. 服务器向浏览器返回HTTP响应,响应包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

请求和相应的格式

  1. 请求的格式:
请求行(请求方法 路径 协议)
头信息(格式为 key:value) 主体信息(可选)(发送内容) 2. 响应的格式:
响应行(协议 状态码 状态文字)
响应头信息(格式为 key:value) 主体信息(可能没有)

在window下 通过cmd命令测试,首先进入telnet界面,win+r输入cmd回车输入telnet localhost 80 如果提示没有telnet这个命令,需要在控制面板->程序->打开或关闭Windows功能->勾选Telnet客户端->确定再重新打开,如图所示

请求方法

1. GET 请求获取Request-URI所标识的资源
2. POST 在Request-URI所标识的资源后附加新的数据,常用于提交表单。
3. HEAD 请求获取由Request-URI所标识的资源的响应消息报头
4. PUT 请求服务器存储一个资源,并用Request-URI作为其标识
5. DELETE 请求服务器删除Request-URI所标识的资源
6. TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
7. CONNECT 保留将来使用
8. OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

get和post是最常用的方法,简单来说,前者用于获取数据,后者用于提交数据。

响应状态码

1. 1xx(信息类):表示接收到请求并且继续处理
2. 2xx(响应成功):表示动作被成功接收、理解和接受
3. 3xx(重定向类):为了完成指定的动作,必须接受进一步处理
4. 4xx(客户端错误类):请求包含错误语法或不能正确执行
5. 5xx(服务端错误类):服务器不能正确执行一个正确的请求

常见状态码

状态码 说明

200 服务器成功返回网页

301/2 永久 / 临时重定向

304 Not Modified– 未修改

307 重定向中保持原有的请求数据

404 请求的网页不存在

500 服务器内部错误

503 服务器暂时不可用

应用

1. 断点续传
2. 多线程下载
3. http代理
4. 虚拟主机
5. 认证、采集数据、模拟发帖等等

http协议的更多相关文章

  1. HTTP协议系列(1)

    一.为什么学习Http协议       首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...

  2. 重温Http协议--请求报文和响应报文

    http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...

  3. 协议森林17 我和你的悄悄话 (SSL/TLS协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...

  4. 协议森林16 小美的桌号(DHCP协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...

  5. 简约之美Jodd-http--深入源码理解http协议

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...

  6. 【JavaScript】javascript中伪协议(javascript:)使用探讨

    javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...

  7. SNMP简单网络管理协议

    声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...

  8. 海鑫智圣:物联网漫谈之MQTT协议

    什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...

  9. linux-图形化远程管理协议

    远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...

  10. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

随机推荐

  1. Highchart插件下载与安装

    提供完整的 Highcharts 资源包,包含实例文件.所有的 js 压缩版及源码.导出服务器文件等. 1.资源包的使用: 2.开放的CDN:http://img.hcharts.cn/ 二.High ...

  2. 关于用sql语句实现一串数字位数不足在左侧补0的技巧

    在日常使用sql做查询插入操作时,我们通常会用到用sql查询一串编号,这串编号由数字组成.为了统一美观,我们记录编号时,统一指定位数,不足的位数我们在其左侧补0.如编号66,我们指定位数为5,则保存数 ...

  3. jqgrid+bootstrap样式实践

    jqgrid+bootstrap样式实践,报错数据加载,选中,删除等功能 需要引入的样式 bootstrap.min.css ui.jqgrid.css 需要引入的JS jquery.min.js b ...

  4. sql server中substring的用法

    SQL 中的 substring 函数是用来截取一个栏位资料中的其中一部分. 例如,我们需要将字符串'abdcsef'中的'abd'给提取出来,则可用substring 来实现: ,) 结果: 'ab ...

  5. 15天玩转redis —— 第十篇 对快照模式的深入分析

    我们知道redis是带有持久化这个能力了,那到底持久化成到哪里,持久化成啥样呢???这篇我们一起来寻求答案. 一:快照模式 或许在用Redis之初的时候,就听说过redis有两种持久化模式,第一种是S ...

  6. 在双系统(Windows与Ubuntu)下删除Ubuntu启动项

    问题概述:因为在自己学习Linux的时候,按照网上的教程错误的删除了Ubuntu的一个内核驱动,导致Ubuntu不能启动.我想到的办法是重新安装系统,重装系统的第一步便是将Ubuntu从电脑中卸载.该 ...

  7. centos6 系统安装 system-config-kickstart 工具

    kickstart 能实现 linux 系统的自动化安装,需要设置 ks.cfg 文件,而这个 ks.cfg 文件的生成最好使用 system-config-kickstart 工具生成,比较准确,也 ...

  8. Arduino舵机控制

    普通舵机有3根线:GND(黑).VCC(红).Signal(黄) 红色的是电源正极,黑色的是电源负极,白色的是信号线.有些舵机线是红棕橘三色,分别对应红黑白. #include <Servo.h ...

  9. CFD冲蚀模拟的一些理论

    [TOC] 在CFD中计算颗粒对固体壁面的冲蚀往往采用冲蚀模型(Erosion Model). 1 冲蚀速率(Erosion Rate) 冲蚀速率定义为壁面材料在单位时间单位面积上损失的质量(单位:\ ...

  10. JVM原理和优化

    JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界 ...