作者:晨钟暮鼓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)优化

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

Java每日一面(Part1:计算机网络)[19/11/25]的更多相关文章

  1. Java每日一面(Part1:计算机网络)[19/11/13]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[1] 1.1 HTTP简介 ​ HTTP协议,即超文本传输协议,属于应用层的协议,他是基于请求和响应模式的无状态的 应用层协议. ...

  2. Java每日一面(Part1:计算机网络)[19/11/02]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.TCP的滑动窗口 1.1 RTT和RTO的区别 ​ RTT:发送一个数据包到收到对应的ACK,所花费的时间 ​ RTO:重传时间间隔,TCP在发 ...

  3. Java每日一面(Part1:计算机网络)[19/10/21]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.UDP简介 1.1UDP报文结构: ​ Source Port:源端口 Destination Port:目标端口 Length:数据包长度 C ...

  4. Java每日一面(Part1:计算机网络)[19/10/14]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.1 说一说TCP的四次挥手 ​ "挥手",即终止TCP连接,断开一个TCP连接池. ​ 需要客户端和服务端总共发出四个包,以 ...

  5. Java每日一面(Part1:计算机网络)[19/10/13]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.说说TCP三次握手 1.0 在此之前,什么是TCP? ​ TCP(传输控制协议) ​ 1.面向连接的,可靠的,基于字节流的传输层通信协议 ​ 2. ...

  6. Java每日一面(Part2数据库)[19/11/28]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.如何设计一个关系型数据库 如上图,首先划分成两大部分: ​ 1.存储部分:类似一个文件系统,把数据存储到一个持久化设备中,如机械硬盘,固态等 ​ ...

  7. 【Java每日一题】20161018

    20161017问题解析请点击今日问题下方的"[Java每日一题]20161018"查看 package Oct2016; public class Ques1018 { publ ...

  8. Java Web学习总结(19)——web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  9. 【Java每日一题】20170106

    20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

随机推荐

  1. Ribbon - Customizing the Ribbon Client

    自定义Ribbon算法 自定义Ribbon 官网文档链接    Ribbon github源码地址 <!--ribbon配置--> <dependency> <group ...

  2. Easy Poi入门

    最近有一个需求,就是把excel中的内容,解析成Json对象格式的文件输出. 然后就上网找了一波资料,大神们都说用POI来做.但是我看了一下POI的解析过程,但是为了秉着高效的原则,花最少的时间去实现 ...

  3. JAVA nio 简单使用

    nio 模拟客户端和服务器互相通讯--传输一个int值,并且不断的+1: 服务器,单线程 public class Server { public static void main(String[] ...

  4. 用Wireshark抓包分析请求

    前言 有些封装好的API把错误都屏蔽掉,直接返回某一个不明确的具体错误,让人感到困惑. //code in SDK read-only public static Data requestHandle ...

  5. 解决错误 系统找不到指定的批标签 make_command_arguments |hadoop windows出错

    问题:cmd命令行传参数出错 此文章 适用于 cmd命令行传参数出错 在windows 7下倒腾 Hadoop 时出现 The system cannot find the batch label s ...

  6. EFCore--->> CodeFirst (Vs2019 Core3.0)的简单使用

    直接上干货 EFCore--->> CodeFirst (Vs2019 Core3.0) 1: 安装下面3个对应的package(在Nuget控制台或者直接NuGet包查询点击下载,我喜欢 ...

  7. Lucas的数论:杜教筛,莫比乌斯反演

    Description: 求$\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} d(i \times j)$ $d(i)$表示$i$的约数个数和.$n \leq ...

  8. 大数据之路week01--自学之面向对象java(static,this指针(初稿))

    函数的重载 返回值不一样会报错 java中,如果自己定义了构造函数的话,它就不会给你默认一个无参函数 如果一个属性,只进行定义,不初始化,自动补0,如果是一个布尔属性,默认是false但是如果一个局部 ...

  9. Project Euler 56: Powerful digit sum

    一个古戈尔也就是\(10^{100}\)是一个天文数字,一后面跟着一百个零.\(100^{100}\)更是难以想像的大,一后面跟着两百个零.但是尽管这个数字很大,它们各位数字的和却只等于一.考虑两个自 ...

  10. Python3.x安装教程及环境变量配置

    python3.x安装 1.直接到官网https://www.python.org/下载,安装就可以了. 2.安装比较简单,点exe文件一直下一步就可以了(注意:安装的时候有个选择是否添加环境变量,这 ...