`
peonyzzdx
  • 浏览: 581624 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

http工作原理和特点

    博客分类:
  • web
 
阅读更多

一.http的基本原理:

HTTP协议的工作原理主要包括四个步骤



图1 HTTP协议工作原理
  (1)连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。( 客户端-----通过socket建立连接-----服务器)
  (2)请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:GET 路径/文件名 HTTP/1。其中,文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。
  (3)应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。例:假设客户机与www.mycompany.com:8080/mydir/index.html建立了连接,就会发送GET命令:GET /mydir/index.html HTTP/1.0。主机名为www.mycompany.com的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。为了告知 Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。其中,常用的HTTP头信息如下。
  HTTP 1.0 200 Ok:这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码"200 OK"表示请求完成。
  MIME_Version:1.0:它指示MIME类型的版本。
  content_type:类型:这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。
  content_length:长度值:它指示HTTP体信息的长度(以字节为单位)。
  (4)关闭连接 :当应答结束后,Web浏览器与Web服务器必须断开,以保证其他Web浏览器能够与Web服务器建立连接。

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例

二.http的特点
    1)支持客户/服务器模式。(c/s模式)
    2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有          GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得     HTTP服务器的程序规模小,因而通信速度很快。
    3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
    5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。


三.cookie和session解决http的无状态的问题
两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session
由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。

Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从:[系统盘]:\Documents and Settings\[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。
(理解:cookie的创建时间在服务器响应后,存放信息是服务器发来的超文本和个人信息还有sessionId)


cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。
会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘中的cookie可以在不同浏览器间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式

Cookie支持跨域名访问,例如将domain属性设置为“.helloweenvsfei.com”,则以“.helloweenvsfei.com”为后缀的所有域名均可以访问该Cookie。跨域名Cookie现在被广泛用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

生成Cookie对象:
java.util.Date date = new java.util.Date();
Cookie c = new Cookie("lastVisited",date.toString());

前面一个参数是key,后面一个参数是value值。

设定Cookie的有效期:
c.setMaxAge(60*60*24);//单位为毫秒

Cookie的路径与域名:
c.setPath("/");
c.setDomain(".v512.com");

发送Cookie对象:
response.addCookie(c);


读取Cookie:

Cookie [] cookies=request.getCookies();
Cookie c = null;
if(cookies!= null)
{
    for(int i=0;i<cookies.length;i++)
    {
         c = cookies[i];
         out.println("cookie name:"+c.getName()+"<br>");
         out.println("cookie value:"+c.getValue()+"<br>");
     }

}


·修改Cookie:
Cookie [] cookies=request.getCookies();
Cookie c = null;
}

·删除Cookie:
即把Cookie的失效时间设置为0即可。


·Cookie文本信息的大小和数量有限制。以明文保存,没有任何加密措施。
for(int i=0;i<cookies.length;i++)
{
         c = cookies[i];
         if(c.getName().equals("lastVisited"))
         {
             c.setValue("2010-10-1");
             c.setMaxAge(6000);
             response.addCookie(c);
         }
}

     要使用Session,第一步当然是创建Session了。那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。 正式这样一个过程,用户的状态也就得以保持了。


综述:HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了

四、cookie 和session 的区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
   考虑到安全应当使用session,将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用COOKIE
4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
5.session需要借助cookie才能正常工作。如果客户端完全禁止cookie,session将失效。
6.session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
7.session调用了 session.invalidate()方法或者前后两次请求超出了session指定的生命周期时间,Session会销毁,否则在用户会话结束后就会关闭了。但若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。保存在硬盘里的,可以长期保存
8.session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。
9.Session则不会支持跨域名访问。Session仅在他所在的域名内有效。


五、session机制
    一个唯一的标识用于 会话
    过期机制
六、HttpSession是Java平台对session机制的实现规范
  cookie
  httpssionListener
  web容器(Jboss,tomcat,Jetty,weblogic...)
七、容器实现HTTPsession面临的问题
  集群环境下共享困难
  非持久,吃内存






分享到:
评论

相关推荐

    SpringBoot中RestTemplate和WebClient的使用区别及优缺点含完整代码

    在Spring Boot中,RestTemplate和WebClient是两种常用的HTTP客户端,它们各自具有不同的特点和适用场景。本文将介绍这两种客户端的基本概念、工作原理和使用方法,并通过对比分析,帮助读者更好地理解它们的差异。...

    微机原理与接口技术编书(交稿)

    1.2 计算机的基本组成和基本工作原理 2 1.2.1 计算机的基本组成 2 1.2.2 存储程序工作原理 2 1.3 名词术语 3 1.4 微机结构 4 1.5 微型计算机的工作过程 6 习题与思考题 9 第2章 微处理器 10 2.1 Intel 8086/8088微...

    计算机网络课件ppt(概述+物理层+数据链路层+网络层+运输层+应用层)

    TCP和UDP协议的区别、特点和应用场景。连接建立、可靠传输、流量控制和拥塞控制等概念。端口和套接字的概念和作用。 应用层: 应用层协议的作用和功能,如HTTP、FTP、SMTP、DNS等。不同应用层协议的工作原理和数据...

    Http从入门到精通,进阶教程

    HTTP协议:了解HTTP协议的基本原理、特点、工作流程等。 HTML/CSS/JavaScript:掌握HTML/CSS/JavaScript的基础知识,能够进行基本的网页开发和调试。 前端框架:学习前端框架,例如React、Vue等,掌握其基本原理和...

    http协议.pptx

    HTTP工作原理 HTTP协议详解之URL篇 HTTP协议之请求篇 请求行 消息报头 空行 请求主体 HTTP协议之响应篇 状态行 消息报头 空行 响应主体 HTTP协议之消息报头篇 普通报头 请求报头 响应报头 实体报头

    【理论学习班】短波单边带收发信机原理(张毓华)BMP PART2

    §3-1数字式频率合成器的组成和工作原理 §3-2双环数字式频率合成器的实际电路 §3-3鉴相器 §3-4压控振荡器 §3-5可变分频器概述 §3-6程序分频器的工作原理 §3-7吞脉冲程序分频器的工作原理 §3-8 用编程控制的...

    网络安全技术原理与实践--第一章-网络安全概论.pptx

    物理安全 指用来保护计算机硬件和存储介质的装置和工作程序。物理安全包括防盗、防火、防静电、防雷击和防电磁泄漏等内容。 网络安全技术原理与实践--第一章-网络安全概论全文共20页,当前为第3页。 逻辑安全 ...

    smc-微型减压阀ARJ,ARX.pdf

    一.SMC减压阀工作原理 1.顺时针调节手轮,调压弹簧被压缩,推动膜片组件下移,通过阀杆,打开阀芯,则入口气压力经阀芯节流降压,压力输出; 2.出口压力气体经反馈管进入膜片下腔,在膜片产生一个向上的推力。当此...

    HCPL-3120中文手册

    产品特点: l 2A最小峰值电流输出 l 15KV绝缘耐压 l 0.5V最大低电位输出(负偏压除外) l 5mA供电电流 l 欠压锁定 l 500nS最大开关时间 l 15-30V宽压工作环境,-40-150度工作温 l 工业级温度范围:-40-100度 l 安全...

    Struts原理、开发及项目实施

    MVC的工作原理,如下图1所示: &lt;br/&gt; Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts...

    SpringMVC讲义大全.docx

    SpringMVC基本原理: 解释SpringMVC框架的工作原理,包括前端控制器、处理器映射器、处理器适配器、视图解析器等核心组件的作用。 控制器开发: 讲解如何编写控制器(Controller),处理用户请求,获取参数,调用...

    mule交流ppt

    Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB支持集成现有系统...Mule ESB的工作原理 Mule ESB的技术和特点 Mule ESB3的新功能 小结

    深入理解Android:卷I--详细书签版

     笔者认为,本书最大的特点在于,较全面、系统、深入地讲解了Android系统中的几大重要组成部分的工作原理,旨在通过直接剖析源代码的方式,引领读者一步步深入于诸如Binder、 Zygote、Audio、Surface、Vold、Rild...

    《AVR高速嵌入式单片机原理与应用》----avr单片机入门好教材

    作软件,可上网下载--http://WWW.SL.COM.CN 广州双龙电子公司还可提供图文并茂的相关工作 软件和实验应用源程序的光盘,作为本书的补充 本书有较强的系统性和实用性,可供高等院校自动化 计算机 电子等专业的教学参考...

    java核心面试

    jvm工作原理 JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。 1说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? ...

    java核心面试技术点

    jvm工作原理 JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。 1说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? ...

    高校毕业论文管理系统|毕业论文

    利用Microsoft Visual Studio 2008工具结合使用SQL Server 2005数据库,ASP.NET、C#、LINQ等技术的工作原理及特点,并以此为理论技术依据阐述了基于Web的毕业设计管理系统的结构设计和具体的实现过程。

    谢希仁 计算机网络 第七版 随书课件

    本书的特点是概念准确、论述严谨、内容新颖、图文并茂,突出基本原理和基本概念的阐述,同时力图反映计算机网络的一些最新发展。本书可供电气信息类和计算机类专业的大学本科生和研究生使用,对从事计算机网络工作的...

    TCP/IP协议与网络编程技术

    主要内容有应用层常用协议DNS、FTP、Telnet、HTTP、POP和SMTP的格式、工作原理、协议实例等内容。 第6章:简要的介绍了一下TCP/IP协议在Windows和LINUX操作系统下的实现原理TCP/IP协议的二进制代码。 下篇包含以下6...

Global site tag (gtag.js) - Google Analytics