老实说关于http协议这个概念,见到最多的还是各类招聘信息.在平时的工作中,除了了解一些请求,响应,请求头这些概念外,对于http协议也没有太多的关心.因为貌似对平时的工作没有什么影响,所以在写这篇关于http协议的博客的时候,我就问自己.

    了解Http协议到底是为了什么?

所谓学以致用,学习知识不是为了秀记忆力或者闲着没事,而是为了使用.那么Http协议的了解对平时工作到底有什么用?坦白说我平时工作的经历是没有发现太大的作用,但是清楚一些基本内容还是能让你快速理解涉及到此的各方面知识,比如Ajax的Status状态码的含义等.

在说Http协议之前,TCP/IP协议也是我们经常能看到或者听到的,我们先来理清一个概念,这两者之间有什么关系?

http协议只能算是tip/ip协议中应用层的一个部分.

tcp/ip协议是当前互联网最基本的协议,它定义了电子设备如何连入互联网,以及数据如何在它们之间传输的标准.整个的tcp/ip协议十分庞大,分为4层结构,每一层都呼叫它的下一层所提供的协议去完成自己的需求.http协议就是最上层应用层的一部分.

   什么是Http协议?

通信网络上的两台计算机进行通信所必须遵守的规则或规定就是协议了,所谓Http协议就是大家规定通信的时候允许将HTML从服务器发送到客户端浏览器.当我们在浏览器输入url,浏览器给服务器发送一个Request,服务器接收并处理之后生成相应的Response发送给浏览器,浏览器解析其中的HTML生成我们看到的页面.这一套流程就是http协议在起作用.

    Http中的URL

url在整个http协议中无疑占有最重要的地位,它描述了网络上的一个资源.通过url我们可以获得很多信息,看一个例子:

http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff

指定底层使用协议(Schema): http
服务器地址或域名(host): www.mywebsite.com
访问资源路径(path): /sj/test
服务器端口号(port):默认80,可以不写省略
发送的数据(Query String): name=sviergn&x=true
锚(Anchor): stuff

  

    Http之Request请求

http协议中的内容是繁杂的,这里就是做简单了解,让大家知道是怎么回事.Request的http发的请求,其结构存储了浏览器的一系列要求信息.Request消息包含3个部分,请求行,http header,body.这里我不把他们所有的属性都拿出来一个个晒,没什么意义,从谷歌浏览器的debug模式下,查看一些百度首页的一个请求,把它的Request信息贴出来.

这里我们看到的Request信息结构是经过浏览器调试工具优化显示的,相比原生的结构看起来更加明显.这里面的所包含的就是一个Request的全部信息和结构.比如请求的方式是Get,请求返回的状态码是200,请求的一个css类型资源等等.

    Get和Post请求的区别

通常来讲get请求用于查询信息,post请求用于更新信息.

get请求的数据会显示的连在url地址后,从?开始,用&分隔参数.post则是将数据装入请求的body中.所以就请求数据大小而言,get有限制,post则无限制.同样的,因为两种不同的提交方式,在安全性上,get会比post差.但是实际应用最多的恰恰是get请求,因为大多数我们是为了获取信息.

状态码的含义

在Response消息中第一行就叫做状态行,由Http协议,状态码,状态消息三部分组成.状态的作用就是告诉客户端,服务器是否产生了预期的Response.

这其中最著名的就是404状态码了,在打开一些网页的时候有时会出现.

HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

1XX  提示信息 - 表示请求已被成功接收,继续处理

  2XX  成功 - 表示请求已被成功接收,理解,接受

  3XX  重定向 - 要完成请求必须进行更进一步的处理

  4XX  客户端错误 -  请求有语法错误或请求无法实现

  5XX  服务器端错误 -   服务器未能实现合法的请求

    Http协议是无状态的和Connection:keep-alive的区别

阿斯顿之所以说Http是无状态的,通过这个协议的网络连接,同一个浏览器的url访问,服务器不会知道它们是来自同一台机器.从Http1.1起,默认都开启了keep-alive,让浏览器和服务器之间保持了tcp通道.在下次要进行访问时,还会在这个通道进行.当然,keep-alive是有时间限制的.

