Tomcat原理:HTTP协议与HTTPS协议

一、URL统一资源定位符

在介绍HTTP协议与HTTPS协议之前,我们首先要了解统一资源定位符URL,用来表示从互联网上得到的资源位置和访问这些资源的方法。

(一)表示方法

URL分为以下几个部分:协议://主机地址:端口号//文件访问路径(项目名称+访问的数据)。

如下,我们启动一个servlet程序,来看一下URL表示:

http://localhost:8080/LoginServlet/login.html

从中我们可以知道采用的是http协议,localhost代表本机的IP地址,8080代表端口号,LoginServlet/login.html代表路径。

1、协议部分

协议部分确定了我们的浏览器怎样向浏览器发送请求,以及服务器应该怎样反馈我们的请求,除了HTTP协议以外还有FTP协议和DNS协议等。

2、主机地址部分

URL中的localhost代表的就是IP地址,也可以用127.0.0.1来代替。当然这个部分使用最多的还是域名的方式,比如www.baidu.com等等都属于域名。我们在计算机网络当中是通过IP地址来进行寻址的,那么就需要把域名解析成IP地址,解析的工具就是DNS服务器。

下面我们来仔细介绍一下:

(1)什么是计算机网络?

无论是一台手机还是一台电脑,如果想要上网,必不可少的步骤是需要连接路由器。而路由器及其下面绑定的设备就组成了一个小型局域网。路由器能够划分子网的IP地址。

同一个路由器下所连接的设备可以互相联系,如果两个小型局域网之间想要互发信息,就需要一个更大的路由器来连接,而这个更大的路由器又会对其子网进行划分,以此类推。

以国家地理行政划分为例,下面是路由器的层级结构图:

而搭建起整个国家体系的互联网是三家国企:联通、移动和电信

(2)互联网消息是如何进行传递的?

我们必须要知道数据data、目的IP、源IP,而互联网传递消息的本质就是数据在路由器不断地在网卡的物理地址(MAC地址)上来回跳转,而IP所起到的作用就是寻址。

所以一个完整的数据帧包括数据(data)、目的IP、源IP、目的MAC、源MAC这五个部分。而目的MAC和源MAC就是不断变化的路由器的网卡的地址。

假如我是一个来自河北的大学生,我要给我的吉林朋友发送消息,现在我的网卡的MAC地址就是源MAC地址,我所连接的路由器网卡的MAC地址就是目的MAC,接下来,我所连接的路由器网卡的MAC地址成为了源MAC,而它所连接的更大的路由器网卡的MAC地址就成为了目的MAC,以此类推。

(3)域名

像www.baidu.com这样的统一叫做域名,因为在绝大多数情况之下,我们很大可能不会记住这些服务器的IP地址,于是人们就找到了一种方便记忆的地址--域名。但域名只是域名,并不是服务器,那么通过域名是如何去访问网站的?

我们在上文中了解到:搭建起整个国家体系的互联网是三家国企:联通、移动和电信,他们创建了各自的DNS服务器,这个服务器的作用是将域名和地址进行转换,域名和IP的解析器 。

当我们在浏览器上首次输入www.baidu.com时,因为我们买的是移动的手机卡(办的是移动的网),那么我们的计算机当中默认数据访问地址就是移动的DNS服务器。

www.baidu.com就是数据(data),通过MAC地址的不断跳转,会跳转到DNS服务器当中,DNS服务器会将该域名比对解析出IP地址,此时,数据就会返回,我们再根据返回的IP地址访问百度。

3、端口部分

由于IP地址我们找到了主机,而电脑通常包含许多可以和网络通讯的软件,如tomcat、qq等,当数据传输过来时,具体要访问哪个软件呢,通过端口号可以访问到不同的进程(程序),而tomcat的端口号通常是8080。

下面是几个特殊常见的需要记忆的端口号:

  • 80:HTTP协议默认端口号(自动消失)
  • 443:HTTPS协议默认端口号
  • 8080:tomcat测试端口号

4、路径部分

路径部分的主要作用是起到资源定位的作用,定位相关的资源,以便于我们能够及时处理资源。

二、HTTP协议

