HTTP简介:

超文本传输协议HTTP主要特点:

支持客户机/服务器模式:浏览器作为客户端像服务器发送各种请求

简单快速:客户端只要传送请求方法参数和路径,规模小,通讯速度快

灵活:可以传输任意类型的对象

无连接:限制每次连接只处理一个客户端请求,即服务器收到客户请求处理完并收到客户应答后立即断开连接(http1.1后,默认使用长连接,服务器会等待一会儿再关闭连接,以保证连接特性)(下层协议对上层透明)

无状态:协议对于事务处理没有记忆能力,即需要之前数据时,数据需要重传

------------------------------------------------1.0-1.1升级长连接 2.0更合理,但是1.1够用而且升级成本太大

http请求结构:

请求头部后必须有空行,浏览器用空行表示头部传送结束

请求相应的步骤:

客户端连接到Web服务器

发送HTTP请求

服务器接受请求并返回HTTP相应

释放连接TCP连接

客户端浏览器解析HTML内容

面试问题:

在浏览器地址栏键入URL后,按下回车以后会经历什么?

1,DNS解析

2,TCP连接

3,发送HTTP请求

4,服务器处理请求并返回HTTP报文

5,浏览器解析渲染页面

6,连接结束

注:45顺序不分先后

HTTP状态码:

五种可能的取值

1XX:提示信息-表示请求已接收急需处理

2XX:成功-请求已经被成功接收、理解、接受

200-ok一切正常

3XX:重定向-要完成请求必须进行更进一步操作

4XX:客户端错误-请求有语法错误或者请求无法实现

401:请求未经授权

403:服务器拒绝服务

404:页面不存在(URL错误)

415:服务器无法处理请求附带的媒体格式(content-type格式有问题)

5XX:服务器端错误-服务器未能实现合法的请求

500:服务器错误(后台代码出现BUG)

503:服务器当前无法处理请求,一会儿可能恢复正常(服务器关闭维修or线程池满了...)

get请求和post请求的区别:

Http报文层面:get将请求放在URL中,POST放在报文体内(需要解析报文更安全一些,但因为是明文的抓包还是可以抓到)

数据库层面:get是幂等(对数据库的一次和多次请求不会改变数据内容)和安全的(不改变数据库内容),post不符合(会往数据库提交数据,每次请求都有可能不一样的结果,每次结果都会在之前的url上添加新资源)

其他层面:get可以被浏览器缓存被存储(基本都是只读请求),post不行(必须交由服务器处理)

Cookie和Session的区别:

Cookie:

服务器发给客户端的特殊信息,以文本形式存放在客户端,会被客户端发送相关请求时返回。服务器接收到后,会解析Cookie生成与客户端相应的内容

客户端-----Http请求------->服务器

服务器--------Http响应+set-Cookies---->客户端

客户端-------Http响应+Cookie----->服务器

服务器-------Http响应------>客户端

session:

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

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

实现方式:

使用Cookies

使用URL回写 服务器发送给客户端的所有URL都带有session_id参数,但是如果直接在浏览器输入url则无法使用该方法

总结(问题答案):

Cookie数据存放在客户的浏览器上,Session数据放在服务器上

Session相对于Cookie安全,

若考虑减轻服务器负担,应当使用Cookie,Session会比较消耗服务器资源

HTTP和HTTPS的区别:

HTTPS在HTTP层和TCP中间加入了一层SSL或者TLS层,(HTTP-PLUS)

SSL(Secure Sockets Layer 安全套接层)

1)验证用户和服务器,确保数据发送到正确的客户机和服务器;

2)加密数据以防止数据中途被窃取;

3)维护数据的完整性,确保数据在传输过程中不被改变。

4)是操作系统对外的api,SSL3.0后更名为TLS(Transport Layer Security 传输层安全)

加密方式:

对称加密:加密解密用同一个密钥

非对称加密:区块链技术 加密解密用一样的密钥

哈希算法:将任意长度的信息转换成某种任意长度的值,算法不可逆

数字签名:证明某个消息是某个人或者机构发出的

HTTPS使用证书并综合其他加密方式:

1,浏览器将支持的hash加密算法信息,随机数i发送给服务器

2,服务器选择一套浏览器支持的加密算法,以证书(验证身份的信息,证书的有效期,发布单位,证书所有者,证书公钥)的方式回发(和一个随机数j)给浏览器

3,浏览器验证证书合法性,接合证书公钥加密请求握手信息发给服务器

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

5,浏览器解密信息,判断服务器端发送过来的hash摘要是否和计算出的摘要一致,则握手结束后,用次加密方式发送数据

主要代码如下:

private 

HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。

总结(问题答案):

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

HTTPS密文传输,HTTP明文传输

连接方式不同,HTTPS默认使用443端口而HTTP使用80

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

HTTPS真的安全吗?

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

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

