关于https协议和http,及浏览器http的三次握手和四次挥手

7 篇文章 0 订阅
7 篇文章 0 订阅

这个问题面试时问到的很多,本人之前面试的时候也被问过,网上也有很多的说明见解,今天趁着手头暂时空,便来做下记录
首先要搞清楚什么是http和https及它们两者的区别
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,其实也可以说是在HTTP协议的基础上添加了安全验证SSL
关于两者的介绍区别推荐一链接总结的比我好https://baijiahao.baidu.com/sid=1629455363537331894&wfr=spider&for=pc
当在浏览器输入url,向服务器发送请求,浏览器都做了些什么?

http事务:从浏览器传给服务器,服务器反回内容给浏览器,这一个完整的过程就叫做http的一个事务。

1、http请求阶段:

1)浏览器把url发送给DNS服务器;

2)DNS服务器会根据IP找到对应的服务器;

3)服务器接收到请求,客户端和服务器已经产生了连接;

2、http响应阶段:

4)服务器接收到请求后,根据路径,找到相应的项目;

5)服务器找到之后,服务器立即把一些响应信息放在响应头中,通过http发送给客户端,同时进行数据整理;

6)把整理出来的数据,通过http发送给客户端,直到客户端接收完毕;

3、浏览器渲染阶段:

7)浏览器拿到从服务器传输过来的数据文件;

8)先遍历HTML,形成DOM树;

9)代码从上到下解析,形成CSS树;

10)DOM树和CSS树重新组成render树;

11)浏览器进行描绘和渲染;

TCP的三次握手: TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的,先来了解一下TCP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议
TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.

其中,对于我们日常的分析有用的就是前面的五个字段。

它们的含义是:

SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
PSH表示有 DATA数据传输,
RST表示连接重置。

三次握手:浏览器在给服务器传输数据之前,有三次握手,握手成功之后,才可以传输数据

1、浏览器需要先发送SYN码,客户端请求和服务器建立连接;

2、服务器接收到SYN码,再发送给客户端SYN+ACK码,我可以建立连接;

3、客户端接收到ACK码,验证这个ACK是否正确,如果正确则客户端和服务端则建立起数据连接;双方的数据发送通道都将开启;
四次挥手:
1、当客户端无数据要传输了,会发送FIN码告诉服务器,我发送完毕了;

2、当服务端接收完毕后,告诉客户端ACK码,告诉客户端你可以把数据通道关闭了;

3、当服务器发送完毕之后,也会发送FIN码,告诉浏览器,数据发送完毕;

4、当客户端接收完毕 之后,同样发送ACK码,告诉服务器,数据接收完毕,你可以关闭;

三次握手和四次挥手的好处:确保数据的安全和完整
响应头:服务器会告诉浏览器数据的长度,浏览器数据长度和响应头数据长度相同,说明数据已经接收完毕了。
这里补充5种TCP连接中出现RST的情况。连接复位Reset a connection.
1 端口未打开
2 请求超时
3 提前关闭
4 在一个已关闭的socket上收到数据
5.用于拒绝一个非法连接

加上5种TCP连接中出现RST的情况的原文链接:https://blog.csdn.net/hzw05103020/article/details/50806759这篇文章个人感觉写的真的很详细了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值