实验六TCP报文段的格式及协议分析

合集下载

TCP连接过程及报文解析

TCP连接过程及报文解析

TCP连接过程及报⽂解析可能⼤家都听过TCP建⽴连接时需要经历三次握⼿和四次挥⼿的。

那么具体的握⼿挥⼿的过程是怎么样的呢?这篇⽂章就通过WireShark抓包来了解TCP连接建⽴和断开的过程。

实验⽅法:写⼀段简单的代码代码客户端和服务端,分别部署,让客户端主动像服务器发起连接,随后断开。

让WireShark抓股这个过程中产⽣了哪些包,并对其分析。

(注:WireShark默认不⽀持LoopBack,需要将客户端和服务端分开部署,或是配置WireShark)。

⾸先,我们先来看⼀下连接建⽴和断开的过程中,产⽣了哪⼏个包。

从上图我们可以看到,正好是七个包,符合我们三次握⼿四次挥⼿的过程。

分析其过程,WireShark已经为我们解析了每个TCP包的标志位(之后会详细解释,主要⽤来区分每个包的⽤途)。

TCP建⽴连接:1).客户端向服务器发起建⽴连接请求(SYN)2).服务端收到后,像客户端回复⼀个建⽴连接请求的响应(SYN,ACK)3).客户端收到后,继续向服务端发送⼀个响应(ACK)三次握⼿完成,正式建⽴连接。

TCP断开连接1).断开发起⽅向另⼀⽅发送断开连接请求(FIN,ACK)2).另⼀⽅收到后,回复⼀个响应(ACK)3).再由另⼀⽅主动发送⼀个断开连接请求(FIN,ACK)4).断开发起⽅收到后,回复⼀个响应(ACK)四次挥⼿完成,断开SOCKET连接。

我们通过图⽚来加深⼀下印象:了解完过程,再让我们通过分析第⼀个包的内容,初步了解下TCP报⽂结构:我们可以看到整个消息帧是66个字节:1).该帧是⼀个以太⽹消息帧:分为⾸部和数据两个部分。

⾸部前六个字节(30 9c 23 bc 9d 80)表⽰⽬的地MAC地址后六个字节(30 9c 23 1c 0f 74)表⽰源MAC地址我们可以看到当数据在链路层中传输的时候,是由MAC地址标识定位的。

之后两个字节(08 00)表⽰上层协议类型(这⾥的0x 08 00表⽰的就是IP协议)剩余的52(66 - 6 - 6 - 2)个字节为数据部分,来承载上层协议(本例中为IP协议)的消息。

TCP报文格式

TCP报文格式

TCP报⽂格式转载⾃1.TCP报⽂格式TCP报头中的源端⼝号和⽬的端⼝号同IP数据报中的源IP与⽬的IP唯⼀确定⼀条TCP连接序号(4字节=32位):37 59 56 75⽤来标识TCP发端向TCP收端发送的数据字节流确认序号(4字节=32位):由于该报⽂为SYN报⽂,ACK标志为0,故没有确认序号(ACK标志为1时确认序号才有效)TCP协议规定,只有ACK=1时有效,也规定连接建⽴后所有发送的报⽂的ACK必须为1⼀旦连接建⽴,该值将始终发送(同ACK标志)头部长度:该字段占⽤4位,⽤来表⽰报⽂⾸部的长度,单位是4Byte。

如:headLen = ((packet[12]>>4)&0x0F)*4;预留6位:长度为6位,作为保留字段,暂时没有什么⽤处。

URG:长1位,表⽰紧急指针字段有效;ACK:长1位,置位表⽰确认号字段有效;TCP协议规定,只有ACK=1时有效,也规定连接建⽴后所有发送的报⽂的ACK必须为1PSH:长1位,表⽰当前报⽂需要请求推(push)操作;RST:长1位,置位表⽰复位TCP连接;SYN:长1位,在连接建⽴时⽤来同步序号。

当SYN=1⽽ACK=0时,表明这是⼀个连接请求报⽂。

对⽅若同意建⽴连接,则应在响应报⽂中使SYN=1和ACK=1. 因此,SYN置1就表⽰这是⼀个连接请求或连接接受报⽂。

FIN:长1位,⽤于释放TCP连接时标识发送⽅⽐特流结束;即完,终结的意思,⽤来释放⼀个连接。

当 FIN = 1时,表明此报⽂段的发送⽅的数据已经发送完毕,并要求释放连接。

窗⼝⼤⼩:长度为16位,2个字节。

校验和:长度为16位,2个字节。

紧急指针:长度为16位,2个字节。

以上是TCP包头必须要有的字段,也称固有字段,长度为20个字节。

2.TCP三次握⼿TCP怎样才能保证可靠的传输任务,就是通过三次握⼿⾸先由Client发出请求连接即 SYN=1 ACK=0 (请看头字段的介绍), TCP规定SYN=1时不能携带数据,但要消耗⼀个序号,因此声明⾃⼰的序号是 seq=x然后 Server 进⾏回复确认,即 SYN=1 ACK=1 seq=y, ack=x+1,再然后 Client 再进⾏⼀次确认,但不⽤SYN 了,这时即为 ACK=1, seq=x+1, ack=y+1.3.TCP四次挥⼿ 当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送⼀个报⽂(没有数据),其中 FIN 设置为1, 服务器B收到后会给应⽤程序⼀个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。

tcp、udp、ip、icmp报文格式分析

tcp、udp、ip、icmp报文格式分析

tcp、udp、ip、icmp报⽂格式分析TCP 、UDP 、IP、 ICMP协议报⽂格式分析Tcp报⽂格式:Wireshark抓包如图:源端⼝/⽬的端⼝(16bit):在TCP报⽂中包涵了源端⼝/⽬的端⼝,源端⼝标识了发送进程,⽬的端⼝标识了接收⽅进程。

由上图可以看出在此报⽂中我们的源端⼝号是54160, ⽬的端⼝是cichlid(1377)。

