TCP connection and disconnection

TCP:
一. 属性:
    1. 提供客户端和服务器端的连接;
    2. 提供可靠性;
    3. 用于动态估算client和server之间的往返时间;
    4. 关联序列号,对发送的数据进行排序;
    5. 流量控制,通过告知对端在任何时刻它一次能够从对端接收多少字节的数据(即:通过窗口),在任何时刻窗口支出缓存区中当前可用的空间量,从而确保发送端发送的数据不会使接受缓冲区溢出;
    6. 全双工的连接。
二. TCP 连接建立和终止
    1. 三路握手(three-way handshake)
        (1). server首先必须准备好接受外来的连接。通常通过调用socket、bind、listen这三个函数来完成(即:被动打开 passive open);
        (2). client调用connect发起主动连接(active open).通常客户端发送一个SYN,它告诉server客户将在(待建立的)连接中发送数据的初始序列号,SYN不携带数据,其所在的IP数据报只包含一个IP header、一个TCP header及可能存在的TCP options;
        (3). server必须确认(ACK)客户的SYN,同时自己也得发送一个SYN,它包含有服务器在同一连接中发送的数据的初始序列号。服务器在单个的segement中发送SYN和回应客户端SYN的ACK;
        (4). client必须回应(ACK)给server的SYN。
    2. 四路分手终止连接
        (1). 某个应用进程首先调用close,称之为执行主动关闭(active close),该端的TCP于是发送一个FIN,表示数据发送完毕;
        (2). 接收到FIN的对端执行被动关闭(passive close). 这个FIN由TCP确认,它的就收也作为一个文件结束符(end-of-file)传递给接收端应用程序(放在已排队等候该应用进程接收的任何其它数据之后),因为FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收;
        (3). 在一段时间后,接收到这个文件结束符的应用进程将调用close来关闭它的socket。这导致接收端的TCP也发送一个FIN;
        (4). 接收到这个最终FIN的原始发送端TCP(即执行主动关闭的那一端)确认这个FIN。

三. TCP 状态转换

    2. 分组观察

        (1)客户advertise一个值为536的MSS(表名该client只实现了最小重组缓冲区大小),服务器advertise一个值为1460的MSS(以太网上IPv4的典型值):


        (2)TIME_WAIT状态

                执行主动关闭的那一端会经历time_wait这个状态。该端点停留在这个状态是最长分段生命期(Maximum Segement Lifetime, MSL)的两倍,即2MSL。

            存在的两个理由:

                a. 可靠地实现TCP全双工连接的终止;(原因是可能不得不重传被丢掉的那个最终ACK)

                b. 允许老的重复segement在网络中消逝。

                    NOTE: TCP 必须防止来自某个连接的老的重复分组在该连接已终止后出现,从而被误解成属于同一个连接的某个新的化身。既然TIME_WAIT状态持续的时间是2MSL,这就足够让某个方向上的分组最多存活MSL秒被丢弃,另一个方向的应答最多存活MSL秒也被丢弃。通过实施这个规则,就可以保证每次成功建立一个TCP连接时,来自连接先前的老的重复分组都已经在网络中消逝了。    






  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值