关于http协议还有很多点,这里仅仅列出比较基础和常用的概念,仅供参考.

浅谈Http协议是怎么回事?的更多相关文章

  1. 【转】 浅谈Radius协议

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  2. 转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  3. 浅谈HTTP协议(下)

    下面来讲响应消息.响应消息也分为响应起始行.响应头部.CRLF.响应主体. 响应起始行包括协议版本.响应状态码.原因短句.这里的重点就是响应状态码,它一共分为5类,状态码准确的说是一个三位数. 1xx ...

  4. 浅谈ARP协议以及应用

    0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...

  5. 浅谈HTTP协议(上)

    今天讨论一下HTTP协议.一个做前端的,如果连HTTP协议都不了解,那实在是太不合格了. 首先,什么是HTTP?Hyper Text Transfer Protocol(超文本传输协议),用在浏览器和 ...

  6. 从日常开发说起,浅谈HTTP协议是做什么的。

    引言 HTTP协议作为Web开发的基础一直被大多数人所熟知,不过相信有很多人只知其一不知其二.比如咱们经常用到的session会话机制是如何实现的,可能很多人都说不出来吧.其实session会话就是H ...

  7. 通过Java代码浅谈HTTP协议

    最近刚看了http协议,想写点东西加深一下理解,如果哪儿写错了,请指正. 1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(W ...

  8. 浅谈HTTP协议

    1 HTTP概念 把握三个点: 1 HTTP协议(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据,默认端口80 2 HTTP是无连接(限制每次连接只处理一个请求),无状态的(对于事 ...

  9. 浅谈HTTP协议与TCP协议

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送议. 主要特点 ...

随机推荐

  1. MVC 5使用ViewData(模型)显示数据

    看过此篇<MVC 5使用ViewData(对象)显示数据>http://www.cnblogs.com/insus/p/3377178.html 都明白在控制器使用ViewData(obj ...

  2. 改变PowerDesigner数据模型字体大小

    一 改变左侧菜单字体大小Tools----->General------->Fonts-------->根据item选项的不同改变字体的大小 二 改变数据模型Table的字体大小To ...

  3. 我的AI之路 —— OCR文字识别快速体验版

    OCR的全称是Optical Character Recoginition,光学字符识别技术.目前应用于各个领域方向,甚至这些应用就在我们的身边,比如身份证的识别.交通路牌的识别.车牌的自动识别等等. ...

  4. Python系列之——利用Python实现微博监控

    0x00 前言: 前几个星期在写一个微博监控系统 可谓是一波三折啊 获取到微博后因为一些字符编码问题 导致心态爆炸开发中断 但是就在昨天发现了另外一个微博的接口 一个手机微博的接口https://m. ...

  5. zookeeper的安装与配置(单机和集群)

    单机模式: 1.首先去官网下载zookeeper的包 zookeeper-3.4.10.tar.gz 2.用FTP上传到服务器或者Linux虚拟机的/usr/local目录下 3.解压文件tar -z ...

  6. SQL Server清理大日志文件方法 不分离数据库 执行SQL语句即可

    SQL 2008清空日志的SQL语句如下: USE[master] GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT GO AL ...

  7. 整理版jq 复习贴子

    1绝对定位(abs)与相对定位(relative) 区别是相对定位参照自己的位置进行移动(当然需要设置top left这些生效)并且原来的位置保留着 偏移后会把 其它的层遮罩住 绝对定位就是的参照位置 ...

  8. iOS开发之Todo List for Swift项目

    一直从事Windows Phone开发,但对iOS开发一直有所好奇,于是在MBP到手之际,顺手安装了Xcode.移动互联网开发的相似性,使得我能快速地了解和认识了iOS的开发框架体系,在看完了Appl ...

  9. WebSocket集成XMPP网页即时通讯1:Java Web Project服务端/客户端Jetty9开发初探

    Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事, ...

  10. SpringBoot配置文件application.properties详解

    喜欢的朋友可以关注下,粉丝也缺. 相信很多的码友在接触springboot时,不知道怎么去配置一些项目中需要的配置,比如数据源,tomcat调优,端口等等,下面我就给大家奉献出一些项目中常用的配置信息 ...