zoukankan      html  css  js  c++  java
  • Java每日一面(Part1:计算机网络)[19/11/25]

    作者:晨钟暮鼓c
    个人微信公众号:程序猿的月光宝盒

    ## 1. HTTP相关[2]

    1.1Get请求和Post请求的区别

    从三个层面来回答:

    1.1.1 从HTTP报文层面:

    ​ Get请求将请求信息放在URL后面,请求信息和URL之间用问号(?)隔开,多个请求信息之间用&隔开,形式是键值对的形式,且有长度限制.

    ​ Post请求是放在报文体中,想获得请求信息必须请求报文,因此,安全性较Get要高一些,但是可以通过抓包工具获取信息,所以不是绝对安全,具体还要靠https,没有长度限制

    1.1.2 从数据库层面:

    ​ Get符合幂等性和安全性,Post不符合

    幂等性:

    ​ 对数据库的一次操作和多次操作获得的结果是一致的

    安全性:

    ​ 对数据库的操作没有改变数据库中的数据

    1.1.3 从其他层面上看

    ​ Get可以被缓存,被存储,会被保存在浏览器的浏览记录中,以Get方式发送的URL可以保存为浏览器书签,而post不行

    1.2 Cookie和Session的区别:

    ​ 两者产生的原因:HTTP的最大特点:无状态,每次登陆某网站都要不厌其烦输入帐号密码,对此,就产生的Cookie和Session.

    1.2.1 Cookie简介:

    ​ 是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端

    ​ 客户端再次请求的时候,会把Cookie回发

    ​ 服务器接收到后,会解析Cookie生成 与客户端相对应的内容

    1.2.1.1 Cookie的设置和发送过程

    图片

    1. 客户端发送http请求到服务端,

    2. 服务端发送http响应到客户端,其中包括了Set-Cookie头部

    3. 客户端发送http请求到服务端,包括了Cookie头部

    4. 服务器发送http相应到客户端


    1.2.2 Session简介

    服务端的机制,在服务端上保存信息

    解析客户端请求并操作Session id,按需保存状态信息

    1.2.2.1 Session的实现方式
    1.使用Cookie实现

    图片

    服务器给每个Session分配一个唯一的JSessionID,并通过Cookie发送给客户端,当客户端发送新的请求的时候,将在Cookie头中携带JSessionID,这样服务器就能找到相对应的Session

    2.使用URL回写实现

    ​ 指服务器在发送给浏览器的所有页面中都携带JSessionID的参数,这样客户端点击任何一个连接都会把JSessionID的值传给服务端

    1.2.3 Cookie和Session的区别

    1.Cookie数据存放在浏览器,Session存放在服务器

    2.Session相对Cookie安全

    3.若考虑服务器负担,应当使用Cookie


    1.3 HTTP和HTTPS的区别

    1.3.1 HTTPS简介

    图片

    是一个以安全通行为目的的传输协议,是一个安全版的Http

    1.3.2 SSL(Security Sockets Layer,安全套接层)

    1.为网络通信提供安全及数据完整性的一种安全协议

    2.是操作系统对外提供的API,SSL3.0后改名为TLS

    那么它如何保护安全及数据完整性?

    ​ 采用身份验证数据加密保证网络通信的安全和数据的完整性

    1.3.3加密方式

    1.对称加密:

    ​ 加密和解密都使用同一个秘钥,性能较高,安全性相对不强

    2.非对称加密:

    ​ 加密和解密使用的秘钥都是不同的,分别称为公钥和私钥,性能较低,安全性超强

    3.哈希算法:

    ​ 将任意长度的信息转换为固定长度的值,算法不可逆(常见的MD5算法)

    4.数字签名:

    ​ 证明某个消息或者文件是从某人发出/认同的

    1.3.4Https数据传输流程

    1.浏览器将支持的加密算法信息发送给服务器

    2.服务器选择一套浏览器支持的加密算法,以证书的形式回发给浏览器

    3.浏览器验证证书的合法性,并结合证书公钥加密信息发送给服务器

    4.服务器使用私钥解密信息,验证哈希,加密响应信息回发浏览器

    5.浏览器解密响应信息,并对信息进行验证,之后进行加密交互数据

    1.3.5 HTTP和HTTPS的区别

    1.HTTPS需要到CA申请证书,HTTP不需要

    2.HTTPS密文传输,HTTP明文传输

    3.连接方式不同,HTTPS默认使用443端口,http使用80端口

    4.HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全

    1.3.6HTTPS真的安全吗

    未必

    1.浏览器默认填充http://,请求需要进行跳转,有被劫持的风险

    2.可以使用HSTS(HTTP Strict Transport Security)优化

    以上,计算机网络部分结束

  • 相关阅读:
    Notepad++使用-如何导出/导入配置文件
    浏览器清除页面JS文件缓存的方法
    如何搭建一个简易的Web框架
    Visual Studio Code插件Code Runner中文乱码问题
    【笔记】做一个winform时遇到的坑
    【笔记】使用腾讯地图坐标转换
    使用js检测用户是否在用微信浏览器浏览网站
    phonegap+百度地图导航(JS版)
    浮躁的人
    【笔记】自动生成一个不重复的字符串
  • 原文地址:https://www.cnblogs.com/jsccc520/p/11929818.html
Copyright © 2011-2022 走看看