zoukankan      html  css  js  c++  java
  • TCP协议总结

    TCP协议是有连接且可靠的传输层协议。所以一切都是围绕面向连接和可靠展开的。

    面向连接

    连接的建立:三次握手,标志位的变化,及状态变化。发送端状态变化SYN_SENT-->ESTABLISHED;接收端状态变化Listen-->SYN_RCVD-->ESTABLISHED。

    引入的问题:SYN_FLOOD攻击,伪装IP地址向服务器端发送大量SYN,服务器端维护一个半连接队列,耗尽其资源(服务器端要等待1+2+4+8+16+32=63s才会将这个请求移出队列)。解决方法?

    连接的保持:保活定时器。保持定时器(防止窗口更新报文丢失,窗口关闭时开启计时,超时后连续三次主动探测接收端的窗口大小)。

    连接的关闭:四次挥手。发送端状态切换FIN_WAIT_1-->FIN_WAIT_2(半关闭状态,为何要有半关闭)-->TIME_WAIT(2MSL);接收端状态切换CLOSE_WAIT-->LAST_ACK-->CLOSED

    可靠

    ACK:确认报文保证不丢包。SACK

    超时重传:超过RTO没有收到ACK就会重传。

    校验和:其实UDP也有。检验和是一种比较弱的检验方法,其实二层已经做了CRC检测,TCP的检验和有点冗余。

    流量控制:滑动窗口,但又带来了新的问题-网络中小数据包太多,导致有效载荷太小了,导致SWS,收发两端引入解决的方案,及Nagle算法。

    拥塞控制:有四个算法分别在不同时期使用-慢开始(如何维护一个拥塞窗口cwnd),拥塞避免,快速重传和快速恢复。

  • 相关阅读:
    在springboot程序中自定义注解和反序列化实现
    文章相似度算法调研
    HTTP协议详解
    prototype.js 让你更深入的了解javascript的面向对象特性(转)
    ajax框架汇总
    prototype源码分析(转)
    c#中静态成员和实例成员(转)
    .NET中IDisposable接口的基本使用 (转)
    sql server 数据库优化(转)
    ADO.NET事物
  • 原文地址:https://www.cnblogs.com/howo/p/7906411.html
Copyright © 2011-2022 走看看