java 重定向到某个页面并弹出消息_java面试基础知识-网络基础知识(HTTP相关)相关推荐

  1. java 重定向到某个页面并弹出消息_Java开发面试宝典之网络通信篇

    Java开发过程中,面试时很重要的环节,想成为java开发工程师,需要面试环节,同时网络通信这一环节是很多java开发工程师必备技能,因此,拉勾IT课小编为大家提供网络通信篇面试 1.http协议的状 ...

  2. java 重定向到某个页面并弹出消息_前端面试100问之浏览器从输入URL到页面展示发生了什么...

    点击蓝字,关注我们 『浏览器从输入URL到页面渲染发生了什么』作为一个经典题目,在前端面试中高频出现,很多大厂的面试都会从这个面试题出发,考察候选人对知识的掌握程度,这其中涉及到了网络.操作系统.We ...

  3. JS实现复制页面文字弹出消息提醒/在sweetalert(swal)弹出窗插件中加入html代码

    简洁版: <script type="text/javascript">document.body.oncopy=function(){alert("复制成功 ...

  4. 用jQuery实现页面遮罩弹出框

    页面遮罩弹出框是最常见的一种情况,今天用jQuery实现页面遮罩弹出框,主要用的技术有JQuery,css和html, html代码如下: <div id="main"> ...

  5. asp.net 页面右下角弹出类似QQ或MSN的消息提示

    <HTML><HEAD> <TITLE>网页特效观止|JsCode.CN|---页面右下角弹出类似QQ或MSN的消息提示</TITLE> <SCR ...

  6. ie浏览器自动拦截html,win10系统下IE浏览器总是阻止页面窗口弹出怎么办

    不少朋友在使用ie浏览器浏览网页时都遇到过页面被阻止,弹不出来的问题,并且还会提示"Internet Explorer 已对此页面进行了修改,以帮助阻止跨站脚本.单击此处,获取详细信息... ...

  7. Web页面右下角弹出窗口示例代码

    Web页面右下角弹出窗口示例代码 声明:本代码来源于CSDN论坛,原帖为http://community.csdn.net/Expert/TopicView3.asp?id=5239784 版权归原作 ...

  8. 用js完成页面定时弹出广告

    用js完成页面定时弹出广告 第一步:在页面指定位置隐藏一个广告图片(使用display属性的none值) 第二步:确定事件(onload)并为其绑定一个函数 第三步:书写这个函数(设置一个显示图片的定 ...

  9. div alert html,基于jQuery的弹出消息插件 DivAlert之旅(一)

    想着自己学习Javascript,以及Ajax.jQuery等已经有一段时间了,不过貌似还没有写过一个插件,看到jQuery官网上那么多令人眼前一亮的插件,自己今天也动心说是不是能够写一个类似的插件来 ...

最新文章

  1. 【跃迁之路】【425天】刻意练习系列184—SQL(2018.04.06)
  2. 【怎样写代码】工厂三兄弟之工厂方法模式(三):解决方案 II
  3. 分布式系统数据一致性解决方案
  4. System.Object 基类
  5. swing JTable 更新数据
  6. asp.net webform 使用 html partial,ASP.NET Web Forms
  7. Duilib教程-自动布局1
  8. 怎么对Java服务进行调优的?
  9. Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析
  10. android crop 大图,com.android.camera.action.CROP 实现图片剪裁
  11. 多个线程访问统一对象的不同方法_分析| 你未必真的了解线程安全,别骗自己,来看下怎么实现线程安全...
  12. PyTorch 1.0 中文官方教程:使用PyTorch编写分布式应用程序
  13. 最小的语言符号是A词B语素C音素D义素,[转载]语言学概论试题 答案
  14. 企业上云,如何做好服务器的安全?
  15. 【note】Swift之闭包表达式的几种简化缩写形式
  16. Java进阶:SpringMVC数据请求全局过滤器
  17. UNIX 高级环境编程 第10章 信号
  18. 1.1、信息化和信息系统
  19. 物联网工程专业属于计算机类吗,物联网工程属于计算机类吗
  20. Windows---命令打开截图工具,.bat文件执行

热门文章

  1. STM32—LCD1602
  2. 计算机桌面组成部分教案,‘教案’计算机教案
  3. CAD教程:CAD建筑户型图纸还能这么画?
  4. 万商云集董事长王飞受邀出席“2018中国企业互联网CEO峰会”
  5. 《SOA 原理•方法•实践》作者毛新生先生签名售书活动
  6. 基于Python+django的宠物销售商城网站#毕业设计
  7. 暗黑2服务器Bnetd 延迟,暗黑破坏神2加不了别人服务器
  8. python文本自动伪原创_如何实现文章AI伪原创?
  9. js逻辑运算ab 与 a||b作为返回值时的规律
  10. 开源运维监控open-falcon的快速部署