TCP基本概念
TCP协议是一个复杂的、可靠的字节流协议.不通用UDP协议。
TCP提供客户与服务器之间的连接。TCP客户先与给定的服务器建立一个连接,再跨该连接与服务器交换数据,最后终止这个连接。
TCP提供了可靠性。
TCP动态估算客户与服务器之间的往返时间(RTT)。
TCP通过对序列号对发送的数据进行排序。
TCP提供超时重传机制。
TCP提供流量控制,维护一个滑动窗口。
TCP连接是全双工的。
1 TCP连接的建立——三路握手
- 服务器准备好接收外来的连接,通过调用socket、bind、listen这3个函数来完成,称之为被动打开。
- 客户通过调用connect发起主动打开,这导致客户发送一个SYN分节。它含有客户将在待建立的连接当中发送数据的初始序列号。
- 服务器必须确认(ACK)客户的SYN,同时自己也发送一个SYN分节,它含有服务器发送数据的初始序列号。
- 客户必须确认服务器的SYN
这种交换至少要3个分组,因此成为TCP的三路握手。
2 TCP选项
每个SYN可以含有多个TCP选项,常用的有:
- MSS:最大分节大小
- 窗口大小
- 时间戳

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

5 TIME_WAIT状态
执行主动关闭的那端经历了TIME_WAIT状态,该状态的持续时间是最长分节生命周期的2倍,成为2MSL
TIM_WAIT状态存在的两点理由:
- 可靠的实现TCP全双工连接的终止。假设最后一个ACK消息丢失了,对端会重传一个FIN消息,因此不得不回应这个FIN。
- 允许老的重复分节在网络中消逝。TCP不给处于TIME_WAIT状态的连接发起新的化身,防止来自某个连接的老的重复分组在以及种植连接后再现,被认为是同一个连接的一个新的化身。
TCP基本概念的更多相关文章
- 33.TCP协议概念/scapy模块doos攻击
TCP协议概念/scapy模块: 1,TCP/IP四层协议: 2,TCP数据包的构成: TCP FLAGS:TCP数据包标志位 U:URG,紧急比特 A:ACK,确认比特 P:PSH,推送比特 S:S ...
- TCP基础概念
定义 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议 特点 TCP是一种面向广域网的通信协议,目的是在跨越多个网 ...
- TCP的概念
中间节点.虚电路.失败重传 UDP:不可靠传输,并不承诺提供可靠的连接通道,所传送包完全可能失序.重复甚至丢失. TCP:端口号.三次握手建立可靠连接(第一次确认A端发送和B端接收能力,第二次确认A端 ...
- TCP/IP概念简述
这里所说的是广义上的TCP/IP协议群,而不是特指TCP和IP这两种具体的协议.既然是协议群,那么都有哪些协议呢?我们先不着急回答这个问题,因为要弄清楚这个问题,首先得了解另两件事,就是为啥要有这个协 ...
- Java TCP通信概念及实例
TCP/UDP 协议 通俗解释: TCP协议和UDP协议的区别类似于电话系统和邮政系统. <1>TCP:类似于电话系统,建立双向的通信通道,确定连接,话音顺序接听. <2>UD ...
- 简析TCP的三次握手与四次分手
TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也 ...
- 三:关于tcp
转自:http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深 ...
- 简析TCP的三次握手与四次挥手
TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也 ...
- 简析TCP的三次握手与四次分手【转】
转自 简析TCP的三次握手与四次分手 | 果冻想http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文 ...
随机推荐
- mvc cshtml 中赋值
@{ var str = ""; str = item.ApplyStatus == ? ? ? ? "申请驳回" : ""; } < ...
- 提示 npm update check failed
执行npm命令时出现以下提示 虽然不影响代码运行,但总觉得看了很碍事, 查找资料后发现是因为文件夹权限的问题, .config / configstore文件夹中包含一个文件:update-notif ...
- 反射API提供的常用类和函数
ReflectionParameter 取回了函数或方法参数的相关信息. {//要自行检查函数的参数,首先创建一个 ReflectionFunction 或 ReflectionMethod 的 实例 ...
- linu问题集锦
问题1 系统卡 慢 执行命令延迟/var/spool/mail下root文件过大导致/var磁盘空间92% cd / && du | sort -n | tail -n 10 查看排名 ...
- Linux 内核链表 list.h 的使用
Linux 内核链表 list.h 的使用 C 语言本身并不自带集合(Collection)工具,当我们需要把结构体(struct)实例串联起来时,就需要在结构体内声明指向下一实例的指针,构成所谓的& ...
- [置顶]
来自 HeroKu 的 HTTP API 设计指南(中文版)
转载:http://get.jobdeer.com/343.get 来自 HeroKu 的 HTTP API 设计指南(中文版) 翻译 by @Easy 简介 本指南中文翻译者为 @Easy ,他是国 ...
- linux 遇到(vsftpd)—500 OOPS:chroot
今天在用vsftpd 时出现一个问题: 500 OOPS:chroot 解决办法: 1.关闭SELINUX [root@localhost ~]#vi /etc/sysconfig/selinux # ...
- uni-app 路由navigate
uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS.Android.H5.小程序等多个平台. 公司最近在写APP应用到了uni-app 我在写的时 ...
- hdu 4607 树形dp 树的直径
题目大意:给你n个点,n-1条边,将图连成一棵生成树,问你从任意点为起点,走k(k<=n)个点,至少需要走多少距离(每条边的距离是1): 思路:树形dp求树的直径r: a:若k<=r+1 ...
- PatentTips - Uncore thermal management
BACKGROUND The field of invention relates to the computer sciences, generally, and, more specificall ...