TCP三次握手及TCP连接状态 TCP报文首部格式
建立TCP连接时的TCP三次握手和断开TCP连接时的4次挥手整体过程如下图:

开个玩笑

ACK: TCP协议规定,只有ACK=1时有效,连接建立后所有发送的报文ACK必须为1
SYN(SYNchronization同步):在连接建立用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使用SYN=1
ACK=1因此,SYN置1表示这是一个连接请求或连接接受报文
FIN(FINIS)即完,终结的意思,用来释放一个连接。当FIN=1时,表明此报文段发送方的数据已经发送完毕,并要求释放连接
TCP三次握手过程:
1. 首先由Client发出请求连接即SYN=1,声明自己的序号seq=X
2. 然后Server进行回复确认,即SYN=1 声明自己的序号seq=y,并设置ack=x+1
3 .最后Client再进行一次确认,设置seq=x+1 ack+y+1
注:seq 序列号范围:2^32-1 如果超过最大值,再从0开始
seq 序列号作用:依据这个序列号来组数据,如果发N个数据包,服务端会按序列号来重新组装数据
使用tcpdump抓取TCP三次握手
tcpdump 常用参数:
-c 指定包个数
-n ip,端口用数字方式显示
port 指定端口
Client:192.168.94.11
server:192.168.94.22

使用Client ssh Server

查看Server端

Flag[S]中的S表示为SYN包为1 。client主机返回ack=1 这个值为相对序号,如果想查看完整序号可以命令后面加-S

TCP连接状态 :
服务器端:LISTEN:侦听来自远方的TCP端口的连接请求
客户端:SYN-SENT:再发送连接请求后等待匹配的连接请求
服务器端:SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
客户端/服务器端:ESTABLISHED:代表一个打开的连接
客户端:FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
服务器端:CLOSE-WAIT:等待从本地用户发来的连接中断请求
客户端:FIN-WAIT-2:从远程TCP等待连接中断请求
服务器端:LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
客户端:TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
服务器端:CLOSED:没有任何连接状态
在服务端返回一个确认的SYN-ACK包的时候有个潜在的弊端,如果发起的客户是一个不存在的客户端,那么服务端就不会接到客户端回应的ACK包
这时服务端需要耗费一定的数量的系统内存来等待这个未决的连接,直到等待超关闭时间,才能施放内存
如果恶意者通过通过ip欺骗,发送大量SYN包给受害者系统,导致服务端存在大量未决的连接并占用大量内存和tcp连接,从而导致正常客户端无法访问服务端,这就是SYN洪水攻击的过程
TCP三次握手及TCP连接状态 TCP报文首部格式的更多相关文章
- TCP三次握手(建立连接)/四次挥手(关闭连接)
TCP数据包格式 顺序号(32位):用来标识从TCP源端向TCP目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号.如果将字节流看作在两个应用程序间的单向流动,则TCP用顺序号对每个 ...
- TCP ------ TCP三次握手(建立连接)及其相关内容
1.TCP客户端要连接到TCP服务器,需要经过三个过程: 以下是通过 Wireshark 抓取的三次握手数据包 → [SYN] Seq= Win= Len= MSS= → [SYN, ACK] Seq ...
- TCP三次握手及释放连接详解(转)
一.TCP头部简介 ACK :即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符.表示发来的数据已确认接收无误.TCP报文格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表 ...
- 使用 tcpdump 抓包分析 TCP 三次握手、四次挥手与 TCP 状态转移
目录 文章目录 目录 前文列表 TCP 协议 图示三次握手与四次挥手 抓包结果 抓包分析 TCP 三次握手 数据传输 四次挥手 TCP 端口状态转移 状态转移 前文列表 <常用 tcpdump ...
- 详解TCP三次握手(建立TCP连接过程)
在讲述TCP三次握手,即建立TCP连接的过程之前,需要先介绍一下TCP协议的包结构. 这里只对涉及到三次握手过程的字段做解释 (1) 序号(Sequence number) 我们通过 TCP 协议将数 ...
- 网络通信 --> TCP三次握手和四次挥手
TCP三次握手和四次挥手 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 一.TCP报文格式 如下图: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发 ...
- HTTP学习---TCP三次握手和四次挥手
IP协议 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成不同主机的通信,我们需要某种方式来唯一标识一台主机,这个标识,就是著名的IP地址.通 ...
- TCP协议--TCP三次握手和四次挥手
TCP三次握手和四次挥手 TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急) 一.TCP三次握手 第一次握手 客户端向服务器发出连 ...
- 理解TCP三次握手和四次挥手
TCP相关知识 TCP是面向连接的传输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,HTTP协议并没有明确要求必须使用TCP协 ...
- TCP三次握手Linux源码解析
TCP是面向连接的协议.面向连接的传输层协议在原点和重点之间建立了一条虚拟路径,同属于一个报文的所有报文段都沿着这条虚拟路径发送,为整个报文使用一条虚拟路径能够更容易地实施确认过程以及对损伤或者丢失报 ...
随机推荐
- 利用kibana插件对Elasticsearch进行批量操作
#############批量获取################# #获取所有数据 GET _mget { "docs": [ {"_index":" ...
- 在 Mac OS X 下,如何向 sudoers 文件添加新用户
注: 1.使用待添加的用户名替换"username". 2.以下涉及输入的标点符号均为半角字符,即英文输入法下的标点符号. 以管理员账号密码登录 Mac OS X,打开 Termi ...
- NEO智能合约开发(二)再续不可能的任务
NEO智能合约开发中,应用合约比较简单,是的你没看错,应用合约比较简单. 应用合约三部曲,发布.调用.看结果.除了看结果工具比较缺乏,发布调用neogui最起码可以支撑你测试. 鉴权合约比较麻 ...
- Linux——目录和文件
目录和文件
- json 函数
一, json序列化和反序列化 JSON.stringify( ) —— 将对象序列化为JSON字符串 JSON.parse( ) —— 将JSON数据解析为Javascript对象 二,判断json ...
- STS的安装以及IDEA安装和破解过程
一.STS的下载 1·下载地址:直接百度搜索STS,选择Download STS 3 2.选择电脑对应的版本 直接下载 3.安装包解压后在有jdk的情况下就可以直接使用 二.IDEA的安装 下载网址: ...
- Qt中在UI文件中新建控件并命名,但在代码中无法识别UI中的控件?
代码中添加FilePathLineEdit控件,显示标准文件选择对话框显示选择的文件路径,但在槽函数中ui->FilePathLineEdit->setText("FilePat ...
- cadence单一原理图库的设计
- Win7 IIS配置
一.首先,在开始打开你的控制面板 二.进入到控制面板,选择程序和功能,点击进入 三.在程序与功能中,左菜单栏,打开你的Windows工能 四.在Windows工能中,把你的Internet信息服务中的 ...
- C#获取变更过的DataTable记录的实现方法
本文实例讲述了C#获取变更过的DataTable记录的实现方法,是一个非常实用的功能!具体实现方法如下: 首先DataTable可以看做是一个物理表的内存式存储,每一个DataRow都有一个属性叫做R ...