Http协议学习(1)

一般做开发,第一个接触的上层协议就是http了。

并且我们都知道http是基于tcp/ip的,但是到底什么是http协议呢?

网上,书上对这些的介绍很多,不需要再详细介绍了。对于编程,我不喜欢通篇的理论,最好从实例开始。

很久前,参考写了一个实例:http://blog.csdn.net/oldmtn/article/details/45022867当然只是让其运行起来了,并没有详细的跟踪调试其源码。

今天就来研究一下。


1. 首选运行这个程序

2.在浏览器打开127.0.0.1:8001/www

这样会在浏览器显示该web服务器返回的结果.


但是他们之间是如何交互的呢?

其实在浏览器上面点击一个“转到”浏览器会向web服务器发送的内容如下:

GET /www/ HTTP/1.1

Host: 127.0.0.1:8001

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

Cache-Control: max-age=0

各参数含义:

GET: HTTP的请求方法的方法之一。含义:请求指定的页面信息,并返回实体主体。后面的/www/是请求的参数,HTTP/1.1是协议版本

Host: 客户端请求的url

User-Agent: 标识请求者的一些信息,如什么浏览器类型和版本、操作系统,使用语言等信息。

Accept: 指定客户端接受哪些类型的信息

Accept-Language: 类似于Accept,但是它是用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。

Accept-Encoding: 指定可接受的内容编码。eg:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。

Connection: 普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接

Cache-Control: 用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。
请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
eg:为了指示IE浏览器(客户端)不要缓存页面,服务器端的JSP程序可以编写如下:response.sehHeader("Cache-Control","no-cache");
//response.setHeader("Pragma","no-cache");作用相当于上述代码,通常两者//合用
这句代码将在发送的响应消息中设置普通报头域:Cache-Control:no-cache



同时web服务器返回的内容为:

HTTP/1.0 200 OK
Server: Tiny Web Server
Content-length:38
Content_type:text/html


<b>Hello!I am oldmtn.how are you?<b>
各参数含义:

HTTP/1.0 200 OK: 响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;

Server: 服务器的版本信息;

Content-length: 响应体为724字节;

Content-Type: text/html;



当web浏览器返回后,就会关闭与本次请求建立的连接。

具体还有其他的各种值或者参数以后碰到的话再分析。。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值