首页 TCP封包格式

TCP封包格式

举报
开通vip

TCP封包格式TCP封包格式   2010-02-08 17:02:31|  分类: 软件技术 |  标签: |字号大中小 订阅 一、双向传输 TCP是一个双向的协议。换言之,当A、B之间建立好连网后,A可以传送数据给B,而B也可以传送数据给A。 如下图所示 双向传输的特点: A → B与A ← B管道各有一组Sequence / Acknowledge Number与Send / Receive Window,因此整个TCP连网会有2个Sequence Number、2个Acknowledge Number、2个Sen...

TCP封包格式
TCP封包格式   2010-02-08 17:02:31|  分类: 软件技术 |  标签: |字号大中小 订阅 一、双向传输 TCP是一个双向的 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 。换言之,当A、B之间建立好连网后,A可以传送数据给B,而B也可以传送数据给A。 如下图所示 双向传输的特点: A → B与A ← B管道各有一组Sequence / Acknowledge Number与Send / Receive Window,因此整个TCP连网会有2个Sequence Number、2个Acknowledge Number、2个Send Window,以及2个Receive Window。值得注意的是,A、B之间互传的封包,可以同时包含A → B与A ← B的资料。例如:A传送Packet 1给B此封包Payload部分当然是属于A → B传送管道,但是报送部分则可记录A → B的Sequence Number,以及A ← B的Acknowledge Number。 二、TCP连网 所有TCP的传输都必须在TCP连网(TCP Connection)中进行。因此,TCP连网的建立、跟上可说是TCP的基本工作。 1、识别连网 如何定义一条TCP连网? TCP连网是由连网两端的IP地址与连接商品编号(即端口号)所定义: 2、建立连网 开始建立连网时,一定会有一方为主动端(Active),另一方为被动端(Pawwive)。 以WWW为例,客户端的浏览器通常扮演主动端的角色,而服务器端的Wed Server通常是被动端的角色。 连网建立之初,主要是让双方知道对方使用的各项TCP参数。亦即,在建立连网时,必须交换以下信息: (1)双方的Initial Sequence Number。 (2)双方的Window Size。 (3)双方支持的TCP选择性功能(后文会再详述TCP选择功能)。 整个连网建立的过程称为“Handshaking”,也就是双方一见面时要先握手打招呼,讲好如何建立连网。 Handshakingr的步骤,每个步骤各有一个TCP封包。 第1步骤 A首先总支出第1个TCP封包给B,我们称它为SYN封包。此封包除了指明A、B双方的连接端口编号外,还必须包含以下信息: 1、Sequence Number:指定A→B的Initial Sequence Number,我们称之为ISN(A→B)。Sequence Number最随机产生的数字,长度为4Bytes。 2、Acknowledge Number:指定A←B的Acknowledge Number。因为现在还不知道A←B的Sequence Number为何,因此Acknowledge Number先设为0。 3、SYN Flag:这是TCP报头中的一个标示位,用来 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 明此封包的Sequence Number为Initial Sequence Number,而非一般的Sequence Number。 SYN是Synchronize(同步)的缩写,意思是说借助ISN可将A的Sequence Number与B的Acknowledge Number同步化。 3、Window Size:A预设Receive Window的大小,在此我们称之为Window(A←B)。它可用来控制B的Send Window大小,借此达成A←B的流量控制。 第2步骤 B在收到SYN封包后,接着会回复一个SYN-ACK封包。其中包含了以下信息: 1、Sequence Number:指定A←B的Initial Sequence Number,我们称之为ISN(A←B) 2、Acknowledge Number:指定A→B的Acknowledge Number。从SYN封包可得知A→B的Initial Sequence Number。在A→B传输管道中,SYN封包可算是Bytes Stream中的1个Byte,因此SYN-ACK封包的Acknowledge Number等于SYN封包的ISN(A→B)再加上1。 3、YN-ACK Flag:用来表明此封包的Sequence Number为Initial Sequence Number(A←B),同时表示Acknowledge Number包含了确认收到的信息。 4、Window Size:B默认Receive Window的大小,称为Window(A→B)。它可用来控制A的Send Window大小,藉此达成A→B的流量控制。 第3步骤 A在收到SYN-ACK封包后,接着会再发出一个ACK封包,其中包含了以下信息: 1、Sequence Number:A→B的Sequence Number,因为第1步骤中的SYN封包占用了Bytes Stream中的1个Byte,所以此处的Sequence Number等于第1步骤SYN封包的ISN(A→B)再加上1。 2、Acknowledge Number:指定A←B的Acknowledge Number。从第2步骤的SYN-ACK封包可得知A←B的Initial Sequence Number。同理,在A←B传输管道中,SYN封包可算是Bytes Stream中的1个Byte,所以此处的Sequence Number等于第2步骤SYN-ACK封包的ISN(A←B)再加上1。 3、ACK Flag:表示Acknowledge Number包含了确认收到的信息。 4、Window Size:A的Receive Window大小,亦即Window(A←B)。 建立连网的3个步骤可总结成如下的示意图: TCP数据传输实例演示: 一、终止连网  TCP连网若要终止,必须经由特定的连网终止步骤,才能将连网所用的资源(连接端口、存储器等等)释放出来。请读者注意,虽然建立连网时可区分为主动端与被动端,但是双方都可以主动提出终止连网的要求。 连网终止的过程共有4个步骤,每个步骤各有一个TCP封包。接着我们便以A作为主动提出连网终止为例,说明连网终止的过程。 第1步骤 A首先送出第1个TCP封包给B,我们称它为FIN-ACK封包,其中包含了以下信息: 1、Sequence Number:指定A→B的Sequence Number,因为A→B已完成传输,因此称之为Final Sequence Number,我们以FSN(A→B)来表示。 2、Acknowledge Number:指定A←B的Acknowledge Number。 3、FIN-ACK Flag:FIN是Finish(完成)的缩写,意思是说A→B已经传输完毕,ACK表示Acknowledge Number包含了确认收到的信息。 4、Window Size:与一般相同,以下省略。 第2步骤 B送出ACK封包给A,其中包含了以下信息: 1、Sequence Number:指定A←B的Sequence Number。 2、Acknowledge Number:指定A→B的Acknowledge Number。由于FIN封包会占用1Byte,所以此处Acknowledge Number等于第1步骤FIN-ACK封包的FSN(A→B)再加上1。 3、ACK Flag:表示Acknowledge Number包含了确认收到的信息。 此步骤结束后,代表成功地终止A→B传输管道。不过,A←B可能还有数据需要传送,所以A←B传输管道仍旧继续维持畅通,直到传送完成才会进入第3步骤。 第3步骤 当B完成A←B的传输后,便送出FIN-ACK封包给A,其中包含了以下信息: 1、Sequence Number:指定A←B的Sequence Number,因为已完成传输,因此称之为FSN(A←B)。 2、Acknowledge Number:指定A→B的Acknowledge Number。由于第1步骤结束后,A便不再传送数据给B,所以此处的Acknowledge Number与第2步骤的Acknowledge Number相同,皆为FSN(A→B)+1。 3、FIN-ACK Flag:代表A←B已经传输完毕,且Acknowledge Number包含了确认收到的信息。 第4步骤 A送出ACK封包给B,其中包含了以下信息: 1、Sequence Number:指定A→B的Sequence Number。由于第1步骤的FIN封包会占用1Byte,所以此处Sequence Number等于第1步骤FIN-ACK封包的FSN(A→B)再加上1。 2、Acknowledge Number:指定A←B的Acknowledge Number。由于第3步骤的FIN封包会占用1Byet,所以此处Acknowledge Number等于第3步骤FIN-ACK封包的FSN(A←B)再加上1。 3、ACK Flag:表示Acknowledge Number包含了确认收到的信息。 二、TCP封包格式 1、TCP数据的封装 2、TCP封包格式 1) TCP 封包是由以下两部分所组成: TCP报头TCP数据       TCP报头:记录源端与目的端应用程序所用的连接端口编号,以及相关的Sequence Number、Acknowledge Number、Window Size等等。 TCP数据:载送上层协议(Application Layer)的信息。这部份可视为TCP Payload,不过一般都称为TCP Segment,本章我们将之称为“TCP数据” 。 2)TCP封包的各个字段 Source Port (源连接端口编号) 长度为2Bytes,记录A上层应用程序所用的TCP连接端口编号。 Destination port (目的连接端口编号) 长度为2Bytes,记录B上层应用程序所用的TCP连接端口编号。 Sequecne Number (序号)  长度为4Bytes,记录TCP数据的第1Byte,A→B传输管道Bytes Stream中的编号。 Acknowledge number (回应序号) 长度为4Bytes,记录A←B传输管道中,已收到连续性数据在A←B Bytes Stream中的编号。 Window (窗口大小) 长度为2Bytes,设定A的Receive Window大小,用来控制A←B的流量。一般而言,若A有充裕的时间处理A←B传送来的数据时,A的 Receive Window可变大:若A过于忙碌而无暇处理A←B传送来的数据时,A的Receive Window会变小。 Acknowledge 设为1时代表Acknowledge Number字段包含了确认信息。 Synchronize Synchronize Flag设为1时,代表Sequence Number字段记载的是Initial Sequence Number,换言之,此封包为连网建立时第1或第2步骤的封包。 Checksum(校验和) 长度为2Bytes,记录错误校验和。TCP在计算机错误校验和时,会加上TCP Pseudo Header。其运作方式与UDP的错误校验和完全相同,在此不再赘述。
本文档为【TCP封包格式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:27KB
软件:Word
页数:6
分类:互联网
上传时间:2019-05-28
浏览量:38