目录
Web基础知识
我们常见的网络架构分为CS(Client/Server)、BS(Browser/Server)架构,我们可以简单的理解为,日常用的APP是CS架构,而我们使用浏览器所浏览的网页系统是BS架构。两者之间更详细的差别我们可以参考:https://zhidao.baidu.com/question/851994.html
我们今天的主题Tomcat就是Server端的一个软件,我们要向实现应用肯定是需要进行资源传输的,在我们的BS端中可以被浏览器解析的数据只能是静态资源(HTML、SSS、JS、img),而我们的动态资源(servlet/jsp、jsp、asp...)是需要先在服务端转换为静态资源后才可以传给浏览器的。进行资源的传输我们就需要进行网络通信,我们网络通信的三要素就是:ip、端口、传输协议,传输协议主要是规定资源的传输方式,有tcp(经过三次握手、较为安全但是速度慢)、udp(不需要握手,速度快但是不够安全)。这两个协议是底层的协议,我们常见的http协议就是基于tcp、ip协议的,而https协议又可以简单的理解为http协议的升级版,他基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护。
-
三次握手与四次挥手
TCP 报文格式
![](https://i-blog.csdnimg.cn/blog_migrate/c1e167cf63dcb04806a573675e52e9c2.png)
TCP报文格式中我们在三次握手中常用到的是序号seq、ack、以及在标志位中的用于标识请求建立连接的的SYN,标识连接有效的ACK、以及在四次握手中用得到的FIN,用来标识释放一个连接。我们通过握手来确保通信的建立与关闭,在这个过程中个人认为标志位中的作用是用来说明我是干什么的(SYN、FIN的作用),以及你有什么能干有什么不能干(seq/ack基于对方的计算都是只有在标志位中ACK的值有效时才能进行)。TCP要进行三次握手是为了防止服务器端开启一些无用的连接增加服务器开销以及防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。完成三次握手后我们就可以进行数据的传送了,传送完之后可以由客户端或是服务端主动提出关闭连接的请求:
在挥手中我们我们是四次,而握手的时候我们是三次,自己的理解是这样的:握手我们的目的主要是在服务端与客户端之间建立一个连接,这时候在我们第二次握手的时候服务端就可以明确的告诉客户端我收到了你的请求你的请求是有效的(ACK)、我也要同你建立连接(SYN),这是一步完成的,这就像你爱他你就同意他,你不需要考虑什么。但是我们在挥手的时候ACK、与FIN却是分开的,先明确的告诉你我知道了,但是我这里还没有准备好,准备好了之后就通过FIN告诉对方,我已经准备好了,我们分手吧!在TIME—WAIT阶段我们有2MSL的等待,其中MSL是一段TCP报文在传输过程中的最大生命周期。在上面我们的计算中经常有用到“+1”,在实际中并不一定是1,这里只是为了方便介绍。有关三次握手四次挥手的内容自己也是借鉴于一片文章的,讲的很好:https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
-
https加密原理
http的版本有这样的一个发展历程,里面我们可以对比一下,1.1与2,这两个在后面有关tomcat中也会有出现:
在http2.0实现了多路复用,也就是说不需要每次的数据请求都三次握手建立四次挥手释放,而是这个连接在一段时间内是有效的,多个stream共享一个tcp连接。http协议是无状态、无连接(1.1以及之前)、基于请求/相应的策略、数据传输是明文的传输,不会对通信的对方进行确认,无法保证通信的完整性,当然相比于https他也是简单高效的。http 的无状态也就是说协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作。对于无状态连接我们可以采用:Cookie/Session技术、以及1.1版本之后的持久来接技术。
Tomcat核心原理