Avatar
😀

Organizations

1 results for Tcp
  • 什么是 Tcp

    三次握手

    1. tcp client发送连接请求报文,报文首部同步标记位 SYN=1 同时随机序列号 seq=x,此时 tcp client 进入 SYNC-SENT 状态的

    2. tcp server 若同意连接则确认报文为 ACK=1,SYN=1,ASK=x+1,seq=y 返回给客户端,并进入 SYNC_RCVD 状态

    3. tcp client 收到回复并确认 ACK 是否为1,seq 是否为 x+1,并返回报文 ACK=1,ASK=y+1,此时双方进入 ESTABLISHED 状态

    四次挥手

    1. 主动方发送报文FIN=1,seq=last+1并进入FIN_WAIT_1,此时报文不能携带任何数据

    2. 被动方收到连接释放报文,并发送确认报文 ACK=1,ack=u+1,seq=v ,并进入 CLOSE_WAIT状态,但此时如果缓冲区存在未发送数据,那么需要继续发送(这也是 CLOSE_WAIT 持续的时长),主动方收到此条报文后进入 FIN_WAIT_2,因为还需要处理未发送数据

    3. 上一步执行完毕,被动方发送 FIN=1,ack=w+1,seq=u+1 并进入 LAST-ACK 状态,而主动方收到此条报文后进入 TIME_WAIT (2msl maximum segment life),之后才会进入 CLOSED

    4. 在主动方进入 CLOSED 之前,需要发送报文确认退出

    2MSL

    1MSL保证主动方最后的 ACK 能到达对端,1MSL 确保 ACK 重传

    如何确保可靠性

    1. 三次握手,四次挥手确保连接和断开的可靠

    2. 记录了哪些数据被接受,哪些未接收,序列号保证了消息的顺序性

    3. ACK应答,超时重传,失序重传,丢弃重复数据,流量控制,拥塞控制

    重传机制

    RTT,RTO

    Round-Trip Time 消息往返时间 Retransmission Timeout 超时重传

    tcp Created Thu, 16 Sep 2021 00:00:00 +0000