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状态的连接发起新的化身,防止来自某个连接的老的重复分组在以及种植连接后再现,被认为是同一个连接的一个新的化身。

TCP基本概念的更多相关文章

  1. 33.TCP协议概念/scapy模块doos攻击

    TCP协议概念/scapy模块: 1,TCP/IP四层协议: 2,TCP数据包的构成: TCP FLAGS:TCP数据包标志位 U:URG,紧急比特 A:ACK,确认比特 P:PSH,推送比特 S:S ...

  2. TCP基础概念

    定义 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议 特点 TCP是一种面向广域网的通信协议,目的是在跨越多个网 ...

  3. TCP的概念

    中间节点.虚电路.失败重传 UDP:不可靠传输,并不承诺提供可靠的连接通道,所传送包完全可能失序.重复甚至丢失. TCP:端口号.三次握手建立可靠连接(第一次确认A端发送和B端接收能力,第二次确认A端 ...

  4. TCP/IP概念简述

    这里所说的是广义上的TCP/IP协议群,而不是特指TCP和IP这两种具体的协议.既然是协议群,那么都有哪些协议呢?我们先不着急回答这个问题,因为要弄清楚这个问题,首先得了解另两件事,就是为啥要有这个协 ...

  5. Java TCP通信概念及实例

    TCP/UDP 协议 通俗解释: TCP协议和UDP协议的区别类似于电话系统和邮政系统. <1>TCP:类似于电话系统,建立双向的通信通道,确定连接,话音顺序接听. <2>UD ...

  6. 简析TCP的三次握手与四次分手

    TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也 ...

  7. 三:关于tcp

    转自:http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深 ...

  8. 简析TCP的三次握手与四次挥手

    TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也 ...

  9. 简析TCP的三次握手与四次分手【转】

    转自 简析TCP的三次握手与四次分手 | 果冻想http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文 ...

随机推荐

  1. (转)基于MVC4+EasyUI的Web开发框架形成之旅--基类控制器CRUD的操作

    http://www.cnblogs.com/wuhuacong/p/3352016.html 在上一篇随笔中,我对Web开发框架的总体界面进行了介绍,其中并提到了我的<Web开发框架>的 ...

  2. PhotoZoom Pro 7怎么进行参数设置

    每个用户在使用PhotoZoom时,在针对不同的图片,我们处理的方式也不同.所以在参数设置会因图片不同而不同.那么在PhotoZoom中参数究竟如何设置呢? 首先,我们先打开[参数设置],点击后会弹出 ...

  3. js和css引入文件消除缓存

    ?version=<?php echo filemtime('引用路径'); ?>

  4. ClipboardJS实现点击复制功能

    <script src="//lib.baomitu.com/clipboard.js/1.7.1/clipboard.min.js"></script> ...

  5. element合并单元格方法及遇到问题的解决办法

    效果如图: 代码如下 <!-- 查看选课 --> <template> <div> <el-table :data="listData" ...

  6. win主机ping不通linux的IP

    1.虚拟机的中的linux系统设置成桥接模式 2.点击虚拟机的编辑选择虚拟网络编辑器 3.点击更改设置 4点击还原默认设置即可

  7. python之简述上下文管理

    上下文管理器 原理 代码讲解 原理 上下文管理能保证资源会被正确回收,即保证退出步骤的执行.其用处最多的是,作为确保资源被正确回收的一种方式. 一种重复使用的 try-except-finally 结 ...

  8. 《代码敲不队》第八次团队作业:Alpha冲刺 第四天

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 掌握软件编码实现的工程要求. 团队项目github仓库地址链接 GitH ...

  9. 作为深度学习最强框架的TensorFlow如何进行时序预测!(转)

    作为深度学习最强框架的TensorFlow如何进行时序预测! BigQuant 2 个月前 摘要: 2017年深度学习框架关注度排名tensorflow以绝对的优势占领榜首,本文通过一个小例子介绍了T ...

  10. SSH框架整合截图总结(一)

    分页相关属性 --------------------------------------------------------------- 分页思路表单提交(只需传递当前页的值) ->acti ...