TCP封包格式.docx_第1页
TCP封包格式.docx_第2页
TCP封包格式.docx_第3页
TCP封包格式.docx_第4页
TCP封包格式.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TCP封包格式2010-02-08 17:02:31|分类: 软件技术 |标签: |字号大中小订阅 一、双向传输TCP是一个双向的协议。换言之,当A、B之间建立好连网后,A可以传送数据给B,而B也可以传送数据给A。如下图所示双向传输的特点:AB与AB管道各有一组Sequence/AcknowledgeNumber与Send/ReceiveWindow,因此整个TCP连网会有2个SequenceNumber、2个AcknowledgeNumber、2个SendWindow,以及2个ReceiveWindow。值得注意的是,A、B之间互传的封包,可以同时包含AB与AB的资料。例如:A传送Packet1给B此封包Payload部分当然是属于AB传送管道,但是报送部分则可记录AB的SequenceNumber,以及AB的AcknowledgeNumber。二、TCP连网所有TCP的传输都必须在TCP连网(TCPConnection)中进行。因此,TCP连网的建立、跟上可说是TCP的基本工作。1、识别连网如何定义一条TCP连网?TCP连网是由连网两端的IP地址与连接商品编号(即端口号)所定义:2、建立连网开始建立连网时,一定会有一方为主动端(Active),另一方为被动端(Pawwive)。以WWW为例,客户端的浏览器通常扮演主动端的角色,而服务器端的WedServer通常是被动端的角色。连网建立之初,主要是让双方知道对方使用的各项TCP参数。亦即,在建立连网时,必须交换以下信息:(1)双方的InitialSequenceNumber。(2)双方的WindowSize。(3)双方支持的TCP选择性功能(后文会再详述TCP选择功能)。整个连网建立的过程称为“Handshaking”,也就是双方一见面时要先握手打招呼,讲好如何建立连网。Handshakingr的步骤,每个步骤各有一个TCP封包。第1步骤A首先总支出第1个TCP封包给B,我们称它为SYN封包。此封包除了指明A、B双方的连接端口编号外,还必须包含以下信息:1、SequenceNumber:指定AB的InitialSequenceNumber,我们称之为ISN(AB)。SequenceNumber最随机产生的数字,长度为4Bytes。2、AcknowledgeNumber:指定AB的AcknowledgeNumber。因为现在还不知道AB的SequenceNumber为何,因此AcknowledgeNumber先设为0。3、SYNFlag:这是TCP报头中的一个标示位,用来表明此封包的SequenceNumber为InitialSequenceNumber,而非一般的SequenceNumber。SYN是Synchronize(同步)的缩写,意思是说借助ISN可将A的SequenceNumber与B的AcknowledgeNumber同步化。3、WindowSize:A预设ReceiveWindow的大小,在此我们称之为Window(AB)。它可用来控制B的SendWindow大小,借此达成AB的流量控制。第2步骤B在收到SYN封包后,接着会回复一个SYNACK封包。其中包含了以下信息:1、SequenceNumber:指定AB的InitialSequenceNumber,我们称之为ISN(AB)2、AcknowledgeNumber:指定AB的AcknowledgeNumber。从SYN封包可得知AB的InitialSequenceNumber。在AB传输管道中,SYN封包可算是BytesStream中的1个Byte,因此SYNACK封包的AcknowledgeNumber等于SYN封包的ISN(AB)再加上1。3、YNACKFlag:用来表明此封包的SequenceNumber为InitialSequenceNumber(AB),同时表示AcknowledgeNumber包含了确认收到的信息。4、WindowSize:B默认ReceiveWindow的大小,称为Window(AB)。它可用来控制A的SendWindow大小,藉此达成AB的流量控制。第3步骤A在收到SYNACK封包后,接着会再发出一个ACK封包,其中包含了以下信息:1、SequenceNumber:AB的SequenceNumber,因为第1步骤中的SYN封包占用了BytesStream中的1个Byte,所以此处的SequenceNumber等于第1步骤SYN封包的ISN(AB)再加上1。2、AcknowledgeNumber:指定AB的AcknowledgeNumber。从第2步骤的SYNACK封包可得知AB的InitialSequenceNumber。同理,在AB传输管道中,SYN封包可算是BytesStream中的1个Byte,所以此处的SequenceNumber等于第2步骤SYNACK封包的ISN(AB)再加上1。3、ACKFlag:表示AcknowledgeNumber包含了确认收到的信息。4、WindowSize:A的ReceiveWindow大小,亦即Window(AB)。建立连网的3个步骤可总结成如下的示意图:TCP数据传输实例演示:一、终止连网TCP连网若要终止,必须经由特定的连网终止步骤,才能将连网所用的资源(连接端口、存储器等等)释放出来。请读者注意,虽然建立连网时可区分为主动端与被动端,但是双方都可以主动提出终止连网的要求。连网终止的过程共有4个步骤,每个步骤各有一个TCP封包。接着我们便以A作为主动提出连网终止为例,说明连网终止的过程。第1步骤A首先送出第1个TCP封包给B,我们称它为FINACK封包,其中包含了以下信息:1、SequenceNumber:指定AB的SequenceNumber,因为AB已完成传输,因此称之为FinalSequenceNumber,我们以FSN(AB)来表示。2、AcknowledgeNumber:指定AB的AcknowledgeNumber。3、FIN-ACKFlag:FIN是Finish(完成)的缩写,意思是说AB已经传输完毕,ACK表示AcknowledgeNumber包含了确认收到的信息。4、WindowSize:与一般相同,以下省略。第2步骤B送出ACK封包给A,其中包含了以下信息:1、SequenceNumber:指定AB的SequenceNumber。2、AcknowledgeNumber:指定AB的AcknowledgeNumber。由于FIN封包会占用1Byte,所以此处AcknowledgeNumber等于第1步骤FIN-ACK封包的FSN(AB)再加上1。3、ACKFlag:表示AcknowledgeNumber包含了确认收到的信息。此步骤结束后,代表成功地终止AB传输管道。不过,AB可能还有数据需要传送,所以AB传输管道仍旧继续维持畅通,直到传送完成才会进入第3步骤。第3步骤当B完成AB的传输后,便送出FINACK封包给A,其中包含了以下信息:1、SequenceNumber:指定AB的SequenceNumber,因为已完成传输,因此称之为FSN(AB)。2、AcknowledgeNumber:指定AB的AcknowledgeNumber。由于第1步骤结束后,A便不再传送数据给B,所以此处的AcknowledgeNumber与第2步骤的AcknowledgeNumber相同,皆为FSN(AB)+1。3、FIN-ACKFlag:代表AB已经传输完毕,且AcknowledgeNumber包含了确认收到的信息。第4步骤A送出ACK封包给B,其中包含了以下信息:1、SequenceNumber:指定AB的SequenceNumber。由于第1步骤的FIN封包会占用1Byte,所以此处SequenceNumber等于第1步骤FIN-ACK封包的FSN(AB)再加上1。2、AcknowledgeNumber:指定AB的AcknowledgeNumber。由于第3步骤的FIN封包会占用1Byet,所以此处AcknowledgeNumber等于第3步骤FIN-ACK封包的FSN(AB)再加上1。3、ACKFlag:表示AcknowledgeNumber包含了确认收到的信息。二、TCP封包格式1、TCP数据的封装2、TCP封包格式1)TCP封包是由以下两部分所组成:TCP报头TCP数据TCP报头:记录源端与目的端应用程序所用的连接端口编号,以及相关的SequenceNumber、AcknowledgeNumber、WindowSize等等。TCP数据:载送上层协议(ApplicationLayer)的信息。这部份可视为TCPPayload,不过一般都称为TCPSegment,本章我们将之称为“TCP数据”。2)TCP封包的各个字段SourcePort(源连接端口编号)长度为2Bytes,记录A上层应用程序所用的TCP连接端口编号。Destinationport(目的连接端口编号)长度为2Bytes,记录B上层应用程序所用的TCP连接端口编号。SequecneNumber(序号)长度为4Bytes,记录TCP数据的第1Byte,AB传输管道BytesStream中的编号。Acknowledgenumber(回应序号)长度为4Bytes,记录AB传输管道中,已收到连续性数据在ABBytesStream中的编号。Window(窗口大小)长度为2Bytes,设定A的ReceiveWindow大小,用来控制AB的流量。一般而言,若A有充裕的时间处理AB传送来的数据时,A的ReceiveWindow可变大:若A过于忙碌而无暇处理AB传送来的数据时,A的ReceiveWindow会变小。Acknowledge设为1时代表Ack

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论