tcp-ip数据包分析
TCP IP网络协议分析实验报告

TCP/IP网络协议分析实验一、实验目的1. 通过实验,学习和掌握TCP/IP协议分析的方法及其相关工具的使用;2. 熟练掌握 TCP/IP体系结构;3. 学会使用网络分析工具;4. 网络层、传输层和应用层有关协议分析。
二、实验类型分析类实验三、实验课时2学时四、准备知识1.Windows 2003 server 操作系统2.TCP/IP 协议3.Sniffer工具软件五、实验步骤1.要求掌握网络抓包软件Wireshark。
内容包括:●捕获网络流量进行详细分析●利用专家分析系统诊断问题●实时监控网络活动●收集网络利用率和错误等2.协议分析(一):IP协议,内容包括:●IP头的结构●IP数据报的数据结构分析3.协议分析(二):TCP/UDP协议,内容包括:●TCP协议的工作原理●TCP/UDP数据结构分析六、实验结果1.IP协议分析:(1)工作原理:IP协议数据报有首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是IP数据报必须具有的。
首部分为,版本、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、首部检验和、源地址、目的地址、可选字段和数据部分(2)IPV4数据结构分析:2.TCP协议分析:(1)工作原理:TCP连接是通过三次握手的三条报文来建立的。
第一条报文是没有数据的TCP报文段,并将首部SYN位设置为1。
因此,第一条报文常被称为SYN分组,这个报文段里的序号可以设置成任何值,表示后续报文设定的起始编号。
连接时不能自动从1开始计数,选择一个随机数开始计数可避免将以前连接的分组错误地解释为当前连接的分组。
(2)TCP数据结构分析第一次握手:第二次握手:第三次握手:3.UDP协议分析:(1)工作原理:与我们所熟悉的TCP一样,UDP协议直接位于IP的顶层。
根据OSI(开放系统互联)参考模型,UDP和TCP都属于传输层协议。
UDP的主要作用是将网络数据流量压缩成数据报的形式。
tcp-ip数据包分析

IP数据包格式(1)版本占4位,指IP协议的版本。
通信双方使用的IP协议版本必须一致。
目前广泛使用的IP协议版本号为4(即IPv4)。
关于IPv6,目前还处于草案阶段。
(2)首部长度占4位,可表示的最大十进制数值是15。
请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。
当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。
首部长度限制为60字节的缺点是有时可能不够用。
但这样做是希望用户尽量减少开销。
最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务占8位,用来获得更好的服务。
这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。
1998年IETF把这个字段改名为区分服务DS(Differenti ated Services)。
只有在使用区分服务时,这个字段才起作用。
(4)总长度总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。
当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification)占16位。
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。
当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
tcp协议分析报告

tcp 协议分析报告篇一:TCP协议分析报告TCP/IP 协议分析实验报告、本人承担的工作在这次利用Wireshark 进行TCP/IP 协议分析实验中,我负责协助使用Wireshark软件分析IP数据包、TCP数据结构,以及编写实验报告。
、遇到的困难及解决方法遇到的困难是我们在自己的电脑上ping 本地一个IP 地址时,出现了错误导致抓包进行不了,后来在实验室里进行抓包就可以了。
我觉得可能是在ping 本地IP 地址时无法与那个IP 地址的主机连接,可以ping 其他的本地网关,且让ping 的次数增多让Wireshark 抓包成功率加大即可。
三、体会与总结通过这次利用Wireshark 捕获数据包并且分析IP, TCP 数据结构,结合课本第三章知识,我了解了数据结构包括版本,头部长度,区分服务,总长度,标识,标志,片偏移,生存时间,协议,检验和,源IP 地址,目标IP 地址,选项等,而且知道ping(packet internet grope) 是用于测试源主机到目的主机网络的连通性,Wireshark 是用于尝试捕获网络包并显示包的尽可能详细的情况。
篇二:实验报告(TCP协议分析实验报告)实验四传输层协议分析、实验目的1、学习3CDaemon FTP艮务器的配置和使用,分析TCP报文格式,理解TCP的连接建立、和连接释放的过程。
2、学习3CDaemon TFT服务器的配置和使用,分析UDF报文格式,理解TCP协议与UDP协议的区别。
、实验工具软件3CDaemoi软件简介3CDaemo是3Con公司推出的功能强大的集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 功能。
TCP-IP协议和抓包分析

