• 网页基础


    网页基础,图解http

    Web页面,根据Web浏览器中制定的url,从Web服务器端获得文件资源,从而显示出Web页面。

    Web使用一种HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到

      服务器端的一系列流程。Web是建立在HTTP协议上通信的。

    目前已经提出的三项WWW构建技术,作为页面的文本标记语言的HTML(HyperText Markup Language,超文本标记语言)

      作为文档传递协议的HTTP

      作为文档所在地址的URL(Uniform Resource Locator,统一资源定位符)

    html1.0在1993年被提出来,html2.0在1994年提出。之后交由W3C指定标准,一直到2012年的html5;

    http的历史,基于tcp协议:

        

    https,早在1994年,由网景公司提出,安全层由ssl到如今的tls;与http的区别:

        

    与http相关的网络协议,http是运行在应用层的,按四层结构划分,依赖传输层---TCP,网络层---IP,

        物理层---以太网。

      在IP进行路由选择的时候,会利用MAC地址进行搜索,这时,会采用CRP协议,通过IP反解析出MAC地址

        因为IP地址,在每个局域网可能是重复的,但是MAC地址是不会重复的。              

      在查找服务器的IP地址时,我们需要DNS域名解析协议,来实现域名到IP地址的转换

    HTTP协议是基于C、S模式的,但是http协议不区分客户端和服务器端,发出请求的是客户端,发出响应的作为服务器。

      http也是不保存状态的协议,只是简单的返回内容。由于登录信息的增多,http1.1引入了Cookies技术,来保存用户的状态

    HTTP协议中的几种请求:

      1) Get,获取资源,

      2) POST,传输实体主体,也可以使用Get,但一般用的不多。

      3) PUT,传输文件,由于http1.1不支持身份验证,这个安全性很低,一般用的很少。

      4) HEAD,获得响应报文首部,用来确认url的有效性和资源更新日期时间。

      5) DELETE,删除文件,与put相反。

         

    在http的初始版本中,每进行一次HTTP通信就要断开一次TCP连接,这是因为当时网络的吞吐量和访问量都很少。

      目前, http1.1和http1.0都支持持久连接(keep-alive),默认的方式也是keep-alive,只要任意一端没有提出

      断开连接,就保持TCP的连接状态。

    管线化技术:做到同时并行的发送多个请求,不需要一个个等待响应,再一个个顺序的发送。

    HTTP报文,用于HTTP协议交互的信息都被称为HTTP报文,分为请求端的HTTP请求报文和相应端的HTTP响应报文。

      HTTP报文大致分为报文首部和报文主体,

      

    报文主体和实体主体,在传输中进行编码操作时,实体内容发生变化,才能导致报文主体和实体主体产生差异。

      报文主体进行压缩常见的方式有:

      1) gzip (GUN zip)

      2) compress(unix 压缩标准)

      3) deflate(zlib)

      4) identity(不进行编码)

    在HTTP通信过程中,常常把数据分割为多块,让浏览器逐步显示页面,这种把实体主体分块的功能称为分块传输编码

      http1.1中存在一种称为传输编码(Transfer Coding)的机制,可以在通信时按某种编码方式传输,

      只定义在分块传输编码中。

    HTTP中的多部分对象集合(Multipart)的方法,来支持同一个报文主体中可包含多类型实体。(文本,图片,视频)

      HTTP中含有多部分对象集合时,需要在首部加上Content-type

    HTTP中的部分内容范围请求,在首部字段中,加入Range,来指定需要的byte长度。

      响应报文中,加入Content-Type 标明multipart/byteranges

    HTTP中的内容协商(Content Negotiation),服务器与客户端就响应的资源内容进行交涉,提供给客户端最为合适的资源。

      一般的协商内容有,语言,字符集,编码方式等。

      首部字段包括:Accept,Accept-Charset,Accept-Encoding,Accept-Language,Content-Language

    HTTP的响应状态码:

         

    Web服务器:HTTP1.1允许一台HTTP服务器搭建多个Web站点,可以以每位客户持有的域名运行各自不同的网站。

        利用了虚拟主机(Virtual Host)的功能,这时客户端的请求需要加入HOST的首部,来指明需要访问的网址。

        还可以实现网络中的代理,网关,隧道。 将应用程序和服务器的请求进行转发

    网页中的身份认证:通常提供身份认证的载体有:1)密码;2)动态令牌;3)数字证书;4)生物认证;5)IC卡。

    HTTP1.1中使用的认证方式有:1) Basic认证;2) Digest 认证; 3) SSL客户端认证; 4) FormBase认证(基于表单认证)

      Basic认证,用户输入用户名和密码,浏览器完成Base64编码,仅仅是编码处理,加密操作都没有,窃听破解的可能性很大。

        

      Digest认证,采用的是质询,响应的认证方式,比较的是hash的结果。

    质询,响应的认证方式,一方先发送认证要求给另一方,使用另一方那接收到的质询码计算生成响应码,将响应码返回给对方进行认证。

        

      SSL认证,客户端必须还有认证证书,走HTTPS的路线。

        一般采用双因素认证,SSL证书,认证客户机的合法性,密码,认证操作者的合法性。

        但是SSL认证的成本较高。银行一般会采用该认证方式。

      表单认证,不是HTTP协议中规定的方法,根绝Web应用程序的实际安装,提供的用户界面和认证方式也不同。

    Web服务器如何保存用户提交的密码等登录信息也没有标准化,一种安全的保存方法是,先利用给密码加salt,

        的方式增加额外信息,在使用散列函数计算出散列值后保存。防止被脱库。

    HTTP协议本身是无状态的,session的管理,使用过cookie来实现的,

         

      

      

      sessionid是不允许被第三方盗走的,sessionid应该使用难以推测的字符串,并有有效期管理。

        传输通道最好使用https传输。

    HTTP协议中并不支持密码学的支持,

      通信内容是全明文的,内容会被窃听;

      不进行通信双方的身份验证;

      无法验证报文的完整性;

     通信的加密,目前通过和SSL,TLS的组合使用,加密HTTP的通信内容。

    HTTPS可以实现HTTP传输加上加密处理,认证技术,完整性保护。HTTPS使用混合加密机制,

      在密钥交换阶段,使用非对称的算法,在数据交互过程中,使用交互后的对称密钥。

    混合加密机制中,需要数字证书认证机构来认证公开密钥的正确性。威瑞信(VeriSign)就是一家

      非常有名的数字证书认证机构。

        证书的另一个作用是证明服务器背后运营企业的真实性。该类证书叫做EV SSL证书

    python中的http操作模块,requests,支持http所有的请求类型,GET,PUT,DELETE,OPTIONS

      import  requests

      r = requests.get('http://......')   类似的请求还有post,put,delete,head,options。

    如果需要为url传递参数,自定义请求头,可以加param = pyload,pyload为自己定义的hash结构。

        

    响应内容r可以通过context和text来拿到其内部的值,

      r.text是通过python内部的encoding的格式来展示的,可以先通过r.encoding = 'utf-8'这样来设置格式。

      r.content,可以以字节的形式访问返回值r,requests会自动解压gzip和deflate的编码。

      requests内部也有一个JSON解码器,可以处理JSON数据。

      r.json()  返回就是json类型的数据。

      如果需要访问http的原始套接字的相应,可以通过访问r.raw来拿到。

        

      如果需要拿到状态响应码,通过r.status_code来拿到。

        

      查看服务器响应头,

        

    cookies的发送和响应:

        

        

    重定向设置,有些网址会自动将http的请求,重定向到https上,这时可以通过resp.hisory来处理,内部有一个request列表

        从最老到最近的请求进行排序。

        

        

    timeout的设置:只对连接过程有效,对响应体的下载无关。

        

        

  • 相关阅读:
    如何完全禁用或卸载Windows 10中的OneDrive
    ASP.NET Web API从注释生成帮助文档
    c#中使用easyUI的DataGrid组件
    第三方分页控件aspnetPager出现问题解决方法
    ActionResult派生类
    Razor引擎的转换数据类型
    ViewData与ViewBag比较
    .net开源后可以查看的源代码
    如何让一个类可以被foreach枚举?
    .NET Framework中Object基类有哪些方法?
  • 原文地址:https://www.cnblogs.com/-9-8/p/8329999.html
Copyright © 2020-2023  润新知