1、转发与重定向的区别

  1. 转发是服务器请求资源,服务器直接访问目标地址url,把响应内容返回给浏览器。 重定向根据服务器返回的状态码重新请求地址。
  2. 转发是服务器行为,重定向是客户端行为。
  3. 转发显示的url不变而重定向显示新的url。
  4. 转发页面和转发到的页面共享request的信息,重定向不共享数据。
  5. 转发一般用于用户登录,根据角色转发到响应的模块, 重定向一般用于用户注销,跳转到其他的地方。

2、TCP三次握手

建立连接时进行TCP三次握手:

  • 客户端发送syn给服务端 连接请求。
  • 服务端发送syn ack 给客户端 授予连接。
  • 客户端发送ack给服务端 确认连接。

第一次客户端确认自己的发送正常,服务端确认自己的接收正常。

第二次服务端确认自己的发送,接收正常,客户端的发送正常。客户端确认自己的发送、接受正常,服务端的发送、接受正常。

第三次客户端服务端都确认双方的发送接收正常。

3、TCP四次挥手

  1. 客户端发送fin给服务端,关闭客户端到服务端的数据传送。
  2. 服务端发送ack 。
  3. 服务端发送fin,关闭服务端和客户端的连接。
  4. 客户端发送ack,连接关闭。

4、为什么是三次握手四次挥手

建立连接的时候,syn和ack可以同时发送,但是断开连接的时候fin和ack不能同时发送,因为server还未确认是否所有的报文都发送完了,所有的报文发送完了才能发送fin。所以建立连接需要三次握手,断开连接需要四次挥手。

5、TCP与UDP的区别

  1. TCP协议是有连接的,必须通过三次握手建立连接,UDP是无连接的。
  2. TCP保证数据按序到达,UDP不能保证。
  3. TCP是面向字节流的服务,UDP是面向报文的服务。

6、什么是Servlet

是http请求和程序之间的中间层。可以读取客户端请求数据,处理数据并生成结果。

7、拦截器与过滤器的区别

  1. 拦截器基于java反射实现,过滤器基于函数回调。
  2. 拦截器不依赖Servlet容器,过滤器依赖Servlet。

实现一个拦截器继承HandlerIntecepterAdapter。

实现过滤器继承Filter,在web.xml中进行配置。

8、HTTPS的过程

  1. 客户端发起https请求,建立连接,发送所支持的ssl/tls的版本,支持的加密套件等。
  2. 服务器收到请求后,会发送服务端的证书,选择的ssl/tls的版本,使用的加密套件。
  3. 客户端收到证书之后对证书进行验证,验证证书是否被篡改,验证证书的有效期。获取服务器的公钥。
  4. 使用服务器的公钥对一个随机数进行加密,传送给服务器。
  5. 然后使用这个随机数进行对称加密进行传输数据。

9、加密相关

  • 对称加密

    加解密使用同一套秘钥,常用的加密算法: AES、 DES。
  • 非对称加密

    指的是加解密使用不同的密匙,一个公钥一个私钥。公钥加密的信息只有私钥能解开,私钥加密的信息只有公钥能解开。
  • 摘要

    一段信息,经过摘要算法得到一串hash值。常用的摘要算法:MD5、SHA1、SHA256。
  • 数字签名

    先用摘要算法,获取内容的摘要,之后使用自己的私钥对摘要进行加密生成签名。
  • 数字证书

    证书有签发者、证书用途、公钥、加密算法、hash算法、到期时间等。数字证书会做一个数字签名防止证书被篡改。会用CA的私钥进行加密。CA的公钥是公开的,浏览器会缓存。

