![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
TCP
cppDreaming
这个作者很懒,什么都没留下…
展开
-
RST..
在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。TCP socket在任何状态下,只要收到RST包,即可进入CLOSED初始状态出现RST的情况:1)端口未打开2)连接超时setsockopt的SO_RCVTIMEO选项设置了recv的超时时间3)提前关闭close Socket 时recv buffer 不为空 例如,客户原创 2021-07-15 12:12:22 · 130 阅读 · 0 评论 -
listen() 的backlog参数
Linux的协议栈维护的TCP连接的两个连接队列:[1]SYN半连接队列;[2]accept连接队列。[1] SYN半连接队列:Server端收到Client的SYN包并回复SYN,ACK包后,该连接的信息就会被移到一个队列,这个队列就是SYN半连接队列(此时TCP连接处于 非同步状态 )。[2] accept连接队列:Server端收到SYN,ACK包的ACK包后,就会将连接信息从[1]中的队列移到另外一个队列,这个队列就是accept连接队列(这个时候TCP连接已经建立,三次握手完成了)。原创 2021-07-15 12:11:44 · 125 阅读 · 0 评论 -
MSS。。
最大报文段长度(MSS)是TCP协议的一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(不包括文段头)。网络上有个MTU,对于以太网来说,MTU是1500字节,除去TCP+IP头的40个字节,真正的数据传输可以有1460,这就是所谓的MSS(Max Segment Size)注意,TCP的RFC定义这个MSS的默认值是536,这是因为 RFC 791里说了任何一个IP设备都得最少接收576尺寸的大小(实际上来说576是拨号的网络的MTU,而576减去IP头的20个字节原创 2021-07-15 12:11:01 · 251 阅读 · 0 评论 -
RTT RTO
TCP引入了RTT——Round Trip Time,也就是一个数据包从发出去到回来的时间RTO 超时重传时间TCP通过一个timer采样了RTT并计算RTO原创 2021-07-15 12:10:11 · 171 阅读 · 0 评论 -
流控。。。
通过通告窗口调整滑动窗口只能做到端到端的控制,不能处理网络阻塞的情况原创 2021-07-15 12:09:41 · 113 阅读 · 0 评论 -
拥塞控制。
1)慢启动;2)拥塞避免;3)拥塞发生;4)快速恢复原创 2021-07-15 12:09:11 · 49 阅读 · 0 评论 -
滑动窗口(发送窗口)
发送窗口大小取决于min(rwnd,cwnd).rwnd:对端的通告窗口cwnd:拥塞窗口原创 2021-07-15 12:08:37 · 272 阅读 · 0 评论 -
time_wait状态
处于该状态下的TCP连接不能立即以同样的四元组建立新连接一、作用1)实现TCP全双工连接的可靠释放确保被动关闭方收到ACK,连接正常关闭,且不因被动关闭方重传FIN影响下一个新连接2)使旧的数据包在网络因过期而消失2MSL:报文最大生存时间,确保旧的数据不会影响新连接二、带来的问题1) 作为服务器,短时间内关闭了大量的Client连接,就会造成服务器上出现大量的TIME_WAIT连接,占据大量的tuple,严重消耗着服务器的资源;2) 作为客户端,短时间内大量的短连接,会大量消耗的Clien原创 2021-07-15 12:07:57 · 318 阅读 · 0 评论