TCP

TCP-BPF :通过BPF定制TCP行为 TCP-BPF :通过BPF定制TCP行为 TCP-BPF是近期由facebook工程师发明,推送到内核的。 它的设计初衷是提供一种新的定制TCP参数和行为的机制。例如可以灵活的修改tcp 缓冲区大小,SYN RTO, SYN-ACK RTO 参数等。那么这种新的机制有什么神奇之处?过去的机制又有何短处?且听下文。 介绍 Linux 本身提供了一些机制可以修改TCP的一些参数。 setsockopt 我们知道当我们建立了socket 之后,可以通过setsockopt 修改一些TCP的参数,例如SO_R 阅读详情

TCP(Transmission Control Protocol) 传输控制协议

三次握手

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:

SYN(synchronous建立联机)

ACK(acknowledgement 确认)

PSH(push传送)

FIN(finish结束)

RST(reset重置)

URG(urgent紧急)

Sequence number(顺序号码)

Acknowledge number(确认号码)

客户端TCP状态迁移:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
服务器TCP状态迁移:
CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

各个状态的意义如下: 
LISTEN - 侦听来自远方TCP端口的连接请求; 
SYN-SENT -在发送连接请求后等待匹配的连接请求; 
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; 
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户; 
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求; 
CLOSE-WAIT - 等待从本地用户发来的连接中断请求; 
CLOSING -等待远程TCP对连接中断的确认; 
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; 
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; 
CLOSED - 没有任何连接状态;

 

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。

