GPRS数据传输设计(十一)TCP协议
- 格式:pdf
- 大小:152.64 KB
- 文档页数:7
TCP/IP 传输数据包协议一、数据中心短信激活格式(动态IP)**HGDGPRS**TCP,IP地址,端口号,8位识别码.其中IP地址为中心计算机广域网IP地址,例如:218.17.205.148端口号为中心计算机映射端口号:例如:50058位识别码为控制中心为方便识别控制而设定:如6666则一条短信的格式为:**HGDGPRS**TCP,218.17.205.148,5005,6666.二、中心计算机发送数据打包格式一个数据包最长为:1037字节其中:第1到第8字节为识别码字节,接收端根据识别码来决定是否对收到数据进行处理,第9字节---数据包类型30H(0x30)---心跳包31H(0x31)---数据包32H(0x32)–-查询模块状态33H(0x33) --屏幕设置包其余值保留第10字节--- M数据包总数(取值0H--7FH)心跳包--- 30H查询包--- 32H第11字节--- N数据包序号(取值0H--7FH),N≤M心跳包--- 30H查询包--- 32H第12字节--- 30H保留(其他)心跳包--- 30H查询包--- 32H最后包取256的模第13字节--- 30H(其他)心跳包--- 30H查询包--- 32H最后包取256的商第14字节—第1037字节为---数据内容(1024字节)注:对于心跳包,总共为13字节,第10-13字节为都为30H 状态查询包,总共为13字节,第10-13字节为都为32H 三、终端回馈信息格式第1到第4字节为*HGD第5到第12字节为识别码字节第13字节---数据包类型30H---心跳包31H---数据包32H–模块准备好33H ---屏幕设置反馈其余值保留第14字节--- M数据包总数(取值0H--7FH)第15字节--- N数据包序号(取值0H--7FH),N≤M第16字节---30H保留第17字节—第1036字节为---数据内容注:对于心跳包:总共为16字节,第14-16字节为都为30H状态查询包:总共为16字节,第14-16字节为都为32H屏幕设置反馈:总共为16字节,后三字节为“OK.”或者“NO.”四、在数据传输过程中,中心服务器每发一个小包,必须等待终端有相应的反馈后才继续发送。
本文将TCP与UDP两种协议进行对比,从可靠性、适用性、资费等方面深入讨论在GPRS 网络上,数据传输协议在不同应用领域的适用性。
引言GPRS应用于个人商务网络,主要访问网页、收发邮件等,各种应用有确定的协议,但在工业数据传输等行业应用领域中,用户面对可选的TCP与UDP传输,没有明确的标准,业主单位、设备供应商、系统集成商常常为在GPRS网络上选用何种传输协议进行长时间讨论与测试。
本文将两种协议进行对比,从可靠性、适用性、资费等方面深入讨论在GPR S网络上,两种数据传输协议在不同应用领域的适用性。
1、GPRS行业应用GPRS当前应用广泛的行业有电力、油田、工业控制、运输、金融、证券、商业、公共安全业、天气预报、交通信息实时发布等,应用特点是数据量小,发送时间间隔大,或不定时发送。
通过GPRS网络进行数据传输,具有成本低、组网迅速灵活、范围广、专业队伍维护的优势。
应用中,用户在GPRS网络上可选择TCP与UDP传输协议,由于没有明确的标准,选用何种协议让业主单位、设备供应商、系统集成商常常为在选用何种传输协议进行长时间讨论,并且进行了大量测试,几乎每个项目都要进行小规模试验,影响了GPRS在行业应用的进程。
系统运行效果除受协议选择影响外,还受到网络质量、使用方式、外围设备的影响。
很多试验的结果不尽一致,不能准确反映TCP/UDP协议选择带来的效果。
让TCP/UDP选择再次陷入新一轮讨论与测试过程。
2、两种传输协议的定义与主要特征的比较关于TCP、UDP两种协议的详细讲解请参阅相关资料,这里针对行业应用的特点进行说明。
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UD P数据报,并组装成一份待发送的IP数据报。
UDP数据报封装成一份IP数据报的格式如图所示:UDP不提供可靠性连接:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。
TCP和UDP都使用相同的网络层(IP)。
TCP协议详解一、背景介绍TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议,用于在互联网上可靠地传输数据。
TCP协议提供了数据分段、排序、确认和流量控制等功能,确保数据的可靠传输。
二、协议目的TCP协议的目的是提供可靠的数据传输,确保数据在发送和接收之间的完整性和可靠性。
它通过使用序列号、确认和重传机制来实现数据的可靠传输,并通过流量控制和拥塞控制机制来优化网络性能。
三、协议内容1. 连接建立- TCP协议使用三次握手来建立连接。
首先,客户端向服务器发送一个SYN (同步)报文段,其中包含一个初始序列号。
服务器收到SYN报文段后,回复一个SYN+ACK(同步+确认)报文段,其中包含确认序列号和服务器的初始序列号。
最后,客户端再回复一个ACK(确认)报文段,确认连接建立成功。
2. 数据传输- TCP协议将数据分割成多个报文段进行传输。
每个报文段都有一个序列号,用于标识报文段在数据流中的位置。
接收方通过确认序列号来确认已经接收到的报文段,并通过序列号来重新排序报文段。
- TCP协议还使用滑动窗口机制来进行流量控制。
发送方根据接收方的处理能力和网络状况来调整发送速率,避免发送过快导致接收方无法处理。
3. 连接终止- TCP协议使用四次挥手来终止连接。
首先,一方发送一个FIN(结束)报文段,表示要关闭连接。
接收方收到FIN报文段后,发送一个ACK报文段进行确认。
然后,接收方也发送一个FIN报文段,表示同意关闭连接。
最后,发送方收到FIN 报文段后,发送一个ACK报文段进行确认,连接正式关闭。
四、协议优势1. 可靠性:TCP协议通过序列号、确认和重传机制来确保数据的可靠传输,减少数据丢失和错误。
2. 有序性:TCP协议通过序列号和重新排序机制来保证数据的有序传输,确保数据按照发送顺序正确接收。
3. 流量控制:TCP协议使用滑动窗口机制来进行流量控制,根据接收方的处理能力和网络状况来调整发送速率,避免网络拥塞。
移动核心网分组域专业运维认证题库说明:1、本题库题型共三类,即判断题、单选题、多选题,题量分别是100、100、50,其中每类题型中按照基本级、扩展级、提高级设置试题。
2、本题库适用于以下专业岗位考试:核心网分组域设备维护、核心网分组域网络调度、核心网分组域技术支撑、移动网络维护管理。
一、判断题(基本级1-60题,扩展级61-80题,提高级81-100题)基本级(以下1-60题)1.GTP信令主要功能包括:路径管理、位置管理、隧道管理和移动性管理。
(√)2.分组域网络PLMN之间的接口叫做Gp接口, PLMN到外部网络的接口叫Gi接口。
(√)3. GPRS核心网的DNS服务器主要提供用户上网时的URL解析功能。
(×)4. 在SGSN和GGSN的共同作用下,完成了PS域的移动性管理。
(×)5. 网络侧发起PDP激活请求时手机只能采用动态地址池。
(×)6.GTP'协议是GSN节点与CG之间的Ga接口协议,用于把GSN节点的话单发送到CG,它可以分为路径管理和话单传输。
(√)7.Gn/Gp接口是GSN节点之间的接口,其中Gp接口是同一PLMN内的GSN节点之间的接口,Gn 接口位于不同PLMN的两个GSN节点之间的接口。
(×)8.GGSN具有计费话单的采集功能, 并提供标准接口Ga与CG相连, 传送计费信息到CG。
(√)9.APN是由网络标识符和营运者标识符组合而成的。
(√)10.GGSN地址也就是指GGSN的GTP-C地址, 它是唯一的。
(√)11.GGSN位置管理是用于支持网络发起请求PDP上下文激活流程。
(√)12.UTRAN,即陆地无线接入网,分为基站(Node B)和无线网络控制器(RNC)两部分。
(√)13.GGSN上在线计费是通过Gy接口与OCS相连,使用Diameter协议实现的。
(√)14.Gi接口是GGSN与PDN之间的接口。
(√)15.用户一次激活过程产生的G-CDR具有同一Charging ID,该Charging ID由SGSN分配。
GPRS数据传输设计(十)IP协议数据传输设计(3.4.1 IP协议TCP/IP体系中设计网络层协议基于以下两个原因[32]:•没有一个物理网络能够为所有用户服务。
支持高速通信的局域网总会受到地理跨度的限制,广域网跨越很大的距离,但是速度较慢,因此,任何一个单一的物理网络无法满足所有的需要,因此希望实现一个可以连接不同物理网络的技术。
•用户希望通用的互连。
但是,人们恰恰希望能够不受地理和网络结构的限制与不同的主机进行通信。
因此,就需要采用一种技术,将不同种类的网络连接,并在这些网络之间插入设备和软件,以支持一种通用的服务,使整个相连的网络看起来像一个单一的网络,这样的一种互连方案就称为网际互连,所形成的网络就称为internet(互联网)。
在internet中,不同网络依靠一种称为网关的计算机进行连接。
网络内的主机发送的信息由网关负责选择路由并发送到目的地。
IP就是这样一个网络层协议。
IP提供了一种不可靠的、无连接的数据报传输服务,不可靠是指IP并不保证一个IP报文可以成功的到达目标主机,然而它提供尽力传送,即它将数据报发送出去并且希望它能到达目的主机,但是如果出现重复或无序传输也不通知发送者;无连接是指每一个分组的处理都独立于其它分组,在传输前并没有在通信双方之间建立链路,一个分组从一个机器发出,可以经由不同的路径到达另一台机器。
IP协议包括三个部分:•IP地址IP地址对网上的某个节点来说是一个逻辑地址,它独立于任何特定的网络硬件和网络配置,不管物理网络如何,它都有相同的格式。
IP分组的传输依靠IP地址来选择路由,因此,IP地址是IP协议中重要的一部分[31]。
•IP分组IP分组是因特网上传递的基本分组单元,其中包含IP分组的源地址和目标地址,在IP 分组的传递过程中,不管跨越多少个物理网络,IP协议的路由机制都能够保证将数据送到正确的目的地。
•分组路由选择IP协议中还包括在传递IP数据报时如何进行路由,这是保证IP数据报能够到达指定目标地址的关键。
什么是tcp协议TCP协议是指传输控制协议(Transmission Control Protocol),它是互联网协议套件中的一部分,负责在网络中建立连接、传输数据和断开连接。
TCP协议是一种可靠的、面向连接的协议,它保证数据的可靠传输,确保数据不会丢失、损坏或重复。
首先,TCP协议是如何工作的呢?当两台计算机需要进行数据传输时,它们会先建立一个TCP连接。
这个连接是通过三次握手来建立的,即客户端向服务器发送一个连接请求,服务器回复一个连接确认,最后客户端再次回复一个连接确认。
一旦连接建立起来,数据就可以在两台计算机之间传输了。
在数据传输过程中,TCP协议会对数据进行分段,并为每个数据包加上序号,以确保数据的顺序和完整性。
接收端会对收到的数据包进行确认,并且如果发现有丢失的数据包,会要求发送端重新发送。
这种可靠的数据传输机制使得TCP协议非常适合于对数据可靠性要求较高的应用场景,比如文件传输、网页浏览等。
此外,TCP协议还支持流量控制和拥塞控制。
流量控制是指接收端通过控制发送端的发送速率,以防止发送端发送过多的数据导致接收端无法处理。
拥塞控制是指发送端根据网络的拥塞程度来调整发送速率,以避免网络拥塞导致数据丢失或延迟增加。
这两种控制机制保证了网络的稳定性和公平性,使得TCP协议能够在复杂的网络环境下正常工作。
总的来说,TCP协议是一种可靠的、面向连接的协议,它通过三次握手建立连接,保证数据的可靠传输,支持流量控制和拥塞控制,适用于对数据可靠性要求较高的应用场景。
在互联网中,绝大多数的数据传输都是基于TCP协议来进行的,它是互联网的基石之一,对于我们的日常生活和工作有着重要的意义。
总而言之,TCP协议的出现和发展,为互联网的发展提供了坚实的基础。
它的可靠性和稳定性使得互联网能够成为一个全球性的信息交流平台,为人们的生活和工作带来了极大的便利。
希望通过本文的介绍,读者能对TCP协议有一个更加清晰和深入的了解,进而更好地利用互联网资源。
TCP协议详解一、引言TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,用于在网络中传输数据。
本协议详解将介绍TCP协议的工作原理、数据传输过程、连接建立和终止过程、流量控制和拥塞控制等方面的内容。
二、TCP协议的工作原理1. 数据分段TCP将应用层传输的数据分成较小的数据块,称为段(segment),每个段包含一个序号和一些控制信息。
2. 可靠性传输TCP使用确认和重传机制来确保数据的可靠传输。
接收方在收到数据后会发送确认消息,发送方在一定时间内没有收到确认消息时会重传数据。
3. 流量控制TCP通过滑动窗口机制来进行流量控制。
发送方根据接收方的处理能力和网络状况来动态调整发送数据的速率,以避免数据丢失或网络拥塞。
4. 拥塞控制TCP使用拥塞窗口来控制数据发送的速率,以避免网络拥塞。
当网络出现拥塞时,发送方会减小拥塞窗口的大小,以降低数据发送的速率。
三、TCP协议的数据传输过程1. 连接建立TCP使用三次握手来建立连接。
首先,客户端向服务器发送一个SYN包,服务器收到后回复一个SYN-ACK包,最后客户端再回复一个ACK包,连接建立成功。
2. 数据传输在连接建立后,发送方将数据分成段并发送给接收方。
接收方收到数据后发送确认消息,发送方根据接收到的确认消息进行重传或发送下一个段。
3. 连接终止TCP使用四次挥手来终止连接。
首先,发送方向接收方发送一个FIN包,接收方收到后回复一个ACK包。
然后,接收方向发送方发送一个FIN包,发送方收到后回复一个ACK包,连接终止成功。
四、TCP协议的优点1. 可靠性:TCP使用确认和重传机制来确保数据的可靠传输,能够保证数据的完整性和正确性。
2. 顺序性:TCP保证数据的顺序传输,接收方按照发送方的顺序接收数据。
3. 流量控制:TCP使用滑动窗口机制来进行流量控制,根据接收方的处理能力和网络状况动态调整发送数据的速率。
TCP协议详解协议名称:传输控制协议(TCP)1. 引言传输控制协议(TCP)是一种在计算机网络中广泛使用的协议,用于在网络上可靠地传输数据。
它是一种面向连接的协议,提供了可靠的数据传输、流量控制和拥塞控制功能。
本协议详解将对TCP协议的工作原理、数据传输过程和相关特性进行详细介绍。
2. 协议概述TCP协议是一种面向连接的协议,它通过三次握手建立连接,并使用序列号和确认应答机制来保证数据的可靠传输。
TCP协议使用端口号来标识不同的应用程序,以便正确地将数据交付给目标应用程序。
3. 连接建立在建立TCP连接时,客户端首先向服务器发送一个连接请求报文段,服务器收到请求后回复一个连接确认报文段,然后客户端再发送一个确认应答报文段,完成连接的建立。
这个过程称为三次握手。
4. 数据传输一旦连接建立,数据传输可以开始。
TCP协议将数据划分为多个数据段,并为每个数据段分配一个序列号。
发送方将数据段发送给接收方,并等待接收方的确认应答。
如果发送方没有收到确认应答,它会重新发送数据段。
接收方接收到数据段后,会发送确认应答,指示已成功接收数据段。
如果接收方没有按序接收到数据段,它会要求发送方重新发送丢失的数据段。
5. 流量控制TCP协议使用滑动窗口机制来进行流量控制。
发送方根据接收方的处理能力和网络状况来动态调整发送数据的速率,以避免发送过快导致接收方无法及时处理。
接收方通过发送窗口大小来告知发送方可以接收的数据量。
6. 拥塞控制TCP协议还具有拥塞控制机制,用于防止网络拥塞。
拥塞控制通过动态调整发送数据的速率来避免网络拥塞的发生。
TCP协议使用拥塞窗口来控制发送方的发送速率,并通过拥塞避免算法来检测网络拥塞的发生,并相应地调整发送速率。
7. 连接释放当数据传输完成或需要释放连接时,TCP协议使用四次握手来关闭连接。
关闭连接时,发送方首先发送一个连接释放请求报文段,接收方收到请求后发送一个确认应答报文段。
然后接收方再发送一个连接释放请求报文段,发送方收到请求后发送一个确认应答报文段,完成连接的关闭。
)TCP协议十一)(十一GPRS数据传输设计数据传输设计(3.4.2 TCP协议TCP协议处于TCP/IP协议簇的传输层,它可以为网络提供有序可靠的分组数据交换服务。
TCP在不可靠的分组传输网络上提供可靠的进程间通信机制,它具有分组丢失检测、自动重传、错误处理等保证可靠有序传输的功能。
TCP不对高层协议的数据产生影响,它将来自高层的数据看成不间断的字节流,TCP为流中的每一个字节都分配一个序列号,在与对等的TCP交换报文时,TCP给这些段附加的控制信息包括该段中第一个字节的序列号以及该段中所有数据字节的个数,接收方的TCP就能够根据这些信息将不间断的数据流传送给自己的高层协议。
1.TCP报文段格式TCP软件在两台计算机之间传输的数据单元称为报文段。
报文段分为两个部分,前面是TCP头,后面是数据。
TCP报文段格式如图3-11所示。
(1) 源端口16位,表示发送方的端口号。
因为TCP是一种进程通信协议,在同一个IP模块上可能有多个TCP应用程序在运行,仅仅使用IP地址无法唯一区别应用程序,所以同一主机上的不同应用程序使用端口区别。
(2) 目的端口16位,表示接收方的端口号。
(3) 序列号32位,表示该数据段中的第一个字节的序列号。
如果TCP数据包中设置了同步信号(SYN),那么该值是初始序列号(initial sequence number, ISN),以后通信的第一个数据字节的序列号为ISN+1。
序列号是数据流中字节的唯一性标识,因此如果有部分数据需要重新发送(比如没有接收到确认信息),那么从需要重新发送的第一个字节起的所有字节都要重新发送,并且要使用原来的序列号。
(4) 确认号32位,如果设置了ACK则表示发送方期望下次接收到的数据段的起始编号。
在连接建立后,ACK必须每次都发送并且要设置为本机已经接收到的最大数据段序列号加一。
通信的另一方根据这个确认号来确定下次要发送的数据段。
(5) 数据偏移4位,包含一个整数,指明报文段头的长度,单位是4字节。
因为TCP报头中包含的任选项长度是可变的,所以TCP报头长度是不固定的。
(6) 控制位6位,用来确定报文段的目的与内容。
以下各位1表示有效,从左到右依次为:URG:表示紧急指针数据段有效。
ACK:表示确认号数据段有效。
PSH:表示报文段请求一次推进操作,该标识要求TCP尽快将数据发送出去,而不要等待后续数据的到来。
接收到带有PSH标志的数据段后要尽快处理。
RST:重置连接。
本次连接被复位。
SYN:同步序列号,建立连接时使用。
FIN:发送者已经发送完数据,关闭连接时使用。
(7) 窗口16位,表示发送者可以接收的数据字节数量。
按网络字节顺序排列的整数。
(8) 检查和16字节,TCP计算检查和和的方法与IP相同。
但计算时必须在TCP数据帧前面加上一个伪数据头,伪数据头的格式如下:其中,TCP的协议标识符为6,TCP报文长度指的是整个TCP报文的长度(不包括伪报头)。
在计算时,把上面的伪数据头增加到TCP报文的前面,然后将检查和字节都设置为0,以2个字节为单位求和,有进位时将检查和加1,计算完毕后将结果按位取反。
(9)紧急指针16位,当URG设置为1时该值有效。
紧急指针指示该段数据中哪些数据是紧急的。
虽然TCP是面向流的协议,但是有时候处在连接的一端的程序也需要立即发送带外数据,而不用等待连接的另一端上的程序消耗完数据流中正传输的数据。
为了提供带外数据,TCP 提供了紧急数据指针。
当接收方发现紧急数据时,接收方的的TCP就通知与连接相关的应用程序进入紧急方式,在所有的紧急数据处理结束后,TCP才回到正常的运行方式。
当发送紧急数据时,首先要设置URG,然后设置紧急指针,紧急指针指出窗口中紧急数据结束的位置,它的值是从序列号开始的数据段中的正偏移。
(10) 任选项任选项用来处理其它各种情况,任选项长度是可变的,协议只要求它是以字节为单位的,因此有可能不是32位的整数倍,此时要在任选项后面添加填充项。
目前使用的任选项有:(内容为16进制)•任选项结束内容:00表示任选项结束。
•NOP(空)内容:01可能出现在任选项域中的任何位置,为使任选项为32位的整数倍,可利用它来填充。
•最大段长度内容:02 04 <2字节表示的最大段长度>设置TCP数据段的最大值。
2.TCP数据传输过程TCP提供面向连接的可靠报文传输协议。
因此,TCP传输数据前必须建立连接,在传输结束后必须断开连接,这些控制是通过TCP数据帧中的控制标志实现的。
而TCP传输的可靠性和有序性是通过序列号和确认号来实现的,流量控制则通过窗口机制实现。
TCP在两个端点之间建立等效于物理连接的逻辑连接,然后数据就可以沿着这个连接双向传送。
连接的两边都必须对发送和接收的数据保存跟踪,以便能检测出数据流中的遗漏和重复。
TCP 中采用了字节序列机制,这种方法要求两边都对传送和接收数据的字节计数进行跟踪。
当一定量的数据到达以后,接收者对字节计数进行确认,而不管它所表示的块数。
(1)TCP连接状态TCP连接状态转换如图3-12所示。
一个TCP连接过程分为两种,一种是处于被动状态的,即处于等待监听状态,等待对方的连接,一般称为服务器;另一种是处于主动连接状态,即主动发起连接的一方,一般称为客户端。
图中方块内为连接状态,有向线代表了状态的转换,有向线旁边的标准中,虚线上为发生的事件,虚线下面为采取的动作。
下面讨论建立连接和关闭连接的过程,在其中说明各状态的功能和转换方式。
•建立连接TCP建立连接采用三次握手方式,这个连接过程一般由一个TCP初始化而由另一个TCP应答,当然也可以由双方同时发起。
基本过程为:通信一方发送连接请求,另一方接收应答该请求并发送自己的连接请求,接收到对方的应答后握手完成。
TCP连接的初始状态是CLOSED,此时TCP控制块不存在。
此时如果采用被动打开,则应该创建传输控制块(Transmission Control Block, TCB)用来保存该连接需要的各种变量,然后进入LISTEN 状态,此时TCP等待客户端的连接,当接收到客户端的同步请求数据帧时(以下简称SYN),发送SYN和ACK信号,连接进入SYN RECEIVED(同步接收完成状态)状态,然后等待对方的应答信号,接收到应答信号后连接建立完毕,进入ESTABLISHED状态。
如果采用主动连接,在OPEN操作时,创建TCB并发送SYN数据帧,进入SYN SEND状态(SYN 发送状态),在接收到SYN,ACK数据帧后连接建立完毕。
图3-13是TCP典型连接的过程。
•关闭连接TCP的关闭过程是一个双向过程,即只有当通信双方都关闭连接时,连接才真正的关闭。
某一方关闭连接意味着它将不再发送数据,但是它仍然可以接收数据。
如果通信没有发生异常,都要使用正常的关闭连接过程,否则可能造成数据帧丢失等现象。
关闭连接有以下三种情况:1)本地主动关闭当本地调用CLOSE操作时,TCP发送控制域为FIN的数据帧,进入FIN-WAIT-1状态,此时TCP将不再接收来自高层协议的数据。
处于FIN-WAIT-1状态的TCP可以继续接收对方的数据并等待ACK标志,当接收到ACK后,TCP进入FIN-WAIT-2状态,TCP在这个状态里等待对方的FIN数据帧,当接收到FIN数据帧后,TCP应答ACK,然后等待超时时间后进入CLOSED状态,连接关闭。
2)接收到FIN数据帧如果在通信过程中,如果从网络中接收到FIN标志,TCP模块发送ACK并通知上层协议连接关闭,此时上层协议应调用CLOSE操作,关闭本地TCP连接。
3)双方同时关闭如果通信双方同时发送FIN启动关闭过程,则双方在接收到FIN数据帧后发送ACK,当接收到ACK后连接关闭。
图3-14所示为一个典型的关闭过程。
(2)TCP数据通信当连接建立完毕后,通信双方就可以通过交换数据段来传输数据。
因为TCP是建立在不可靠的IP协议上的,所以,TCP报文有可能发生错误或丢失。
在TCP中采用重传(Retransmission)来保证报文的无差错传输,由于使用了重新传输机制,所以可能接收到重复的报文,为了处理这种情况,TCP使用序列号和确认号检查数据。
序列号说明了当前数据块在数据流中的位置。
如果第一个数据块的序列号是0,并且有20个字节长,那么下一个数据块的序列号就应该是20。
确认号表示接收数据的总数。
如果初始的序列号是0,并且有10个字节的数据需要确认,应答中的确认号就应该是10。
因为TCP的数据传输是双向对称的,每一方对它自己的传输都保留一个序列号和一个确认号,并且每一方都对从对方节点接收来的序列号和确认号进行跟踪。
在TCP中,使用传输控制块(Transmission Control Block)来控制通信过程,该块保存了以下变量:•SEND.NEXT:下一个要发送的数据的序列号•RECV.NEXT:期望接收到的下一个数据的序列号•SEND.UNA:发送队列中还没有被确认的序列号•SEG.ACK:从对方接收的ACK(对方希望接收的下一个数据序列号)•SEG.SEQ:数据段的起始序列号•SEG.LEN:数据段中的数据数量(包括SYN和FIN,这两个也被认为是数据,占有序列号空间)•RECV.WND:接收窗口在发送数据时,发送方封装数据并增加SEND.NEXT,接收方接收到数据段后增加RECV.NEXT并给出应答ACK,发送方接收到应答后增加SEND.UNA。
以上变量增加值是发送或接收的数据长度。
在发送数据时,发送方在发送数据后会同时将数据放入重发队列,如果在超时时间内没有接收到ACK,则发送方将会从发送队列中重新发送数据,如果接收到应答,则将重发队列中的该部分数据删除。
接收到的ACK有效性判断使用如下不等式:SEND.UNA<SEG.ACK=<SEND.NEXT,此时重发队列中的小于等于SEG.ACK的数据都已经得到确认,因此应当从队列中删除。
在接收数据时要判断数据是否有效,判断不等式为:RECV.NEXT=<SEG.SEQ<RECV.NXT+RECV.WND或RECV.NEXT=<SEG.SEQ+SEG.LEN-1<RCV.NEXT+RECV.WND对数据有效性的判断保证了数据流的可靠传输。
在TCP中使用窗口进行流量控制。
在每次发送数据时都会发送一个窗口值(见上文),该值指示了发送方可以接收的数据长度。
如果接收到的数据长度超过窗口,那么超出的数据将被丢弃,这样将引起再次的重新传输,从而降低了通信效率。
如果窗口值为0时,则通知发送方暂停发送,但是即使此时,接收方也必须保证能够接收一个字节的数据,因为发送方在检测到接收方的窗口为0后将定时发送数据,以检查接收是否可以开始接收数据,而此时的接收方在接收到数据后也要发送ACK进行应答并设置当前的窗口值。