网络编程
老猿说说
Java老猿
展开
-
网络编程中Nagle算法和Delayed ACK的测试
Nagle算法的立意是良好的,避免网络中充塞小封包,提高网络的利用率。但是当Nagle算法遇到delayed ACK悲剧就发生了。Delayed ACK的本意也是为了提高TCP性能,跟应答数据捎带上ACK,同时避免糊涂窗口综合症,也可以一个ack确认多个段来节省开销。悲剧发生在这种情况,假设一端发送数据并等待另一端应答,协议上分为头部和数据,发送的时候不幸地选择了write-write,然转载 2017-07-19 14:42:25 · 280 阅读 · 0 评论 -
最经典的TCP性能问题
问题描述某个PHP服务通过Nginx将后面的tair封装了一下,让其他应用可以通过http协议访问Nginx来get、set 操作tair上线后测试一切正常,每次操作几毫秒,但是有一次有个应用的value是300K,这个时候set一次需要300毫秒以上。 在没有任何并发压力单线程单次操作也需要这么久,这个延迟是没有道理和无法接受的。问题的原因是因为TCP协议为了做一些带转载 2017-07-17 16:48:28 · 507 阅读 · 0 评论 -
关于TCP 半连接队列和全连接队列
最近碰到一个client端连接异常问题,然后定位分析并查阅各种资料文章,对TCP连接队列有个深入的理解查资料过程中发现没有文章把这两个队列以及怎么观察他们的指标说清楚,希望通过这篇文章能把他们说清楚一点问题描述JAVA的client和server,使用socket通信。server使用NIO。1.间歇性的出现client向server建立连接三次握手已经完成,但server的转载 2017-07-17 16:24:02 · 1825 阅读 · 0 评论 -
图文还原HTTPS原理
A在向B进行通信时,如果是以明文的方式进行通信,中间窃听者会获得双方的传输的数据hello。HTTPS要解决如下问题:A发给B的hello消息包,即使被中间人拦截到了,也无法得知消息的内容如何做到安全这个问题,很多人马上就想到了各种加密算法,什么对称加密、非对称加密、DES、RSA、XX、。。。。做到安全的最终目的:A与B通信的内容,有且只有A和B有能力看到通信的真正内容对于解决方案,很容易就想到...转载 2018-05-31 17:03:01 · 279 阅读 · 0 评论 -
TIME-WAIT CLOSE-WAIT
一查看现在time_wait的数量及浅析 netstat -an | grep TIME_WAIT | wc -l 发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,在 /etc/sysctl.conf中加入 net.ipv4.tcp_tw_recycle = 1 (表示开启TCP连接中TIME-WAIT sockets的快速回收,...转载 2018-09-06 18:25:02 · 218 阅读 · 0 评论 -
time-wait解决
netstat -n | awk \'/^tcp/ { S[$NF]} END {for(a in S) print a, S[a]}\'TIME_WAIT 8535CLOSE_WAIT 5FIN_WAIT2 20ESTABLISHED 248LAST_ACK 14 CLOSED:无连接是活动的或正在进行LISTEN:服务器在等待进入呼叫SYN_RECV:一个连接请...转载 2018-09-06 18:29:52 · 964 阅读 · 0 评论 -
TCP短连接产生大量TIME_WAIT
上篇笔记主要介绍了与TIME_WAIT相关的基础知识,本文则从实践出发,说明如何解决文章标题提出的问题。1. 查看系统网络配置和当前TCP状态 在定位并处理应用程序出现的网络问题时,了解系统默认网络配置是非常必要的。以x86_64平台Linux kernelversion 2.6.9的机器为例,ipv4网络协议的默认配置可以在/proc/sys/net/ipv4/下查看...转载 2018-09-06 19:15:01 · 322 阅读 · 0 评论 -
TCP短连接产生大量TIME_WAIT
最近遇到一个线上报警:服务器出现大量TIME_WAIT导致其无法与下游模块建立新HTTP连接,在解决过程中,通过查阅经典教材和技术文章,加深了对TCP网络问题的理解。作为笔记,记录于此。 备注:本文主要介绍TCP编程中涉及到的众多基础知识,关于实际工程中对由TIME_WAIT引发的不能建立新连接问题的解决方法将在下篇笔记中给出。1. 实际问题 初步查看发现,...转载 2018-09-06 19:15:41 · 1938 阅读 · 0 评论