TCP
初识TCP-单台服务器支持多少连接数
生产环境可能会报:Socket/File: Can’t open so many files 在性能测试过程中,经常会接触到链接数相关的问题,有一个问题曾经困扰我好长时间,那就是一台服务器最多能支持多少链接数呢? 有的朋友可能会说是65535,因为操作系统有65535个端口,那么这个答案准确吗? 首 ......
TCP和UDP协议的区别
1、TCP是面向连接的,而UDP是无连接的协议。2、TCP对于传输有用的数据非常可靠,因为它需要确认发送的信息,并且能重新发送丢失的数据包;UDP是一种不可靠的协议,数据包丢失,它不会请求重新传输,目标计算机会收到损坏的数据3、TCP速度较慢,但更健壮,因为TCP在传输数据之前建立连接,并确保数据包 ......
win10使用Docker Desktop启动mysql报错:Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306:
问题描述 今天上班用wind10电脑启动Docker Desktop使用MySQL,突然间报了一个错,错误如下: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0. ......
tcp/ip 面试问题总结
### tcp 三次握手为什么三次 典型场景: 1 客户端对服务器说: 大哥你好这是我的窗口大小,以及初始序号 2 服务器对客户端说: 好的老弟,这是我的窗口大小和初始序号 3 客户端对服务器说: 好的大哥 ......
网络编程 p4 TCP编程
# **TCP编程** - **基本介绍** 1. 基于客户端——服务端的网络通信; 2. 底层使用的是TCP/IP协议; 3. 应用场景举例:客户端发送数据,服务端接收并显示在控制台; 4. 基于Socket的TCP编程; - **示意图** ![](https://img2023.cnblogs ......
Nginx 代理 WebSocket 、TCP协议
Nginx 代理 WebSocket 什么是 WebSocketWebSocket 是一种网络传输协议,可在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。WebSocket 中的握手和 HTTP 中的握手过程兼容,且可以使用 HTTP 中的 Upgrade 协议头将连接从 HTTP ......
[linux]常见内核TCP参数描述与配置
## 前言 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),如果需要固化设置,则需要修改`/etc/sysctl.conf`(也可以在`/etc/sysctl.d`目录下新建conf文件) ......
增加 Windows Server 2022 上的 TCP 连接数 可以调整10000个连接, 增加UDP连接数 可以调整5000个 你可以通过修改注册表来实现。请按照以下步骤进行操作
增加 Windows Server 2022 上的 TCP 连接数,你可以通过修改注册表来实现。请按照以下步骤进行操作: 打开注册表编辑器:按下 Win + R 键,在运行框中输入 "regedit",然后点击 "确定"。 导航到以下注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\C ......
【网络】【TCP】没有 accept,能建立 TCP 连接吗?
1 前言 这节我们来看个问题,就是 有 accept,能建立 TCP 连接吗? 2 刨析 下面这个动图,是我们平时客户端和服务端建立连接时的代码流程。 对应的是下面一段简化过的服务端伪代码。 int main() { /*Step 1: 创建服务器端监听socket描述符listen_fd*/ li ......
【网络】【TCP】TCP 四次挥手,可以变成三次吗?
1 前言 这节我们来看个问题,就是 TCP 四次挥手,可以变成三次吗? 2 刨析 虽然我们在学习 TCP 挥手时,学到的是需要四次来完成 TCP 挥手,但是在一些情况下, TCP 四次挥手是可以变成 TCP 三次挥手的。 而且在用 wireshark 工具抓包的时候,我们也会常看到 TCP 挥手过程 ......
十九、TCP和UDP通信
1、QTcpServer tcp服务端的使用 (1)在pro文件中添加network模块 (2)定义槽函数,为QTcpServer对象的newConnection信号绑定槽函数,来监听客户端的新连接 (3)在槽函数中使用nextPendingConnection方法动态创建一个QTcpSocket对 ......
TCP的Keep-Alive机制:链接存在但是没有数据传输,内核怎么处理
服务端会定期发送**探测报文**来检测客户端的存活状态。 由三个内核参数控制: - 首次发送探测报文时间:`net.ipv4.tcp_keepalive_time`有报文传输时重置 - 探测报文的发送间隔:`net.ipv4.tcp_keepalive_intvl` - 探测报文的最大重试次数:`n ......
【网络】【TCP】TCP 和 UDP 可以使用同一个端口吗?
1 前言 这节我们来看个问题,就是 TCP 和 UDP 可以使用同一个端口吗? 关于端口的知识点,还是挺多可以讲的,比如还可以牵扯到这几个问题: 多个 TCP 服务进程可以同时绑定同一个端口吗? 重启 TCP 服务进程时,为什么会出现“Address in use”的报错信息?又该怎么避免? 客户端 ......
【网络】【TCP】服务端没有 listen,客户端发起连接建立,会发生什么?
1 前言 这节我们来看个问题,就是 服务端没有 listen,客户端发起连接建立,会发生什么? 为服务端没有调用 listen,客户端会 ping 不通服务器,如果你这么想那你就搞错了。 ping 使用的协议是 ICMP,属于网络层的事情,而问的方向是传输层的问题。 针对这个问题,服务端如果只 bi ......
TCP/IP 五层模型
TCP/IP 五层模型 从下到上依次是: 1)物理层:主要是指具体的物理媒介和物理设备 任务:物理层的主要功能是利用传输介质为数据链路层提供物理联接,负责数据流的物理传输工作(主要定义了系统的电气、机械、过程和功能标准。如:电压、物理数据速率、最大传输距离、物理联接器和其他的类似特性)。基本单位是比 ......
【网络】【TCP】TCP 协议有什么缺陷?
1 前言 这节我们来看个问题,就是 TCP 协议有什么缺陷? TCP 通过序列号、确认应答、超时重传、流量控制、拥塞控制等方式实现了可靠传输,看起来它很完美,事实真的是这样吗?TCP 就没什么缺陷吗? 所以,今天就跟大家聊聊,TCP 协议有哪些缺陷?主要有四个方面: 升级 TCP 的工作很困难; T ......
【网络】【TCP】TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?
1 前言 这节我们来看个问题,就是 TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗? 事实上,这两个完全是两样不同东西,实现的层面也不同: HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接; TCP 的 Keepalive,是由 ......
【网络】【TCP】如何基于 UDP 协议实现可靠传输?
1 前言 这节我们来看个问题,就是 TCP 协议有什么缺陷? 很多同学第一反应就会说把 TCP 可靠传输的特性(序列号、确认应答、超时重传、流量控制、拥塞控制)在应用层实现一遍。 实现的思路确实这样没错,但是有没有想过,既然 TCP 天然支持可靠传输,为什么还需要基于 UDP 实现可靠传输呢?这不是 ......
.NET面试题系列(23)tcp粘包问题
序言 什么是粘包 所谓粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。 解决粘包问题的方法 资料 tcp粘包问题 ......
tcp三次握手和四次挥手
和udp的区别 定义上来说,tcp是面向连接的、安全的、可靠的协议;udp是面向数据报的、不可靠的协议。 从本质上来说,就是tcp每次建立和断开连接,都要进行握手和挥手,客户端每次传送数据包,都会收到服务端的ack确认,还有报文缺失、超时的重传机制。 udp是没有这些握手和确认机制的,所以udp不保 ......
【网络】【TCP】拔掉网线后, 原本的 TCP 连接还存在吗?
1 前言 这节我们来看个问题,就是 拔掉网线后, 原本的 TCP 连接还存在吗? 可能有的同学会说,网线都被拔掉了,那说明物理层被断开了,那在上层的传输层理应也会断开,所以原本的 TCP 连接就不会存在的了。就好像, 我们拨打有线电话的时候,如果某一方的电话线被拔了,那么本次通话就彻底断了。 真的是 ......
【网络】【TCP】HTTPS 中 TLS 和 TCP 能同时握手吗?
1 前言 这节我们来看个问题,就是 HTTPS 中 TLS 和 TCP 能同时握手吗? 通常情况下,HTTPS 建立连接的过程,先进行 TCP 三次握手,再进行 TLS 四次握手,比如,下面这个 TLSv1.2 的 基于 RSA 算法的四次握手过程: 不过 TLS 握手过程的次数还得看版本。 TLS ......
TCP协议的首部结构?
源端口:占2字节。目的端口:占2字节。序号:占4字节。序号范围是[0,2^23-1],共2^23个序号。当序号达到2^23-1时候,下一个序号就回到0。TCP是面向字节流的,在一个TCP连接中传送的字节流的每一个字节都按顺序编号。整个TCP的起始序号必须在建立时确认,首部中的序号字段指的是这个报文段 ......
【网络】【TCP】TCP 连接,一端断电和进程崩溃有什么区别?
1 前言 这节我们来看个问题,就是 TCP 连接,一端断电和进程崩溃有什么区别? 这个属于 TCP 异常断开连接的场景,这部分内容在我的「图解网络」还没有详细介绍过,这次就乘着这次机会补一补。 这个问题有几个关键词: 没有开启 keepalive; 一直没有数据交互; 进程崩溃; 主机崩溃; 我们先 ......
【网络】【TCP】如果 TIME_WAIT 状态持续时间过短或者没有,会有什么问题?
1 前言 这节我们来看个问题,就是 TIME_WAIT 状态持续时间过短或者没有,会有什么问题? 或者net.ipv4.tcp_tw_reuse 参数可以快速复用处于 TIME_WAIT 状态的 TCP 连接,那为什么 Linux 默认是关闭状态呢?也就是为什么要保留这个 TIME_WAIT 状态呢 ......
STM32F104C8T6 + CH395Q 作为TCP服务器实现多TCP连接
初始化 Socket 为 TCP 服务器模式 初始化步骤如下: ① 发送命令 CMD_SET_PROTO_TYPE_SN 设置 Socket 工作在 TCP 模式; ② 发送命令 CMD_SET_SOUR_PORT_SN 设置源端口 Sport; ③ 发送命令 CMD_OPEN_SOCKET_SN ......
【网络】【TCP】已建立连接的TCP,收到SYN会发生什么?
1 前言 这节我们来看个问题,就是一个已经建立的 TCP 连接,客户端中途宕机了,而服务端此时也没有数据要发送,一直处于 Established 状态,客户端恢复后,向服务端建立连接,此时服务端会怎么处理? TCP 连接是由「四元组」唯一确认的。然后这个场景中,客户端的 IP、服务端 IP、目的端口 ......
【网络】【TCP】四次挥手中收到乱序的 FIN 包会如何处理?
1 前言 这节我们来看个问题,就是四次挥手中收到乱序的 FIN 包会如何处理? 比如,如果 FIN 报文比数据包先抵达客户端,此时 FIN 报文其实是一个乱序的报文,此时客户端的 TCP 连接并不会从 FIN_WAIT_2 状态转换到 TIME_WAIT 状态。 因此,我们要关注到点是看「在 FIN ......
nvm安装node报错Get "https://nodejs.org/dist/latest/SHASUMS256.txt": dial tcp 104.20.23.46:443: i/o timeout
windows上通过nvm管理node版本,在本地安装了nvm后,通过nvm安装node,报错了,信息: Could not retrieve https://nodejs.org/dist/latest/SHASUMS256.txt. Get https://nodejs.org/dist/lat ......
进程通信之套接字(TCP)
1、服务器端 1 #include<stdio.h> 2 #include<sys/socket.h>//套接字 3 #include<netinet/in.h> 4 #include<string.h> 5 #include<stdlib.h> 6 #include<arpa/inet.h>//字 ......