`

TCP连接建立和关闭 数据包

 
阅读更多

 

 

连接建立

10:56:08.947939 IP 127.0.0.1.50007 > 127.0.0.1.8080: S 3117834678:3117834678(0) win 32792 <mss 16396,sackOK,timestamp 64997325 0,nop,wscale 5>
        0x0000:  4500 003c a67b 4000 4006 963e 7f00 0001  E..<.{@.@..>....
        0x0010:  7f00 0001 c357 1f90 b9d6 61b6 0000 0000  .....W....a.....
        0x0020:  a002 8018 fe30 0000 0204 400c 0402 080a  .....0....@.....
        0x0030:  03df c7cd 0000 0000 0103 0305            ............

10:56:08.948083 IP 127.0.0.1.8080 > 127.0.0.1.50007: S 3112532867:3112532867(0) ack 3117834679 win 32768 <mss 16396,sackOK,timestamp 64997325 64997325,nop,wscale 5>
        0x0000:  4500 003c 0000 4000 4006 3cba 7f00 0001  E..<..@.@.<.....
        0x0010:  7f00 0001 1f90 c357 b985 7b83 b9d6 61b7  .......W..{...a.
        0x0020:  a012 8000 fe30 0000 0204 400c 0402 080a  .....0....@.....
        0x0030:  03df c7cd 03df c7cd 0103 0305            ............


10:56:08.948132 IP 127.0.0.1.50007 > 127.0.0.1.8080: . ack 1 win 1025 <nop,nop,timestamp 64997325 64997325>
        0x0000:  4500 0034 a67c 4000 4006 9645 7f00 0001  E..4.|@.@..E....
        0x0010:  7f00 0001 c357 1f90 b9d6 61b7 b985 7b84  .....W....a...{.
        0x0020:  8010 0401 fe28 0000 0101 080a 03df c7cd  .....(..........
        0x0030:  03df c7cd 

                               ....                 




分析一下TCP建立时第一个syn数据包的内容:

10:56:08.947939 IP 127.0.0.1.50007 > 127.0.0.1.8080: S 3117834678:3117834678(0) win 32792 <mss 16396,sackOK,timestamp 

64997325 0,nop,wscale 5> 
0x0000:  4500 003c a67b 4000 4006 963e 7f00 0001  E..<.{@.@..>.... 
        0x0010:  7f00 0001 c357 1f90 b9d6 61b6 0000 0000  .....W....a..... 
        0x0020:  a002 8018 fe30 0000 0204 400c 0402 080a  .....0....@..... 
        0x0030:  03df c7cd 0000 0000 0103 0305            ............ 


		IP报文 
版本 4
首部长度 5
16位服务类型TOS 0
16位总长度 003c 十进制 60
16位表示   a67b 十进制 42619

3位表示和13位偏移量 4000
3位表示010
13位偏移量 0

八位生存时间TTL 40  十进制64
八位协议 06	十进制6
源地址    7f00 0001   	127.0.0.1
目的地址  7f00 0001	127.0.0.1



		TCP报文从 c357开始,所以前面的IP报文就占了20个字节

源端口   c357 的十进制就是 50007
目的端口 1f90 的十进制就是 8080
32位的序列号  b9d6 61b6  十进制是 3117834678
32位的确认序列号 是 0

a002 对应的二进制 1000 0000 0001 1000
首部长度 1000
保留6位  0000 00
标志位   01 1000

窗口大小 8018  十进制就是 32792
十六位校验和 fe30 十进制 65072
十六位紧急指针 0000  无

TCP报文的选项和数据 有20个字节:
0204 400c 0402 080a    03df c7cd 0000 0000 0103 0305 
由tcpdump解析的数据反退可以得到
0204 400c 这个表示的是mss
0204 作用未知
400c 的十进制就是 16396
0402 080a 表示的是 sackOK

03df c7cd 的十进制是 64997325
所以这32个字节就是timestamp

最后8个字节  0000 0000 0103 0305 
表示的是 0,nop,wscale 5

 




第一个syn包的
32位的序列号  b9d6 61b6  十进制是 3117834678  
32位的确认序列号 是 0  


第二个包 由服务端返回的ack包
32位的序列号      b985 7b83  十进制是  3112532867
32位的确认序列号  b9d6 61b7  十进制是  3117834679
所以确认序列号 就是对收到包的序列号 +1
由IP包头可以看到,这个数据也是60个字节


第三个包
32位的序列号	  b9d6 61b7  十进制是   3117834679
32位的确认序列号  b985 7b84  十进制是   3112532868
可以看到确实序列号就是对第二个数据包akc 序列号+1
最后这个数据包的大小是52个字节













连接关闭

14:29:00.669797 IP 10.217.12.137.4264 > 10.210.214.51.8080: F 1:1(0) ack 1 win 65535
        0x0000:  4500 0028 b31b 4000 3d06 924d 0ad9 0c89  E..(..@.=..M....
        0x0010:  0ad2 d633 10a8 1f90 24a7 53c8 cef6 1ed7  ...3....$.S.....
        0x0020:  5011 ffff 20f7 0000                      P.......

14:29:00.669947 IP 10.210.214.51.8080 > 10.217.12.137.4264: . ack 2 win 183
        0x0000:  4500 0028 2fb6 4000 4006 12b3 0ad2 d633  E..(/.@.@......3
        0x0010:  0ad9 0c89 1f90 10a8 cef6 1ed7 24a7 53c9  ............$.S.
        0x0020:  5010 00b7 f881 0000                      P.......

14:29:00.743090 IP 10.210.214.51.8080 > 10.217.12.137.4264: F 1:1(0) ack 2 win 183
        0x0000:  4500 0028 2fb7 4000 4006 12b2 0ad2 d633  E..(/.@.@......3
        0x0010:  0ad9 0c89 1f90 10a8 cef6 1ed7 24a7 53c9  ............$.S.
        0x0020:  5011 00b7 f881 0000                      P.......

14:29:00.743961 IP 10.217.12.137.4264 > 10.210.214.51.8080: . ack 2 win 65535
        0x0000:  4500 0028 b31c 4000 3d06 924c 0ad9 0c89  E..(..@.=..L....
        0x0010:  0ad2 d633 10a8 1f90 24a7 53c9 cef6 1ed8  ...3....$.S.....
        0x0020:  5010 ffff 20f6 0000                      P.......



可以看到客户端先关闭,服务端响应一个ack(序列号+1)
然后服务端关闭,客户端也响应一个ack(序列号+1)
另外这4个数据包的大小都是 十六进制的28,也就是40字节,所以只有ip包头和tcp包头没有数据




连接半关闭

11:12:37.322421 IP 10.217.12.22.4929 > 10.210.214.51.8080: F 1:1(0) ack 1 win 65535
        0x0000:  4500 0028 81cc 4000 3d06 c40f 0ad9 0c16  E..(..@.=.......
        0x0010:  0ad2 d633 1341 1f90 df74 0a6c 2fdc f41a  ...3.A...t.l/...
        0x0020:  5011 ffff 7736 0000                      P...w6..

11:12:37.322563 IP 10.210.214.51.8080 > 10.217.12.22.4929: . ack 2 win 183
        0x0000:  4500 0028 77db 4000 4006 cb00 0ad2 d633  E..(w.@.@......3
        0x0010:  0ad9 0c16 1f90 1341 2fdc f41a df74 0a6d  .......A/....t.m
        0x0020:  5010 00b7 f80e 0000                      P.......


需要注意的是,关闭输入流不会发送fin包,只有关闭输出流的时候才会向远端发的送一个fin包,同样,对方收到了fin包后会返回一个ack包






超时连接,完整格式如下:

14:41:14.294796 IP 10.217.12.137.4445 > 10.210.214.51.8080: S 3611706660:3611706660(0) win 65535 <mss 1460,nop,wscale 0,nop,nop,sackOK>
        0x0000:  4500 0034 bcaf 4000 3d06 88ad 0ad9 0c89  E..4..@.=.......
        0x0010:  0ad2 d633 115d 1f90 d746 4524 0000 0000  ...3.]...FE$....
        0x0020:  8002 ffff 2959 0000 0204 05b4 0103 0300  ....)Y..........
        0x0030:  0101 0402      
                          ....
14:41:14.294919 IP 10.210.214.51.8080 > 10.217.12.137.4445: R 0:0(0) ack 3611706661 win 0
        0x0000:  4500 0028 0000 4000 4006 4269 0ad2 d633  E..(..@.@.Bi...3
        0x0010:  0ad9 0c89 1f90 115d 0000 0000 d746 4525  .......].....FE%
        0x0020:  5014 0000 6a10 0000                      P...j...

14:41:14.769635 IP 10.217.12.137.4445 > 10.210.214.51.8080: S 3611706660:3611706660(0) win 65535 <mss 1460,nop,wscale 0,nop,nop,sackOK>
        0x0000:  4500 0034 bcb2 4000 3d06 88aa 0ad9 0c89  E..4..@.=.......
        0x0010:  0ad2 d633 115d 1f90 d746 4524 0000 0000  ...3.]...FE$....
        0x0020:  8002 ffff 2959 0000 0204 05b4 0103 0300  ....)Y..........
        0x0030:  0101 0402 
                               ....
14:41:14.769656 IP 10.210.214.51.8080 > 10.217.12.137.4445: R 0:0(0) ack 1 win 0
        0x0000:  4500 0028 0000 4000 4006 4269 0ad2 d633  E..(..@.@.Bi...3
        0x0010:  0ad9 0c89 1f90 115d 0000 0000 d746 4525  .......].....FE%
        0x0020:  5014 0000 6a10 0000                      P...j...

14:41:15.371265 IP 10.217.12.137.4445 > 10.210.214.51.8080: S 3611706660:3611706660(0) win 65535 <mss 1460,nop,wscale 0,nop,nop,sackOK>
        0x0000:  4500 0034 bcb6 4000 3d06 88a6 0ad9 0c89  E..4..@.=.......
        0x0010:  0ad2 d633 115d 1f90 d746 4524 0000 0000  ...3.]...FE$....
        0x0020:  8002 ffff 2959 0000 0204 05b4 0103 0300  ....)Y..........
        0x0030:  0101 0402 
                               ....
14:41:15.371293 IP 10.210.214.51.8080 > 10.217.12.137.4445: R 0:0(0) ack 1 win 0
        0x0000:  4500 0028 0000 4000 4006 4269 0ad2 d633  E..(..@.@.Bi...3
        0x0010:  0ad9 0c89 1f90 115d 0000 0000 d746 4525  .......].....FE%
        0x0020:  5014 0000 6a10 0000                      P...j...



简略格式:
14:50:59.068690 IP 10.217.12.137.4578 > vm11100049.webcache: S 3655962589:3655962589(0) win 65535 <mss 1460,nop,wscale 0,nop,nop,sackOK>
14:50:59.072533 IP vm11100049.webcache > 10.217.12.137.4578: R 0:0(0) ack 3655962590 win 0
14:50:59.549703 IP 10.217.12.137.4578 > vm11100049.webcache: S 3655962589:3655962589(0) win 65535 <mss 1460,nop,wscale 0,nop,nop,sackOK>
14:50:59.549739 IP vm11100049.webcache > 10.217.12.137.4578: R 0:0(0) ack 1 win 0
14:51:00.054506 IP 10.217.12.137.4578 > vm11100049.webcache: S 3655962589:3655962589(0) win 65535 <mss 1460,nop,wscale 0,nop,nop,sackOK>
14:51:00.054527 IP vm11100049.webcache > 10.217.12.137.4578: R 0:0(0) ack 1 win 0

从windows客户端 连接linux服务端
可以看到 客户端发送了三次连接,摘取客户端发送的三次连接时间戳
14:50:59.068690
14:50:59.549703
14:51:00.054506

可以看到大约是500毫秒发送一次













连接复位

15:48:45.078042 IP 10.210.214.51.8080 > 10.217.12.137.1527: S 1343092142:1343092142(0) ack 4174171428 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 5>
        0x0000:  4500 0034 0000 4000 4006 425d 0ad2 d633  E..4..@.@.B]...3
        0x0010:  0ad9 0c89 1f90 05f7 500d f5ae f8cc cd24  ........P......$
        0x0020:  8012 16d0 f88d 0000 0204 05b4 0101 0402  ................
        0x0030:  0103 0305                                ....

15:48:45.078554 IP 10.217.12.137.1527 > 10.210.214.51.8080: . ack 1 win 65535
        0x0000:  4500 0028 f803 4000 3d06 4d65 0ad9 0c89  E..(..@.=.Me....
        0x0010:  0ad2 d633 05f7 1f90 f8cc cd24 500d f5af  ...3.......$P...
        0x0020:  5010 ffff 8637 0000                      P....7..



15:48:50.739593 IP 10.217.12.137.1527 > 10.210.214.51.8080: R 1:1(0) ack 1 win 0
        0x0000:  4500 0028 f826 4000 3d06 4d42 0ad9 0c89  E..(.&@.=.MB....
        0x0010:  0ad2 d633 05f7 1f90 f8cc cd24 500d f5af  ...3.......$P...
        0x0020:  5014 0000 8633 0000                      P....3..


第三个包就是复位包,可以看到复位包里面也包含了确认序列号,就是第一个数据包的确认
序列号  +1









                      ....

 

  • 大小: 27.8 KB
  • 大小: 65.7 KB
  • 大小: 88.8 KB
  • 大小: 69.5 KB
  • 大小: 36.6 KB
分享到:
评论

相关推荐

    TCP.rar_TCP数据包_发送tcp数据包

    TCP的四次挥手过程确保了连接的优雅关闭:一方发送FIN标志,另一方回应ACK,然后双方各自发送一个FIN+ACK,最后接收完所有数据的一方发送一个ACK,连接正式关闭。 在"发送TCP数据包.txt"文件中,可能包含了实现上述...

    TCPS.rar_IP数据_TCP数据包_发送tcp数据包_封装Ip数据包

    4. **发送TCP数据包**:发送TCP数据包涉及TCP三次握手建立连接、数据传输、四次挥手断开连接的过程。在源代码实现中,这通常涉及到套接字编程,如使用socket函数创建套接字,bind绑定本地端口,connect连接远程...

    Tcp和Udp的数据包发送程序

    UDP的优势在于其高效性,没有TCP的连接建立和释放过程,因此适用于对实时性要求较高的应用场景,如视频流媒体和在线游戏。在本程序中,你将学习如何使用UDP套接字发送和接收数据报。 Socket编程是实现网络通信的...

    tcp连接建立-关闭-窗口-慢启动1

    1. **TCP连接建立** - 通常被称为“三次握手”(Three-Way Handshake)。在TCP连接开始时,客户端(Source Port)发送一个SYN(同步序列编号)包给服务器(Destination Port),其中包含了随机生成的初始序列号ISN。...

    用Java实现对IP/TCP协议数据包的拦截和分析

    4. **TCP连接分析**: 对于TCP包,我们可以跟踪连接的状态,比如是否建立了连接(三次握手),是否有数据传输,连接何时关闭(四次挥手)。通过监控SYN、SYN+ACK、ACK等标志,我们可以绘制出TCP连接的生命周期。 5. ...

    tcp.rar_sendto TCP_tcp 数据包

    在描述中提到的`sendto()`方法,可能是在模拟TCP连接或者是在非标准的实验环境中,通过手动构造TCP报头并使用`sendto()`来发送数据。这种方式的缺点是失去了TCP的可靠性保障,只能确认数据离开本地主机,而无法得知...

    详解TCP协议建立连接全过程状态变迁图.doc

    TCP(Transmission Control ...总的来说,TCP协议的连接建立过程是一个严谨且复杂的过程,涉及到的状态变迁和控制机制都是为了保证数据的正确传输和网络的稳定运行。理解这些原理对于网络编程和问题排查具有重要意义。

    C语言 tcp数据包重组

    在计算机网络中,TCP(传输控制协议)是一种面向连接、可靠的传输协议,它负责在网络中分片和重新组装数据包,以确保数据的正确传输。本主题将深入探讨C语言中实现TCP数据包重组的过程,以及如何通过编程来处理这个...

    发送tcp数据包实验设计

    - 多线程或异步处理:为了提高效率,你可能需要使用多线程或异步I/O来同时处理多个TCP连接。 - 数据编码与解码:根据需求,可能需要对发送和接收的数据进行特定的编码(如JSON、XML)或解码处理。 - 安全性:考虑...

    TCP连接建立与管理[定义].pdf

    至此,TCP连接建立完成。 **四次挥手**: 1. **一次挥手**:当数据传输完成后,客户端A发送一个FIN(结束)标志的报文段,表示它不再发送数据,但仍然可以接收数据,序列号设为最后接收数据的序号加1。 2. **二次...

    MATLAB设计_MATLAB中的TCP和IP连接或UDP数据包.zip

    在MATLAB中,TCP连接的建立、数据交换和关闭都需要特定的步骤。例如,使用`fopen`创建TCP套接字,`fputs/fgets`进行数据传输,最后用`fclose`关闭连接。 3. **IP协议**: IP位于网络层,负责数据包的路由和传输。...

    wireshark抓取TCP连接及断开实验

    本实验旨在利用Wireshark这一强大的网络协议分析工具,深入探索TCP连接建立(三次握手)和连接释放(四次挥手)的过程,并通过实际操作加深对TCP协议的理解。 #### 实验原理 TCP协议是一种面向连接的、可靠的、...

    TCP连接迁移在Linux环境中的实现.pdf

    在Linux中,TCP连接的建立、维护和关闭都由内核的TCP模块处理。 【TCP连接迁移的实现】 在Linux中实现TCP连接迁移,首先需要理解TCP连接的状态机,包括SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT...

    实验12Wireshark工具的使用与TCP数据包分析.rar

    旗标如SYN、ACK、FIN等表示TCP连接的不同阶段,如建立、数据传输和关闭。 Wireshark还提供了一个时间线视图,可以清晰地看到TCP连接的三次握手和四次挥手过程。这对于理解TCP连接的生命周期非常有帮助。此外,...

    在连接建立状态下的TCP连接 收到SYN后会发生什么529-542

    TCP 连接建立状态下的 SYN 报文处理机制 在连接建立状态下的 TCP 连接中,如果收到 SYN 报文,会发生什么?这个问题的答案将在下面详细解释。 首先,需要了解 TCP 连接的基本概念。TCP 连接是由「四元组」唯确认的...

    8.1.4 TCP 链接断开 - Wireshark 数据包分析实战(第 3 版) - 知乎书店1

    在TCP/IP协议中,TCP(Transmission Control Protocol)提供了一种面向连接、可靠的传输服务,而TCP连接的建立和断开是TCP通信中的重要环节。本节将深入探讨TCP链接的断开过程,以及如何通过Wireshark数据包分析工具...

    TCP/IP实验 数据包分析 实验数据

    例如,一个TCP连接的建立过程(三次握手)和关闭过程(四次挥手)会在数据包中清晰体现。每次握手或挥手都会交换多个TCP报文段,每个报文段包含序列号、确认号和控制位,这些信息在分析时至关重要。 此外,还可以...

    两个TCP应用同时相互连接和关闭、抓包数据

    TCP连接的关闭通常通过四次挥手(FIN,FIN+ACK,ACK,FIN+ACK)来实现。当两个应用同时尝试关闭连接时,它们都将发送FIN(结束)段,表示它们不再有数据要发送。这种情况下,抓包数据会显示两个独立的FIN段,分别...

    TCP连接建立TCP连接建立

    ### TCP连接建立与终止的深度解析 #### 一、TCP连接建立:三次握手 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,在计算机网络中广泛使用。TCP连接的建立是通过三次握手来完成的,...

    TCP协议测试连接工具(很实用)

    2. **数据传输**:连接建立后,客户端和服务器可以互相发送数据。TCP通过窗口滑动机制来实现流量控制,确保接收方可以处理发送方的数据速率。 3. **四次挥手**:当数据传输完成后,双方需要通过四次挥手来关闭连接...

Global site tag (gtag.js) - Google Analytics