CN102238187B - 基于tcp/ip协议的通信协议的系统及其实现方法 - Google Patents
基于tcp/ip协议的通信协议的系统及其实现方法 Download PDFInfo
- Publication number
- CN102238187B CN102238187B CN201110209419.4A CN201110209419A CN102238187B CN 102238187 B CN102238187 B CN 102238187B CN 201110209419 A CN201110209419 A CN 201110209419A CN 102238187 B CN102238187 B CN 102238187B
- Authority
- CN
- China
- Prior art keywords
- protocol
- packet
- service
- type
- distributor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于TCP/IP协议的通信协议的系统及其实现方法。一种基于TCP/IP协议的通信协议的系统,其上层是应用层,下层是各种的网络协议族,通过分配器在不同协议栈或不同主机上的服务之间发送和接受数据包。通信协议的数据包的头包含Preamble、Services ID、Options三个主要部分。源服务在通信协议头中告诉分配器目标服务的协议栈类型、服务号码和IP地址,分配器填写域并检查数据大小,将数据包转发给目标服务,目标服务分析数据包的头来执行合适的操作。本发明提供不同协议栈之间的兼容性,以提供一套统一的API接口给应用层,通信协议支持单个主机内部不同服务之间的通信。
Description
技术领域
本发明属于计算机网络技术,涉及一种基于TCP/IP协议的通信协议的系统及其实现方法。
背景技术
现代网络中一般包含多个主机,也经常包括多个网络协议,需要它们同时工作。通信在不同主机间进行,但也经常在同一主机内部进行。对于应用层来说不方便的是如何掌控多种的协议原理以及数据包格式。在未来大规模网络中,多主机以及多种协议栈并存的情况下,不同协议栈或不同主机上的服务的兼容性显得尤为重要。
传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。UDP是同一层内另一个重要的传输协议,是OSI参考模型中一种无连接的面向数据包的传输层协议,提供面向事务的简单不可靠信息传送服务。IPv4是IP的第四版,构成现今互联网技术的基石的协议。IPv6是IETF设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。
发明内容
本发明针对现有技术中的不足,提供了一种实现不同协议栈之间的兼容性的跨协议平台的基于TCP/IP协议的通信协议的系统及其实现方法。
为了解决上述技术问题,本发明通过下述技术方案得以解决。
基于TCP/IP协议的通信协议的系统,建立在上层是应用层,下层是各种的网络协议族,通过分配器在不同协议栈或不同主机上的服务之间发送和接受数据包。
所述通信协议的数据包的头包含Preamble、Services ID、Options三个主要部分,其中Preamble长36字节,Services ID长40字节,Options采用类型-长度-数值格式。Services ID中的Destination Protocol type包括IPv4/UDP、IPv4/TCP、IPv6/UDP和IPv6/TCP。
其实现方法如下:
(1)源服务在通信协议头中告诉分配器目标服务的协议栈类型,服务号码和IP地址,Packet type域由源服务来选择或者使用默认值Non_blocking_with_ACK:
使用Non_blocking_xxx类型的Packet type域,源服务将数据包加入到分配器的哈希表中,然后继续执行其他操作;
使用Blocking_xx类型的Packet type域,源服务在发送出去数据包之后等待目标服务返回ACK或者REPLY,其中,REPLY包含ACK的功能,但还含有一个有用的负载返回给源服务;
使用xxx_with_ACK类型的Packet type域,源服务可以指定超时和重传次数。
(2)分配器填写通信协议头中没有指定的域为默认值,分配器检查数据大小以决定是否采用分片,然后,每一个数据包被赋予一个唯一的序列号用于ACK的目标;源主机上的分配器对数据包签字,目标主机的分配器对数据包做检验;然后,分配器将数据包转发给目标服务;
(3)目标服务接收到数据包后,首先检验magic number和version两个域确认包是否有效;然后目标服务分析数据包的头来执行合适的操作。
按照本发明的技术方案,在未来大规模网络中,多主机以及多种协议栈并存的情况下,本发明提供不同协议栈之间的兼容性,以提供一套统一的API接口给应用层,通信协议提供跨协议栈的兼容性,支持多个主机的服务间的通信,同时通信协议支持单个主机内部不同服务之间的通信,通信协议提供一套调用,让应用层可以发送和接受大数据包,通信协议通过16字节的校验码提供强化的校验能力。
附图说明
图1为本发明的程序实现示意图。
具体实施方式
下面通过具体实施方式对本发明作进一步详细描述:
如图1所示,一种基于TCP/IP协议的通信协议的系统,上层是应用层,下层是各种的网络协议族,通过分配器在不同协议栈或不同主机上的服务之间发送和接受数据包。
源服务在通信协议头中告诉分配器目标服务的协议栈类型,服务号码和IP地址。Packet type(封包类型)域可以由源服务来选择或者使用默认值Non_blocking_with_ACK(无阻塞带应答)。对于源服务来说,使用不同的Packettype(封包类型)有明显不同的后续操作。对于Non_blocking_xxx(非阻断XXX)这样的类型,源服务将数据包加入到分配器的哈希表中,然后可以继续执行其他操作。然而,对于Blocking_xx(阻断XX)这样的类型,源服务在发送出去数据包之后必须等待目标服务返回ACK(应答)或者REPLY(回复)。这里REPLY包含ACK的功能,但还含有一个有用的负载返回给源服务。另外对于xxx_with_ACK(XXX带应答)这样的类型,源服务可以指定超时和重传次数。一些控制flag(标志)在服务完全理解其机制的前提下可以被服务赋值,包括SourceFragment(源代码片段)和RESEND(再送)。否则的话,使用默认值更可靠。在有些情况下,源服务传送指定的消息给目标服务,如服务间的控制命令,这时Message code(消息代码)域被填写。
然后,分配器填写通信协议头中没有指定的域为默认值。分配器检查数据大小以决定是否采用分片。然后,每一个数据包被赋予一个唯一的序列号用于ACK的目标。分配器还需要记录特殊的地址到哈希表中,用于特别的原因如NAT(网络地址转换)等。然后源主机上的分配器对数据包签字,目标主机的分配器对数据包做检验。混淆和解混淆算法也由分配器完成.如果存在老版本的协议在使用,分配器还需要记录和分辨主机是否使用的老版本。完成以上任务后,分配器将数据包转发给目标服务。
目标服务接收到数据包后,首先检验magic number(幻数)和version(版本)两个域确认包是否有效。然后目标服务分析数据包的头来执行合适的操作。这包括重组分片,发送回ACK或REPLY等。
数据包在传输过程中可能有一个传输路径。明确的规则需要建立起来描述传输路径上节点的转发机制。第一个规则是如果分片已经在源服务上进行过了,就不能再节点上再次分片。
通信协议的数据包的头包含Preamble(前缀)、Services ID(服务ID)、Options(可选项)三个主要部分,其中Preamble长36字节,Services ID长40字节。
1、通信协议Preamble,长36字节
Magic number:8bits
这个数字用来确认该数据包是通信协议包。
Version:8bits
这是通信协议协议的版本号。
Header Length(头长度)::16bits
这是通信协议头的长度,接下来就指向负载的开头。注意通信协议头必须4字节对齐。这个数字的最小值为76,最大值有可由MAX_通信协议_HDR_LEN(最大通信协议长度)来定义。
Packet Size(数据包大小):32bits
这是通信协议数据包的大小,包含头和负载,以字节为单位。这是数值要一直根据所在数据包的大小来填写。注意在分片后,这个数值需要相应作出修改。
Packet Type(封包类型):16bits
这个类型用来表明服务间的通信模式。这个域可以被分为两部分,主类型和次类型。
Major types 4bits | Subtypes 12bits |
Major types(主类型):4-bits
代表该数据包的主类型。主类型包括数据包的传输方向,即Request(请求)代表从源服务到目标服务,Response代表从目标服务到源服务。现在用到2bits而另外2bits保留作扩展。
Request主类型下面包含的子类型有:
NON_BLOCKING_W_ACK0x01 /* 非阻塞发送,需要ACK*/
NON_BLOCKING_WO_ACK 0x02 /* 非阻塞发送,不需要ACK*/
BLOCKING_W_ACK 0x03 /* 阻塞发送,需要ACK*/
BLOCKING_W_REPLY 0x04 /* 阻塞发送,需要REPLY*/
Response主类型下面包含的子类型有:
ACK 0x01 /* 这是针对于***_W_ACK类型数据包的ACK*/
REPLY 0x02 /* 这是针对于***_W_REPLY类型数据包的REPLY*/
Message Code:16bits.
应用层使用这个域来传递特殊用处的编码。
Flags:32bits.
这是各种控制标志位。目前的标志位定义如下,目前用到最低两个比特位:
SourceFragmentation(来源碎片):
这个标志置位表示分片操作在源服务上进行。这意味着源服务给每个分片一个唯一的sequence number(序列号),然后目标服务可以根据sequence number对这些分片逐一的发送ACK包。如果该标志清零,传输路径上的节点可能会对包进行分片,但是每个分片的sequence number都只能和原始的包相同。这样目标服务只能先重组分片然后对原始的包发送一个ACK。
RESEND(再送):
这个标志置位表示这个数据包是一个RESEND包。这是当源服务不能收到ACK或者REPLY包直到超时,然后重发一次。源服务会重发这个包不超过RETRY_COUNT(重试计数)次数,这个次数由源服务制定。
Sequence Number:32bits
这个序列号码对于给定的源服务ID发送出的信息包是递增的,而不依赖于目标服务。这个号码用来让ACK包说明针对哪个发出的包。
Checksum(校验):128bits.
这是16字节的校验码。可以用MD5签字。
(2)Services ID,长40字节
Destination Protocol Type(目标协议类型):16bits
这个类型代表了通信协议下层的协议族中,目标服务选择使用哪类协议或协议组合。目前可取的种类包括:
1 | IPv4/UDP |
2 | IPv4/TCP |
3 | IPv6/UDP |
4 | IPv6/TCP |
其它扩展的协议类型可以在未来定义。
Destination Service Number(目标服务号码):16bits
这个数值用来中辨认目标服务。
Destination IP address(目标IP地址):128bits
这是IPv6的目标地址。如果使用IPv4,只有地址域的前4个字节使用,其它字节清零。
Source Protocol Type(源协议类型):16bits
源服务选择使用哪类协议或协议组合。
Source Service Number(源服务号码):16bits
这个数值用来中辨认源服务。
Source IP address(源IP地址):128bits
这是IPv6的源地址。
(3)Options(可选项),可变长度
这部分可以出现在数据包中,也可以不在。Options部分只用类型-长度-数值(TLV)格式。一些Options的类型定义如下:
Fragmemt option | 0x0001 |
其它options可以在未来扩展。
上述options的格式定义如下:
Fragmemt option(片段选项)
Fragmemt option type(片段选项类型):16bits
Fragmemt option类型号码
Fragmemt option length(片段选项长度):16bits
Fragmemt option的长度,单位字节。其中不包括type-length(类型-长度)这两个域。目前为16。
Packet number(包数):32bits
这个号码代表了分片之前的原始数据包。注意如果SourceFragmentation(源代码片段)标志置位,对于一个原始包的所有分片,sequence number不同而这个号码相同,都是和原始包一样。如果SourceFragmentation标志清零,这个号码总是和sequence number相同。
Total size(总大小):32bits
这个域是原始的(未分片前的)通信协议包的总大小,包括头和负载。注意这个域不应该在分片过程中作修改。
Fragment offset(片段偏移):32bits
这个偏移代表着相对于原始包老来说,这个分片包处在哪部分。这个域的单位是字节。
Flags:32bits
Flags用来控制或管理分片
总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。
Claims (3)
1.基于TCP/IP协议的通信协议的系统,其特征在于,该系统包括上层、下层和分配器,其中,上层是应用层,下层部署各种基于TCP/IP协议的网络协议族,分配器用于在不同网络协议族的协议栈或不同主机上的服务之间发送和接收数据包;该通信协议部署在该系统中,所述通信协议的数据包的头包含前缀Preamble、服务ID Services ID和可选项Options三个部分,其中前缀Preamble长36字节,服务ID Services ID长40字节,可选项Options采用类型-长度-数值格式;
其中,前缀Preamble部分包括:
幻数Magic number,用于确认数据包是通信协议包;
版本号Version,用于确认通信协议的版本号;
头长度Header Length,用来指示头长度;
数据包大小Packet Size,用来指示数据包大小;
封包类型Packet Type,用来指示服务间的通信模式。
2.根据权利要求1所述的基于TCP/IP协议的通信协议的系统,其特征在于:所述的服务ID Services ID中的目标协议类型Destination Protocol type包括IPv4/UDP、IPv4/TCP、IPv6/UDP和IPv6/TCP。
3.一种用于权利要求1所述的基于TCP/IP协议的通信协议的系统的实现方法,包括:
(1)源服务在通信协议的数据包的头中服务ID Services ID部分的目标协议类型Destination Protocol Type、目标服务号码Destination Service Number和目标IP地址Destination IP address来告知分配器目标服务的协议栈类型、服务号码和IP地址,PacketType域使用默认值无阻塞带应答Non_blocking_with_ACK或者由源服务来选择:
Packet Type域使用非阻断XXX类型时,源服务将数据包加入到分配器的哈希表中,然后继续执行其他操作;
Packet Type域使用阻断XXX类型时,源服务在发送出去数据包之后等待目标服务返回ACK或者REPLY,其中,REPLY包含ACK的功能,但还含有一个有用的负载返回给源服务;
Packet Type域使用XXX带应答类型时,源服务指定超时和重传次数;
(2)分配器填写通信协议的数据包的头的前缀Preamble、服务ID Services ID和可选项Options三个部分中其余没有指定的域为默认值,分配器检查数据大小以决定是否采用分片;然后,每一个数据包被赋予一个唯一的序列号用于ACK的目标;源主机上的分配器对数据包签字,目标主机的分配器对数据包做检验;然后,分配器将数据包转发给目标服务;
(3)目标服务接收到数据包后,首先检验Magic number和Version两个域确认包是否有效;然后目标服务分析数据包的头来执行操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110209419.4A CN102238187B (zh) | 2011-07-26 | 2011-07-26 | 基于tcp/ip协议的通信协议的系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110209419.4A CN102238187B (zh) | 2011-07-26 | 2011-07-26 | 基于tcp/ip协议的通信协议的系统及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102238187A CN102238187A (zh) | 2011-11-09 |
CN102238187B true CN102238187B (zh) | 2014-07-02 |
Family
ID=44888392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110209419.4A Expired - Fee Related CN102238187B (zh) | 2011-07-26 | 2011-07-26 | 基于tcp/ip协议的通信协议的系统及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102238187B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102957730B (zh) * | 2011-08-29 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 数据传输方法和系统 |
CN103401769A (zh) * | 2013-07-24 | 2013-11-20 | 佳都新太科技股份有限公司 | 一种通用网关服务框架的实现方法 |
WO2015096058A1 (zh) * | 2013-12-25 | 2015-07-02 | 华为技术有限公司 | 一种数据包处理方法和装置 |
CN107948307B (zh) * | 2017-12-12 | 2020-12-11 | 华东交通大学 | 一种基于车联网智能车载装置的安全通信方法 |
CN108494800A (zh) * | 2018-04-27 | 2018-09-04 | 广州西麦科技股份有限公司 | 一种数据包安全检测及处理方法、装置、p4交换机及介质 |
CN112243160A (zh) * | 2020-09-14 | 2021-01-19 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、终端设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101087296A (zh) * | 2006-06-08 | 2007-12-12 | 上海亿人通信终端有限公司 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045244A (zh) * | 2009-10-10 | 2011-05-04 | 中兴通讯股份有限公司 | Ipv4网络与新网互通的实现方法和系统 |
CN102055767A (zh) * | 2010-12-31 | 2011-05-11 | 杭州依赛通信有限公司 | 一种用于通信设备管理系统的多属性传输协议 |
-
2011
- 2011-07-26 CN CN201110209419.4A patent/CN102238187B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101087296A (zh) * | 2006-06-08 | 2007-12-12 | 上海亿人通信终端有限公司 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102238187A (zh) | 2011-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102238187B (zh) | 基于tcp/ip协议的通信协议的系统及其实现方法 | |
KR101417744B1 (ko) | 인터넷 프로토콜 버전6 기반 저전력 무선네트워크에서이동성 헤더 압축 방법 및 장치 | |
US9942781B2 (en) | Method for transmitting status report of PDCP layer in mobile telecommunications system and receiver of mobile telecommunications | |
US20190342808A1 (en) | Method and enodeb for forwarding downlink and uplink packets based on s1 handover | |
CN102056235B (zh) | 一种数据传输方法、设备和系统 | |
RU2008148124A (ru) | Способы и устройство для использования значений управления для управления обработкой связи | |
US10306700B2 (en) | Methods and apparatus to establish groupcast with retries service for wireless communications over bridged links | |
CN103079232A (zh) | 一种确定报文的最大容量的方法及装置 | |
US20140029493A1 (en) | Wireless Communication Interworking Function | |
CN100433714C (zh) | 一种ip分片报文传输处理方法 | |
CN103188716A (zh) | Rudp链路故障定位方法及装置 | |
EP2157727B1 (en) | Wireless Base Station Applying Echo-Message | |
WO2010121409A1 (zh) | 一种压缩数据包的传输方法及装置 | |
WO2014205819A1 (zh) | 一种建立链路的方法、节点及装置 | |
CN103944684B (zh) | 一种lte rlc am模式下am pdu分片的生成方法 | |
Nordmark et al. | Rfc 5533: Shim6: Level 3 multihoming shim protocol for ipv6 | |
EP3103279B1 (en) | Mtc device, serving node, and various methods for implementing an uplink stack reduction feature | |
US20150230121A1 (en) | Mtc device, serving node, and various methods for implementing a downlink stack reduction feature | |
CN102377829A (zh) | 基于hip的通信方法、系统及设备 | |
KR101506181B1 (ko) | 프록시 모바일 IPv6를 적용한 저전력 무선 네트워크에서센서 노드의 이동성 지원 방법 및 시스템 | |
KR20120113496A (ko) | 무선 메쉬 네트워크에서 1홉 링크간 전송 방법 및 이를 지원하는 메쉬 노드 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140702 Termination date: 20170726 |