tcp协议包头

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

竭诚为您提供优质文档/双击可除

tcp协议包头

篇一:tcp包头格式

tcp包头格式

tcp数据被封装在一个ip数据包中:

|—————————————————ip数据包———————————————|

|————————tcp报文段——————————| tcp包头数据格式。如果不计可选项字段,它通常是20个字节。

源端口和目的端口:

每个tcp段都包含源端和目的端的端口号,用于寻找发起端和拉收端应用进程。这两个值加

上ip首部中的源ip地址和目的ip地址唯一确定一个tcp连接。有时,一个ip地址和一个端口

号也称为一个套接字(socket)。这个术语出现在最早的tcp规范(RFc793)中。套接字对

(socketpair)(包含客户ip地址、客户端口号、服务器ip地址和服务器端口号的四元组)可

唯一确定互联网络中每个tcp连接的双方。

序列号:

序列号用来标识从tcp发起端向tcp接收端发送的数据字节流,它表示在这个报文段中的

第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则tcp用序列号对每

个字节进行计数。序列号是32bit的无符号数,序号到达232-1后又从0开始。

确认序列号:

当建立一个新的连接时,syn标志变1。序列号字段包含由这个主机选择的该连接的初始

序号isn(initialsequencenumber)。该主机要发送数据的第一个字节序号为这个isn加1,因为syn标志消耗了一个序号(Fin标志也要占用一个序号)。既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加1。只有ack标志为1时确认序号字段才有效。

发送ack无需任何代价,因为32bit的确认序号字段和ack标志一样,总是tcp首部的一部分。因此,我们看到一旦一个连接建立起来,这个字段总是被设置,ack标志也总

是被设置为1。

头部长度:

头部长度给出首部中32bit字的数目。需要这个值是因为任选字段的长度是可变的。这个字段占4bit,因此tcp最多有60字节的首部。然而,没有任选字段,正常的长度是20字节。

uRg:紧急指针(urgentpointer)有效。

ack:确认序号有效。

psh:接收方应该尽快将这个报文段交给应用层。

Rst:重建连接。

syn:同步序号用来发起一个连接。

Fin:发端完成发送任务。

窗口大小:

tcp的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16bit 字段,因而窗口大小最大为65535字节。

校验和:

检验和覆盖了整个的tcp报文段:tcp首部和tcp数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。tcp检验和的计算和udp检验和的计算相似,使用一个伪头部。

紧急指针:

只有当uRg标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。tcp的紧急方式是发送端向另一端发送紧急数据的一种方式。

可选项:

最常见的可选字段是最长报文大小,又称为

mss(maximumsegmentsize)。每个连接方通常都在通信的第一个报文段(为建立连接而设置syn标志的那个段)中指明这个选项。它指明本端所能接收的最大长度的报文段。

tcp将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据;tcp提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。

许多流行的应用程序如telnet/Ftp和smtp都使用tcp。

篇二:tcpip协议报头结构

tcp/ip协议中各层的数据报结构是一个比较抽象的内容,大家在日常学习过程中往往难以理解和掌握,常常是死记硬背把它记住了事。

本文首先利用sniffer工具捕获了Ftp命令操作过程中的所有数据包,然后对sniffer工具中捕获的每一部分数据包的含义进行了详细的阐述,最后总结归纳出tcp/ip协议

中网络接口层、网络层、传输层的数据报文结构,从而使大家加深对tcp/ip协议各层数据报结构的理解和掌握。

一、捕获Ftp命令底层数据包

1、搭建网络环境。建立一台Ftp服务器,设置ip地址为:76.88.16.16。建立一台Ftp客户端,ip地址设为76.88.16.104,在其上安装sniffer软件。将这两台设备通过集线器连接起来。

2、定义过滤器。在Ftp客户端上运行sniffer软件,进入系统,点“monitor”-“matrixa”,选中本机,点鼠标右健,选择“defineFilter”,在“defineFilter”窗口,点“advanced”,选择ip->tcp->Ftp,点“确定”,即已定义好过滤器,如图1所示。

3、捕获Ftp命令数据包。首先,在sniffer中选择“monitor”-“matrix”,点击“capture”命令开始捉包。然后,在Ftp客户端上进入dos提示符下,输入

“Ftp76.88.16.16”命令,输入Ftp用户名和口令,登录Ftp服务器,进行文件的下载,最后输入“bye”命令退出Ftp程序,完成整个Ftp命令操作过程。最后,点击sniffer 中的“停止捕捉”,选择“decode”选项,完成Ftp命令操作过程数据包的捕获,并显示在屏幕上。

下面对sniffer捕获的底层数据包进行详细的介绍。

二、网络接口层dlc帧结构详解

相关文档
最新文档