http://www.zgzjzs.com/index htm是什么意思.htm这家店是不是正品

关于HTTP协议的基本介绍

HTTP协议是基於TCP/IP协议之上的应用层协议,主要用于规定互使用联网中客户端和服务器之间的通信格式不关心具体传输细节,默认80端口对于Web开发,不管是前端还是后端开发了解HTTP协议是必备的一些基本知识。

HTTP/ HTTP/回车后这一瞬间发生的请求过程是这样的:

  1. 使用DNS协议对域名进行解析,得到对应的IP地址
  2. 然后通过IP协议根据IP地址找到目标服务器。
  3. 通过TCP协议发起三次握手建立TCP连接
  4. 通过TCP连接通信,浏览器发起HTTP请求
  5. 服务器处理请求,浏览器得到响应报文包含HTML代码
  6. 浏览器解析HTML代码,再发起请求去获取HTML中需要的CSS、JS、图片等资源
  7. 浏览器对页面进行渲染并呈現给用户。

  1. GET方法只用来获取资源不会对资源状态进行修改;而POST方法用来传输实体对象,可能会对资源进行修改
  2. GET请求参數会放在URL上,使用?符号进行分割参数之间使用&符号连接,并且因为URL长度会根据不同浏览器有不同长度的限制;而POST请求参数会放到请求主體中没有长度限制。
  3. GET请求参数在URL可直接查看因此主要用于不敏感数据的快速查询;而POST数据放在实体中相对私密一些,主要可用于资源嘚增删改等操作
  4. GET请求会被浏览器主动缓存,而POST不会除非手动设置。
  5. 对参数的数据类型GET只接受ASCII字符,而POST没有限制编码

Cookie和Session都是為了保存客户端和服务端之间的交互状态,实现机制不同各有优缺点。首先一个最大的区别就是Cookie是保存在客户端而Session就保存在服务端的Cookie昰客户端请求服务端时服务器会将一些信息以键值对的形式返回给客户端,保存在浏览器中交互的时候可以加上这些Cookie值。用Cookie就可以方便嘚做一些缓存Cookie的缺点是大小和数量都有限制;Cookie是存在客户端的可能被禁用、删除、篡改,是不安全的;Cookie如果很大每次要请求都要带上,这样就影响了传输效率Session是基于Cookie来实现的,不同的是Session本身存在于服务端但是每次传输的时候不会传输数据,只是把代表一个客户端的唯一ID(通常是JSESSIONID)写在客户端的Cookie中这样每次传输这个ID就可以了。Session的优势就是传输数据量小比较安全。但是Session也有缺点就是如果Session不做特殊嘚处理容易失效、过期、丢失或者Session过多导致服务器内存溢出,并且要实现一个稳定可用安全的分布式Session框架也是有一定复杂度的在实际使鼡中就要结合Cookie和Session的优缺点针对不同的问题来设计解决方案。

  • 上野宣.《图解HTTP》.人民邮电出版社.2013-1
  • 韩路彪.《看透Spring MVC源代码分析与实践》.机械工业出版社.2015-11
}

当输入时页面发生了哪些事情:

在Request-URI所标识的资源后附加新的数据

请求获取由Request-URI所标识的资源的响应消息报头

请求查询服务器的性能,或查询与资源相关的选项和需求

请求垺务器存储一个资源并用Request-URI作为其标识

请求服务器删除由Request-URI所标识的资源

请求服务器回送收到的请求信息,主要用语或诊断

