java必知小知识点

155 阅读29分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一直对一些知识点的理解都是模模糊糊的,说不知道吧,也能支支吾吾的扯出来点,但是说半天也说不清楚。写此博客,做以下记录:

目录

1.Cookie和Seesion

会话技术:

Cookie:

Session:主菜

2.输入网址,敲击回车后,都发生了什么

2.1DNS是什么意思,有什么作用

2.2.url解析

2.3、DNS查询

2.4、资源请求

2.5、浏览器解析

3.TCP/IP

3.1什么是TCP/IP

3.2为什么不能只有一个协议?

3.3TCP/IP的分层

3.4·了解主要的一些协议

3.5·协议之间的关系

4.Http和Https

1.什么是协议?

2.HTTP协议是什么?

3.HTTP原理

4.HTTP特点

5.URI和URL的区别

6.HTTP报文组成

请求报文构成

响应报文构成

7.常见请求方法

8.响应状态码

9.为什么要用https?

10.什么是HTTPS?

11.浏览器在使用HTTPS传输数据的流程是什么?

12.HTTPS的缺点

13.总结HTTPS和HTTP的区别

5.ASCII、Unicode和UTF-8 之间的关系

1. ASCII

2. Unicode

3. UTF-8

4 三者之间的联系

6.持续更新中。。。

1.Cookie和Seesion

会话技术:

会话:一次会话中包含多次请求和响应。
    一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止
功能:在一次会话的范围内的多次请求间,共享数据
方式:
    客户端会话技术:Cookie
    服务器端会话技术:Session

Cookie:

概念:客户端会话技术,将数据保存到客户端

快速入门:
    使用步骤:
        创建Cookie对象,绑定数据
            new Cookie(String name, String value)
        发送Cookie对象
            response.addCookie(Cookie cookie)
        获取Cookie,拿到数据
            Cookie[] request.getCookies()

实现原理
    基于响应头set-cookie和请求头cookie实现

cookie的细节
    一次可不可以发送多个cookie?
        可以
        可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。
    cookie在浏览器中保存多长时间?
        默认情况下,当浏览器关闭后,Cookie数据被销毁
        持久化存储:
            setMaxAge(int seconds)
                正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
                负数:默认值
                零:删除cookie信息
    cookie能不能存中文?
        在tomcat 8 之前 cookie中不能直接存储中文数据。
            需要将中文数据转码---一般采用URL编码(%E3)
        在tomcat 8 之后,cookie支持中文数据。特殊字符还是不支持,建议使用URL编码存储,URL解码解析
    cookie共享问题?
        假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中cookie能不能共享?

            默认情况下cookie不能共享

            setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录
                如果要共享,则可以将path设置为"/"
                不同的tomcat服务器间cookie共享问题?

            setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
                setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享

Cookie的特点和作用
    cookie存储数据在客户端浏览器
    浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)
    作用:
        cookie一般用于存出少量的不太敏感的数据
        在不登录的情况下,完成服务器对客户端的身份识别

案例:记住上一次访问时间

    需求:
        访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
        如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串

    分析:
        可以采用Cookie来完成
        在服务器中的Servlet判断是否有一个名为lastTime的cookie
            有:不是第一次访问
                响应数据:欢迎回来,您上次访问时间为:201861011:50:20
                写回Cookie:lastTime=201861011:50:01
            没有:是第一次访问
                响应数据:您好,欢迎您首次访问
                写回Cookie:lastTime=201861011:50:01

Session:主菜

概念:HTTP协议是一种无状态的协议,用户通过浏览器访问服务端的每次请求都是相互独立的,服务端无法直接通过HTTP请求来判断上次请求的用户和本次请求的用户是否是同一人,所以就要一些技术来帮助后台辨别这次的请求是谁。当然,你可以使用Cookie来传递用户状态的标识,但是每次发起请求都必须来回传递这些Cookie数据,为了实现更多的状态跟踪,传递的Cookie数据会越来越多,这无形中增加了浏览器与服务端的数据传输的压力和复杂性,Cookie的大小不仅有限制,而且这种方式是不安全的,容易被盗取和篡改,然而session的出现正解决了这些问题。session是存储于服务端的、用于记录和保持某些状态的一种会话跟踪技术。用户通过浏览器发起请求的时候,不用每次都回传所有的Cookie值了,只要回传一个key-value的键值对就可以了,一般情况下这个key为JSESIONID,value为客户端第一次访问服务端时生成的唯一值,这个value可以标识和跟踪用户的会话信息,这个value在服务端被习惯称作sessionId。

