http协议学习二

之前的博客HTTP学习对HTTP协议的具体内容没有进行详细的,今天再补充点。

1,http url :格式:schema://host[":"port][abs_path

schema是表示用的什么协议,如http ,https,ftp等。

host代表Internet主机域名或者IP地址。

port代表端口号,默认端口为80。

abs_path代表资源的路径。如果没给出路径,则以‘/’的形式给出。

2,http请求:

格式:请求行 请求报头 请求正文

请求行:请求方法 请求资源的路径 请求的HTTP协议版本 分别代表Method Request-URI HTTP-Version CRLF  。

请求报头:

也叫请求消息,请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头,空行(只有CRLF的行),消息正文(可选)组成。

请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。

比较常用的请求报头有:Accept(制定客户端接受的文件类型),Accept-Charset(指定字符集),Accept-Encoding(指定接受的内容的编码),Accept-Language(指定一种语言),Authorization,Host(Host请求报头域主要用于指定被请求资源的Internet主机和端口号)

请求正文:

请求正文与请求消息中间隔一行,请求正文中可以包含客户提交的查询字符串信息等。

请求方法:

请求方法经常见到的有GET,POST两种方法,但又不只有这两种,还有PUT,DELETE,HEAD,TRACE,OPTIONS.每一种方法都有其相应的功能。GET主要负责从服务器获取资源信息,POST负责将附加的数据添加到请求中提交到服务器,PUT负责将增加资源信息,DELETE负责删除资源。TRACE :请求服务器回送收到的请求信息,主要用于测试或诊断,CONNECT:保留将来使用,OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求

GET,POST的区别:

顾名思义,get就是从服务器获取资源,不会修改数据库的数据,而post则不同,post会向数据库发送修改请求,举个例子,get就如同我们在搜索框输入搜索的关键字,通过get方法,将输入的字添加到url后,传到服务器,查询相关的资源,而post就如我们在一个注册页,填写信息,信息就会通过post方法,将信息写在http请求正文中,传到服务器,存入并更改数据库。get能传的数据比较少,最多1024B,post则能传送比较大的数据。安全性方面,get方法比post若,因为get方法的信息都是直接写在url以明文的方式传送,而post则可以通过一些方法进行加密写入请求正文传送。

3,http响应:

包括:状态行,响应报头,响应正文

状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。

附一些状态代码代表的含义:

1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求

状态描述既是对状态代码的描述。如 404   Not Found   请求的资源不存在。

响应报头:

响应报头用来传递一些不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

常用的响应报头有location,server.location为重定向接受者到一个新的地址。server代表服务器用来处理请求的软件信息。

 响应正文:服务器返回的资源的内容。

今天还去了解了一下服务器和代理服务器。先说说代理服务器吧,代理服务器分几种,分别有正向代理,反向代理和透明代理。

正向代理总结一下就是位于客户端与原始服务器之间的服务器,起到加速访问的效果,如果代理服务器上有缓存的请求的数据,则可以直接返回给客户端。

反向代理与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置,直接发送请求到反向代理服务器,代理服务器再请求服务器然后响应请求。

反向代理的主要作用是负载均衡,当有多数的客户端请求原始服务器时就可以通过不同的代理服务器去响应请求,代理服务器上也可以缓存一些静态的资源,减轻原始服务器压力的同时提高响应速度。Nginx则是近几年最火的反向代理服务器。

还有一个透明代理,就不详细介绍了。

Session和Cookie

因为http是无状态的,Session和Cookie都是用来保持状态的,Session是服务器端的解决方法,而cookie是客户端的解决方法。

session:服务器上为客户端开辟的存储空间,第一步:创建session,在服务器端程序运行的过程中创建,创建session的时候,服务器会为该session生成唯一的sessionId.第二步:服务器在响应客户端请求的时候调用session,添加内容。第三步:服务器将sessionId发送这客户端。第四步:客户端再次请求的时候,带上sessionId.第五步:服务器通过请求中的sessionid找到session,并使用。

cookie:客户端在http请求中将个人信息传到服务器,服务器响应请求的时候,将个人信息加到响应头中,到达客户端时,将响应头中的信息存储为cookie。客户端再次请求的时候,会把cookie中的信息添加到请求头中发送到服务器。

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
   考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用cookie

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

猜你喜欢

转载自itzk.iteye.com/blog/2147763