当前位置: 首页 > news >正文

Linux--抓包-连接状态

目录

一、TCP:

1.抓包:

2.工具:

3.状态:

4.命令:

三次握手:

应答确认:

四次挥手


一、TCP:

面向连接、可靠的、流式服务

1.抓包:

三次握手、四次挥手

2.工具:

使用Linux自带的tcpdump工具

3.状态:

//反映的是连接的状态 

以打电话为例:待机、拨出、响铃、接通(通话中(保持较长时间)、通话结束)or挂机

//上半部分的状态转换是由三次握手带来的 

//下半部分是由四次挥手(三次挥手)带来的 

 //FIN_WAIT2

//TIME_WAIT

为什么要有一个"TIME_WAIT"的状态?

1) 可靠的终止 TCP 连接。

2) 保证让迟来的 TCP 报文有足够的时间被识别并被丢弃 ;

在 Linux 系统上,一个 TCP 端口不能被同时打开多次(两次及以上)。当一个TCP 连接处于 TIME_WAIT 状态时,我们将无法立即使用该连接占用着的端口来建立一个 新连接。

如果确实需要强制进程立即使用处于 TIME_WAIT 状态的连接所占用的端口,可以通 过 setsockopt()方法设置 socket 选项 SO_REUSEADDR 来完成

//Crtl+c进程结束,但是连接还没结束,连接的结束取决于对方 ,需要双方挥手 

4.命令:

 //抓的是从我到他,以及从他到我的数据包

//ifconfig 看IP地址前面是否为ens33

//sudo 用户名//管理员权限

//如果是

tcpdump -i ens33 -nt '(src 192.168.31.11 and dst 192.168.31.111)or(src 192.168.31.111 and dst 192.168.31.11)

三次握手:

TCP 协议提供的是:面向连接、可靠的、字节流服务。使用 TCP 协议通信的双发必 须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资 源,以管理连接的状态和连接上数据的传输。 TCP 连接是全双工的,双方的数据可 以通过一个连接进行读写。完成数据交换之后,通信双方都必须断开连接以释放系统 资源。 三次握手发生在发起链接 connect 的时候。

tcp的第一个特点: 它是一个面向链接的,意味着我们在收发数据之前必须建立链接,如何建立链接呢?我们 就是通过三次握手来建立链接的,就是执行connect的时候 ; tcpdump抓包观察TCP的链接的建立和关闭;

 //最后一个ack=1,是因为三次握手完成,便于观察数据,也可以不是1

加上S

应答确认:

以hello为例:(五个字符)

 //发送五个字符的hello(长度为5)

//收到五个字符(ack6)

//回复OK(长度为2)

//收到OK(ack3)

发送一段数据反复确认,花费高

超时重传

无差错,数据的交互:

 有差错数据的交互流程:

 乱序重排,去重

应答确认,超时重传,乱序重排,去重最终保证了tcp链接的可靠性;

四次挥手

什么时候开始挥手?服务器或者客户端执行close的时候 ;

//演化为三次挥手,中间两次同时发送

//四次挥手

相关文章:

  • Qt之QSystemTrayIcon(托盘图标)的使用(含源码+注释)
  • 北大考研复试准备
  • 【测试开发实战】Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台
  • 同态加密的理解
  • 基于FPGA实现正弦插值算法
  • Linux命令·wc
  • ClickHouse学习笔记(三):MergeTree 原理解析
  • CnOpenData中国行政区划shp数据
  • 20美刀一个月的ChatGPT架构师,性价比逆天了
  • 非线性优化问题基本形式概述
  • Python图片相册批处理器的设计与实现批量添加图片水印、批量命名等功能
  • 264 编码 profile level 分析
  • spring5源码篇(5)——bean的依赖注入之setter注入、field注入
  • 【Note2】macvlan,sol
  • 01 | Msyql系统架构
  • new bing的chatGPT如何解析英文论文pdf
  • Java - 配置中心初体验
  • 10个杀手级应用的Python自动化脚本
  • 接口的定义和实现
  • [Java Web]JSP进阶