关于网络通信协议HTTP、HTTPS、TCP、UDP

简介: 简单说,没有第三次握手有可能导致服务器收到过期连接请求,从而导致服务器一直等待客户端发送数据,造成资源的浪费。

一、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确保数据未被篡改

相关文章
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
808 4
Mac Source Tree拉代码报错,remote: CODING 提示: Authentication failed. remote: 认证失败,请确认您输入了正确的账号密码。 fatal...
Mac Source Tree拉代码报错,remote: CODING 提示: Authentication failed. remote: 认证失败,请确认您输入了正确的账号密码。 fatal...
2721 0
Mac Source Tree拉代码报错,remote: CODING 提示: Authentication failed. remote: 认证失败,请确认您输入了正确的账号密码。 fatal...
|
网络架构
OpenWRT使用wifidog实现强制认证的WIFI热点
首先安装wifidog到OpenWRT的路由器:   opkg update   opkg install wifidog    wifidog依赖下面这些模块: iptables-mod-extra iptables-mod-ipopt kmod-ipt-nat iptables-...
3370 0
|
9月前
|
人工智能 Java Go
2026年免费AI编程助手测评:通义灵码领衔,谁是国产开发者的最佳Copilot?
随着 Qwen 2.5-Coder 等开源模型的爆发,2026年 AI 编程工具已进入“百模大战”的深水区。本文基于代码生成准确率、中文语境理解能力及免费额度三大维度,对市场主流工具进行实测
|
人工智能 Java API
后端开发必看:零代码实现存量服务改造成MCP服务
本文介绍如何通过 **Nacos** 和 **Higress** 实现存量 Spring Boot 服务的零代码改造,使其支持 MCP 协议,供 AI Agent 调用。全程无需修改业务代码,仅通过配置完成服务注册、协议转换与工具映射,显著降低改造成本,提升服务的可集成性与智能化能力。
3676 1
|
自然语言处理 Linux 芯片
实践经验分享:以太网MAC和PHY层问题的解决方案
实践经验分享:以太网MAC和PHY层问题的解决方案
|
安全 Linux 网络安全
Linux 开放的端口太多了?教你一招找出所有开放的端口,然后直接干掉!
在 Linux 系统中,端口管理至关重要。本文介绍了如何使用 `netstat`、`lsof` 和 `nmap` 等工具查找开放端口,并通过关闭相关服务、修改防火墙规则或禁用网络接口来关闭这些端口,以提高系统安全性。注意不要随意关闭重要端口,谨慎操作并备份数据。
1273 3
|
网络协议 安全 容灾
哪些 DNS 服务器的响应速度快且稳定可靠?
哪些 DNS 服务器的响应速度快且稳定可靠?
48291 4

热门文章

最新文章