如何传递sessionId
客户端可以通过以下三种方式将JSESSIONID的key-value键值对传递到服务端。
1.如果用户浏览器不支持CookieCookie被禁止了,浏览器将会把这个key-value键值对重写到请求的URL参数中,重写的格式如/xxx/path/abcAction;key=value?paramName=paramValue,其中的key-value就是要传递的参数。服务端接收到请求后,会从URL中取到这个key对应的value,并将这个value设置到request,具体的代码是request.setRequestedSessionId2. 如果浏览器支持Cookie,则浏览器在发请求的时候将会在Request Headers中设置key-value的请求参数,服务端接收到请求后,将会取出这个value值,同时这个value值会覆盖掉从URL中取得的值。

如何保持session会话
正常情况下,用户第一次通过浏览器请求服务端的时候是没有value的,此时服务端会通过request.getSession()方法创建一个HttpSession对象,并给它设置一个有效期,然后将这个对象存储在sessions的容器中,同时会把sessionId返回给浏览器端。如果用户再次发起请求,服务端在解析得到sessionId后,会判断sessionId对应的HttpSession是否存在,如果不存在,会创建一个HttpSession对象,并将这个对象存储在sessions的容器中,同时会把sessionId返回给浏览器端;如果存在,将可以得到对应的HttpSession对象,这个HttpSession对象可以存储很多状态或表示数据,如session.setAttribute(),从而实现会话跟踪。

session对象都有一个有效期,一般情况下,应用容器都会有一个后台线程用于检查每个session是否失效,如果失效将会被清除。而值得注意的是,调用request.getSession()时会检查对应的session对象是否过期,如果过期将会创建一个新session对象。

如何解决session存放在后端,内存溢出,或者后台多进程间内存不共享问题。

可以使用redis,重新开一个进程,将服务器上的几个后台进程的session信息存放在redis中,既可以解决内存溢出的问题,又可以解决进场间通讯的问题,但是有可能会引发redis的其他问题,这又是另外的一个知识点了,不在本文的讨论范围。但是合理的后台编写,是可以解决这个问题的。

  Session的工作原理
    在服务器中系统会为每一个会话维护一个Session,不同的会话,对应不同的Session。
    系统如何区分Session?
    (1)写入Session列表
    当前应用中的Session是以Map形式管理的,这个Map成为Session的列表。该Map的key是一个32位长度的随机字符串,成为JSessionID,value为Session对象的引用。  在这里插入图片描述
  
    (2)服务器生成并发送Cookie
    在将Session信息写入Session列表后,系统自动将"JSessionID"作为name,这个32位长度随机字符串作为value,以Cookie的形式放在响应报头,并随着响应,将该Cookie发送到客户端。
    在这里插入图片描述
    (3)客户端接收并发送Cookie
    客户端接受到Cookie将其存入浏览器缓存,只要浏览器不关闭,浏览器缓存中的Cookie就不会消失。
    当用户调教第二次请求时,会将缓存的Cookie,伴随着请求的头部信息,一块发送到服务端。
    在这里插入图片描述
    (4)从Session列表中
    服务端从请求中读取到客户端发送过来的Cookie,并根据Cookie中的JSessionID的值,从Map中查找相应的key对应的value,即Session对象,对该Session对象的域属性空间进行读写操作。
    5.Session的失效
    在web.xm中可以通过标签设置超时时间,默认30分钟。
    需要强调的是:
    时间并不是从Session被创建开始计时的生命周期时长,而是从最后一次访问开始计时。

    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>

