一、TCP报文格式 图1 TCP报文格式 二、三次握手 图2 TCP三次握手 三、四次挥手 由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是 ...
分类:
其他好文 时间:
2018-03-20 18:04:37
阅读次数:
167
Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB;或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想: ...
分类:
其他好文 时间:
2018-03-15 17:52:08
阅读次数:
136
第一种,使用长连接通道不断开的形式进行通信,也就是服务器和客户端的通道一直处于开启的状态。如果服务器性能足够好,并且我们的客户端数量也比较少的情况下,是适合使用长连接的通道。 第二种,采用短连接方式,一次性批量提交数据,也就是我们会把数据保存在本地临时缓冲区或者临时表里。当达到数量时,就进行批量提交 ...
分类:
Web程序 时间:
2018-03-14 22:12:38
阅读次数:
237
cat /etc/sysctl.conf
sysctl -p
fs.file max = 999999
#表示进程(例如一个worker进程)可能同时打开的最大句柄数,直接限制最大并发连接数
net.ipv4.tcp_tw_reuse = 1
#1代表允许将状态为TIME-WAIT状态的socket连接重新用于新
分类:
系统相关 时间:
2018-03-14 10:45:14
阅读次数:
189
把back_log打满导致的连接异常 dmesg里面也看到了队列溢出的日志,应试是刚才分析的原因没错了。TCP: time wait bucket table overflow ...
分类:
其他好文 时间:
2018-03-13 14:05:29
阅读次数:
164
讨论Socket必讨论长连接和短连接 一、长连接和短连接的概念 1、长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接;后者是每次请求,都新 建一个Socket,处理完一个请求就直接关闭掉Socket。所以,其实区分长短连接就是:整个客户和服 ...
分类:
其他好文 时间:
2018-03-12 16:57:15
阅读次数:
171
服务器端:Server 客户端:Client#include <iostream> 一个服务器端怎样连接多个客户端?多线程。 服务器端的接收缓冲区小于客户端的发送缓冲区:数据流可任意拆分 缺点:出现粘包现象(发送过快,网络中卡住) 解决方法:长连接和短连接(各自建立socket) 设置包头,发送数据 ...
分类:
其他好文 时间:
2018-03-10 15:52:06
阅读次数:
179
Socket和HTTP的区别:1. Socket是基于tcp/ip协议,是传输层的连接;而http是基于应用层的连接。2. HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接,下次建立连接需要tcp重新进行三次握手。因此HTTP连接是一种“短连接”。要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即使不需要获
分类:
其他好文 时间:
2018-03-09 22:45:07
阅读次数:
263
http1.0短连接每一个请求建立一个TCP连接,请求完成后立马断开连接。这将会导致2个问题:连接无法复用,headoflineblocking连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。headoflineblocking会导致带宽无法被充分利用,以及后续健康请求被阻塞。</br>http1.1为解决HTTP1
分类:
Web程序 时间:
2018-03-05 18:10:50
阅读次数:
549
vi /etc/sysctl.conf net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse=1 #让TIME_WAIT状态可以重用,这样即使TIME_WAIT占满了所有端口,也不会拒绝新的请求造成障碍 默认是0 net.ipv4.tcp_tw_recy ...
分类:
Web程序 时间:
2018-03-04 23:57:38
阅读次数:
358