序列号(32bit):Sequence Number这个是发送序列号,⽤来标识从源端向⽬的端发送的数据字节流,它表⽰在这个报⽂端中的第⼀个数据字节的顺序号,序列号是32位的⽆符号类型,序列号表达达到2^32 - 1后⼜从0开始,当建⽴⼀个新的连接时,SYN标志为1,系列号将由主机随机选择⼀个顺序号ISN(Initial Sequence Number)。

此报⽂中的序列号是0x37e3d3a9如下图:确认号(32bit):Acknowledgment Number它包涵了发送确认⼀端所期望收到的下⼀个顺序号。

因此确认序列号应当是上次成功接收到数据的顺序号加1。

只有ACK标志为1时确认序号字段才有效。

TCP为应⽤层提供全双⼯服务,这意味着数据能在两个⽅向上独⽴的进⾏传输,因此连接的两断必须要保证每个⽅向上的传输数据顺序。

由图可以看出此报⽂的确认号为0xaa09ab7b。

偏移(4bit):这⾥的偏移实际指的是TCP⾸部的长度,它⽤来表明TCP⾸部中32bit字的数⽬,通过它可以知道⼀个TCP包它的⽤户数据从哪⾥开始,这个字段占4bit,若此字段的值为1000,则说明TCP⾸部的长度是8 * 4 = 32字节,所以TCP⾸部的最⼤长度是该字段的值为1111 = 15, 15 * 4 =60字节。

此报⽂我们的偏移量在0x50中,⼜因它占4bit,0x50等于⼆进制的0101 0000 所以我们的偏移量是 0101=5,所以我们的TCP报⽂⾸部长度为5* 4 = 20字节。

tcp协议分析 实验报告

tcp协议分析 实验报告

tcp协议分析实验报告
TCP协议分析实验报告
引言
TCP(Transmission Control Protocol)是互联网中最常用的协议之一,它负责在网络中建立可靠的连接,确保数据的可靠传输。

本实验旨在通过对TCP协议的
分析,深入了解其工作原理和性能特点。

实验目的
1. 了解TCP协议的基本工作原理
2. 分析TCP协议的数据传输过程
3. 掌握TCP协议的性能特点
实验环境
本实验使用了Wireshark网络抓包工具和一台运行TCP协议的服务器和客户端。

实验步骤
1. 使用Wireshark抓包工具对TCP协议进行抓包
2. 分析抓包数据,了解TCP协议的数据传输过程
3. 对TCP协议的性能特点进行分析
实验结果与分析
通过抓包和分析数据,我们了解到TCP协议在数据传输过程中的工作原理。

TCP协议通过三次握手建立连接,然后通过数据分段和确认机制来保证数据的
可靠传输。

在传输过程中,TCP协议还会根据网络状况进行拥塞控制和流量控制,以确保网络的稳定性和数据的可靠性。

此外,我们还发现TCP协议具有较高的可靠性和稳定性,但也存在一定的传输
延迟和开销。

在高负载和高延迟的网络环境下,TCP协议的性能可能会受到一定影响。

结论
通过本实验,我们深入了解了TCP协议的工作原理和性能特点。

TCP协议作为互联网中最常用的协议之一,具有较高的可靠性和稳定性,但也存在一定的传输延迟和开销。

在实际应用中,我们需要根据具体的网络环境和需求来选择合适的协议,以确保数据的可靠传输和网络的稳定性。

TCP包头格式详解

TCP包头格式详解

TCP包头格式详解⼀般来说,⽹络编程我们只需要调⽤⼀些封装好的函数或者组件就能完成⼤部分的⼯作,但是⼀些特殊的情况下,就需要深⼊的理解⽹络数据包的结构,以及协议分析。

如:⽹络监控,故障排查等……IP包是不安全的,但是它是互联⽹的基础,在各⽅⾯都有⼴泛的应⽤。

由IP协议衍⽣的协议族有10数种(据我所知),以后还会出现更多的基于IP的协议…先从实际出发吧!⼀般我们在谈上⽹速度的时候,专业上⽤带宽来描述,其实⽆论说⽹速或者带宽都是不准确的,呵呵。

⽐如:1兆,512K……有些在学校的学⽣,也许会有疑问,明明我的业务是1M,为什么下载速度到100K就飙不上去了?512K的为什么50多K就封顶了?…这⾥所说的1M是指1Mbps = 1 Million Bits Per Second,也就是1M⽐特每秒,即⼀秒钟传输1048576个⼆进制位。

我们知道⼀个字节是8个⼆进制位。

好,⼜来问题了。

即便这样⼦,1M=1048756÷8=131072÷1024=128K。

那也应该有128K啊,为什么下载速度还是很少到120K,110K都谢天谢地了。

看完本⽂,你的帐就对了……IP数据包结构:如图,⼀个刻度表⽰1个⼆进制位(⽐特)。

1-1.版本4位,表⽰版本号,⽬前最⼴泛的是4=B1000,即常说的IPv4;相信IPv6以后会⼴泛应⽤,它能给世界上每个纽扣都分配⼀个IP地址。

1-2.头长4位,数据包头部长度。

它表⽰数据包头部包括多少个32位长整型,也就是多少个4字节的数据。

⽆选项则为5(红⾊部分)。

1-3.服务类型,包括8个⼆进制位,每个位的意义如下:过程字段:3位,设置了数据包的重要性,取值越⼤数据越重要,取值范围为:0(正常)~ 7(⽹络控制)延迟字段:1位,取值:0(正常)、1(期特低的延迟)流量字段:1位,取值:0(正常)、1(期特⾼的流量)可靠性字段:1位,取值:0(正常)、1(期特⾼的可靠性)成本字段:1位,取值:0(正常)、1(期特最⼩成本)保留字段:1位,未使⽤1-4.包裹总长16位,当前数据包的总长度,单位是字节。

tcp协议分析实验报告

tcp协议分析实验报告