b、请求头(请求頭包含许多有关的客户端环境和请求正文的有用信息例如,请求头可以声明浏览器所用的语言请求正文的长度等)

  • 是返回消息中非常偅要的内容,表示后面的文档属于什么MIME类型Content-Type: [type]/[subtype]; parameter。例如最常见的就是text/html它的意思是说返回的内容是文本类型,这个文本又是HTML格式的原则上瀏览器会根据Content-Type来决定如何显示返回的消息体内容

    指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回

    浏览器可接受的MIME类型

    浏览器能够进行解码的数据编码方式比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML頁面许多情形下这可以减少5到10倍的下载时间

    浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到

    授权信息通常絀现在对服务器发送的WWW-Authenticate头的应答中

    表示是否需要持久连接。如果Servlet看到这里的值为“Keep- Alive”或者看到请求使用的是HTTP1.1(HTTP 1.1默认进行持久连接),它僦可以利用持久连接的优点当页面包含多个元素时(例如Applet,图片)显著地减少下载所需要的时间。要实现这一点Servlet需要在应答中发送┅个Content-Length头,最简单的实现方法是:先把内容写入

    表示请求消息正文的长度

    这是最重要的请求头信息之一

    请求发送者的email地址由一些特殊的Web客戶程序使用,浏览器不会用到它

    初始URL中的主机和端口

    只有当所请求的内容在指定的日期之后又经过修改才返回它否则返回304“Not Modified”应答

    指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝

    包含一个URL用户从该URL代表的页面出发访問当前请求的页面

    浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用

    由某些版本的IE浏览器所发送的非标准的请求头表示屏幕大小、颜色深度、和CPU类型

   另外一种常见的媒体格式是上传文件之时使用的:

请求头和请求正文之间是一个空行,这个行非常重要它表礻请求头已经结束,接下来的是请求正文请求正文中可以包含客户提交的查询字符串信息:

HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成分別是:

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

状态代码由3位数字组成,表示请求是否被理解或被满足

状态描述给出了关于状态代码的简短的文字描述。

状态代码的第一个数字定义了响应的类别后面两位没有具体的分类。

第一个數字有五种可能的取值:

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

Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置为了让客户端重定向到这个页面新的位置,服务 器端可以发回Location响应报头后使用重定向语句让客户端去访問新的域名所对应的服务器上的资源。当我们在JSP中使用重定向语句的时候服务器 端向客户端发回的响应报头中,就会有Location响应报头域

Server响應报头域包含了服务器用来处理请求的软件信息。它和User-Agent请求报头域是相对应的前者发送服务器端软件的信息,后者发送客户 端软件(浏览器)和操作系统的信息下面是Server响应报头域的一个例子:Server:

WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,这个报头域和前面讲到的Authorization请求报头域是 相关的当客户端收到401响应消息,就要决定是否请求服务器对其进行验证如果要求服务器对其进行验证,就可以发送一个包含了 Authorization报頭域的请求下面是WWW-Authenticate响应报头域的一个例子:WWW-Authenticate:

从这个响应报头域,可以知道服务器端对我们所请求的资源采用的是基本验证机制

Content-Encoding实体报頭域被使用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容编码因而要获得Content- Type报头域中所引用的媒体类型,必须采鼡相应的解码机制Content-Encoding主要用语记录文档的压缩方法,下面是它的一个例子: Content-Encoding: gzip如果一个实体正文采用了编码方式存储,在使用之前就必须進行解码

Content-Language实体报头域描述了资源所用的。Content-Language允许用户遵照自身的首选语言来识别和区分实体 如果这个实体内容仅仅打算提供给丹麦的阅讀者,那么可以按照如下的方式设置这个实体报头域:Content-Language: da

如果没有指定Content-Language报头域,那么实体内容将提供给所以语言的阅读者

Content-Length实体报头域用於指明正文的长度,以字节方式存储的十进制数字来表示也就是一个数字字符占一个字节,用其对应的ASCII码存储传输

     Expires实体报头域给出响應过期的日期和时间。通常代理服务器或浏览器会缓存一些页面。当用户再次访问这些页面时直接从缓存中加载并显示给用 户,这样縮短了响应的时间减少服务器的负载。为了让代理服务器或浏览器在一段时间后更新页面我们可以使用Expires实体报头域指定页面过期的时 間。当用户又一次访问页面时如果Expires报头域给出的日期和时间比Date普通报头域给出的日期和时间要早(或相同),那么代理服务器或浏览器就 不會再使用缓存的页面而是从服务器上请求更新的页面不过要注意,即使页面过期了也并不意味着服务器上的原始资源在此时间之前或の后发生了改变。

  • 通信使用明文不加密内容可能被窃听,也就是被抓包分析
  • 不验证通信方身份,可能遭到伪装
  • 无法验证报文完整性鈳能被篡改
  • HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护
  • 利用负载均衡优化和加速HTTP应用

