http协议
什么是协议
是指关于计算机通信的一整套规则,是为完成计算机网络通信而制订的规则、约定和标准。
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协议的更多相关文章
- HTTP协议系列(1)
一.为什么学习Http协议 首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- RTP与RTCP协议介绍(转载)
RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...
随机推荐
- 新手!mass 设置问题
mass就是你那个物体的质量啊质量越大,惯性也越大重力也越大.假如你的刚体的mass为1,那么你只要给这个物体9.81N向上的力,你就可以抵消重力,让这个物体悬浮着:但假如这个物体的mass为10,你 ...
- webgl画个点
function main(){ var canvas = document.getElementById("webgl"); var gl = getWebGLContext(c ...
- Redis的使用场景 by 杨卫华
转载自新浪微博架构师杨卫华的博客 http://timyang.net/tag/redis/,省略了部分内容 按:杨卫华在2010年就已经测试了Redis的性能,并给出了初步的结论:“Redis性能惊 ...
- [LeetCode] Binary Watch 二进制表
A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...
- JavaScript检测对象的类属性
function classof(o) { if(o === null) { return "Null"; } if(o === undefined) { return " ...
- 【Quartz】将定时任务持久化到数据库
之前的文章所做的demo是将定时任务的信息保存在内存中的,见以下配置 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore 如果,我们需要在 ...
- Jenkins创建Maven项目及SSH部署
前面我们已经安装了Jenkins的环境,以及配置好了jdk和maven.下面我们来看如何通过Jenkins将svn的项目进行打包和部署. 创建MAVEN项目 1.点击新建,输入项目名,选择" ...
- OpenStack从入门到放弃
OpenStack从入门到放弃 目录: 为何选择云计算/云计算之前遇到的问题 什么是云计算 云服务模式 云应用形式 传统应用与云感知应用 openstack及其相关组件介绍 flat/vlan/gre ...
- 使用SharpZipLib实现文件压缩、解压
接口 public interface IUnZip { /// <summary> /// 功能:解压zip格式的文件. /// </summary> /// <par ...
- Python后台分页删除编辑查询
「POST 数据」通常指 POST 时 body 中的数据.而 QueryString (URL)中也有可以带参数(通常是 GET 时的参数).如果 POST 时同时存在 QueryString 和 ...