首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    [TCP/IP] TCP在listen时的参数backlog的意义

    linux内核中会维护两个队列:   1)未完成队列:接收到一个SYN建立连接请求,处于SYN_RCVD状态   2)已完成队列:已完成TCP三次握手过程,处于ESTABLISHED状态   3)当有一个SYN到来请求建立连接时,就在未完成队列中新建一项。当三次握手过程完成后,就将套接口从未完成队列移动到已完成队列。   4)backlog曾被定义为两个队列的总和的最大值,Berkely实现中的backlog值为上面两队列之和再乘以1.5。   5)如果当客户端SYN到达的时候队列已满,TCP将会忽略后续到达的SYN,但是不会给客户端发送RST信息,因为此时允许客户端重传SYN分节。如果启用syncookies (net.ipv4.tcp_syncookies = 1),新的连接不进入未完成队列,不受影响 6)backlog 即上述已完成队列的大小, 这个设置是个参考值,不是精确值. 内核会做些调整

    04

    面试必备TCP三次握手

    在进入本篇文章正题之前,需要先了解一下关于TCP连接过程中使用的关键字含义。 序列号seq:标记数据段的顺序。 TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生; 给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:期待收到对方下一个报文段的第一个数据字节的序号; 序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 同步SYN:连接建立时用于同步序号。 当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。 SYN=1表示这是一个连接请求,或连接接受报文。 SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。 确认ACK:仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效。 终止FIN:表示释放一个连接。FIN=1,则表示发送方的报文段数据已经发送完毕,并请求断开连接。

    05
    领券