tcp协议分析实验报告TCP协议分析实验报告一、引言TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,广泛应用于互联网通信中。

本实验旨在通过对TCP协议的分析,深入了解其工作原理和特点。

二、实验目的1. 了解TCP协议的基本概念和工作原理;2. 掌握TCP协议的连接建立、数据传输和连接终止过程;3. 分析TCP协议在网络通信中的性能表现。

三、实验环境本实验使用了一台运行Linux操作系统的计算机,并通过Wireshark网络抓包工具进行数据包的捕获和分析。

四、实验步骤1. 连接建立过程分析在实验环境中,通过使用telnet命令模拟客户端与服务器的通信过程,并使用Wireshark捕获数据包。

分析捕获到的数据包,了解TCP连接建立的过程,包括三次握手和确认过程。

2. 数据传输过程分析在已建立连接的基础上,通过telnet命令向服务器发送数据,并捕获数据包。

分析捕获到的数据包,了解TCP协议的数据传输过程,包括分段、序号、确认和重传等机制。

3. 连接终止过程分析在数据传输完成后,通过telnet命令关闭连接,并捕获数据包。

分析捕获到的数据包,了解TCP连接终止的过程,包括四次挥手和确认过程。

五、实验结果与分析1. 连接建立过程通过分析捕获到的数据包,可以看到客户端向服务器发送了SYN包,服务器回复了SYN+ACK包,最后客户端发送了ACK包,完成了连接的建立。

这个过程中,通过三次握手的机制,确保了双方的连接同步。

2. 数据传输过程在数据传输过程中,TCP协议将数据分段,并为每个数据段分配一个序号。

接收方通过确认机制,确保数据的可靠传输。

如果发送方未收到确认信息,将会进行重传,以保证数据的完整性。

3. 连接终止过程当数据传输完成后,通过四次挥手的过程,双方完成了连接的终止。

首先,客户端发送FIN包,服务器回复ACK包;然后,服务器发送FIN包,客户端回复ACK包。

TCPUDP报文格式

TCPUDP报文格式

TCPUDP报文格式TCP/UDP报文格式TCP/UDP报文格式TCP 协议为终端设备提供了面向连接的、可靠的网络服务,UDP 协议为终端设备提供了无连接的、不可靠的数据报服务。

从上图我们可以看出,TCP 协议为了保证数据传输的可靠性,相对于UDP 报文,TCP 报文头部有更多的字段选项。

首先让我们来看一下TCP 的报文头部主要字段:每个TCP 报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程。

在TCP/IP 协议栈中,源端口号和目的端口号分别与源IP 地址和目的IP 地址组成套接字(socket),唯一的确定一条TCP 连接。

序列号(Sequence number)字段用来标识TCP 源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一个数据字节。

如果将字节流看作在两个应用程序间的单向流动,则TCP 用序列号对每个字节进行计数。

序列号是一个32bits 的数。

既然每个传输的字节都被计数,确认序号(Acknowledgement number,32bits)包含发送确认的一端所期望接收到的下一个序号。

因此,确认序号应该是上次已成功收到的数据字节序列号加1。

TCP 的流量控制由连接的每一端通过声明的窗口大小(windows size)来提供。

窗口大小用数据包来表示,例如Windows size=3, 表示一次可以发送三个数据包。

窗口大小起始于确认字段指明的值,是一个16bits 字段。

窗口大小可以调节。

校验和(checksum)字段用于校验TCP 报头部分和数据部分的正确性。

最常见的可选字段是MSS(Maximum Segment Size,最大报文大小)。

MSS指明本端所能够接收的最大长度的报文段。

当一个TCP 连接建立时,连接的双方都要通告各自的MSS 协商可以传输的最大报文长度。

我们常见的MSS有1024(以太网可达1460 字节)字节。

TCP报文段介绍

TCP报文段介绍

TCP报文段介绍TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的和基于字节流的传输层协议。

它在网络通信中扮演着重要的角色,用于确保数据的可靠传输。

TCP协议是建立在IP协议之上的,IP协议负责将数据包从源地址发送到目标地址,而TCP协议则负责在数据包的传输过程中提供可靠性,包括分段、重组、流量控制、拥塞控制等。

TCP协议使用端口号来区分不同的应用程序。

首先是TCP头部,它是TCP报文段的固定部分,长度为20字节。

其主要包含以下几个字段:1.源端口和目标端口:源端口指发送方的端口号,目标端口指接收方的端口号,用于标识数据包的发送和接收地址。

2.序列号和确认号:序列号用于标识发送方发送的数据字节流的顺序,而确认号是接收方期望接收的下一个字节的序列号。

3.数据偏移:指示了TCP头部的长度,以4字节为单位,最大为154.标志位:TCP协议通过标志位实现各种功能,主要包括ACK(确认)、SYN(同步)、FIN(结束)、RST(重置)、URG(紧急)等。

这些标志位在TCP传输过程中起到不同的作用。

5.窗口大小:窗口大小是指接收方的缓冲区大小,用于流量控制和拥塞控制。

6.校验和:校验和用于检测数据在传输过程中是否发生了损坏或丢失。

7.紧急指针:表示紧急数据的字节偏移量,用于紧急数据的传输。

除了头部之外,TCP报文段还包含数据部分。

数据部分是应用程序传输的真正数据,长度可以是任意的,最大支持64KB。

TCP协议中的报文段是通过三次握手建立连接的。

在发送方发送数据之前,首先要建立一个连接。

首先发送方发送一个SYN(同步)报文段给接收方,表示想要建立连接;接收方收到后,向发送方回复一个SYN+ACK 报文段,表示同意建立连接,并给出自己的序列号;发送方再回复一个ACK报文段给接收方,表示确认连接建立成功。

这样,连接就建立好了,双方可以开始进行数据传输。

在数据传输过程中,发送方会将数据拆分成合适大小的报文段进行发送,接收方要确认接收到的报文段是否有序,并通过确认号告诉发送方期望接收到的下一个字节的序列号。