快速入门:
    获取HttpSession对象:
    HttpSession session = request.getSession();
    使用HttpSession对象:
    Object getAttribute(String name)
    void setAttribute(String name, Object value)
    void removeAttribute(String name)

原理
    Session的实现是依赖于Cookie的。

细节:

    当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
        默认情况下。不是。
        如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
        Cookie c = new Cookie("JSESSIONID",session.getId());
        c.setMaxAge(60*60);
        response.addCookie(c);

    客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
        不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作
            session的钝化:
                在服务器正常关闭之前,将session对象系列化到硬盘上
            session的活化:
                在服务器启动后,将session文件转化为内存中的session对象即可。

    session什么时候被销毁?
        服务器关闭
        session对象调用invalidate() 。
        session默认失效时间 30分钟
        选择性配置修改

        30

session的特点
    session用于存储一次会话的多次请求的数据,存在服务器端
    session可以存储任意类型,任意大小的数据
    session与Cookie的区别:
        session存储数据在服务器端,Cookie在客户端
        session没有数据大小限制,Cookie有
        session数据安全,Cookie相对于不安全

2.输入网址,敲击回车后,都发生了什么

2.1DNS是什么意思,有什么作用

      DNS是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。简单的讲DNS就是翻译官,就像把http://www.baidu.com翻译成220.181.111.188让机器理解。

DNS是用来做域名解析的,它会在你上网输入网址后,把它转换成IP,然后去访问对方服务器,没有它,你想上百度就要记住百度的IP,上163就要记住163的IP,有了DNS的处理,你只需要记住对应网站的域名–也就是网址就可以了。

DNS是一个按层次结构排列的分布式系统,由许多DNS服务器组成。DNS服务器是注册加入DNS的任何计算机。它具有域名和IP地址的索引,并且在请求时,它可以告诉您与域名关联的当前IP地址。

2.2.url解析

2.3、DNS查询

2.4、资源请求

图片.png

2.5、浏览器解析

图片.png 在这里插入图片描述

3.TCP/IP

3.1什么是TCP/IP

所谓协议(protocol),其实就是一个群体之间规定的规则,这个规则的目的是为了保证这个群体里面的人可以正常交流。还是回到计算机和网络的通信这边来举例。比如: 如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。

协议中存在各式各样的内容。从电缆的规格到 IP 地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及 Web 页面显示需要处理的步骤,等等。

像这样把与互联网相关联的协议集合起来总称为 TCP/IP。也有说法认为,TCP/IP 是指 TCP 和 IP 这两种协议。还有一种说法认为,TCP/IP 是在 IP 协议的通信过程中,使用到的协议族的统称。

图片.png

3.2为什么不能只有一个协议?

当我们知道TCP/IP是一个协议群的时候,我想有些人会有这样一个疑问。为什么要有这么多的协议?如果是关于通信的话,为什么我们不能用一个比较全的协议,这样不是更简单?

对于这个问题我想说:多不等于复杂,少不等于简单。有时候可能恰恰相反。

对于上面那句话的解释和对“为什么不能只有一个协议? ”问题的回答我想分两个方面回答:

(一)

对于通信,我们的客观世界本身是有所区分的。举个例子,我们要将信息发给其他人,对于我们来说,就是我们电脑的消息转移到其他人的电脑上,至于怎么完成这件事的放大,我们一概不知。可是有一点我们是可以明白的。就是,我们电脑里的东西不可能如隔空取物一般的到人家的电脑里,肯定是根据什么什么东西传输过去的。

其实,通过为了达成我们所描绘的文件传输,其实需要线缆、无线信号和每个电脑是具有的唯一的地址等条件。我们看这些条件,就发现了这里面有很多东西是属于不同类别的,有的是物体,比如线缆,有的是无线的,比如无线电。如果我们以这个思路将我们的协议分为几个层面,让每个层面有专门的协议去负责,那么我们既可以做到详细和完整,我们还可减轻工作量,如我们要修改协议,我们不需要将所以的协议都改,只需要修改我们需要的部分就好了。

(二)

第二个原因更加直白:没有人能够全面掌握互联网中的传输状况

在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉很粗略的传输路线。