HTTP协议是客户端浏览器和服务器之间所保持的一种协议。它是超文本传输协议,传输超级文本(HTML文本)。HTTP规定了Web(广域网)基本运作过程,以及浏览器和Web服务器之间的通信细节。HTTP规定Web的基本运作过程是基于客户/服务器的通信模式,客户端主动发起HTTP请求,服务器端主动接受HTTP请求,再返回响应的HTTP响应结果。

(一)请求

客户端向浏览器发出的请求,浏览器不会主动向客户端发送请求

1、请求方式

HTTP协议的请求方式有很多,在这里我们只介绍GET请求和POST请求。

(1)GET请求
  • 通过URL传递参数,URL与参数之间用?隔开,多个参数用&隔开,也是表单的默认提交方式。
  • GET传送的数据量较小,这主要是因为受到URL长度的限制。
  • GET会将数据显示到URL当中不安全。
  • 基于以上三个特点,GET一般用于直接获取数据,提高查询速度。
(2)POST请求

当我们把请求方式改为POST请求时,此时请求网址只包含URL,并不携带参数,所以POST相较于安全,注意只是相对安全,而不是绝对安全。

  • POST的数据在请求主体内,所以相比安全。
  • POST对上传数据的大小无限制。
  • POST适用于增删改操作。
  • POST请求可以做文件的上传和下载。

2、请求头

  • Accept-Encoding:gzip,deflate,br----浏览器所使用的语言
  • Host:www.baidu.com----远程主机
  • Cookie----cookie
  • User-Agent----浏览器类型

3、请求正文

即我们想要请求的信息。

(二)响应

1、响应状态行

  • 200:响应成功
  • 400:错误的请求,客户发送的HTTP请求不正确。
  • 404:文件不存在,访问的URL地址不对。
  • 405:服务器不支持客户的请求方式。
  • 500:服务器内部错误。

2、响应头

3、响应正文

即服务器给我们发来的数据。

HTTP协议本身并不安全,因为数据使用明码进行传输的。为解决这个问题,于是就有了相对安全的HTTPS协议。

三、HTTPS协议

HTTPS协议和HTTP协议一样,都是超文本传输协议,但是区别在于HTTPS协议增加了安全套接字(TSL/SSL),对数据进行了加密。

(一)加密模式

1、对称加密

对称加密产生的是秘钥,并且加密解密用的是同一个秘钥。

假如此时客户端有一份文件需要发送给服务器,首先这份文件会在客户端被秘钥进行加密,然后,解密后的文件会被发送给服务器,接着,服务器通过秘钥将这份加密文件进行解密。在这个过程中,客户端和服务器共享一份秘钥,那么这是如何共享的呢?

如果秘钥在网上传输,那么一定是不安全的。所以一般而言,我们会将秘钥拷贝到U盘上,进行手动传输。

2、非对称加密

非对称加密产生的是公钥和私钥,并且公钥加密的数据需要私钥解密,私钥加密的数据需要公钥解密。

而HTTP的加密模式是对称加密和非对称加密共同作用的方式。

首先,客户端发送请求之后,服务器会生成公钥和私钥,并进行响应,在响应过程中,会将公钥发送给客户端,客户端生成秘钥,随后客户端再次发出请求,将公钥加密后的秘钥传送到服务器,服务器接收到之后,用私钥解密出秘钥,这样,生在的过程中双方通过秘钥来进行数据的加密解密。我们发现,在这个过程中,第三方最多只能窥探到公钥和公钥加密后的秘钥,而无法窥探到私钥,也就无法解密出秘钥,那也就无法知道数据是怎样进行加密的。

在实际生活中,可能会有一些人自己仿写出一个假冒伪劣网站,例如淘宝,从而进行一些骗取财产等不法行为,而HTTPS协议中的数字证书可以解决这个问题。

当我们访问一个大型网站的时候,一定是证书有效的。

数字证书就是网站的身份证。当服务器端写出一个网站想要获取数字证书时,就需要向权威认证机构(CA组织) 进行认证,需要提供如下材料:

  • 公司的材料
  • money
  • 服务器公钥

认证成功之后,权威认证机构会颁发数字证书,包括公钥、发布证书的机构、公司信息和有效期等内容。

客户端发送请求,服务器相应的过程中会携带数字证书传送到客户端,而客户端通过向权威认证机构进行查询,如果不合法,打回,如果合法,取出公钥,加密秘钥,再将公钥加密后的秘钥传输给服务器,然后服务器进行解密。

