什么是协议

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

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. Android Studio使用时源码到处报红色警告,运行时又没错

    转载地址:http://www.07net01.com/program/2016/04/1452749.html [摘要:正在AS上开辟时,碰到那个题目,翻开全部的Java源文件,右边一起标赤色,找没 ...

  2. 转:IE兼容模式下 SCRIPT1028: 缺少标识符、字符串或数字

    IE兼容模式下 SCRIPT1028: 缺少标识符.字符串或数字例如下面一段代码 var a = {    x: 1,    y: 2,};alert(a.x);如果在IE的兼容性视图(IE7文档模式 ...

  3. 用友NC开发的ListView切换成FormEdit

    在点击 “修改” 按钮或者双击ListView中某一项Item,将进入FormEdit即卡片界面,但是 FormEdit有两种状态,一种是 可编辑的状态(点修改按钮进入的状态),一种是非可编辑状态(双 ...

  4. apache下htaccess不起作用,linux,windows详解

    可能出现下面这三种的错误可能性: 第一种:启用 rewrite 和 .htaccess 设置 rewrite设置:找到apache的配置文件httpd.conf文件,找到:#LoadModule re ...

  5. 萌新笔记——linux下(ubuntu)反删除(误删恢复)与回收站制作

    刚刚有个小伙伴不小心删了他写了好几的天代码,为他心疼之余帮他找回了文件. 想到我之前也常常误删一些文件,就干脆分享一下我的反删除方法,并说说我做的回收站(好low的,求大神指点) 首先是反删除软件ex ...

  6. 在WINDOWS下初步试用OMNET++ 4

    闲扯: 最近实习公司要做ZIGBEE,我是对这个兴趣不大,但工作还是要做的,目前帮着找找合适的仿真软件,什么NS-2啊,OPNET啊. 正文: 这个软件软件直接去官网下载就好了,免费开源. 安装也比较 ...

  7. 2、实现不同子网之间的信息交流(互相可以PING通)

    一.环境: 二个不同的虚拟子网 VMnet1: 192.168.155.0/24 VMnet8: 192.168.170.0/24 编辑 --> 虚拟网络编辑器 (查看自己的子网,相应修改就行) ...

  8. Leetcode 57: Insert Interval 让代码更好读, 更容易测试.

    阅读了几个博客, 决定写一个简易版本; 忙着做更多题, 没有时间多考虑优化代码, 所以, 就写一个试试运气. http://blog.csdn.net/kenden23/article/details ...

  9. Spring 代理模式及AOP基本术语

    一.代理模式: 静态代理.动态代理 动态代理和静态代理区别?? 解析:静态代理需要手工编写代理类,代理类引用被代理对象. 动态代理是在内存中构建的,不需要手动编写代理类 代理的目的:是为了在原有的方法 ...

  10. CodeAtlas For Sublime Text

    CodeAtlas is a plugin of SublimeText, which allows one to explore the call graph conveniently. The p ...