HTTP/HTTPS/TCP原理

一、HTTP

1.1 网络分层请求

网络一共经历的大概以下几个分层,不同的网络介质消息需要通过转换。

在这里插入图片描述
1.2 OSI模型

在这里插入图片描述
1.3 一个HTTP的分层解析流程

  • 首先输入域名http://test.com
    步骤一

  • 客户端1
  • 应用层1:浏览器是不认识域名,只认识IP。浏览器会先查看是否有域名->IP的缓存,如果有则访问。如果没有则查看本地host文件,如果还是没有,就会发起一个DNS请求(传输层采用UDP)获取请求域名的IP地址。
  • 传输层1:传输层采用UDP协议,经过传输层,处理后会在DNS请求报文的基础上添加UDP的请求头。
  • 网络层1:在UDP请求报文的基础上加上IP请求头,通过ARP请求来解析出mac地址。
  • 数据链路层1:将网络层的mac地址拿到,加上对应mac地址,最后交给物理层的物理介质。

  • 路由器
  • 物理层:通过物理层进行连接。
  • 数据链路层:查看mac地址是否是自己,如果是则解析,不是则丢弃。
  • 网络层:将请求报文进行解析,首先通过运营商的DNS服务器,如果解析成功则层层返回到服务器1。

步骤二

  • 客户端1
  • 应用层1:拿到ip地址后,使用HTTP,传输一些TCP的参数,代表使用TCP协议。
  • 以上类似。
  • 服务端1
  • 传输层:通过运营商进行解析到达对端的服务器,进行层层解析,通过传输层的TCP请求80端口提交给应用程序。
  • 应用层:解析HTTP请求报文,构造HTTP响应报文,层层解析返回到客户端。

1.4 HTTP协议

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它是一种无状态协议。

1.4.1 HTTP请求报文格式

在这里插入图片描述

1.4.2 HTTP请求流程

  • 从URL解析出域名,检查域名有无对应的IP(通过浏览器DNS缓存和本地HOST),如果没有获取,则通过DNS服务器j进行获取。
  • 进行TCP的三次握手(HTTPS还需要进行TLS交换密钥的握手)
  • 浏览器发送HTTP请求
  • 浏览器拿到HTTP响应
  • 浏览器拿到响应报文, 渲染页面。
  • TCP四次挥手

1.5 TCP协议

在这里插入图片描述1.5.1 TCP的请求报文

在这里插入图片描述

Source port:源端口(基本上市随机生成)
Dest port:目的端口
Sequence number:序列号
Acknowledgment number:应答编号
Header length:首部的长度
Unused:保留字段
Unused右边:报文的标示,什么类型的报文(ACK为响应的报文,SYN为请求的报文,FIN为关闭连接的报文)
Receive Window:当前服务器可接收数据大小的窗口值
Urgent data pointer:紧急数据指针(有的话,应用程序会优先处理)
Options:可选参数
Data:数据

1.5.2 TCP的三次握手

在这里插入图片描述

  • 服务器首先会处于LISTEN状态,客户端发送SYN的请求报文,seq序列号x为随机生成。
  • 服务端收到SYN报文,会创建响应报文,回送一个ACK报文给客户端,通过ack=x+1来确认唯一的SYN报文,并且随机生成一个seq序列号y,回送一个SYN报文。
  • 客户端收到响应报文后,会进入到ESTABLISHED状态,发送一个ACK报文给服务端,ack=y+1来确认对应的连接。
  • 服务端收到ACK报文后,连接确认建立。

1.5.2 TCP的四次挥手

在这里插入图片描述

  • 客户端发送FIN的报文,seq=i
  • 服务端收到客户端的FIN报文,服务端回送ACK报文,ack=i+1
  • 服务端回送FIN报文,seq=j
  • 客户端回送收到服务端FIN报文,回送ACK报文,ack=j+1
  • 客户端进入TIME_WAIT,等待报文来回的时间(如果上一步丢包,服务端无法关闭连接,服务端会重试FIN报文请求,需要一个来回保证关闭连接。防止滞留在网络中的报文,对新建立的连接造成数据困扰)

二、HTTPS

在这里插入图片描述

应用层的HTTP不再和TCP进行交互,而是SSL安全套接层(TLS),安全套接层主要是对数据进行加密和解密

2.1 摘要、对称加密算法、非对称加密算法

  • 摘要算法: 哈希算法、散列算法,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串
    摘要结果是不可逆的,不能被还原为原数据。
  • 对称加密算法: 编解码使用相同的密钥的算法(如AES、RC4)
  • 非对称加密算法: 使用公钥加密,需要使用私钥解密。使用私钥加密,需要使用公钥解密。

2.2 安全层的握手

在这里插入图片描述

  • 客户端发送加密条件列表给服务端
  • 服务端选择最安全的加密套件,并发送公钥数字证书
  • 客户端生成随机密钥,并用公钥进行加密,并发送给服务端
  • 服务端用私钥解密,获取密钥
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值