这样一来,有了CA认证机构,就可以打击到那些假冒伪劣网站

四、Cookie与Session

HTTP协议本身是无状态的,不能保存每次提交的信息。如果客户端浏览器发来一个新的请求,服务器无法知道它是否与上次请求有联系。对于需要提交多次信息才能完成的操作,比如购物,就存在着问题。为了解决这个问题,于是就有了Cookie和Session。

(一)Cookie

1、什么是Cookie?

Cookie是客户端浏览器的解决方案,是服务器发送到用户浏览器并保存在本地的一小块信息,他会在浏览器下次向服务器发起请求时被携带并发送到服务器上。通常,它用于告知服务器端两个请求是否来自同一浏览器。

首先,客户端浏览器发起HTTP请求给服务器端,服务器端创建cookie对象,并通过response的方式将信息返回给浏览器,浏览器存储cookie信息。当再次发起请求时,请求当中会带着cookie信息。

2、Cookie的基本操作

3、Cookie的优缺点

(1)优点:
  • 可配置到期规则
  • 简单性;cookie是一种包含文本轻量结构,包含简单的键值对
  • 数据持久性:cookie默认在过期之前可以遗址保存在客户端浏览器上
(2)缺点:
  • 大小受限制:大多数浏览器对cookie的大小有限制,分别是4k和8k字节
  • 用户配置为禁用:有些用户禁用了浏览器或者客户端设备接收cookie的能力,因此限制了这一功能
  • 潜在的安全风险:cookie可能被篡改。

(二)Session

1、什么是Session?

session是服务器端解决方案,用于记录用户的状态。Session是指在一段时间之内,单个客户端与Web服务端的一连串的交互过程。

在一个Session中,客户可能会多次请求访问各种不同的服务器资源。

2、Session原理

服务器会为每一次会话分配一个Session对象。

同一浏览器发起的多次请求,同属于一次会话(Session)。

首次使用Session时,服务器会自动创建Session,并创建Cookie存储Session发送回客户端。

3、Session的使用

(1)获取Session

我们使用浏览器对网站进行访问,我们会发现打印

在浏览器当中会有:

当我们关闭浏览器,重新打开访问项目,我们会发现Session变了

(2)Session保存数据

setAttribute("key",value)保存数据到session中。

java 复制代码
session.setAttribute("key",value);//以键值对的形式存储在session当中
(3)Session获取数据

getAttribute("key")获取session中的数据。

java 复制代码
session.getAttribute("key");//通过String类型的key访问对Object类型的value
(4) Session移除数据

removeAttribute("key")从session中删除数据。

java 复制代码
session.removeAttribute("key");//通过key值删除session中的值

4、Session的生命周期

(1)开始:第一次使用到Session的请求产生则创建Session。

(2)结束:

  • 浏览器关闭
  • Session超时失效
  • 手动销毁失效
  • 服务器关闭
相关推荐
chian-ocean1 小时前
从零开始:Linux环境下如何制作静态库与动态库
linux·运维·服务器
Hacker_xingchen4 小时前
网络安全需要学多久才能入门?
网络·安全·web安全
重生之我在20年代敲代码9 小时前
【Linux第三弹】Linux基础指令 (下)
linux·运维·服务器
路溪非溪9 小时前
Linux中死锁问题的探讨
linux·运维·服务器
二进制杯莫停9 小时前
shell逐行读取文件 & 远程操作服务器
运维·服务器
中东大鹅9 小时前
Linux 的at定时任务
linux·服务器·网络
xyeternals10 小时前
【TCP/IP协议栈】1. TCP/IP协议栈概述(体系、四/五层模型、IP、MAC)
网络·tcp/ip·计算机网络
北冥有鱼被烹11 小时前
【微知】命令行如何对Centos关机?如何完全关机?(shutdown -h now、poweroff; halt、init 0)
linux·服务器·centos
^_^ 纵歌11 小时前
Ubuntu 22.04 启动登录页面显示 IP 地址
服务器·tcp/ip·ubuntu
程序员JerrySUN12 小时前
Yocto + 树莓派摄像头驱动完整指南
linux·运维·服务器·嵌入式硬件·物联网