TCP 三次握手 四次挥手 tcpdump Flags

TCP三次握手,四次挥手

三次握手

简单的三次握手示意图。
简单的三次握手

四次挥手

简单的四次挥手过程示意图。
简单四次挥手

TCP中Flags字段

SYN 表示建立连接,在TCP监听中为: Flags [S];
FIN 表示关闭连接,在TCP监听中为: Flags [F];
ACK 表示收到请求,返回响应,在TCP监听中为: Flags [.];
PSH 表示数据传输,在TCP监听中为: Flags [P];
RST 表示连接重置,在TCP监听中为: Flags [R]。

Flags字段组合使用

收到并建立连接为: Flags [S.]
收到并关闭连接为: Flags [F.]
收到并传输数据为: Flags [P.]
收到并连接重置为: Flags [R.]

注意

当出现SYN和SYN+ACK包时,一般认为客户端与服务器建立了一个连接。
当出现FIN包或RST包时,一般认为客户端与服务器端断开了一个连接。

使用tcpdump监听指定端口的过程

/*----------一个TCP建立连接的过程-------------*/
/*----------客户端向服务端发起TCP连接请求-------------*/
14:01:07.821891 IP 127.0.0.2.40970 > 127.0.0.1.transact: Flags [S], seq 2270600129, win 26883, options [mss 8961,sackOK,TS val 698243827 ecr 0,nop,wscale 7], length 0
/*----------服务器表示收到,并向客户端发起TCP连接请求-------------*/
14:01:07.821913 IP 127.0.0.1.transact > 127.0.0.2.40970: Flags [S.], seq 2043751201, ack 2270600130, win 26883, options [mss 8961], length 0
/*----------客户端表示收到-------------*/
14:01:07.822927 IP 127.0.0.2.40970 > 127.0.0.1.transact: Flags [.], ack 1, win 26883, length 0

/*----------一个TCP关闭连接的过程-------------*/
/*----------客户端向服务端发起TCP连接结束-------------*/
14:01:07.822941 IP 127.0.0.2.40970 > 127.0.0.1.transact: Flags [F.], seq 1, ack 1, win 26883, length 0
/*----------服务端向客户端表示收到TCP连接结束-------------*/
14:01:07.823154 IP 127.0.0.1.transact > 127.0.0.2.40970: Flags [.], ack 2, win 26883, length 0
/*----------服务端向客户端再次表示收到TCP连接结束,并向客户端发起TCP连接结束-------------*/
14:01:07.823165 IP 127.0.0.1.transact > 127.0.0.2.40970: Flags [F.], seq 1, ack 2, win 26883, length 0
/*----------客户端向服务端表示收到TCP连接结束-------------*/
14:01:07.824160 IP 127.0.0.2.40970 > 127.0.0.1.transact: Flags [.], ack 2, win 26883, length 0
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们来解释一下TCP三次握手的过程: 1. 客户端向服务器发送一个SYN(同步)包,其中包含一个随机生成的初始序号(ISN)2. 服务器收到SYN包后,会回复一个SYN+ACK(同步+确认)包,其中确认号是客户端发送的ISN加1,并且服务器也会生成一个自己的随机序列号。 3. 客户端再次回复一个ACK(确认)包,其中确认号是服务器发送的ISN加1。 这样,TCP连接就建立起来了。现在我们来分析一下抓包数据。 在抓包工具中,你可以使用Wireshark或者tcpdump来捕获网络数据包。当你开始抓包后,你会看到大量的数据包被捕获和显示。 对于TCP三次握手的抓包分析,你需要过滤出与目标IP地址和端口相关的数据包。使用过滤器表达式"tcp.dstport == 目标端口 && ip.dst == 目标IP地址"可以帮助你过滤出特定的数据包。 在抓包的结果中,你应该能够看到三个关键的数据包: 1. SYN包:这是客户端发送的第一个数据包,源IP地址是客户端的IP地址,目标IP地址是服务器的IP地址,源端口是随机生成的,目标端口是服务器监听的端口。 2. SYN+ACK包:这是服务器作为对SYN包的回复发送的数据包,源IP地址是服务器的IP地址,目标IP地址是客户端的IP地址,源端口是服务器监听的端口,目标端口是客户端发送SYN包时的源端口。 3. ACK包:这是客户端作为对SYN+ACK包的回复发送的数据包,源IP地址是客户端的IP地址,目标IP地址是服务器的IP地址,源端口是客户端发送SYN+ACK包时的源端口,目标端口是服务器监听的端口。 通过分析这些数据包的源、目标IP地址、端口号以及序列号和确认号等信息,你可以看到TCP三次握手过程中的交互步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值