WireShark—TCP解析

三次握手详解

抓包结果

利用WireShark抓包,追踪流,抓取到一个会话的数据包。前三个TCP数据包对应了TCP建立连接的三次握手

报文格式

上图为TCP的报文段格式

SYN字段

SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。

ACK字段

ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。

在这里插入图片描述

wireshark抓取的包中637号包对应图中的x号包,638对应y号包,639对应x+1。

第一次握手

637号包中分别发送了如下信息

数据

MSS

最大报文段长度(MSS)是TCP协议的一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(不包括文段头)。

在此处IP为192.X的主机告知了IP为182.X的主机期望收到的数据的最大长度为1460。

Win和WS(window scale 窗口缩放因子)

因为窗口字段大小仅为16bit,ws字段主要是实现在不改变窗口字段大小的前提下,可以表示更大的窗口空间。

实际接收窗口大小为Win * WS
ws

此处可知实际的接收窗口大小为64240*256

SACK_PERM

允许选择确认

第二次第三次握手

略,知识点与第一次握手中的相同。要注意的是虽然数据包Len=0,但Seq仍需要+1

数据传输过程

抓包

注意图中“TCP segment of a reassembled PDU”,说明上层要传输的数据超过了一个TCP数据包最大的数据长度(此处为14400,因为在三次握手的阶段,IP为182就已告知MSS为1440),所以数据被分段,拆分为几个TCP数据包进行传输。

662数据包对之前所接收的数据进行累计确认,661数据包Seq为2944173087,Len = 1440,故662数据包的ACK = 2944174527

四次挥手

四次挥手

抓包

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值