• TCP基本概念


    TCP协议是一个复杂的、可靠的字节流协议.不通用UDP协议。

    TCP提供客户与服务器之间的连接。TCP客户先与给定的服务器建立一个连接,再跨该连接与服务器交换数据,最后终止这个连接。

    TCP提供了可靠性。

    TCP动态估算客户与服务器之间的往返时间(RTT)。

    TCP通过对序列号对发送的数据进行排序。

    TCP提供超时重传机制。

    TCP提供流量控制,维护一个滑动窗口。

    TCP连接是全双工的。

    1 TCP连接的建立——三路握手

    1. 服务器准备好接收外来的连接,通过调用socket、bind、listen这3个函数来完成,称之为被动打开。
    2. 客户通过调用connect发起主动打开,这导致客户发送一个SYN分节。它含有客户将在待建立的连接当中发送数据的初始序列号。
    3. 服务器必须确认(ACK)客户的SYN,同时自己也发送一个SYN分节,它含有服务器发送数据的初始序列号。
    4. 客户必须确认服务器的SYN

    这种交换至少要3个分组,因此成为TCP的三路握手。

    2 TCP选项

    每个SYN可以含有多个TCP选项,常用的有:

    • MSS:最大分节大小
    • 窗口大小
    • 时间戳

    3 TCP连接终止

    终止一个TCP连接需要4个分组。

    1. 某个进程首先调用close,我们称该端执行主动关闭。该端的TCP于是发送一个FIN分组,表示数据发送完毕。
    2. 收到这个FIN的对端执行被动关闭,同时确认这个FIN。此时放一个文件结束符传递给应用进程的排队等待处理的数据之后,表示以后再也没有新的数据需要接收。
    3. 一段时间后,被动关闭的一端调用close函数,相应的发送给对端一个FIN分组。
    4. 对端确认这个FIN

    4 TCP 状态转移图

    5 TIME_WAIT状态

    执行主动关闭的那端经历了TIME_WAIT状态,该状态的持续时间是最长分节生命周期的2倍,成为2MSL

    TIM_WAIT状态存在的两点理由:

    1. 可靠的实现TCP全双工连接的终止。假设最后一个ACK消息丢失了,对端会重传一个FIN消息,因此不得不回应这个FIN。
    2. 允许老的重复分节在网络中消逝。TCP不给处于TIME_WAIT状态的连接发起新的化身,防止来自某个连接的老的重复分组在以及种植连接后再现,被认为是同一个连接的一个新的化身。
  • 相关阅读:
    Ceph 之RGW Cache
    Ceph 之RGW Pub-Sub Module
    Ceph 之RGW Data Layout
    RocksDB 之Write Ahead Log(WAL)
    Ceph 之 Background on http frontends
    Ceph 之Multisite 下的bucket reshard
    Ceph之PG数调整
    Ceph之对象存储网关RADOS Gateway(RGW)
    window mysql重启、忘记密码等操作
    selenium处理HTML5视频播放未能自动播放解决办法
  • 原文地址:https://www.cnblogs.com/alwayswangzi/p/6557974.html
Copyright © 2020-2023  润新知