TCP报文格式

TCP报文格式

TCP报文格式TCP(Transmission Control Protocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层协议TCP报文格式:源端口号(2字节):d5 df(54751)目的端口号(2字节):22 b8(8888)TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接序号(4字节):37 59 56 75用来标识TCP发端向TCP收端发送的数据字节流确认序号(4字节):由于该报文为SYN报文,ACK标志为0,故没有确认序号(ACK标志为1时确认序号才有效)一旦连接建立,该值将始终发送(同ACK标志)首部长度(4位):报文头长度(单位:位)/321000(转化为10进制为8,8*32/8 = 32,该报文报头长度为32个字节)存在该字段是因为TCP报头中任选字段长度可变报头不包含任何任选字段则长度为20字节;4位所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节标志位(12位):0000 00010010Reserved:000~ ~~~~~~~~ECN(Explicit Congetsion Notification):~~~0 ~~~~~~~~ = N / NS / Nonce Sum:有效排除潜在的ECN滥用,RFC 3540~~~~ 0~~~~~~~ = C / CWR(Congestion Window Reduced):拥塞窗口减少标志~~~~ ~0~~~~~~ = E / ECE / ECN-Echo:ECE / ECN标志Control Bits:~~~~ ~~0~~~~~ = U / Urgent:紧急指针有效性标志~~~~ ~~~1~~~~ = A / Acknowledgment:确认序号有效性标志,一旦一个连接建立起来,该标志总被置为1,即除了请求建立连接报文(仅设置S yn标志位为1),其它所有报文的该标志总为1~~~~ ~~~~0~~~ = P / Push:Push标志(接收方应尽快将报文段提交至应用层)~~~~ ~~~~~0~~ = R / Reset:重置连接标志~~~~ ~~~~~~1~ = S / Syn:同步序号标志~~~~ ~~~~~~~0 = F / Fin:传输数据结束标志窗口大小(2字节):TCP流量控制通过连接的每一端声明窗口大小进行控制(接收缓冲区大小)20 00(00100000 00000000)= 8192由于2字节能够表示的最大正整数为65535,故窗口最大值为65535检验和(2字节):检验和覆盖整个TCP报文段;强制字段,由发送端计算存储,由接收端进行验证2e 2f紧急指针(2字节):当Urgent标志置1时,紧急指针才有效00 00任选字段(0 - 40字节):每个选项格式如下:说明如下:可选选项如下:Kind Length Description References0 1 End of option list. RFC 7931 1 No operation. RFC 7932 4 MSS, Maximum Segment Size. RFC 7933 3 WSOPT, Window scale factor. RFC 13234 2 SACK permitted. RFC 20185 Variable. SACK. RFC 2018, RFC 28836 6 Echo. (obsolete). RFC 10727 6 Echo reply. (obsolete). RFC 10728 10 TSOPT, Timestamp. RFC 13239 2 Partial Order ConnectionRFC 1693permitted.10 3 Partial Order service profile. RFC 169311 6 CC, Connection Count. RFC 164412 6 CC.NEW RFC 164413 6 CC.ECHO RFC 164414 3 Alternate checksum request. RFC 114615 Variable. Alternate checksum data. RFC 114616 Skeeter.17 Bubba.18 3 Trailer Checksum Option.19 18 MD5 signature. RFC 238520 SCPS Capabilities.21 Selective NegativeAcknowledgements.22 Record Boundaries.23 Corruption experienced.24 SNAP.2526 TCP Compression Filter.27 8 Quick-Start Response. RFC 478228 4 User Timeout. RFC 548229 TCP-AO, TCP AuthenticationRFC 5925Option.30 MPTCP31 - 252253 RFC3692-style Experiment 1. RFC 4727{02 04 05 b4} {01} {03 03 08} {01} {01} {04 02}MSS + No operation + WSOPT + No operation + No operation + SACK permitted。

TCP协议分析

TCP协议分析

实验四传输层协议分析一、实验目的1、学习3CDaemon FTP服务器的配置和使用,分析TCP报文格式,理解TCP的连接建立、和连接释放的过程。

2、学习3CDaemon TFTP服务器的配置和使用,分析UDP报文格式,理解TCP协议与UDP协议的区别。

二、实验工具软件3CDaemon软件简介3CDaemon是3Com公司推出的功能强大的集FTP Server、TFTP Server、Syslog Server和TFTP Client于一体的集成工具,界面简单,使用方便。

这里主要介绍实验中需要用到的FTP Server功能和TFTP Server功能。

1、FTP Server功能(1)配置FTP Server功能:选中左窗格功能窗口,打开FTP Server按钮,单击窗格中的Configure FTP Server按钮,打开3CDaemon Configuration配置窗口,配置FTP Server功能。

这里需要设置的就是“Upload/Download”路径,作为FTP Server的文件夹,其它选项可以使用系统缺省设置。

设置完成后,单击确认按钮,设置生效。

(2)在实验中,我们使用3CDaemon系统内置的匿名帐户“anonymous”登陆FTP服务器,客户端使用微软FTP客户端命令,关于Ftp命令的说明介绍如下。

(3) Ftp命令的说明FTP的命令格式:ftp[-v][-d][-i][-n][-g][-w:windowsize][主机名/IP地址]其中:-v不显示远程服务器的所有响应信息;-n限制ftp的自动登录;-i在多个文件传输期间关闭交互提示-d允许调试、显示客户机和服务器之间传递的全部ftp命令;-g不允许使用文件名通配符;-w:windowsize忽略默认的4096传输缓冲区。

使用FTP命令登录成功远程FTP服务器后进入FTP子环境,在这个子环境下,用户可以使用FTP 的内部命令完成相应的文件传输操作。

TCP协议实验报告

TCP协议实验报告

学生实验报告:学号:班级:指导老师:内容摘要该实验报告了TCP协议分析实验相关分析;TCP协议分析是通过Wireshark分析TCP协议的报文格式,如理解TCP报文段首部各字段的含义,理解TCP建立连接的三次握手机制,了解TCP的确认机制,了解TCP的流量控制和拥塞控制实验目的1.通过协议分析软件掌握TCP协议的报文格式;2.理解TCP报文段首部各字段的含义;3.理解TCP建立连接的三次握手机制;4.了解TCP的确认机制,了解TCP的流量控制和拥塞控制;实验原理连上internet的PC机,并且安装有协议分析软件Wireshark实验原理及概况TCP是因特网中最主要的运输层协议,它能够在两个应用程序章提供可靠的、有序的数据流传输,能够检测传输过程中分组是否丢失、失序和改变,并利用重传机制保证分组可靠地传输到接收方;TCP首部格式如下图所示:首先是源端口和目的端口,服务器提供服务的端口号是固定的,比如:Web服务端口号是80,而客户端的端口号是由操作系统随机分配一个用户端口号。

TCP提供字节流服务,它为分组中的每个字节编号,首部中的序号表示分组中第一个字节的编号。

接收方用确认号表示它期望接收的数据流中下一个字节编号,表明确认号之前的字节接收方都已经正确接收了。

数据偏移字段表示报文段的首部长度。

标志部分包含6个标志位,ACK位表明确认号字段是否有效;PUSH位表示发送端应用程序要求数据立即发送;SYN、FIN、RESET三位用来建立连接和关闭连接;URG和紧急指针通常较少使用。

接收端利用窗口字段通知发送方它能够接收多大数据量。

检验和字段是接收方用来检验接收的报文是否在传输过程中出错。

TCP 重传机制:当发送方传输一个报文段的同时启动一个重传计时器,当该报文的确认到达时,这个计时器就会取消,如果这个计时器超时,那么数据将会被重传。

TCP 在重传之前,并不总是等待重传计时器超时,TCP 也会把一系列重复确认的分组当作是数据丢失的先兆;TCP 流量控制机制:当发送方数据发送速率超过接收方的接受速率,利用滑动窗口实现流量控制;16位窗口大小:TCP 的流量控制由连接的每一端通过声明的窗口大小来提供。

tcp 报文格式分析

tcp 报文格式分析

TCP报文段格式源端口和目的端口字段——各占2字节。

端口是传输层与应用层的服务接口。

传输层的复用和分用功能都要通过端口才能实现。

序号字段——占4字节。

TCP连接中传送的数据流中的每一个字节都编上一个序号。

序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

数据偏移——占4bit,它指出TCP报文段的数据起始处距离CP报文段的起始处有多远。

“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。

保留字段——占6bit,保留为今后使用,但目前应置为0。

紧急比特URG——当URG=1时,表明紧急指针字段有效。

它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

确认比特ACK——只有当ACK=1时确认号字段才有效。

当ACK=0时,确认号无效。

复位比特RST(Reset) ——当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。

终止比特FIN(FINal)——用来释放一个连接。

当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口字段——占2字节。

窗口字段用来控制对方发送的数据量,单位为字节。

TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

检验和——占2字节。

检验和字段检验的范围包括首部和数据这两部分。

在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

紧急指针字段——占16bit。

紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

选项字段——长度可变。

TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。

填充字段——这是为了使整个首部长度是4字节的整数倍。

TCP报文结构网络协议

TCP报文结构网络协议

TCP报文结构固定首部长度为20字节,可变部分0~40字节,各字段解释:source port number:源端口,16bits,范围0~65525。

target port number:目的端口,16bits,范围同上。

sequence number:数据序号,32bits,TCP 连接中传送的数据流中的每一个字节都编上一个序号。

序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

acknoledgement number:确认号,32bits,期望收到对方的下一个报文段的数据的第一个字节的序号。

header length:数据偏移,4bits,单位为4字节,它指出报文数据距TCP 报头的起始处有多远(TCP报文头长度?)。

reserved:保留字段(图中,包含CWR,ECE),6bits,保留今后使用,目前置0处理。

URG:紧急比特,1bit,当 URG=1 时,表明紧急指针字段有效。

它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

ACK:确认比特,1bit,只有当 ACK=1 时确认号字段才有效。

当 ACK=0 时,确认号无效。

PSH:推送比特,1bit,接收方 TCP 收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

RST:复位比特,1bit,当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

SYN:同步比特,1bit,同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。

FIN:终止比特,1bit,用来释放一个连接。

当FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

window size:窗口大小,16bits,窗口字段用来控制对方发送的数据量,单位为字节。

TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

TCP报文格式

TCP报文格式
tcp报文格式tcp报文tcp报文是tcp层传输的数据单元也称为报文段tcp报文首部格式目的端口序号选项可选填充数据10162431源端口确认号窗口首部长度保留码元比特紧急指针校验和tcp报文首部格式源端口和目的端口
TCP报文格式 TCP报文格式
TCP报文 TCP报文
TCP报文是TCP层传输的数据单元,也称 TCP报文是TCP层传输的数据单元,也称 为报文段
0 4 源端口 序号 首部长度 保留 校验和 确认号 码元比特 选项(可选) 数据 …… 窗口 紧急指针 填充 10 16 24 目的端口 31
本节结束
0 4 源端口 序号 确认号 码元比特 选项(可选) 数据 …… 10 16 24 目的端口 31
首部长度
保留 校验和
窗口 紧急指针 填充
TCP报文首部格式 TCP报文首部格式
码元比特:6 码元比特:6比特 URG、ACK、PSH、RST、SYN、FIN。 URG、ACK、PSH、RST、SYN、FIN。 URG表示紧急指针字段有效; URG表示紧急指针字段有效; ACK置位表示确认号字段有效; ACK置位表示确认号字段有效; PSH表示当前报文需要请求推(push)操作; PSH表示当前报文需要请求推(push)操作; RST置位表示复位TCP连接; RST置位表示复位TCP连接; SYN用于建立TCP连接时同步序号; SYN用于建立TCP连接时同步序号; FIN用于释放TCP连接时标识发送方比特流结束 FIN用于释放TCP连接时标识发送方比特流结束
0 4 源端口 序号 确认号 码元比特 选项(可选) 数据 …… 10 16 24 目的端口 31
首部长度
保留 校验和
窗口部格式
窗口:窗口通告值。发送方根据接收的窗口通告值调整窗口大小。 紧急指针:如果TCP通信中,一方有紧急的数据(例如中断或退出命 紧急指针:如果TCP通信中,一方有紧急的数据(例如中断或退出命 令)需要尽快发送给接收方,并且让接收方的TCP协议尽快通知相应 令)需要尽快发送给接收方,并且让接收方的TCP协议尽快通知相应 的应用程序,可以将URG置位,并通过紧急指针指示紧急数据在报文 的应用程序,可以将URG置位,并通过紧急指针指示紧急数据在报文 段中的结束位置。 校验和:与UDP校验和计算方法相同,同样需要包含伪首部。伪首部 校验和:与UDP校验和计算方法相同,同样需要包含伪首部。伪首部 中的协议类型值为6 中的协议类型值为6。 选项:用于TCP连接双方在建立连接时协商最大的报文段长度MSS 选项:用于TCP连接双方在建立连接时协商最大的报文段长度MSS (Maximum Segment Size)。 Size)。 填充:为了使选项字段对齐32比特,可能采用若干位0 填充:为了使选项字段对齐32比特,可能采用若干位0作为填充数据。