TCP-IP协议和抓包分析1.数据包1)OSI 参考模型:起源:没有标准通信协议造成的混乱目标:定义各种网络节点间的通信的框架目的:通信标准,解决异种网络互连时所遇到的兼容性问题优点:各层互不干扰;简化开发;快速定位网路故障各层的功能及相关协议:封装和解封装:封装:将上层交给自己的数据包(泛指各种PDU)放进一个或多个本层能理解的数据包的Data部分,并为这些数据包填充适当的头部字段信息,然后将装配好的数据包交给下一层。
解封装:从下层接过本层能理解的数据包,然后去掉本层的数据包头部字段,将Data 部分传给上一层。
2)DOD 模型(TCP/IP 协议族):3)对应关系4)数据包:a. TCP 头部:b. UDP 头部:c. IP 头部:5)TCP 协议三次握手过程的描述:过程简述:1)服务器应用启动,建立相应的TCB,进入LISTEN状态;2)客户端向服务器端发送一个TCP段,该段设置SYN标识,请求跟服务器端应用同步,之后进入SYN-SENT状态,等待服务器端的响应;3)服务器端应用收到客户端的SYN段之后,发送一个TCP段响应客户端,该段设置SYN和ACK标识,告知客户端自己接受它的同步请求,同时请求跟客户端同步。
之后进入SYN-RECEIVED状态;4)客户端收到服务器端的SYN+ACK段之后,发送一个TCP段,该段设置ACK标识,告知服务器端自己接受它的同步请求。
之后,进入ESTABLISHED状态;5)服务器端应用收到客户端的ACK段之后,进入ESTABLISHED状态。
到此,客户端跟服务器端的TCP连接就建立起来了。
6)TCP/UDP 协议之比较:7) TCP 状态机:解释:TCP 连接建立的两种方式:A)常规的三次握手方式:见5)TCP 协议三次握手过程的描述B)同步开放方式:1) 服务器应用启动,建立相应的TCB,进入LISTEN状态;2)客户端向服务器端发送一个TCP段,该段设置SYN标识,请求跟服务器端应用同步,之后进入SYN-SENT状态,等待服务器端的响应;3)服务器端应用收到客户端的SYN段之后,发送一个TCP段响应客户端,该段设置SYN,告知客户端自己请求跟它同步。
IP、TCP、UDP数据包头部抓包及IP分片传输详解

IP 、TCP、UDP头部结构详解IP头部结构:英文头部说明:32bit8 8 8 8V ersion HeaderLength Type of service Totle length IdentifierFlag(3bit)Framgent offestTime to live protocol Header checksumSourse addressDestation addressOption pading中文对照表:32bit8 8 8 8版本号报头长度服务类型报文总长度标识标志(3字节)段偏移生存时间协议校验和源IP地址目的IP地址选项填充字段抓包说明:版本号(Version):长度4比特。
标识目前采用的IP协议的版本号。
一般的值为0100(IPv4),IPv6的值(0110)IP包头长度(Header Length):长度4比特。
这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。
IP包头最小长度为20字节,由于变长的可选部分最大长度可能会变成24字节。
服务类型(T ype of Service):长度8比特。
这个子段可以拆分成两个部分:Precedence和TOS。
TOS目前不太使用。
而Precedence则用于QOS应用。
(TOS字段的详细描述RFC 1340 1349)IP包总长(T otal Length):长度16比特。
IP包最大长度65535字节。
标识符(Identifier):长度16比特。
该字段和Flags和Fragment Offest字段联合使用,对大的上层数据包进行分段(fragment)操作。
标记(Flags):长度3比特。
该字段第一位不使用。
第二位是DF位,DF位设为1时表明路由器不能对该上层数据包分段。
如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。
第三位是MF位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。
TCPIP协议分析

