http协议简介

http协议能干什么

  我们在学一个东西之前,我们总是能问,这个东西到底能干什么?现在的生活压力这么大,谁会耐着性子去学一个无用的东西呢?那么,http到底能干什么呢?要回答这个问题,我们环顾一下我们的周围,从一个普通用户的角度,可以说,没有http协议,就没有互联网的丰富多彩。从一个web开发者的角度,了解了http协议,才能了解web网站的实质。学会了http协议,你就会发现web后台开发的语言,无论是c++还是php或者是java,他们都是对http协议的一种封装和实现,道理是相通的,这就是道,明白了这个道,开发起web网站来,事半而功倍,才能触类旁通。

  怎么学习http协议?当然,最详细最权威的方法还是看rfc文档,但是要让一个初学者看完、看懂如此专业属于遍布,内容很长的一个文档,是不太现实的,也是很痛苦的。我主张的方法是:在使用中学习,由易到难,逐步学习。学习的最好方法就是看例子。

 

第一个例子:

  第一个例子以访问google主页www.google.cn,抓包工具使用httpwatch,如果不了解这个工具,那就google一下看看怎么用。假如你已经安装好了,打开IE,打开httpwatch,然后输入www.google.cn,键下回车键:

Httpwatch抓了个这样的包,下面来解释这个这个过程:

1 IEurl栏里输入www.google.cn并敲回车,此时IE解析这个url,分离host和请求的资源,此时url中没有请求的资源,说明是请求的默认资源。IE和域名为www.google.cn的机器建立一个socket连接,发送一个协议流过去,这个协议流中描述了本机器的一些配置和要请求的那个网页,以及指明了接收服务器返回的网页的编码类型,这个请求看起来是这样的:

 

第一行指明http协议中信息提交的方式,最常用的有两种方式,第一种为GET,第二种为POST,这两种方式的区别待会再讲,现在先对这个http请求有个整体的认识。

第二行Accept指定接受的返回方式,比如返回的网页是一个jpg、纯文本、gif

第三行指定Accept-Language指定返回的字符集,这里zh-cn表示是中文

第四行Accept-Encoding指定返回的支付编码,gzip表示可以是gzip压缩

第五行User-Agent是提交的浏览器的信息,可以不用关注

第六行Host指定这个请求的host

第七行Connection Kepp-Alive表示使用socket长连接

第八行Cookie就是表示cookie信息

 

总体意思:这个请求头部就是告诉www.google.cn这个域名的服务器,我要请求默认的网页,这个网页的的格式可以是gifx-xbitmapjpegflashpptword,纯文本等。我接受的字符集是中文,返回的字节流可以是经过gzipdeflate编码的。并且在信息传输的过程中使用长连接,并且我的cookie中的信息是PREF=ID…

好了,常用的http请求头部应该就上面那么多,其他的想了解更多就需要自己查文档了。

 

当服务器接收到这个请求后,根据这个请求的描述,返回相应的内容:

第一行,指定http的协议和返回码,指定使用的是http/1.1协议,返回码是200 ok

第二行,Cache-Control表示使用的缓存机制

第三行,Date表示这个资源的最后更新日期

第四行,Expires表示超时时间

第五行,Content-Type指定返回资源的类型,这里是一个utf-8编码的html网页

第六行,Sever表示服务器使用的是什么web服务器

第七行,Content-Encoding表示采用的编码方式,这里是采用gzip压缩

第八行,Transfer-Encoding,传输的类型,这里采用chunked方式

 

浏览器接收到这个信息后,就按照响应中指定的类型,解析出内容,并显示出来。

 

GETPOST方式的区别

此时第一行的GET编程POST,并且名值对放到头部的最后,并和头部之间用空行隔开

提交信息的长度在协议中并没有指定,但是浏览器在实现时还是用区别的,一般都是对post没有长度限制,对get方式提交的信息长度有限制

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值