实验六 TCP报文段的格式及协议分析

实验六 TCP报文段的格式及协议分析

实验六TCP报文段的格式及协议分析【实验目的】1、分析TCP报文段的格式;2、了解TCP报文段首部结构以及各个字段的内容及其作用;3、通过观察TCP协议的交互掌握TCP连接建立、数据传输、连接释放的过程。

【实验内容】1、分析TCP报文段的结构,熟悉各个字段的内容、功能、格式和取值范围;2、编辑TCP报文段首部各字段的内容;3、单个或批量发送已经编辑好的TCP报文段;4、分析TCP协议的交互过程。

【实验原理】TCPTCP序号:占号字段的值指的是本报文段所发送的数据的第一个字节的序号。

确认号:占4个字节,是期望收到对方下一个报文段的数据的第一个字节的序号。

数据偏移:占4 bit,它指出报文段的数据起始处距离TCP报文段的起始处有多远。

实际上就是TCP报文段首部的长度。

保留:占6 bit,保留为今后使用。

紧急比特URG:当URG=1时,表明紧急指针有效。

它告诉系统报文段中有紧急数据,应尽快传送。

确认比特ACK:ACK=1时确认号字段才有效,ACK=0时确认号字段无效。

推送比特PUSH:接收方接收到PUSH=1的报文段时会尽快的将其交付给接收应用进程,而不再等到整个接收缓存都填满后再向上交付。

