目录
访问一个网页时基于HTTP协议的,响应也是也基于HTTP协议的,那么什么是HTTP协议
一:什么是HTTP协议?
HTTP协议是基于应用层(TCP/IP四层模型第一层),用于服务器和浏览器之间的超文本传输协议,基于TCP协议的协议,用来规范网络世界的一种规则。
二:那么在访问一个网页的过程中发生了什么事?
- 浏览器在网址栏输入自己想要访问的服务器时,在应用层的DNS协议解析网址栏里面的内容找到对应的URL地址
- 在敲击回车后,首先连接到服务器,要通过传输层TCP协议三次握手来建立连接
那么这三次握手过程是怎样的?
第一次:
客户端发送给服务器请求连接 SYN=1 ACK=0 seq=x
第二次“
服务器收到客户端的连接请求 同意 连接返回一个 SYN=1 ACK=Q sep=y ack=x+1
第三次:
客户段收到来自服务器段的同意连接 返回一个 SYN=0 ACK=Q ack=y+1 seq=x+1的状态值
- 服务器同意连接之后,这时候浏览器就会发送一个HTTP请求的报文
那么这个请求报文中携带着什么呢?
1.第一行是包含了请求方法、URL
、协议版本;
2.接下来的多行都是请求首部 Header
,每个首部都有一个首部名称,以及对应的值。
3.一个空行用来分隔首部和内容主体 Body
4.最后是请求的内容主体(如果是get请求这部分在URL中)
- 服务器收到来自浏览器的请求报文,处理完这个请求报文后,会将处理结果放在响应报文中响应给浏览器
那么响应报文中携带着什么?
1.第一行 协议版本 状态码以及描述
2.接下来多行也是首部内容
3.一个空行分隔首部和内容主体
4.最后是响应的内容主体(这就是想给浏览器的东西)
- 浏览器收到来自服务器的响应报文后,解析后通过HTML呈现在给用户
- 断开连接听过四次挥手
那么在四次挥手中发生了什么?
第一次:
客户端向服务器发来想要断开的连接的请求 FIN=1 ACK=0 的状态
第二次:
服务器收到来自客户端的断开连接的请求,也表示同意断开 就会回应 FIN=1 ACK=1 此时属于半断开状态(因为服务器也有数据发给客户端)
第三次:
服务器想要客户端发起一个断开的请求
FIN=1 ACK=1 代表服务器向客户端发送的始数据已经已经发完
第四次:
客户端收到来自服务器的释放连接的请求后 告诉服务器 自己收到了
FIN=0 ACK=1
当然这是不安全的,在传输过程中可能会被人窃听到,非法的盗取资源,在这个报文中有人也能恶意修改报文,这就出现了HTTPS
三:什么是HTTPS?
首先他不是协议,它是在协议外面包裹一层安全套SSL让HTTP先和SSL通信然后再让SSL在和TCP通信
四:那么在HTTPS点击一个网页中发生了什么?
大体其实适合上面一样的,说说不一样的把
1.用户通过HTTPS访问一个服务器时候,服务器接收到浏览器的请求就会给浏览器返回 数字证书 颁发的机构 网址 公钥 证书的有效期等等(来证明你访问的服务器是一个官方的服务器)
2.浏览器接收到服务器的回应后判断,有问题报错,没问题就生成一个随机密钥,同时使用证书中的公钥 将加密的数据加密后发送给服务取
3.服务器收到浏览器的数据收,用自己的私钥解密,得到密钥,将响应的内容用密钥加密后发送给浏览器
4.浏览器则使用密钥解密,得到最终的网页内容。