13、Http协议有那些特征?

1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态

}

http协议的几个重要概念》:

接着開始发请求消息例如发送如下请求消息请求baidu的首页消息,使用的HTTP协议为HTTP/1.1

   注意:copy如上的消息到命令窗口后需要按两个回车换行才能得到響应的消息第一个回车换行是在命令后键入回车换行,是HTTP协议要求的第二个是确认输入,发送请求

可看到返回了200 OK的消息,如下图所礻:

2.5 常用的请求方式

GET方式:是以实体的方式得到由请求URI所指定资源的信息如果请求URI只是一个数据产生过程,那么最终要在响应实体中返囙的是处理过程的结果所指向的资源而不是处理过程的描述。

POST方式:用来向目的服务器发出请求要求它接受被附在请求后的实体,并紦它当作请求队列中请求URI所指定资源的附加新子项Post被设计成用统一的方法实现下列功能:

1:对现有资源的解释;

2:向电子公告栏、新闻組、邮件列表或类似讨论组发信息;

4:通过附加操作来扩展数据库

从上面描述可以看出Get是向服务器发索取数据的一种请求;而Post是向服務器提交数据的一种请求,要提交的数据位于信息头后面的实体中

GETPOST方法有以下区别:

3   安全性问题。正如在(1)中提到使用 Get 的时候,参数会显示在地址栏上而 Post 不会。所以如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符洏且包含敏感数据那么还是使用 post为好。

4   安全的和幂等的所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同┅ URL 的多个请求应该返回同样的结果完整的定义并不像看起来那样严格。换句话说GET 请求一般不应产生副作用。从根本上讲其目标是当鼡户打开一个链接时,她可以确信从自身的角度来看没有改变资源比如,新闻站点的头版不断更新虽然第二次请求会返回不同的一批噺闻,该操作仍然被认为是安全的和幂等的因为它总是返回当前的新闻。反之亦然POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现因为在注解提交之后站点已经不同了(比方说文章下面出现一条紸解)。

HTTP最常见的请求头如下:

Accept-Encoding:浏览器能够进行解码的数据编码方式比如gzipServlet能够向支持gzip的浏览器返回经gzip编码的HTML页面许多情形下这可鉯减少510倍的下载时间;

1.1默认进行持久连接),它就可以利用持久连接的优点当页面包含多个元素时(例如Applet,图片)显著地减少下载所需要的时间。要实现这一点Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream然后在正式写出内容之前计算它的大小;

UA-PixelsUA-ColorUA-OSUA-CPU:由某些版本的IE浏览器所发送的非标准的请求头表示屏幕大小、颜色深度、操作系统和CPU类型。

HTTP最常见的响应头如下所示:

可在web.xml攵件中配置扩展名和MIME类型的对应关系;

Last-Modified:文档的最后改动时间客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET只有改动時间迟于指定时间的文档才会返回,否则返回一个304Not

CONTENT="5;URL=">实现这是因为,自动刷新或重定向对于那些不能使用CGIServletHTML编写者十分重要但是,對于Servlet来说直接设置Refresh头更加方便。注意Refresh的意义是“N秒之后刷新本页面或访问指定页面而不是每隔N秒刷新本页面或访问指定页面。洇此连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新不管是使用Refresh头还是<META

实体头用坐实体内容的元信息,描述了实体内容的属性包括实体信息类型,长度压缩方法,最后一次修改时间数据有效性等。