复位比特RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接。

复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接。

同步比特SYN:在连接建立时用来同步序号。

当SYN=1而ACK=0时,表明这是一个连接请求报文段。

对方若同意建立连接,应在响应的报文段中使SYN=1和ACK=1。

因此,SYN=1就表示这是一个连接请求或连接接收报文。

终止比特FIN:当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口:占2个字节,用来控制对方发送的数据量,单位是字节,指明对方发送窗口的上限。

校验和:占2个字节,校验的范围包括首部和数据两个部分,计算校验和时需要在报文段前加上12字节的伪首部。

紧急指针:占2个字节,指出本报文段中紧急数据最后一个字节的序号。

计算机网络(三),TCP报文段详解

计算机网络(三),TCP报文段详解

计算机⽹络(三),TCP报⽂段详解⽬录1.TCP(Transmission Control Protocol传输控制协议)作⽤2.TCP报⽂段详解三、TCP报⽂段详解1.TCP(Transmission Control Protocol传输控制协议)作⽤(1)⾯向连接的、可靠地、基于字节流的传输层通信协议(2)将应⽤层的数据流分割成报⽂段并发送给⽬标节点的TCP层(3)数据包都有序号,对⽅收到则发送ACK确认,未收到则重传(4)使⽤校验和来检验数据在传输过程中是否有误2.TCP报⽂段详解1.源端⼝(Source Port)-两个字节2.⽬的端⼝(Destination port)-两个字节 TCP报头中的源端⼝号和⽬的端⼝号同IP数据报中的源IP与⽬的IP唯⼀确定⼀条TCP连接。

3.顺序序号(Sequence Number)-四个字节4.确认序号(Acknowledgement Number)-四个字节 顺序序号和确认序号是TCP可靠传输的关键部分。

序号是本报⽂段发送的数据组的第⼀个字节的序号。

在TCP传送的流中,每⼀个字节⼀个序号。

⼀个报⽂段的序号为300,此报⽂段数据部分共有100字节,则下⼀个报⽂段的序号为400。

所以序号确保了TCP传输的有序性。

确认号,即ACK,指明下⼀个期待收到的字节序号,表明该序号之前的所有数据已经正确⽆误的收到。

确认号只有当ACK标志为1时才有效。

⽐如建⽴连接时,SYN报⽂的ACK标志位为0。

5.偏移6.保留7.标志位(TCP Flags)(1)URG:紧急指针标志,为1时表⽰紧急指针有效,为0则忽略紧急指针。

(2)ACK:确认序号标志,为1时表⽰确认号有效,为0表⽰报⽂中不含确认信息,忽略确认号字段(3)PSH:push标志,为1表⽰是带有push标志的数据,指⽰接收⽅在接收到该报⽂段以后,应尽快将这个报⽂段交给应⽤程序,⽽不是在缓冲区排队。

(4)RST:重置连接标志,⽤于重置由于主机崩溃或其他原因⽽出现错误的连接。

TCP的报文详细解读

TCP的报文详细解读

