文章目录
http请求相关的过程
https://m.php.cn/faq/417099.html
tcp和udp的区别,为什么tcp更可靠,tcp一定就不会丢包吗?
1、连接方面区别
TCP面向连接
UDP是无连接的
2、安全方面的区别
TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。
UDP尽最大努力交付,即不保证可靠交付。
3、传输效率的区别
TCP传输效率相对较低。
UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。
4、连接对象数量的区别
TCP连接只能是点到点、一对一的。
UDP支持一对一,一对多,多对一和多对多的交互通信。
5、UDP是面向报文的,对上层交下来的报文,添加首部之后就交付给IP层。
TCP是面向字节流的。
6、UDP没有拥塞控制,TCP有。
TCP可靠传输的实现:滑动窗口、超时重传、选择确认。
tcp在网络状况不好的情况下是可能丢包的。
服务端发送 FIN(第二次 FIN) 报文前要等待多长时间
等数据处理完就会发送 FIN 报文了
是网络层的数据处理完,还是应用层的数据处理完呢?
(看具体情况,如果是 HTTP 请求的话就是应用层数据处理完;如果是基于 TCP 编码的话就是传输层数据处理完
https建立连接过程
SSL协议通信过程
(1) 浏览器发送一个连接请求给服务器;服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息返回客户端;
(2) 客户端浏览器检查服务器传送到CA证书是否由自己信赖的CA中心签发。若是,执行4步;否则,给客户一个警告信息:询问是否继续访问。
(3) 客户端浏览器比较证书里的信息,如证书有效期、服务器域名和公钥S_PK,与服务器传回的信息是否一致,如果一致,则浏览器完成对服务器的身份认证。
(4) 服务器要求客户端发送客户端证书(包含客户端公钥C_PuKey)、支持的对称加密方案及其他相关信息。收到后,服务器进行相同的身份认证,若没有通过验证,则拒绝连接;
(5) 服务器根据客户端浏览器发送到密码种类,选择一种加密程度最高的方案,用客户端公钥C_PuKey加密后通知到浏览器;
(6) 客户端通过私钥C_PrKey解密后,得知服务器选择的加密方案,并选择一个通话密钥key(即对称加密的key),接着用服务器公钥S_PuKey加密后发送给服务器;
(7) 服务器接收到的浏览器传送到消息,用私钥S_PrKey解密,获得通话密钥key。
(8) 接下来的数据传输都使用该对称密钥key进行加密。
上面所述的是双向认证 SSL 协议的具体通讯过程,服务器和用户双方必须都有证书。
由此可见,SSL协议是通过非对称密钥机制保证双方身份认证,并完成建立连接,在实际数据通信时通过对称密钥机制保障数据安全性
为什么使用对称加密 对称加密和非对称加密的优缺点
https://zhuanlan.zhihu.com/p/42516761
HTTP 和 HTTPS 的区别?
拥塞控制
网络带宽网速计算
实际下载速度=带宽/8。因为宽带带宽是以位(b)计算,而下载速度是以字节(B)计算,1字节(B)等于8位(b)
DNS解析原理,使用的底层协议
dns解析有两种 查询方式,分为递归查询和迭代查询。一般的 主机 向本地域名服务器的查询使用递归查询,本地域名服务器向根域名服务器查询使用迭代查询。它使用的是 UDP协议,原因是性能更好,查询时间更短,如果发生数据丢失,重传一个就好了,不需要建立连接
http使用的是tcp还是udp
http 底层用什么协议得分版本,http1.0和http2.0都是基于tcp;http3.0是基于udp的,利用介于传输层和应用层之间的一个协议QUIC协议保证可靠传输。
get与post请求的区别,post的安全性体现在那里,是否可以发现他的请求内容
- GET把 参数包含在URL中,POST通过request body传递参数
- GET请求会被 浏览器主动cache,而POST 不会,除非手动设置。
- GET产生 一个TCP 数据包;POST产生 两个T CP数据包。
- GET比POST更不安全,因为参数 直接暴露在URL上,所以不能用来传递敏感信息。
- GET请求只能进行 url编码,而POST支持 多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
- GET产生的URL地址可以被 Bookmark,而POST不可以
- GET在浏览器回退时是无害的,而POST会再次提交请求。
9 由于(主流) 浏览器的一些 限制,导致get请求所传输的数据长度和字符编码(ASCII)受到一些限制,但是post请求一般未对其进行限制,所以支持更多的编码和数据长度
post的安全性主要体现在上面的2,4,5,6点。可以通过抓包的形式获取到他的请求内容,不过,可能需要进行转码,解密。
TCP为什么要三次握手
TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。
如果采用两次的话,会出现下面这种情况。
比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;
于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。
传完东西后,断开。
结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。
2. 三次握手改成仅需要两次握手,死锁是可能发生
考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