文档章节

TCP三次握手和四次挥手图解

JoshuaShaw
 JoshuaShaw
发布于 2016/04/11 17:05
字数 898
阅读 97
收藏 9
点赞 1
评论 0

输入图片说明

简介

上图左为tcp连接的状态机,每个圆矩形为一个状态,每个状态有一行或者两行,第一行为该状态的名称, 第二行(有的话)为该状态能(或者需要)发送的报文。 虚线箭头路径为服务器的常见状态转移路线。虚线框为关闭连接的状态集合。每个状态转移都是通过事件 触发,一般为收到一些特定的报文。 上图右为时间线下的状态转移示意图,分为常见和特殊情况。

状态

详解

CLOSED

端口未打开时为此状态。相当于初始状态和终止状态。

LISTEN

当服务器打开端口监听时,服务器等待客户端进行连接(被动)。

SYN_SENT

客户端主动对服务器进行连接,会向服务器发送SYN报文。
有时候,服务器也会从LISTEN状态转到该状态,说明服务器端进行主动连接,但是__极为罕见__。 此外,主动关闭连接或者客户端在一定时间范围内完全没有接到任何报文(超时)时,该状态会进入 CLOSED状态,结束连接。

SYN_RCVD

服务器处于LISTEN状态,当收到客户端发送的SYN报文时,变为该状态。服务器处于该状态时需要完成 与客户端的握手流程,将会发送SYN和对此前客户端发送SYN报文的ACK确认。
当服务器收到客户端发送的RST报文后,说明客户端希望取消连接,此时服务器会回到LISTEN状态; 此外,服务器在一定时间范围内完全没有接到任何报文(超时)时,会关闭监听端口,到达CLOSED终止状态, 服务器主动关闭端口监听时,会进入FIN_WAIT_1状态。

ESTABLISED

客户端(服务器)收到服务器(客户端)对自己此前的SYN报文的ACK确认后,进入此状态,表明已经建立了连接。

FIN_WAIT_1

建立连接双方中的一方主动关闭连接时,会发送FIN报文,进入该状态。

FIN_WAIT_2

主动关闭连接的一方收到被动方的对FIN的ACK确认报文后,进入该状态。

CLOSING

主动关闭连接的一方在监听对自己FIN报文的ACK确认报文期间收到对方的FIN报文时进入该状态。
该状态说明双方都在此段时间段内主动请求关闭。

TIME_WAIT

主动请求关闭的一方收到对方的FIN报文后,会对该FIN报文进行ACK确认,那么此时进入该状态。
该状态等待2MSL的时间,若收不到对方的FIN报文,说明对方已经收到自己发出的ACK确认报文,最终 连接关闭,进入CLOSED。
有时候,FIN_WAIT_1会直接进入该状态,情况在于被动方刚好在发送ACK(FIN)的同时捎带了FIN,表明自己也 要关闭了,不过此情况也__比较罕见__,并且可以通过先进入FIN_WAIT_2在进入TIME_WAIT来代替。

CLOSE_WAIT

被动关闭的一方收到FIN报文时,进入该状态,该状态需要发送对FIN报文的ACK确认。

LAST_ACK

被动一方也关闭连接时,将发送FIN报文,进入该状态。收到自己发出的FIN的ACK确认报文后,关闭连接, 进入CLOSED

© 著作权归作者所有

共有 人打赏支持
JoshuaShaw
粉丝 4
博文 26
码字总数 15604
作品 0
湛江
程序员
关于Tcp/ip协议的三次握手和四次挥手

首先我们需要知道,tcp/ip协议并不是一个协议,而是一个协议族,里面包好tcp,udp,ip等协议,tcp/ip网络协议栈包括应用层,传输层,网络层和链路层。 tcp协议是一中面向连接的,可靠的传输层...

Davin
2012/10/12
0
0
TCP三次握手和四次挥手

哈喽!大家好,今天我们来共同认识一下什么是三次握手和四次挥手,来了解一下TCP客户端和服务器之间是如何进行通信的,又如何释放连接的呢? 其实,实际上三次握手就是指建立一个TCP连接时,...

MRUJ
2017/09/01
0
0
TCP三次握手和四次挥手全过程及为什么要三次握手解答

TCP三次握手和四次挥手的全过程 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种表示: SYN(synchronous建立连接) ACK(acknowl...

Tenderrain
2017/11/10
0
0
TCP三次握手和四次挥手详解

TCP(Transmission Control Protocol)网络传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据传输前建立连接的工作要经过三次握手,数据传输后断开连接的工作要经过四...

游骑兵vtx
2017/09/26
0
0
TCP三次握手与四次挥手

TCP三次握手 一、什么是三次握手 三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。 二、三次握手的目的 三次握手的目的是连接服务器指定端口,建立...

Lightmisa
2017/09/29
0
0
简明理解三次握手和四次挥手

注:三次握手和四次挥手本身并不复杂,但却可以从很多角度理解这两个过程,本文仅取一个视点解读,如有其它看法欢迎留言交流。 三次握手与四次挥手分别对应TCP连接建立过程与断开过程,先上T...

hello-k
02/28
0
0
TCP/IP协议 三次握手与四次挥手

一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从T...

小和尚敲代码
2016/02/22
67
0
TCP/IP协议三次握手与四次握手流程解析

一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从T...

大鸟地带
06/26
0
0
wireshark抓包图解-tcp三次握手四次挥手详解

wireshark抓包图解 TCP三次握手/四次挥手详解 一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能。包含以下四个层次: 1. 链路层,也称作数据链路层...

天天顺利
2015/05/21
0
1
可靠的TCP连接为何是三次握手

首先,咱们先来熟悉下经典的tcp/ip模型。 tcp/ip 模型为了方便使用,将osi七层模型划分成了四层,分别为网络接口层,网络层,传输层,应用层。 他们作用分别为: 1)网络接口层:主要作用是将...

xiaoer_03
06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
9
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0
python从零学——scrapy初体验

python从零学——scrapy初体验 近日因为一些事情,需要从网上爬取一些东西,故而想通过使用爬虫来顺便学习下强大的python。现将一些学习中遇到的问题记录下来,以便日后查询 1. 开发环境的准...

咾咔叽
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部