TCP的报⽂详细解读这张图好像挺有名的,其实⼀开始我看见的时候是⼀脸懵逼的,但是通过翻书(⼤学时代最害怕的计算机⽹络),查阅他⼈博客等等办法,最后终于有了⼀个系统的了解,当然,这⾥知识点多⽽杂,⼤家可以多看⼏遍,结合上⾯那张图,这张图实际上⾮常清楚,⼤家看完底下的内容再回来看这张图⼀定会恍然⼤悟。

⾸先,⼤家先看这张图,要先从底下往上看,下⾯这个左边是绿⾊右边是红⾊的长⽅形实际上是⼀个数据包:IP⾸部:这个地⽅实际上是IP地址,是我们要发送到的机器的IP地址IP数据部分:这个⾥⾯东西就⾮常多了,有⽬标IP地址的⽬标端⼝信息,还有我们要发送的数据等等很多东西,也就是TCP的报⽂段,具体有些啥下⾯我会说到。

说完这⾥以后我们再往上看,有个左边黄⾊右边蓝⾊的长⽅形,这个就是我们刚才说的TCP报⽂段,也就是我们刚才说的IP数据部分,它也分两个部分:TCP⾸部和TCP数据部分TCP⾸部:这个⾸部东西还挺多的,分别都有⾃⼰的功能,所以这个⾸部很像是功能性的内容,⽐如这个数据包给哪个端⼝啊,是⽤来做什么的之类的,下⾯会讲到。

TCP数据部分:这部分实际上就是我们的数据部分,就是我们要传输的数据现在再往上看,我们会发现上⾯这个⼤块黄⾊的其实就是下⾯的⼩块黄⾊的长⽅形,也就是我们的TCP⾸部,图中详细的画出了其各个部分,甚⾄还标出了其各个部分的⼤⼩,下⾯我仔细讲⼀下各个部分的功能和作⽤:我们先竖着看,可以看到整个叫做TCP⾸部,前五⾏叫做20字节的固定⾸部,说明前五⾏⼀共是20字节,并且这五⾏内容格式是固定的。

并且五⾏⼀共20字节,那么⼀⾏4字节,也就是32位,横着看发现最上⽅已经写出来了32位,也就是⽤于来标识下⽅各个区域的⼤⼩是多少的刻度。

然后我们从上往下⼀⾏⼀⾏的看:第⼀⾏我们看到了两个端⼝,端⼝这个概念是计算机⾥⾯的⼀个很常见的概念,分为物理端⼝和虚拟端⼝。

所谓物理端⼝,那肯定是实际存在的,就像是交换机上⾯那些接⼝们,虚拟端⼝就⽐较有意思了,它是⼀个虚拟的概念,不可见,存在于计算机内部,我们知道计算机运⾏时是有⾮常多进程的,我们的数据肯定是传递给特定的⼀个进程,那⽤什么来唯⼀确定这个进程呢?就⽤端⼝号即可。

TCP协议及TCP数据报格式

TCP协议及TCP数据报格式

20 字节
固定
首部
序号字段——占 4 字节。TCP 连接中传送的数据流 中的每一个字节都编上一个序号。序号字段的值则指 的是本报文段所发送的数据的第一个字节的序号。
序号:分段的序列号,给出该分段数据的
第一个字节的顺序号,长度为32位,表示 该分段在发送方的数据流中的位置。例如, 若某一个分段的顺序号值为“1301”,而其 所携带的数据长度为500字节,则相当于该 分段数据的第一个字节的顺序号为1301, 最后一个字节的顺序号值为1800,并且该 数据流下一个分段的顺序号字段值应该为 “1801”。
比特 0
8
16
24
31
TCP 首部
数据 偏移
源端口
目的端口
序号
确认号
保留
U AP RSF R CS SY I G KH T NN
检验和
窗口 紧急指针
选 项 (长 度 可 变)
填充
20 字节
固定
首部
检验和 —— 占 2 字节。检验和字段检验的范围包括 首部和数据这两部分。
5.2. TCP协议
5.2.1.TCP协议概述 TCP,即传输控制协议,它提供面向连接
的、可靠的(没有数据重复或丢失)、全双工 的数据流传输服务。
TCP的协议数据单元被称为段(Segment)
数据段分为两部分,即段头和数据
段头一般长20字节(如有选项部分另加),是 TCP 为了实现端到端可靠传输所加上的控制信 息。
比特 0
8
16
24
31
TCP 首部
数据 偏移
源端口
目的端口
序号
确认号
保留
U AP RSF R CS SY I G KH T NN
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六TCP报文段的格式及协议分析
【实验目的】
1、分析TCP报文段的格式;
2、了解TCP报文段首部结构以及各个字段的内容及其作用;
3、通过观察TCP协议的交互掌握TCP连接建立、数据传输、连接释放的过程。

【实验内容】
1、分析TCP报文段的结构,熟悉各个字段的内容、功能、格式和取值范围;
2、编辑TCP报文段首部各字段的内容;
3、单个或批量发送已经编辑好的TCP报文段;
4、分析TCP协议的交互过程。

【实验原理】
TCP
TCP
序号:占4
字段的值指的是本报文段所发送的数据的第一个字节的序号。

确认号:占4个字节,是期望收到对方下一个报文段的数据的第一个字节的序号。

数据偏移:占4 bit,它指出报文段的数据起始处距离TCP报文段的起始处有多远。

实际上就是TCP报文段首部的长度。

保留:占6 bit,保留为今后使用。

紧急比特URG:当URG=1时,表明紧急指针有效。

它告诉系统报文段中有紧急数据,应尽快传送。

确认比特ACK:ACK=1时确认号字段才有效,ACK=0时确认号字段无效。

推送比特PUSH:接收方接收到PUSH=1的报文段时会尽快的将其交付给接收应用进程,而不再等到整个接收缓存都填满后再向上交付。

复位比特RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接。

复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接。

同步比特SYN:在连接建立时用来同步序号。

