连接建立成功和上层有没有accept没有关系
listen的第一个参数为1,建立的连接数量为2
操作系统底层用队列来管理建立的连接,上层用accept来获取链接
blacklog+1 表示底层已经建立好的连接队列的最大长度
超过最大长度的连接,服务端不会丢弃客户端发送的ack,连接状态不会变成establish,而是保持syn_recv
server 端 不会长时间维护syn_recv,被建立连接的一方,半连接的队列,半连接的节点,不会长时间维护
client 和 server 连接建立不一致问题
主动端口连接的一方在最后四次挥手进入timewaite状态,等待若干时长,自动释放
server方断开连接,服务器方进入timewait状态,连接没有被彻底断开,ip和port正在被使用,ip和sort组合只能绑定一个进程,timewait时间内服务器无法立即重启
setsocket()在timewait立即启动
一个报文存在在网络中最长时间是一个msl
timewait是为了两个连接的之间的报文消散
让双方历史数据消散
让断开连接,4次挥手,具有较好的容错性
第一次的时候,怎么保证发送数据量是合理的,不要理解三次握手,只是三次握手,双方也交换了报文,已经协商双方的接收能力
第三次可以携带数据
服务端更新会发,主机A也会定期去发询问
流量控制属于可靠性
滑动窗口
缓冲区的数据多份
已发送已确认可被覆盖,从tcp缓冲区中移除它了
已经发送未确认的,在哪里?我们是发送缓冲区的一部分
因为有滑动窗口区域,我们才可以移除向对方发送大量的tcp报文
滑动窗口的范围大小,是对方的接收窗口。和流量控制有关
滑动窗口用下标进行划分