(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

 CP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。 

(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。 

(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。 

(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。 


浅谈tcp协议与tcp_tw 既然打开 net.ipv4.tcp_tw_reuse 参数可以快速复用处于 TIME_WAIT 状态的 TCP 连接,那为什么 Linux 内核默认是关闭状态呢? tcp_tw_reuse 的作用是让客户端很快的复用 time_wait 的端口,相当于跳过了这个状态,所以默认关闭 【如果 TIME_WAIT 状态持续时间过短或者没有,会有什么问题?】 因为开启 tcp_tw_reuse 参数可以快速复用处于 TIME_WAIT 状态的 TCP 连接时,相当于缩短了 TIME_WAIT 状态的持续时间。 使用 阅读详情

相关推荐

嵌入式充电协议深度解析:从QC到PD3.1的技术演进与实战应用

本文深入解析了从QC到PD3.1的嵌入式充电协议技术演进与实战应用。通过电压谈判、协议芯片设计、Type-C接口优化等关键技术,详细介绍了快充协议在嵌入式系统中的实现挑战与解决方案,包括兼容性测试、EMC问题处理及空间限制创新设计,为开发者提供了宝贵的实践经验。

weixin_29194817的博客 421

【bash】关于 /dev/(tcp|udp)/${HOST}/${PORT}

一、实验背景 Linux中的一个特殊文件:/dev/tcp 打开这个文件就类似于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。 我们可以通过重定向实现基于tcp/udp协议的软件通讯,/dev/tcp/host/port 只要读取或者写入这个文件,相当于系统会尝试连接:host 这台机器,对应port端口。 如果主机以及端口...

michaelwoshi的博客 7516

别再乱删文件了!修复Print Spooler服务自动停止的3个关键检查点(附Win10/Win11实测)

本文深入解析Windows系统中Print Spooler服务自动停止的常见原因及修复方法。从第三方驱动冲突、权限与服务依赖关系到打印队列积压,提供3个关键检查点的详细排查步骤,帮助用户彻底解决打印服务异常问题,适用于Win10/Win11系统。

weixin_31569671的博客 676

反弹shell总结

反弹shell 在介绍反弹链接的时候先说明什么是正向链接:假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。而反弹shell是指攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。本质上是网络概念的客户端与服务端的角色反转。反弹shell简单来说就是通过命令让靶机的shell的控制权交到攻击者的机器中。 可能有人会问:我们都能够在靶机

weixin_44576725的博客 4967

TS808效果器制作教程

TS808效果器制作教程 可以在立创商城购买到大部分的电阻电容和IC,音频接口,踩钉,电位器和电源接口可以去某宝看看都买得到的。链接https//pan.baidu.com/s/1QId1eIE3fJ2u5NLBSISvGA。安装过程过于繁琐,把所有元器件按照图纸焊接完成就可以调试了,祝你们成功!这是TS808经典效果器制作过程的记录。IC是JRC4558。...

qq_18948149的博客 3427

达梦--利用存储过程与定时任务实现数据自动迁移

本文详细介绍了在达梦数据库中如何结合存储过程与定时任务实现数据自动迁移。通过一个电商订单归档的实战案例,阐述了从设计表结构、编写具备异常处理和幂等性的存储过程,到配置DBMS_SCHEDULER定时任务的全流程。该方法能有效替代手动脚本,确保数据同步任务的稳定、准确与自动化执行,适用于报表准备、数据备份等多种场景。

weixin_29261711的博客 430

深入解析Linux系统中的/dev/tcp:网络通信的隐藏利器

本文介绍了Linux中Bash shell提供的虚拟设备/dev/tcp的功能与使用方法。/dev/tcp并非真实存在的设备文件,而是Bash内置的网络通信接口,允许在shell脚本中直接进行TCP通信而无需外部工具。文章详细讲解了其工作原理、基本语法(如exec 3<>/dev/tcp/ip/port建立连接)和实际应用场景,包括HTTP请求测试、端口扫描、简单文件传输等。这一特性在极简环境或需要快速网络测试时特别有用,但需注意它仅适用于Bash环境,且功能有限,不适合复杂网络操作。

宝子速来!这儿是我程序员的“快乐星球”博客。没有晦涩代码轰炸,满是斗bug糗事、技术趣闻。算法如神奇魔法,bug似调皮精灵,我用诙谐语言拆解编程,让你在欢笑中解锁代码新姿势,速来围观! 1447

TC387 MCMCAN Message RAM配置详解:Tx Buffer与Rx FIFO地址布局

在嵌入式CAN/CAN FD通信系统中,缓冲区和FIFO是数据收发的核心机制,而AURIX TC3xx系列单片机将这一机制集成在了MCMCAN模块专用的Message RAM中。这是一块由CAN控制器独占的内存区域,开发人员需要按照寄存器规范手动划分Tx Buffer、Rx FIFO、过滤元素等子区间。合理的RAM布局能确保不同功能区域互不重叠、有序排列,避免数据覆盖与错帧。通过掌握TXBC、RXF0C等配置寄存器的字段含义,结合实用的地址布局表,可以显著降低多节点CAN通信的调试成本。本内容面向使用TC3

weixin_34226182的博客 223

/dev/tcp 查看服务和端口

Linux下通信调试网络调试工具: 常用的如 tcpdump,nc,lsof,netstat,telnet 可以快速调试tcp,udp服务 今天介绍一个在shell中非常方便的 /dev/tcp/ip/端口 原理 linux中有一个特殊的文件/dev/tcp,打开这个文件就类似于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。 以读写方式打开/dev/tcp,并指定服务器名为: www.youkuaiyun.com,端口号为:80 exec 6&l

weixin_44597836的博客 2208

数仓解惑:数据仓库常见建模方法与大数据领域建模实例综述

为什么需要数据建模? 为什么要进行数据仓库建模? 随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的 大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑 ...

云祁QI 5850

第七篇:A133 Android 10 触摸提示音过大

描述: 开启触摸提示音功能之后,客户反馈触摸提示音过大,需要改小。 解决方案: 看代码注释,在framework下搜索方法即可。 /** @see AudioManager#playSoundEffect(int) */ public void playSoundEffect(int effectType) { playSoundEffectVolume(effectType, -1.0f); } /** @see AudioManager#playSoundEff

qq_33088619的博客 1696

/dev/tcp/*/*

一些文件名在重定向中被 bash 特殊处理

lyndon 1万+

设计原则:面向对象设计原则详解

我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。面向对象设计原则和设计模式也是对系统.........

黄规速博客:学如逆水行舟,不进则退 4万+

【TCP专题】TCP连接建立

在这里我们整理一些关于TCP协议的知识。这块的内容写起来是非常费劲的,因为本身TCP协议就不是一个简单的协议,它能获得如今的地位,和其复杂且出色的表现是分不开的。

Linkjiee的博客 7526

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TCP报文( tcp dup ack 、TCP Retransmission)

最近因使用FTP 上传数据的时候总是不能成功,抓包后发现 TCP 报文出现与两种类型的包。收集整理下。

神棍之路 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[Linux][网络][TCP][一][TCP基础][TCP报头]详细讲解

[Linux][网络][TCP][一][TCP基础][TCP报头]详细讲解

SnowK博客 5434

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TCP Analysis Flags 之 TCP ZeroWindowProbe

实际在 TCP 分析中,关于TCP ZeroWindowProbe 和 ZeroWindowProbeAck当 Seq Num 等于之前下一个期望的 Seq NumTCP 段大小为 1反方向最后一次看到的接收窗口大小为零时设置影响或。具体的代码如下,总的来说这段代码的作用是检测零窗口探测包,并对其做出适当的标记,以便 Wireshark 进行后续的分析和显示。主要检测以下三个条件,如果都满足,则认为是一个零窗口探测数据包。检查 TCP 段长度是否为 1 字节;

7ACE的博客 1757

TCP Analysis Flags 之 TCP Port numbers reused

实际在 TCP 分析中,关于的定义非常简单,如下,针对 SYN 数据包(而不是SYN+ACK),如果已经有一个使用相同 IP+Port 的会话,并且这个 SYN 的序列号与已有会话的 ISN 不同时设置。注意:官方文档此处说明的是 SYN,而非 SYN/ACK,和实际代码实现的却不一样,下述展开说明。具体的代码如下,主要作用是处理 SYN 以及 SYN/ACK 数据包,判断是新连接还是已有连接的重传,并相应地创建新会话或更新会话的序列号等,并设置相关标志位。

7ACE的博客 3568

TCP Analysis Flags 之 TCP ZeroWindow

TCP Analysis Flags 之 TCP ZeroWindow

7ACE的博客 2084

解析TCP

TCP

m0_46661757的博客 3497

TCP协议--TCP头部

《Linux高性能服务器编程》阅读笔记:1. TCP协议的概念  TCP和UDP是传输层的两个主要协议。TCP相对于UDP来说,是面向连接、字节流和可靠传输。  (1) 面向连接   使用TCP通信的双方必须先建立起连接,然后才能开始数据的读写。建立连接后双方的系统内核会为该连接分配必要的系统资源,用来管理连接的状态和传输在连接上的数据。TCP连接是全双工的,即双方的读写操作可以在同一连接上执行。

echo_bright_的博客 1万+

TCP Analysis Flags 之 TCP Dup ACK

TCP 段大小为 0窗口大小非零且没有改变,或者有有效的 SACK 数据下一个期望的 Seq Num 和 LastACK Num 是非 0 的(即连接已经建立)没有设置 SYN、FIN、RST具体的代码如下,总的来说这段代码的用于准确检测 TCP 重复 ACK 的情况,并记录相关信息以支持后续的重传机制分析,是 TCP 可靠传输的重要组成部分。这段代码的主要逻辑如下,如果所有下述条件均满足,则认为该数据包是一个重复确认包。检查 TCP 段大小是否为 0;检查窗口大小是否不为 0;

7ACE的博客 2026

TCP通信实现

本文介绍了如何实现TCP通信,以及通过TCP通信引入了通信过程中,每个层协议数据的封包过程,以及封包内容,封包过程,

2301_78622258的博客 2975

TCP协议与TCP SYN Flood攻击

字段含义[TCP(传输控制协议)\_百度百科](https://baike.baidu.com/item/TCP/33012) -TCP源端口(Sourceport):计算机上的应用程序的端口号,占16位 -TCP目的端口(Destinationport):目标计算机的应用程序端口号,占16位 -SequenceNumber是发送数据包中的第一个字节的序列号,32位。 -④AcknowledgmentNumber是确认序列号,32位。 -⑤DataOffset是数据偏移

柒烨~的博客 2026

TCP攻击

目录TCP协议tcp报文组成TCP协议中的常见计时器TCP三次握手方法建立连接TCP终止连接过程常见TCP攻击 TCP协议 tcp报文组成 源端口号(Source Port,16比特)和目的端口号(Destination Port,16比特):分别表示发送方和接收方的端口号。 序号(Sequence Number,32比特):该TCP段中携带的用户数据中第一个字节的编号,编号是以字节为单位的。可以表示4GB数据,足够保证在分组的生命期内不会出现重复的顺序号。 确认号(Acknowledgment Numb

weixin_47726676的博客 3924

TCP Analysis Flags 之 TCP ACKed unseen segment

实际在 TCP 分析中,关于的定义非常简单,当为反方向设置了期望的下一个确认号并且它小于当前确认号时设置。具体的代码如下,涉及到 TCP 分析逻辑还是稍复杂,毕竟涉及到不同方向的 Seq 和 Ack Num 计算,其中还涉及零窗口恢复时候的的一个特殊场景。总之,代码通过识别和处理 TCP 数据流中的 “被 ACK 的丢失数据包” 情况,并调整变量来反映被 ACK 的最大序列号,从而准确跟踪分析 TCP 连接的状态。else {

7ACE的博客 3322
上一篇: UI网络编程
下一篇: ios数据库
lanxiaoni
博客等级 码龄12年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值