TCP/IP协议分析及应用在计算机网络的发展过程中,TCP/IP网络是迄今为止对人类社会影响最重要的一种网络。
TCP和IP是两种网络通信协议,以这两种协议为核心协议的网络总称为TCP/IP网络。
人们常说的国际互联网或因特网就是一种TCP/IP网络,大多数企业的内部网也是TCP/IP网络。
作为一名学习计算机的学生,我们一定要对TCP/IP协议进行深刻的解析。
通过对协议的分析进一步了解网络上数据的传送方式和网络上出现的问题的解决方法。
本实验就是对文件传输协议进行分析来确定FTP协议工作方式。
目的:通过访问FTP:202.207.112.32,向FTP服务器上传和下载文件。
用抓包工作来捕捉数据在网络上的传送过程。
为的方便数据包的分析,通过上传一个内容为全A的TXT文件,来更直观的分析文件传输的过程。
过程: 1.在本机上安装科莱抓包软件2.对科莱进行进滤器的设置(arp、ftp、ftp ctrl、ftp data)3.通过运行CMD窗口进行FTP的访问4.用PUT和GET进行文件的上传与下载5.对抓到的包进行详细的分析CMD中的工作过程:C:\Documents and Settings\Administrator>ftp 202.207.112.32Connected to 202.207.112.32.220 Serv-U FTP Server v5.1 for WinSock ready...User (202.207.112.32:(none)): anonymous //通过匿名方式访问331 User name okay, please send complete E-mail address as password.Password:230 User logged in, proceed.ftp> cd 学生作业上传区/暂存文件夹250 Directory changed to /学生作业上传区/暂存文件夹ftp> put d:\aaa123.txt //上传aaa123.txt文件200 PORT Command successful.150 Opening ASCII mode data connection for aaa123.txt.226 Transfer complete.ftp: 1736 bytes sent in 0.00Seconds 1736000.00Kbytes/sec.ftp> get aaaaa.txt //下载aaaaa.txt文件200 PORT Command successful.150 Opening ASCII mode data connection for aaaaa.txt (580 Bytes).226 Transfer complete.ftp: 580 bytes received in 0.00Seconds 580000.00Kbytes/sec.ftp> quit221 Goodbye!对FTP响应代码说明见表1:表1 FTP响应代码IP数据包分析:(按照数据包的顺序进行分析)表2和表3是对两个往返的数据报进行分析:表2 捕获的第1个数据包表3 捕获的第2个数据包目标MAC:00 E0 FC 18 7B 46 源MAC:00 0D 87 90 74 FA 版本:4(IPv4)首部长度:5(20字节)上层协议:06(TCP)源IP地址:C0 A8 0B F7 目的IP地址:CA CF 70 20TCP源端口:11 8F(随机产生)目的端口:00 15(熟知端口21表示FTP)TCP报文段数据分析:众所周知的端口来标识在TCP上运行的标准服务,包括FTP、HTTP、TELNET、SMTP等,这些端口号码范围为0-1023。
TCPIP数据包解析示例

IP协议(Internet Protocol)是网络层协议,用在因特网上,TCP,UDP,ICMP,IGMP数据都是按照IP数据格式发送得。
IP协议提供的是不可靠无连接得服务。
IP数据包由一个头部和一个正文部分构成。
正文主要是传输的数据,IP头部由20字节的固定长度和一个可选任意长度部分构成,以大段点机次序传送,从左到右,IP协议数据包格式如下TCP协议(TRANSMISSION CONTROL PROTOCOL)是传输层协议,为应用层提供服务,和UDP 不同的是,TCP协议提供的可靠的面向连接的服务,跟IP头部差不多,基本的长度也是20字节。
TCP 数据包是包含在一个IP数据报文中的,TCP数据包如下这是一次FTP的连接,呵呵,是cuteftp默认的cuteftp的FTP站点,IP地址是:216.3.226.21。
我的IP地址假设为:192.168.1.1。
下面的数据就是TCP/IP连接过程中的数据传输。
我们可以分析TCP/IP协议数据格式以及TCP/IP连接的三次握手情况。
下面的这些十六进制数据只是TCP/IP 协议的数据,不是完整的网络通讯数据。
第一次,我向FTP站点发送连接请求(TCP数据的可选部分去掉了)192.168.1.1->216.3.226.21IP头部:450000305252400080062c23c0a80101d803e215TCP头部:0d280015505f a9060000000070024000c0290000第一字节,"45",其中"4"是IP协议的版本(Version),说明是IP4。
"5"是IHL位,表示IP 头部的长度,是一个4bit字段,最大就是1111了,值为15,IP头部的最大长度就是60字节。
而这里为"5",说明是20字节,这是标准的IP头部长度,头部报文中没有发送可选部分数据。
TCPIP协议栈与数据包封装

