不定期更新的新问题(http协议当你在浏览器里输入一个url后发生了什么?)

HTTP协议:

超文本传输协议是互联网上应用最为广泛的一种网络协议 https是以安全为目标的http通道,就是http的安全版。

为什么会有这个协议呢?

  • 为了建立客户端与服务器的连接,让两者进行沟通(自我理解:让计算机按照规矩说话,你问我答,你怎么问我怎么答,否则计算机会各说各话没办法沟通)

  • http是通过报文进行沟通的:
    1.请求报文:请求头、请求行、请求体
    1.响应报文:响应头、响应行、响应体

  • 请求头:
    a. Accept: 指定客户端能够接收的内容类型
    a.Cache-Control:指定请求和响应遵循的缓存机制
    a.Cookie: HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器
    a.Date:请求发送的日期和时间
    a.If-None-Match: 匹配etag,如果它修改了就不取缓存
    a. If-Modified-Since: 将之前服务器端发送过来的最后修改时间戳发送回去

  • 请求行:请求方法(常用的post和get)、请求地址(url)、请求协议及版本(HTTP/1.1)

  • 请求体:就像用post表单传递数据如:name=aimee age=18 name=aimee&age=18会出现在请求体中

  • 响应行:响应协议及版本号(HTTP/1.1)、响应状态码(200)响应状态文字(ok)

          响应头:Allow:对于特定资源的有效动作 、Connection: 针对该链接所预期的选项 
    
          响应体:就是我们请求回来的数据   
    
    状态码:
    
         1xx        接到请求继续处理
    
         2xx        成功
    
         3xx        重定向
    
         4xx        客户端错误
    
         5xx        服务器错误
    
     常见的状态码 :
    
         成功状态码:200 表示成功、301/302临时/永久重定向  304资源未被修改  
    
         失败状态码:404请求内容不存在、500服务器暂时不可用、503服务器内部错误
    
     请求方法get和post的区别:
    
          get使用url或cookie传参,而post将数据放在body中
    
          get的url有长度上的限制,post可以传很多的数据
    
          post比get安全 
    

HTTP缓存:
HTTP缓存机制是web性能优化的重要手段,HTTP缓存有多种规则,根据是否需要重新向服务器发送请求来分类,将其分为两大类:强制缓存、对比缓存。
强制缓存的意思就是浏览器在缓存过期之前只会使用浏览器缓存的文件,不会发送HTTP请求,对比缓存的意思先请求服务器判断浏览器缓存是否有效,然后再决定是否使用浏览器缓存。
强制缓存怎么判断缓存数据是否过期:
在没有缓存数据的时候,浏览器向服务器请求数据时,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应头中,对于强制缓存来说,响应头中有两个字段来标 明过期规则:Expires或Cache-Control,不过Expires是HTTP1.0的东西现在默认浏览器默认使用HTTP1.1所以它的作用基本忽略。HTTP1.1版本使用Cache-Control

        Cache-Control 是最重要的规则,常见取值有:

            private:客户端可以缓存

            public:客户端和代理服务器都可以缓存

            max-age=xxx:缓存内容将在xxx秒后失效

            no-cache:需要使用对比缓存来验证缓存数据

            no-store:所有的内容都不会缓存,强制缓存,对比缓存都不会触发                                                                                                                                                                                   

    对比缓存也有两种类型:Etag/If-None-Match和If-Modified-Since/Last-Modified                  

        Etag : 服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识

        Last-Modified: 服务器最后修改的时间,和Etag配合使用

        If-None-Match:再次请求服务器时,通过此字段通知服务器客户端缓存数据的唯一标识。

        Last-Modified-since  :再次请求服务器时,通过此字段通知服务器上次请求时,服务器返回的资源的最后修改时间。                 

        Etag和If-None-Match的工作原理是在HTTP Response中添加ETags信息。当客户端再次请求该资源的时,将在HTTP Resquest中加入If-None-Match信息(Etag的值),如果服务器验证资源的Etags没有改变(该资源没有改变),将返回一个304状态,否则服务器将返回200状态,并返回该资源和新的Etags                                  

当在浏览器下输入一个url发生了什么:
1.浏览器通过DNS域名解析到服务IP
DNS:它可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

    IP地址:是Internet主机的作为路由寻址用的数字体标识,人不容易记忆。因而产生了域名这一种字符型标识。

2.客户端通过TCP协议建立到服务器的TCP连接
TCP协议(传输层协议):在正式收发数据前,必须要和对方建立可靠的连接。一个TCP连接要经过三次‘对话’才能建立起来。
UDP协议:面向非连接的协议,就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送,我觉得这个与手机短信非常相似,在发短信的时候,只需要输入对方的手机号就可以啦

3.客户端向服务器端发送http协议包,请求服务器的资源文档
4.服务器向客户端发送http协议应答包
5.客户端和服务器断开,客户端开始解释处理HTML文档

posted @ 2018-05-05 15:37  tcyA  阅读(174)  评论(0编辑  收藏  举报