面试【JAVA基础】Web与网络的更多相关文章

  1. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  2. 黑马程序员:Java基础总结----GUI&网络&IO综合开发

    黑马程序员:Java基础总结 GUI&网络&IO综合开发   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络架构 C/S:Client/Server ...

  3. Java基础教程:网络编程

    Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...

  4. 细节!重点!易错点!--面试java基础篇(二)

    今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断 ...

  5. java基础学习总结——网络编程

    一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程.

  6. Java 基础高级2 网络编程

    1.协议的概念:通信双方事先约定好的通信规则 2七层网络通信协议:应用成,表示层,会话层,传输层,网络层,数据链路层 3.TCP/IP协议:点对点通信,三层握手,安全有保证 4.UDP协议;广播协议, ...

  7. JAVA基础知识之网络编程——-网络通信模型(IO模型)

    <Unix网络编程:卷1>中介绍了5中I/O模型,JAVA作为运行在宿主机上的程序,底层也遵循这5中I/O模型规则.这5中I/O模型分别是: 阻塞式IO 非阻塞式IO I/O复用 信号驱动 ...

  8. 黑马程序员——JAVA基础之正则表达式,网络爬虫

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式: 概念:用于操作字符串的符合一定规则的表达式 特点:用于一些特定的符号来表示一些代码 ...

  9. java基础九[网络与线程](阅读Head First Java记录)

    网络socket连接 Java API的网络功能包(java.net)已经将底层的TCP连接等都封装好了,我们只需要通过Socket对象来建立客户端和服务器的连接,然后客户端能向服务器发送请求,并接收 ...

  10. JAVA基础知识之网络编程——-使用Proxy创建连接

    在前面的HTTP网络通信的例子中,使用了URLConnection conn = url.openConnection();连接网络, 如果改用URLConnection conn = url.ope ...

随机推荐

  1. ios_UITextField右侧小圆叉

    inputTF.clearButtonMode = UITextFieldViewModeWhileEditing; 只有在输入了字符时才出现哦

  2. Dropwizard+jersey+MDC实现日志跟踪以及接口响应时间统计

    一.实现接口响应时间统计 1.1添加全局请求过滤器并注册 import org.apache.log4j.MDC; import org.slf4j.Logger; import org.slf4j. ...

  3. SpringBoot中使用AOP打印接口日志的方法(转载)

    前言 AOP 是 Aspect Oriented Program (面向切面)的编程的缩写.他是和面向对象编程相对的一个概念.在面向对象的编程中,我们倾向于采用封装.继承.多态等概念,将一个个的功能在 ...

  4. 职场老鸟,一文教你如何正确入门Python爬虫!

    爬虫现在的火热程度我就不说了,先说一下这门技术能干什么事儿,主要为以下三方面: 1.爬取数据,进行市场调研和商业分析 爬取知乎.豆瓣等网站的优质话题内容:抓取房产网站买卖信息,分析房价变化趋势.做不同 ...

  5. 畅购商城(八):微服务网关和JWT令牌

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...

  6. Spring JdbcTemplate中关于RowMapper的使用实例

    在spring boot 集成使用jdbctemplate,首先在pom文件中引入相应的依赖 <dependency> <groupId>org.springframework ...

  7. 最新版CentOS8系统安装和基本配置

    一.Centos8新版简介 Redhat公司在2019年5月推出了rhel8,年底推出了centos8,紧接着也会把相关的技术认证完全转换为新平台. 阿里云.华为云目前也已推出centos8的公共镜像 ...

  8. 2020-05-26:TCP四次挥手过程?

    福哥答案2020-05-26:

  9. 编译原理——求解First,Follow,Firstvt和Lastvt集合

    转载地址 http://dongtq2010.blog.163.com/blog/static/1750224812011520113332714/ 学编译原理的时候,印象最深的莫过于这四个集合了,而 ...

  10. 详解Java线程池的ctl(线程池控制状态)【源码分析】

    0.综述 ctl 是线程池源码中常常用到的一个变量. 它的主要作用是记录线程池的生命周期状态和当前工作的线程数. 作者通过巧妙的设计,将一个整型变量按二进制位分成两部分,分别表示两个信息. 1.声明与 ...