linux
文章平均质量分 68
monk_sky
这个作者很懒,什么都没留下…
展开
-
time_wait
从图3-9来看,客户端连接在收到服务器的结束报文段(TCP报文段6)之后,并没有直接进入CLOSED状态,而是转移到TIME_WAIT状态。在这个状态,客户端连接要等待一段长为2MSL(Maximum Segment Life,报文段最大生存时间)的时间,才能完全关闭。MSL是TCP报文段在网络中的最大生存时间,标准文档RFC 1122的建议值是2min。TIME_WAIT状态存在的原因有两点:1.可靠地终止TCP连接。2.保证让迟来的TCP报文段有足够的时间被识别并丢弃。第一个原因很好理解。假设图原创 2021-04-01 22:22:00 · 263 阅读 · 0 评论 -
参考
如何理性的调整「rwnd」和「cwnd」的大小(重点)一文搞定 Wireshark 网络数据包分析原创 2021-04-01 22:20:51 · 72 阅读 · 0 评论 -
65536个连接”误解
经典的”服务器最多65536个连接”误解C/C++语言编程, 网络编程Views: 39740 | 9 Comments“因为TCP端口号是16位无符号整数, 最大65535, 所以一台服务器最多支持65536个TCP socket连接.” - 一个非常经典的误解! 即使是有多年网络编程经验的人, 也会持有这个错误结论.要戳破这个错误结论, 可以从理论和实践两方面来.理论系统通过一个四元组来唯一标识一条TCP连接. 这个四元组的结构是{local_ip, local_port, remote_i原创 2021-04-01 22:14:58 · 304 阅读 · 0 评论 -
第五篇
百萬並發之 tcp_mem在服務端,連接達到一定數量,諸如50W時,有些隱藏很深的問題,就不斷的拋出來。 通過查看dmesg命令查看,發現大量TCP: too many of orphaned sockets錯誤,也很正常,下面到了需要調整tcp socket參數的時候了。第一個需要調整的是tcp_rmem,即TCP讀取緩沖區,單位為字節,查看默認值cat /proc/sys/net/ipv4/tcp_rmem4096 87380 4161536默認值為87380 byte ≈ 86K,最小為40原创 2021-04-01 22:14:11 · 133 阅读 · 0 评论 -
100第四篇
第四个遇到的问题:tcp_mem在服务端,连接达到一定数量,诸如50W时,有些隐藏很深的问题,就不断的抛出来。 通过查看dmesg命令查看,发现大量TCP: too many of orphaned sockets错误,也很正常,下面到了需要调整tcp socket参数的时候了。第一个需要调整的是tcp_rmem,即TCP读取缓冲区,单位为字节,查看默认值cat /proc/sys/net/ipv4/tcp_rmem4096 87380 4161536默认值为87380 byte ≈ 86K,最小原创 2021-04-01 22:13:02 · 55 阅读 · 0 评论 -
100第三篇
100万并发连接服务器笔记之测试端就绪重新编写测试端程序测试端程序需要增加绑定本机IP和本地端口的功能,以尽可能的向外发出更多的tcp请求。需要对client1.c重构,增加参数传递。 下面是client2.c的代码若不指定端口,系统会随机挑选没有使用到的端口,可以节省些心力。编译:gcc -o client2 client2.c -levent参数解释-h 要连接的服务器IP地址-p 要连接的服务器端口-m 本机IP地址需要绑定的随机端口数量-o 本机所有可用的IP地址列表,注意所有I原创 2021-04-01 22:12:24 · 51 阅读 · 0 评论 -
100第二篇
第二个遇到的问题:端口数量受限一般来说,单独对外提供请求的服务不用考虑端口数量问题,监听某一个端口即可。但是向提供代理服务器,就不得不考虑端口数量受限问题了。当前的1M并发连接测试,也需要在客户端突破6万可用端口的限制。单机端口上限为65536端口为16进制,那么2的16次方值为65536,在linux系统里面,1024以下端口都是超级管理员用户(如root)才可以使用,普通用户只能使用大于1024的端口值。系统提供了默认的端口范围:cat /proc/sys/net/ipv4/ip_local_原创 2021-04-01 22:10:47 · 82 阅读 · 0 评论