关于网络通信协议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到底在哪层?
659 4
|
网络架构
OpenWRT使用wifidog实现强制认证的WIFI热点
首先安装wifidog到OpenWRT的路由器:   opkg update   opkg install wifidog    wifidog依赖下面这些模块: iptables-mod-extra iptables-mod-ipopt kmod-ipt-nat iptables-...
3196 0
Mac Source Tree拉代码报错,remote: CODING 提示: Authentication failed. remote: 认证失败,请确认您输入了正确的账号密码。 fatal...
Mac Source Tree拉代码报错,remote: CODING 提示: Authentication failed. remote: 认证失败,请确认您输入了正确的账号密码。 fatal...
2617 0
Mac Source Tree拉代码报错,remote: CODING 提示: Authentication failed. remote: 认证失败,请确认您输入了正确的账号密码。 fatal...
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
598 13
|
自然语言处理 Linux 芯片
实践经验分享:以太网MAC和PHY层问题的解决方案
实践经验分享:以太网MAC和PHY层问题的解决方案
|
安全 Linux 网络安全
Linux 开放的端口太多了?教你一招找出所有开放的端口,然后直接干掉!
在 Linux 系统中,端口管理至关重要。本文介绍了如何使用 `netstat`、`lsof` 和 `nmap` 等工具查找开放端口,并通过关闭相关服务、修改防火墙规则或禁用网络接口来关闭这些端口,以提高系统安全性。注意不要随意关闭重要端口,谨慎操作并备份数据。
1034 3
|
移动开发 JavaScript 前端开发
HTML5 Audio(音频)详解
HTML5 通过 `<audio>` 标签简化了网页音频嵌入。本文详细介绍其基本语法与常用属性(如 `controls`、`autoplay`),并通过示例代码展示如何使用 JavaScript 控制音频播放及处理音频事件。此外,还提供了关于浏览器兼容性、自适应设计及无障碍访问的注意事项,助您优化音频体验。
|
SQL 数据库
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
2006 1
|
编解码 开发框架
【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
1078 3
|
存储 网络协议 算法
UDP & TCP 超详解
本文详细介绍了UDP与TCP协议的相关知识。首先阐述了UDP协议结构,包括其报文格式、各字段含义及其CRC校验和机制。接着深入探讨了TCP协议,涵盖其协议结构、确认应答机制、超时重传策略、三次握手与四次挥手过程,以及滑动窗口、流量控制和拥塞控制等关键技术。最后分析了TCP在异常情况下的处理机制,如进程崩溃、主机关机、掉电和网线断开等情况。
942 6

热门文章

最新文章