TCP有关原理笔记

tcp 中使用到的原理,从三次握手到四次挥手的状态转移,到流量控制的滑动窗口,还有拥塞控制的方法。

主要参考文章:TCP那些事(上)tcp那些事(下)

    1,三次握手

        1,服务器处在listen状态,客户端处在closed状态,当客户端发送第一次请求SYN位置为1,随机序列数为x(这也是第一次握手的主要目的,告诉服务器客户端的序列数),发送请求后客户端处在SYN_SENT状态,第一次握手

        2,服务器收到第一次次请求后,服务器会回复一个ack包,目的是告诉客户端收到了第一次握手的包,并把自己的序列数告诉客户端(ack=x+1,seq = y),发送回包后服务器处在SYN_RECD,第二次握手。

        3,客户端收到服务器回复的包后,也要发送一个包(ack= y+1),目的是告诉服务器收到了第二次握手的回报,发送后客户端就完成链接了(established),服务器收到后也处在established,第三次握手。

 

        当服务器收到客户端的第一次请求后就会保存一个信息,这个信息会被加入半连接队列,当完成三次握手时,服务器会去半链接队列找到之前保存的信息,把它移动到全链接队列里,当服务器调用accept()后,服务器会把这个信息移动到每个tcp链接的tcb中。int listen( int sockfd, int backlog)中的backlog就时代表着半连接对列+全链接对列的最大节点数。那么这里会有一个问题,如果有人恶意攻击服务器,只发生第一次握手信息,服务器会怎么处理呢?服务器会重试发送第二次握手信息,linux下重试5次(我的服务器是2次,centOS6.9),1s,2s,4s,8s,16s,总共31s,第5次还要在等32s,总共63s后

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值