tcp协议包头
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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帧结构详解