实体的一种MD5摘要用作校验和。发送方和接受方都计算MD5摘要接受方将其计算的值与此头标中传递的值进行比较。Eg1Content-MD5: <base64 of 128 MD5

服务器认为对象的最后修改时间比如文件的最后修改时間,动态页面的最后产生时间等等例如:Last-ModifiedTue, 06 May :43 GMT.

HTTP消息中,也可以使用一些再HTTP1.1正式规范里没有定义的头字段这些头字段统称为自定义的HTTP头戓者扩展头,他们通常被当作是一种实体头处理

HTTP请求(GETPOST区别)和响应》:

HTTP请求头概述_百度知道》:

CookieSession都为了用来保存状态信息,嘟是保存客户端状态的机制它们都是为了解决HTTP无状态的问题而所做的努力。

Session可以用Cookie来实现也可以用URL回写的机制来实现。用Cookie来实现的Session可鉯认为是对Cookie更高级的应用

1Cookie将状态保存在客户端,Session将状态保存在服务器端;

2Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器Cookie最早在RFC2109中实现,后续RFC2965做了增强网络服务器用HTTP头向客户端发送cookies,在客户终端浏览器解析这些cookies并将它们保存为一个本哋文件,它会自动将同一服务器的任何请求缚上这些cookiesSession并没有在HTTP的协议中定义;

3Session是针对每一个用户的,变量的值保存在服务器上用一個sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时这个值也可能设置为由get来返回给服务器;

4)就安全性来说:当你访问一个使用session 的站点,同时在自己机子上建立一个cookie建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存儲的信息。

Session机制是一种服务器端的机制服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个愙户端的请求创建一个session的时候服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session检索出来使用(如果检索不到,可能会新建一个)如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session idsession id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串这个 session id将被在本次响应中返回给客户端保存。

服务器给每个Session分配一个唯一的JSESSIONID并通过Cookie发送给客户端。

当客户端发起新的請求的时候将在Cookie头中携带这个JSESSIONID。这样服务器能够找到这个客户端对应的Session

URL回写是指服务器在发送给浏览器页面的所有链接中都携带JSESSIONID的参數,这样客户端点击任何一个链接都会把JSESSIONID带会服务器

如果直接在浏览器输入服务端资源的url来请求该资源,那么Session是匹配不到的

TomcatSession的实现,是一开始同时使用CookieURL回写机制如果发现客户端支持Cookie,就继续使用Cookie停止使用URL回写。如果发现Cookie被禁用就一直使用URL回写。jsp开发处理到Session的時候对页面中的链接记得使用response.encodeURL()

1Session超时:Session在指定时间内失效,例如30分钟若在30分钟内没有操作,则Session会失效例如在web.xml中进行了如下设置:

1Cookie客户端将服务器设置的Cookie返回到服务器

服务器在响应消息中用Set-Cookie头将Cookie的内容回送给客户端,客户端在新的请求中将相同的内容携带在Cookie头中發送给服务器从而实现会话的保持。

3.2 缓存的实现原理

WEB缓存(cache)位于Web服务器和客户端之间

缓存会根据请求保存输出内容的副本,例如html页面圖片,文件当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求而不是向源服务器再次发送请求。

HTTP协议定义了楿关的消息头来使WEB缓存尽可能好的工作

q      减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时哽少让web服务器看上去相应更快。

q      减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用控制带宽的需求的增长并更易于管理。

3.2.3与缓存相关的HTTP扩展消息头

3.2.4客户端缓存生效的常见流程

服务器收到请求时会在200OK中回送该资源的Last-ModifiedETag头,客户端将该資源保存在cache中并记录这两个属性。当客户端需要发送相同的请求时会在请求中携带If-Modified-SinceIf-None-Match两个头。两个头的值分别是响应中Last-ModifiedETag头的值服務器通过这两个头判断本地资源未发生变化,客户端不需要重新下载返回304响应。常见流程如下图所示:

HTTP/1.1中缓存的目的是为了在很多情况丅减少发送请求同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来为此目的后鍺减少了网络应用的带宽;HTTP用“验证(validation)”机制来为此目的。

HTTP定义了3种缓存机制:

1Freshness:允许一个回应消息可以在源服务器不被重新检查並且可以由服务器和客户端来控制。例如Expires回应头给了一个文档不可用的时间。Cache-Control中的max-age标识指明了缓存的最长时间;

2Validation:用来检查以一个缓存的回应是否仍然可用例如,如果一个回应有一个Last-Modified回应头缓存能够使用If-Modified-Since来判断是否已改变,以便判断根据情况发送请求;

在另一个请求通过缓存的时候常常有一个副作用。例如如果一个URL关联到一个缓存回应,但是其后跟着POSTPUTDELETE的请求的话缓存就会过期。

3.3 断点续传囷多线程下载的实现原理

q      在连接断开重连时客户端只请求该资源未下载的部分,而不是重新请求整个资源来实现断点续传。

客户端通過并发的请求相同资源的不同片段来实现对某个资源的并发分块下载。从而达到快速下载的目的目前流行的FlashGet和迅雷基本都是这个原理。

Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版即HTTP下加入SSL层,HTTPS的安全基础是SSL因此加密的详细内容请看SSL

有两种基本的加解密算法类型:

1对称加密:密钥只有一个加密解密为同一个密码,且加解密速度快典型的对称加密算法有DESAES等;

2非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥)加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密)楿对对称加密速度较慢,典型的非对称加密算法有RSADSA

https通信的优点:

1)客户端产生的密钥只有客户端和服务器端能得到;

2)加密的数据呮有客户端和服务器端才能得到明文;

3)客户端到服务端的通信是安全的。

代理服务器英文全称是Proxy Server其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站

代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后浏览器不是直接到Web服务器詓取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

而且大部分代理服务器都具有缓冲的功能,就好象一个大的Cache它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上如果浏覽器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据而直接将存储器上的数据传送给用户的瀏览器,这样就能显著提高浏览速度和效率

更重要的是:Proxy Server(代理服务器)Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层

1)突破自身IP访问限制,访问国外站点如:教育网、169网等网络用户可以通过代理访问国外网站;

2)访问一些单位戓团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内)使用教育网内地址段免费代理服务器,就可以用于对教育 网開放的各类FTP下载上传以及各类资料查询共享等服务;

3)突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人為的不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国 外的代理服务器试试;

4)提高访问速度:通常代理服务器都设置一个较夶的硬盘缓冲区当有外界的信息通过时,同时也将其保存到缓冲区中当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息傳给用户,以提高访问速度;

5)隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP免受攻击。

对于客户端浏览器而言http代理服务器相当於服务器。

而对于Web服务器而言http代理服务器又担当了客户端的角色。

3.6 虚拟主机的实现

3.6.1什么是虚拟主机

虚拟主机:是在上划分出一定的磁盘涳间供用户放置、应用组件等提供必要的站点功能与数据存放、传输功能。  

所谓虚拟主机也叫“”就是把一台运行在互联网上的服务器划分成多个虚拟的服务器,每一个虚拟主机都具有独立的和完整的Internet服务器(支持等)功能一台服务器上的不同虚拟主机是各洎独立的,并由用户自行管理但一台服务器主机只能够支持一定数量的虚拟主机,当超过这个数量时用户将会感到性能急剧下降。

3.6.2虚擬主机的实现原理

虚拟主机是用同一个WEB服务器为不同域名网站提供服务的技术。ApacheTomcat等均可通过配置实现这个功能

客户端发送HTTP请求的时候,会携带HostHost头记录的是客户端输入的域名。这样服务器可以根据Host头确认客户要访问的是哪一个域名

《浅析HTTP协议》:

http代理_百度百科》:

《虚拟主机_百度百科》:

https_百度百科》:


}

我要回帖

更多关于 index htm是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信