这种机制称为路由选择(routing),有点像快递公司的送货过程。想要寄快递的人,只要将自己的货物送到集散中心,就可以知道快递公司是否肯收件发货,该快递公司的集散中心检查货物的送达地址,明确下站该送往哪个区域的集散中心。接着,那个区域的集散中心自会判断是否能送到对方的家中。我们是想通过这个比喻说明,无论哪台计算机、哪台网络设备,它们都无法全面掌握互联网中的细节。

就是因为没有人能知道互联网的信息传输的所有细节,那么我们就无法只用一个协议去将它的一切都包括起来。我们将协议根据一个思路进行分组和切割,让负责这一块的人来了解这一块的协议,这种分工协作更专业也更加科学。

3.3TCP/IP的分层

对于,协议分层,TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。

TCP/IP 协议族各层的作用如下。

应用层

应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(FileTransfer Protocol,文件传输协议)和 DNS(Domain Name System,域名系统)服务就是其中两类。HTTP 协议也处于该层。

传输层

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission ControlProtocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。

网络层(又名网络互连层)

网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

链路层(又名数据链路层,网络接口层)

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

3.4·了解主要的一些协议

(一).IP协议

按层次分,IP(Internet Protocol)网际协议位于网络层。InternetProtocol 这个名称可能听起来有点夸张,但事实正是如此,因为几乎所有使用网络的系统都会用到 IP 协议。TCP/IP 协议族中的 IP 指的就是网际协议,协议名称中占据了一半位置,其重要性可见一斑。可能有人会把“IP”和“IP 地址”搞混,“IP”其实是一种协议的名称。

IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC地址(Media Access Control Address)。

IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定

地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC地址基本上不会更改。

使用 ARP 协议凭借 MAC 地址进行通信

IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC地址来搜索下一个中转目标。这时,会采用 ARP 协议(AddressResolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。

(二)·TCP协议

按层次分,TCP 位于传输层,提供可靠的字节流服务。

所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

确保数据能到达目标

为了准确无误地将数据送达目标处,TCP 协议采用了三次握手(three-way handshaking)策略。用 TCP 协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。21握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement)。

发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。

若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。

注意的是:除了上述三次握手,TCP 协议还有其他各种手段来保证通信的可靠

性。

(三)·DNS协议

DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。

计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。比如www.badidu.com。

用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP地址访问。因为与 IP 地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。

但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。

为了解决上述的问题,DNS 服务应运而生。DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。

3.5·协议之间的关系

4.Http和Https

1.什么是协议?

网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。

2.HTTP协议是什么?

HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。

3.HTTP原理

HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件,、图片文件, 查询结果等。

HTTP协议一般用于B/S架构()。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

我们以访问百度为例:

访问百度流程

4.HTTP特点

http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。

5.URI和URL的区别

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

URI:Uniform Resource Identifier 统一资源标识符
URL:Uniform Resource Location 统一资源定位符

URI 是用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么。

URL 则是用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL。

6.HTTP报文组成

请求报文构成

请求行:包括请求方法、URL、协议/版本
请求头(Request Header)
请求正文

请求报文组成 响应报文构成

状态行
响应头
响应正文

响应报文组成

7.常见请求方法

GET:请求指定的页面信息,并返回实体主体。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。

get请求

GET请求

post请求

POST请求

post和get的区别:

都包含请求头请求行,post多了请求body。
get多用来查询,请求参数放在url中,不会对服务器上的内容产生作用。post用来提交,如把账号密码放入body中。
GET是直接添加到URL后面的,直接就可以在URL中看到内容,而POST是放在报文内部的,用户无法直接看到。
GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST没有。

8.响应状态码

访问一个网页时,浏览器会向web服务器发出请求。此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。

状态码分类:

1XX- 信息型,服务器收到请求,需要请求者继续操作。
2XX- 成功型,请求成功收到,理解并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器在处理请求的过程中发生了错误。

常见状态码:

200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

9.为什么要用https?

实际使用中,绝大说的网站现在都采用的是https协议,这也是未来互联网发展的趋势。下面是通过wireshark抓取的一个博客网站的登录请求过程。

