网络编程
风筝Lee
儿时,你是父母手中的风筝;上学了,你是老师手中的风筝;工作了,你是领导手中的风筝;成家了,你是妻子手中的风筝;老时,你是子女手中的风筝。人生就像风筝,总有一根线牵着你,或长、或短,或紧、或松;你在这头,爱你的人就在那头。
展开
-
浅谈TCP的keep-alive机制
相关背景:hbase集群大量的regionserver节点因Linux服务器上的fd数量不足导致进程主动退出,每台服务器上处于CLOSE_WAIT状态的tcp连接有10万+,排查发现是regionserver访问datanode产生的大量tcp连接;首先简单回顾一下TCP断开连接的过程,如下图所示。CLOSE_WAIT产生的原因是被动方收到FIN请求后没有调用close();一般是由于对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()原创 2020-11-16 21:52:12 · 5341 阅读 · 0 评论 -
TCP的三次握手与四次挥手理解及面试题(很全面)
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。确认ACK:占1位,仅当ACK=1时,确认号字段...转载 2020-05-10 23:45:30 · 219 阅读 · 0 评论 -
关于网络连接CLOSE_WAIT状态的问题
在开发网络服务器应用系统的时候,有时会碰到服务器有大量的socket处于CLOSE_WAIT状态,也无法关闭,导致服务器无法接受新的用户请求,最终导致服务器奔溃,系统重启才能解决。为什么会出现大量的CLOSE_WAIT状态呢?要解决这个问题,我们得先介绍一下socket断开过程中的四次挥手。由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。假设终止命令由client端发起。...转载 2020-05-06 21:03:24 · 426 阅读 · 0 评论 -
java.net.SocketException异常解析
java.net.SocketException如何才能更好的使用呢?这个就需要我们先要了解有关这个语言的相关问题。希望大家有所帮助。那么我们就来看看有关java.net.SocketException的相关知识。第1个异常是 java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSock...转载 2019-12-18 14:38:51 · 474 阅读 · 0 评论 -
TCP效验和(Checksum)的原理和实现
概述TCP校验和(Checksum)是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。TCP校验和覆盖TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的首部,不覆盖IP数据报中的任何数据。TCP校验和、IP校验和的计算方法是基本一致的,除了计算的范围不同。...转载 2019-10-12 14:22:12 · 1978 阅读 · 0 评论 -
网络编程--TCP状态转换
TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。建立连接状态说明:1.CLOSED:起始点,在超时或者连接关闭时候进入此状态,这并不是一个真正的状态,而是这个状态图的假想起点和终点。2.LISTEN:服务器端等待连接的状态。服务器经过 socket,bind,listen 函数之后进入此状态,开始监听客户端发过来的连接请求。此称为应...翻译 2019-03-20 16:38:08 · 148 阅读 · 0 评论