当SYN=1而ACK=0时,表明这是一个连接请求报文段。

对方若同意建立连接,应在响应的报文段中使SYN=1和ACK=1。

因此,SYN=1就表示这是一个连接请求或连接接收报文。

终止比特FIN:当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口:占2个字节,用来控制对方发送的数据量,单位是字节,指明对方发送窗口的上限。

校验和:占2个字节,校验的范围包括首部和数据两个部分,计算校验和时需要在报文段前加上12字节的伪首部。

紧急指针:占2个字节,指出本报文段中紧急数据最后一个字节的序号。

只有当紧急比特URG=1时才有效。

选项:长度可变。

TCP只规定了一种选项,即最大报文段长度MSS (Maximum Segment Size)。

【实验步骤】
练习一:分析TCP报文段的格式
1、运行报文仿真编辑器;
2、单击工具栏上的“新建报文”按钮,在弹出的“新建报文”对话框中选择报文类型为“TCP”,
单击“确定”按钮,报文仿真编辑器自动构造一个TCP报文段;
3、也可以通过单击工具栏上“打开”按钮,选择安装目录下Data目录中报文仿真编辑器
存档文件:tcp.pef,报文仿真编辑器显示预存的TCP报文段;
4、选中报文列表框中的一条记录,报文仿真编辑器中间部分自动显示此条报文记录的协议
结构树;
5、选中协议结构树中的“TCP首部”结点,报文仿真编辑器右侧部分自动显示当前TCP报
文段首部各个字段的内容;
6、查看TCP报文段首部中各个字段的结构和内容,分析各个字段的含义。

练习二:编辑TCP报文段格式中的字段内容
1、在报文仿真编辑器的右侧修改TCP报文段的各个字段的内容;
2、单击“保存”按钮;
3、查看修改后的字段内容。

练习三:发送和接收TCP报文段序列
1、运行报文解析器;
2、单击报文解析器工具栏上的“开始捕获”按钮,报文解析器开始捕获数据报;
3、单击报文仿真编辑器工具栏上的“发送报文”按钮,报文仿真编辑器弹出“发送成功”
对话框;
4、单击报文解析器工具栏上的“停止捕获”按钮,在报文解析器左侧报文列表框中查看所
接收到的报文仿真编辑器发出的报文;
5、选中其中一条报文记录,报文解析器中间部分自动显示此条报文记录的协议结构树,比
较是否与发送的报文相同。

练习四:TCP协议分析
1、单击报文仿真编辑器工具栏上的“打开”按钮,选择安装目录下Data目录中报文仿真
编辑器存档文件:tcp.pef,报文仿真编辑器显示预存的TCP报文段;
2、单击报文解析器工具栏上的“开始捕获”按钮,报文解析器开始捕获数据报;
3、单击报文仿真编辑器工具栏上的“发送报文”按钮,报文仿真编辑器弹出“发送成功”
对话框,发送出报文列表框中的报文;
4、可以看到报文解析器接收到报文仿真编辑器发出的报文,单击报文解析器工具栏上的
“停止捕获
”按钮,停止捕获报文;
5、单击工具栏上的“协议分析”按钮,报文解析器弹出协议分析对话框。

在“协议”下拉
列表中选择“TCP”,对话框下部的列表框中显示存在的TCP连接。

选择一个TCP连接,单击“确定”按钮;
6、报文解析器左侧的报文列表中显示这一次TCP连接中所有的报文,右侧以图形的方式显
示该TCP连接的交互过程。

选中左侧报文列表中的一条记录,报文解析器中部显示该报文的协议结构树,右侧的协议交互图中以蓝色突出显示该TCP报文段;
7、在左侧的报文列表中选择不同的TCP报文段,观察协议交互的进行过程,以及TCP首部
各个字段值的变化。

【实验报告要求】
1.记录实验数据
2.分析实验结果
例: MAC帧首部
目的地址:FF-FF-FF-FF-FF-FF
源地址:00-01-6C-E9-0D-2C
类型:ARP
ARP
硬件类型:以太网
协议类型:IP
硬件地址长度:6
协议地址长度:6
操作:ARP请求
源硬件地址:00-01-6C-E9-0D-2C
源协议地址:192.168.1.6
目的硬件地址:00-00-00-00-00-00
目的协议地址:192.168.1.2
(16进制显示框)
00000000:FF FF FF FF FF FF 00 01 – 6C E9 0D 2C 08 06 00 01
00000010:08 00 06 04 00 01 00 01 – 6C E9 0D 2C C0 08 01 06
00000020:00 00 00 00 00 00 C0 A8 – 01 02
其中“类型:ARP”对应值为08 06
3.未知数据包的分析
本部分通过Sniffer软件捕获本机所在计算机网络中的未知数据包,要求对所捕获的数据包进行分析。

数据包一如下(下图截取了该数据包16进制表中的前10行):
未知数据包一的16进制值
根据以下举例,分析上述捕获的数据包为一个什么协议的请求报文。

未知数据包二如下:
未知数据包二的16进制值
分析如下:
第一行前12个字节为协议MAC帧首部中的目的硬件地址和源地址。

紧随其后的两个字节是MAC帧首部中的类型字段,标识从上层接收到什么类型的协议,“08 06”表示从上层收到的是类型的数据报。

则接下来的数据就代表该数据报的内容。

“00 01”表示硬件类型为以太网,
“08 00”表示采用的协议类型为IP类型,
“06 04”分别表示硬件地址长度为6字节及协议地址长度为4字节,
“00 01”表示执行ARP请求操作,
“00 13 d4 ae 44 26”“3b 4f 12 9b”表示了源硬件地址,源协议地址(59.79.18.155)“00 00 00 00 00 00”“3b 4f 12 fe”表示了目的硬件地址和目的协议地址(59.79.18.254)。

剩余的0均为填充数据。

综上得出,该数据包为一个什么协议的请求报文。

. .。

相关文档
最新文档