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),拥塞避免,快速重传和快速恢复。

  • 相关阅读:
    Nginx出现413 Request Entity Too Large错误解决方法
    office 所有后缀对应的 content-type
    swagger2 注解说明
    DOS查看端口占用及杀掉进程命令
    009:Django的项目规范
    008:第一个Django项目剖析(2)
    007:第一个Django项目剖析(1)
    006:Django介绍
    005:课程准备工作
    004:URL组成部分详解
  • 原文地址:https://www.cnblogs.com/howo/p/7906411.html
Copyright © 2011-2022 走看看