TCP/IP 协议栈与数据包封装已有 126 次阅读 2022-6-6 23:19 |个人分类:网络|关键词:TCP 协议数据封装TCP/IP 网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。
如下图所示(该图出自[TCPIP])。
两台计算机通过 TCP/IP 协议通讯的过程如下所示(该图出自[TCPIP])。
传输层及其以下的机制由内核提供,应用层由用户进程提供 (后面将介绍如何使用 socket API 编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。
应用层数据通过协议栈发到网络上时,每层协议都要加之一个数据首部 (header),称为封装(Encapsulation),如下图所示(该图出自 [TCPIP])。
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或者多个路由器,如下图所示(该图出自 [TCPIP])。
其实在链路层之下还有物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。
物理层的能力决定了最大传输速率、传输距离、抗干扰性等。
集线器(Hub)是工作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。
链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步 (就是说从网线上检测到什么信号算作新帧的开始) 、冲突检测 (如果检测到冲突就自动重发) 、数据差错校验等工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IP数据包格式(1)版本占4位,指IP协议的版本。
通信双方使用的IP协议版本必须一致。
目前广泛使用的IP协议版本号为4(即IPv4)。
关于IPv6,目前还处于草案阶段。
(2)首部长度占4位,可表示的最大十进制数值是15。
请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。
当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。
首部长度限制为60字节的缺点是有时可能不够用。
但这样做是希望用户尽量减少开销。
最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务占8位,用来获得更好的服务。
这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。
1998年IETF把这个字段改名为区分服务DS(Differenti ated Services)。
只有在使用区分服务时,这个字段才起作用。
(4)总长度总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。
当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification)占16位。
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。
当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag)占3位,但目前只有2位有意义。
●标志字段中的最低位记为MF(More Fragment)。
MF=1即表示后面“还有分片”的数据报。
MF=0表示这已是若干数据报片中的最后一个。
●标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。
只有当DF=0时才允许分片。
(7)片偏移占13位。
片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。
也就是说,相对用户数据字段的起点,该片从何处开始。
片偏移以8个字节为偏移单位。
这就是说,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。
由发出数据报的源点设置这个字段。
其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。
最初的设计是以秒作为TTL的单位。
每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。
若数据报在路由器消耗的时间小于1秒,就把TTL值减1。
当TTL值为0时,就丢弃这个数据报。
(9)协议占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和占16位。
这个字段只检验数据报的首部,但不包括数据部分。
这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。
不检验数据部分可减少计算的工作量。
(11)源地址占32位。
(12)目的地址占32位。
∙源端口号( 16位):它(连同源主机 IP地址)标识源主机的一个应用进程。
∙目的端口号( 16位):它(连同目的主机 IP地址)标识目的主机的一个应用进程。
这两个值加上 IP报头中的源主机 IP地址和目的主机 IP地址唯一确定一个 TCP连接。
∙顺序号( 32位):用来标识从 TCP源端向 TCP目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。
如果将字节流看作在两个应用程序间的单向流动,则 TCP用顺序号对每个字节进行计数。
序号是32bit的无符号数,序号到达 2^32- 1后又从 0开始。
当建立一个新的连接时, SYN标志变 1,顺序号字段包含由这个主机选择的该连接的初始顺序号ISN( Initial Sequence Number)。
∙确认号( 32位):包含发送确认的一端所期望收到的下一个顺序号。
因此,确认序号应当是上次已成功收到数据字节顺序号加 1。
只有 ACK标志为1时确认序号字段才有效。
TCP为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输。
因此,连接的每一端必须保持每个方向上的传输数据顺序号。
∙TCP报头长度( 4位):给出报头中 32bit字的数目,它实际上指明数据从哪里开始。
需要这个值是因为任选字段的长度是可变的。
这个字段占 4bit,因此 TCP最多有 60字节的首部。
然而,没有任选字段,正常的长度是 20字节。
∙保留位( 6位):保留给将来使用,目前必须置为 0。
∙控制位( control flags, 6位):在 TCP报头中有 6个标志比特,它们中的多个可同时被设置为 1。
依次为:∙URG:为 1表示紧急指针有效,为 0则忽略紧急指针值。
∙ACK:为 1表示确认号有效,为 0表示报文中不包含确认信息,忽略确认号字段。
∙PSH:为 1表示是带有 PUSH标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
∙RST:用于复位由于主机崩溃或其他原因而出现错误的连接。
它还可以用于拒绝非法的报文段和拒绝连接请求。
一般情况下,如果收到一个 RST为 1的报文,那么一定发生了某些问题。
∙SYN:同步序号,为 1表示连接请求,用于建立连接和使顺序号同步( synchronize)。
∙FIN:用于释放连接,为 1表示发送方已经没有数据发送了,即关闭本方数据流。
∙窗口大小( 16位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。
窗口大小是一个 16bit字段,因而窗口大小最大为 65535字节。
∙校验和( 16位):此校验和是对整个的 TCP报文段,包括 TCP头部和 TCP 数据,以 16位字进行计算所得。
这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。
∙紧急指针( 16位):只有当 URG标志置 1时紧急指针才有效。
紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。
TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
∙选项:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size)。
每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段。
选项长度不一定是 32位字的整数倍,所以要加填充位,使得报头长度成为整字数。
∙数据: TCP报文段中的数据部分是可选的。
在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP首部。
如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。
在处理超时的许多情况中,也会发送不带任何数据的报文段。
∙请求端(通常称为客户)发送一个 SYN报文段( SYN为 1)指明客户打算连接的服务器的端口,以及初始顺序号( ISN)。
∙服务器发回包含服务器的初始顺序号( ISN)的 SYN报文段( SYN为 1)作为应答。
同时,将确认号设置为客户的 ISN加 1以对客户的 SYN报文段进行确认( ACK也为 1)。
∙客户必须将确认号设置为服务器的 ISN加 1以对服务器的 SYN报文段进行确认( ACK为 1),该报文通知目的主机双方已完成连接建立。
三次握手协议可以完成两个重要功能:它确保连接双方做好传输准备,并使双方统一了初始顺序号。
初始顺序号是在握手期间传输顺序号并获得确认:当一端为建立连接而发送它的SYN时,它为连接选择一个初始顺序号;每个报文段都包括了顺序号字段和确认号字段,这使得两台机器仅仅使用三个握手报文就能协商好各自的数据流的顺序号。
一般来说,ISN随时间而变化,因此每个连接都将具有不同的ISN。
TCP采用一种名为“带重传功能的肯定确认(positive acknowledge with retransmission)”的技术作为提供可靠数据传输服务的基础。
这项技术要求接收方收到数据之后向源站回送确认信息ACK。
发送方对发出的每个分组都保存一份记录,在发送下一个分组之前等待确认信息。
发送方还在送出分组的同时启动一个定时器,并在定时器的定时期满而确认信息还没有到达的情况下,重发刚才发出的分组。
图3-5表示带重传功能的肯定确认协议传输数据的情况,图3-6表示分组丢失引起超时和重传。
为了避免由于网络延迟引起迟到的确认和重复的确认,协议规定在确认信息中稍带一个分组的序号,使接收方能正确将分组与确认关联起来。
从图3-5可以看出,虽然网络具有同时进行双向通信的能力,但由于在接到前一个分组的确认信息之前必须推迟下一个分组的发送,简单的肯定确认协议浪费了大量宝贵的网络带宽。
为此,TCP使用滑动窗口的机制来提高网络吞吐量,同时解决端到端的流量控制。
滑动窗口技术是简单的带重传的肯定确认机制的一个更复杂的变形,它允许发送方在等待一个确认信息之前可以发送多个分组。
如图3-7所示,发送方要发送一个分组序列,滑动窗口协议在分组序列中放置一个固定长度的窗口,然后将窗口内的所有分组都发送出去;当发送方收到对窗口内第一个分组的确认信息时,它可以向后滑动并发送下一个分组;随着确认的不断到达,窗口也在不断的向后滑动。
Tcp数据包格式。