• TCP协议


    TCP 是一个可靠的(reliable)、面向连接的(connection-oriented)、基于字节流(byte-stream)、全双工(full-duplex)的协议。发送端在发送数据以后启动一个定时器,如果超时没有收到对端确认会进行重传,接收端利用序列号对收到的包进行排序、丢弃重复数据,TCP 还提供了流量控制、拥塞控制等机制保证了稳定性。

    TCP协议解决:顺序问题、丢包问题、连接维护、流量控制、拥塞控制

    TCP状态位:SYN发起一个连接,ACK回复,RST重新连接,FIN结束连接

    TCP报文首部由源端口、目标端口、序列号、确认号、flags、窗口大小、可选项组成

    SYN:用于发起连接数据包同步双方的而出是序列号

    ACK:确认数据包

    RST:用来强制断开连接,通常是之前建立的连接已经不在了、包不合法或者是在无能为力处理

    FIN:通知对方我发完了所有数据,准备断开连接

    PSH:告知对方这些数据包收到以后应该马上交给上层应用,不能缓存起来

    可选项MSS:是TCP允许的从对方接受的最大报文段

    可选项Window Scale:窗口缩放选项

    MTU:以太网的最大传输单元(1500字节)

    IPv4数据包的最大大小为65535字节,当一个IP数据包大于MTU时,IP会把数据报文切割成多个小的片段

    利用IP包分片的策略,有一种对应的网络攻击方式IP fragment attack,就是一直传More fragments=1的包,导致接收方一直缓存分片,从而可能导致接收方内存耗尽

    MSS:TCP为了避免被发送方分片,会主动把数据分割成小段再交给网络层,MSS是其中最大的分段大小

    MSS = MTU - IP header头大小 - TCP头大小

    在以太网中 TCP 的 MSS = 1500(MTU) - 20(IP 头大小) - 20(TCP 头大小)= 1460

    4个定时器:重传定时器、坚持定时器、保活定时器、2MSL定时器

    客户端建立连接时状态:CLOSED、SYN-SENT、ESTABLISHED

    服务端建立连接时状态:CLOSED、LISTEN、SYN-RCVD、ESTABLISHED

    客户端关闭连接时状态:ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、TIME-WAIT、CLOSED

    服务端关闭连接时状态:ESTABLISHED、CLOSE-WAIT、LAST-ACK、CLOSED

    为什么TIME-WAIT后要等待2个MSL才关闭连接:

    1 个 MSL 确保四次挥手中主动关闭方最后的 ACK 报文最终能达到对端

    1 个 MSL 确保对端没有收到 ACK 重传的 FIN 报文可以到达

    2MS = 去向 ACK 消息最大存活时间(MSL) + 来向 FIN 消息的最大存活时间(MSL)

  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/ctxsdhy/p/12101596.html
Copyright © 2020-2023  润新知