几个重要概念:
什么是超文本?
包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。又被称为网页,最常见的超文本格式是超文本标记语言html。
什么是URL?
统一资源定位符。唯一标识某个文档。由协议、主机和端口、文件名三部分组成。
什么是http?
HTTP(Hypertext Transfer Protocol)是一种用于在网络上进行数据通信的协议。它是Web应用中最为常用的协议之一,负责在客户端和服务器之间传输超文本文档。(由URL指示)
HTTP工作原理:
用户在浏览器点击url链接地址后,
1.浏览器分析超链接中的url地址
2.浏览器向DNS服务器请求解析域名所对应的IP地址
3.DNS将IP地址返回给浏览器
4.浏览器与服务器建立tcp连接(80端口)
5.浏览器向服务器发送HTTP请求报文
6.服务器返回给浏览器响应报文,将index.html文档发送给浏览器
7.浏览器渲染index.html中的内容,显示页面
8.用户超过keepalived的时间内没发送请求,连接断开
HTTP报文结构(主要内容):
请求报文:
method:获取网页信息的方法 GET POST
http version:http协议的版本
host:访问的url是什么
user-agent:发出请求的一方使用的浏览器是什么
connetion:close表示连接断开,超时 keep-alive 表示没有超时,连接没断开
Accpet:表示浏览器接收的数据类型,支持哪些类型或者格式的数据
Accept-Encoding:gzip,deflaue 接收的数据的编码,是否进行压缩
cookie:客户机访问服务器的时候,携带的数据,数据用于验证用户是否登录过,是老用户还是新用户
响应报文:
http协议:1.1
状态码:200 (正常访问)
data:日期
server:web服务器使用的是什么软件
Date :响应报文发送的日期
Last-Modified:网页数据上一次修改的时间,如果修改,状态码变为304
referer:从哪个网址跳转过来的
有哪些http的方法:
GET:请求web服务器给我们客户机某个内容
POST:请求web服务器给我们客户机某个内容
DELETE:请求web服务器删除某个内容
PUT:要求web服务器存储某个内容
状态码:
200 服务器正常发送了响应报文
304 服务器通过请求报文里的数据判断服务器的数据是否修改,没有修改的状态码就是304
301 永久重定向
302 临时重定向,从一个网站跳转到另一个网站
404 网页不存在
403 没有权限 forbidden
503 服务器暂时不可用,限制了资源的访问
问题:
GET和PSOT方法有什么区别?
GET方法是在URL里面传递参数,参数是明文,而且携带的参数有限,http的请求报文里的URL的字段的值是有限制的,不能携带过多的参数
POST方法 是在body里传递参数给服务器(经典应用是表单信息提交),可以携带非常多的数据
cookie和session有什么区别?
存储位置:Cookie存储在用户计算机上,Session存储在服务器上。
数据安全性:由于Cookie存储在用户计算机上,可能会被用户篡改或盗取。而Session数据存储在服务器上,相对更安全。
存储容量:Cookie的存储容量有限,通常为几KB。而Session可以存储更大量的数据。
生命周期:Cookie可以设置过期时间,可以在用户关闭浏览器后仍然存在。而Session通常在用户关闭浏览器或一定时间不活动后自动过期。
跨域支持:Cookie可以在同一域名下的不同页面之间共享。而Session默认情况下只能在同一个Web应用程序中共享。
http1.0跟2.0的区别?
2.0是二进制传输,安全性好,采用多路复用(并发,速度快),并支持头部信息压缩(减少带宽的浪费,提升传输速度,减少传输时间)
HTTPS是什么?
HTTPS(Hypertext Transfer Protocol Secure)是一种用于在计算机网络上安全传输数据的协议。它是基于HTTP协议的加密版本,通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来保护通信过程中的数据安全。在HTTP的基础上通过信息加密和身份认证保证了传输过程的安全。
好处:
1.数据传输加密
2.需要核实服务器身份
Linux中nginx实现HTTPS,需要ssl证书和对应的域名
HTTPS四次握手的过程:
-
客户端发送Client Hello请求:客户端通过向服务器发送一个Client Hello请求来启动握手过程。该请求包含了客户端支持的TLS版本、加密套件列表以及一个随机数作为种子。
-
服务器回应Server Hello和证书:服务器接收到客户端的Client Hello请求后,选择一个合适的TLS版本、加密套件,并生成自己的随机数作为种子。服务器将其响应返回给客户端,包括Server Hello消息、选定的TLS版本、加密套件、服务器证书以及另一个随机数。
-
客户端验证证书并生成密钥:客户端收到服务器的响应后,首先会对服务器的证书进行验证。这包括检查证书的有效性、签名是否可信等。如果验证通过,则客户端生成一个用于后续加密通信的预备主密钥(Pre-Master Secret)。客户端通过服务器的公钥加密该密钥,并将其发送给服务器。
-
服务器解密预备主密钥并生成加密通信所需信息:服务器收到客户端发送的预备主密钥后,使用自己的私钥进行解密,获取预备主密钥。客户端和服务器使用两个随机数和预备主密钥作为输入,通过一系列安全算法计算出最终的对称加密密钥(用于对称加密通信)以及其他加密和认证所需的参数。服务器将这些信息发送给客户端。