一、TCP和UDP的核心区别
1、TCP
(1)是面向连接的,通过3次握手建立连接、4次挥手断开连接,是可靠传输。
(2)TCP数据传输方式是面向字节流的
(3)TCP保证数据按序到达(序列号机制)
(4)TCP的通信模式仅支持点对点(一对一)
(5)TCP典型应用包括http、https、ftp、smtp、数据库连接等
2、UDP
(1)是无连接的,是不可靠传输。
(2)UDP数据传输是面向报文传输。
(3)UDP不保证报文到达的顺序(可乱序到达)
(4)UDP的通信模式支持一对一、一对多和多对多
(5)UDP典型应用包括DNS、视频会议、在线游戏、直播等
一句话总结,TCP是打电话,先拨通再说话;UDP是发短信,发出去就不管,效率高但并不保证接收。
二、TCP是如何保证可靠传输的
通过4大机制保证。
1、三次握手建立连接、四次挥手断开连接
客户端发起sync -> 服务端回复sync+ack ->客户端发送ack 连接建立。
(1) 为什么tcp是3次握手,2次行不行?
不行。
如果没有富贵论坛APP客户端第三次ack确认,服务器无法确认客户端发起的连接请求是新请求还是过期请求。比如,一个client发送sync连接请求A,但是请求A因为网络原因延迟了,此时client因为没有收到服务器的sync+ack回复,所以再次重试发起一个新的连接请求B,此时服务器收到B请求建立连接并完成数据传输,连接关闭。此时client延迟的A请求到达服务器,服务器会认为是一个新的请求,所以会一直等待客户端发数据,造成资源的浪费。
简单说,没有第三次握手有可能导致服务器收到过期连接请求,从而导致服务器一直等待客户端发送数据,造成资源的浪费。
(2)为什么tcp是4次挥手,3次行不行?
不行。
TCP是全双工的通信,client和server需要确认双方互相不再发送数据。如果是三次挥手,有可能导致连接提前关闭,导致部分数据丢失。
三、UDP如何实现可靠传输
1、加入序列号与ACK确认
2、超时重传
3、引入滑动窗口流量控制
四、TCP和UDP可以使用同一个端口吗?
可以。操作系统的一个通信端点定义:协议类型+IP+端口。所以TCP和UDP可以共用一个端口号。
五、HTTP1.0、1.1、2、3在TCP连接数上的区别
http底层通过tcp建立连接来通信。
1、http1.0默认非持久连接,每次http请求都会建立一个独立的tcp连接
2、http1.1默认持久连接,一个tcp连接上可以发送多个http请求,比如chrome、firefox等浏览器通常最多允许6个tcp连接,另外不同域名通常会建立不同的tcp连接
3、http2通过多路复用机制,可以同时传输多个请求
4、http3采用QUIC协议(UDP)
六、HTTPS请求原理
HTTPS在http协议基础上引入ssl/tls加密,通过身份认证、数据加密和数据完整性校验三大机制,确保客户端和服务器的通信安全。
https请求流程:
1、客户端发起https请求
2、服务端收到请求,会把自己的SSL/TLS证书发给客户端。
3、客户端拿到证书会校验合法性(包括是否CA签发、是否有效期、是否被吊销)
4、客户端生成一个随机密钥,通过服务端公钥加密,发送给服务端
5、服务端拿到数据,通过自己的私钥解密,拿到对称密钥
6、客户端与服务端通过对称密钥加密数据通信
7、https还通过消息认证码MAC确保数据未被篡改