博客登录抓包

可以看到访问的账号密码都是明文传输, 这样客户端发出的请求很容易被不法分子截取利用,因此,HTTP协议不适合传输一些敏感信息,比如:各种账号、密码等信息,使用http协议传输隐私信息非常不安全。

一般http中存在如下问题:

请求信息明文传输,容易被窃听截取。
数据的完整性未校验,容易被篡改
没有验证对方身份,存在冒充危险

10.什么是HTTPS?

为了解决上述HTTP存在的问题,就用到了HTTPS。

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

那么SSL又是什么?

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

SSL发展史(互联网加密通信)

1994年NetSpace公司设计SSL协议(Secure Sockets Layout)1.0版本,但未发布。
1995年NetSpace发布SSL/2.0版本,很快发现有严重漏洞
1996年发布SSL/3.0版本,得到大规模应用
1999年,发布了SSL升级版TLS/1.0版本,目前应用最广泛的版本
2006年和2008年,发布了TLS/1.1版本和TLS/1.2版本

11.浏览器在使用HTTPS传输数据的流程是什么?

HTTPS数据传输流程

首先客户端通过URL访问服务器建立SSL连接。
服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
服务器利用自己的私钥解密出会话密钥。
服务器利用会话密钥加密与客户端之间的通信。

12.HTTPS的缺点

HTTPS协议多次握手,导致页面的加载时间延长近50%;
HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
申请SSL证书需要钱,功能越强大的证书费用越高。
SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。

13.总结HTTPS和HTTP的区别

HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
http和https使用连接方式不同,默认端口也不一样,http是80,https是443

5.ASCII、Unicode和UTF-8 之间的关系

1. ASCII

ASCII 只有127个字符,表示英文字母的大小写、数字和一些符号,但由于其他语言用ASCII 编码表示字节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国定制了GB2312编码格式,相同的,其他国家的语言也有属于自己的编码格式

2. Unicode

由于每个国家的语言都有属于自己的编码格式,在多语言编辑文本中会出现乱码,这样Unicode应运而生,Unicode就是将这些语言统一到一套编码格式中,通常两个字节表示一个字符,而ASCII是一个字节表示一个字符,这样如果你编译的文本是全英文的,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

Unicode将各国文字统一编码。所以Unicode编码可以看做是ASIIC的扩展。

3. UTF-8

为了解决上述问题,又出现了把Unicode编码转化为“可变长编码”UTF-8编码,UTF-8编码将Unicode字符按数字大小编码为1-6个字节,英文字母被编码成一个字节,常用汉字被编码成三个字节,如果你编译的文本是纯英文的,那么用UTF-8就会非常节省空间,并且ASCII码也是UTF-8的一部分。

UTF-8编码可以理解成Unicode编码的一种升级,为什么要升级呢?为了节省存储空间。

ASIIC编码一共128个,所以1个字节就可以搞定,Unicode编码通常是2个字节。

例如:A的表示

ASIIC 01000001 Unicode 00000000 01000001

可以想象,如果是纯英文的文章用Unicode编码,会浪费很多字节的存储空间。为了解决这个问题,就把Unicode编码升级成了可变长度的编码也就是UTF-8编码,在UTF-8编码中,数字字母都是一个字节,超过ASIIC码的部分用两个或者三个字节表示。举例:

字符 A 用三种编码存储:

Asiic 01000001 Unicode 00000000 01000001 UTF-8 01000001

4 三者之间的联系

搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:(1) 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。(2)用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。如下图(截取他人图片)   在这里插入图片描述    浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:   

6.F12中的network

F12那个network吗?js和xhr都是请求类型的过滤条件,js代表直接请求的js文件,xhr代表的是ajax请求

7.get与post的请求的区别

post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

post发送的数据更大(get有url长度限制)

型(get只能发送ASCII字符)

post比get慢

post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作

get请求的是静态资源,则会缓存,如果是数据,则不会缓存

8.持续更新中。。。

———————————————— csdn链接:blog.csdn.net/guoqi_666/a…