传输层TCP协议连接的建立和断开
什么是TCP呢?由三个单词组成的Transport Control Protocol,字面理解是传输控制协议,可以理解为比特同学要想在网络泳池里游泳,那么他必须学习传输层控制技能,并且要掌握相应的动作——协议,他才能在畅游世界网络这个超大型游泳池。TCP:一个传输层协议,提供Host-To-Host的可靠传输,支持全双工,是一个面向连接的协议。TCP工作在传输层,它的上层是应用层,应用就是人们常用的微信、抖音、王者荣耀等服务工作的协议。两台不同的设备使用微信聊天,发送语音,需要实现Host-To-Host的数据通信,那么就可以直接调用TCP协议进行。调用TCP通信时需要指定通信的端口,不同的端口对应不同应用,不同IP对应不同的主机,也就是不同的设备。这就涉及到网络地址——IP地址,工作在网络层,当然TCP层只负责把对应的IP地址和端口传给网络层即可,具体业务由网络层来实现。互联网层,即Network Layer,提供地址和地址间的通信,只关注地址到地址Address-To-Address间通信,具体设备间通信由数据链路层实现,数据链路层关注MAC地址间通信,具体的物理设备,传输介质由物理层负责。以上就是TCP/IP协议常用的层级分割,最终目的就是为Host-To-Host服务,实现应用到应用的通信服务。什么是连接和会话呢?连接事需要通信双方相互配合来实现的,是双方达成的一种即时的状态约定,保证通信双方都在线,都有能力为接下来的数据传输做出尽快的响应,我们称之为连接。连接是网络行为状态的记录,既然连接需要双方共同努力,那么就需要双方都有一个对象来记忆当前传输的数据类型,对方的端口、已经传输了多少,效率怎么样等等一些关注点。那么与之相关联的另一个名词会话(Session),是什么意思呢,会话是应用的行为。大家每次用微信聊天时都会有一个窗口,用来发送信息,你来我往,这个窗口中会有很多条信息,我们称之为会话,当我们在会话进行中,连接一定是在通信状态的。聊一会,累了,退出微信了,但是一般我们不会删除我们的会话内容,这时会话还在,但是连接已经中断。双工/单工问题想想自己理解的是什么?单工:任何时间,数据只能单向发送,单工至少需要一条线路半全双工:某一时候可以双向发送数据,至少需要一条线路全双工:任何时刻都可以双向发送数据,大于一条线路这里线路不一定真实存在物理线路,可能采用模拟的形式实现TCP是一个全双工协议,数据任何时刻都可以双向发送,这说明服务器和客户端可以根据需要选择任意时刻发送和接收信息,所以呢都可以被称为主机(Host)可靠性的定义TCP可以提供可靠性,那么可靠性具体的实现方式是什么呢?可靠性指数据无损传输。发送主机按照顺序发送数据,数据通过网络传输,收不同网络条件限制,数据不会按照发送时的顺序到达接收方,这时我们就需要一种算法来保证接收方可以还原出发送方的顺序。这里还有一个概念叫多播,发送方同时发送给多个接收方信息,如果接收方中有一个接收到了这条信息,我们的可靠性就必须保证其他接收方也必须接收到相同的信息,这里我们不讨论多播。TCP的握手和挥手TCP是一个面向连接的连接的协议,握手是建立连接的过程,挥手是断开连接的过程。TCP的基本操作以上三种操作以后,另一方必须立即给发起方返回一个ACK(Ackknowledgement),这是TCP保证可靠性的要求。如果一方不回复发送方ACK,发送方则认为接收方没有收到信息,会重新发送。建立连接的过程-三次握手三次握手的形成和TCP要求每次发送方发送信息以后,接收方必须返回ACK确认有直接的关系上图描述了TCP建立连接的过程,分为6步:TCP建立连接的过程如上,那么为什么是三次呢?第二步服务端做准备,因为是首次收到发送数据请求,无需处理,可以立刻进入数据交互状态,所以可以立刻发送给客户端SYN,告诉客户端,我已准备好,所以第三步和第四步可以合并为一次握手——ACK-SYN,然后客户端回应ACK,连接建立完成以上就是三次握手了具体在数据交互过程,ACK和SYN等需要用标识位来标记,在实际应用中,我们一般使用1来表示开启,0表示关闭。那么四次挥手为什么是四次呢,主要是因为,挥手时服务端收到FIN以后,不能马上回复FIN,因为自身还有任务没有处理完,所以上面所说的6步中,第3、4步就不能一起回复,只能先回复ACK,等自身任务处理完毕,才能告诉客户端,我已经准备好,可以关闭连接,这样就需要4次数据交互,如下图:

如何使用TCP向远端SERVER传输数据
如何使用TCP向远端SERVER传输数据 (发送与接收)
1. 如何使用TCP向远端SERVER传输数据
先要建立一个TCP连接.模块作为CLIENT向远程的SERVER发起一个TCP连接,要成功
建立连接需要SERVER端为连接到INTERNET的一台PC,而且该PC的IP地址是公网的IP地址
(可以用拨号的方式获得,如在PC局域网内部则无法建立连接),然后该PC运行我们的
SERVER软件,这时就可以在模块端用AT命令与SERVER建立TCP连接(AT+CIPSTART=
"TCP","SERVER的IP地址","SERVER的端口号"),连接成功后会返回CONNECT
OK.然后就可以用AT+CIPSEND发送数据到SERVER,若SERVER有数据,模块自动通过
串口接收.要关闭TCP连接可用AT+CIPCLOSE命令.
2. 如何使用UDP向远端SERVER传输数据
先要注册一个UDP端口(AT+CIPSTART="UDP","SERVER的IP地址","SERVER
的端口号"),成功后返回CONNECT OK.然后用AT+CIPSEND发送UDP包到SERVER,
若SERVER有数据,模块自动接收,从串口送出.
3. 如何发送数据
要发送数据必须先要建立TCP连接或注册一个UDP连接.有3种方式发送数据.可变长
度的数据发送可以用AT+CIPSEND命令,返回"$amp;>amp;$quot;后输入发送的数据,ctrl+z(0x1a)启动
发送.固定长度的数据发送用AT+CIPSEND=LENGTH命令,返回"> "后输入发送的数据,
当输入的数据长度等于LENGTH的时候自动发送,不需结束符.还有一种自动发送方式,先
用AT+CIPATS=,命令设定自动发送的时间,然后用AT+CIPSEND返回"$amp;>amp;$quot;
输入要发送的数据,等定时到了之后自动发送输入的数据.发送完成之后返回SEND OK.
此时处于命令态,若有数据发送再重复以上的步骤就可以了.
注意:每次发送的数据长度应小于1024bytes.
4. 如何接收数据
接收数据为自动接收,若有远端数据则自动接收.可以用AT+CIPHEAD=1在接收的数
据前面自动加上标识.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
4
5. 如何使用SIM100TCP的SERVER功能
模块可以配置为TCPSERVER,接收来自远端的TCP数据.具体的操作如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="TCP","PORT" (设定侦听的TCP的端口号)
AT+CIPSERVER (启动SERVER功能,成功后返回SERVER OK,这时候已经启动了SERVER
功能,开始侦听PORT)
AT+CIFSR (获得SERVER的IP地址)
或者:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和密
码皆为172,连接速率为9600)
AT+CLPORT="TCP","PORT"(设定侦听的TCP端口号)
AT+CIPSERVER(启动SERVER功能,成功后返回CONNECT 9600 和 SERVER OK,这时
候已经启动了SERVER功能,开始侦听PORT)
AT+CIFSR (获得SERVER的IP地址)
可以用SMS通知远端模块本SERVER的IP地址和端口号,以便远端可以与之连接,收发
数据.
这时远端的模块就可以与本SERVER建立连接,收发数据了.
如有CLIENT连接到SERVER,SERVER端会显示 REMOTE CLIENT的IP地址和端口号.
这时候SERVER就可以接收来自REMOTE CLIENT的TCP数据包(不含TCP头)了.
注意:目前TCP SERVER不能同时支持多个TCP连接.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
5
6. 如何使用UDP,接收来自远端的数据
可以使用SIM100TCP的UDP功能,接收来自远端的UDP数据.具体过程如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="UDP","端口号"(设置UDP端口号)
AT+CSTT (启动TCP任务,成功后返回OK)
AT+CIICR (激活场景,成功后返回OK)
AT+CIFSR (获得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP
连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功
后返回CONNECT OK)
或者
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名
和密码皆为172,连接速率为9600)
AT+CLPORT="UDP","PORT"(设定UDP端口号)
AT+CSTT (启动TCP任务)
AT+CIICR (激活场景,成功后返回CONNECT 9600和OK)
AT+CIFSR (获得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP
连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功
后返回CONNECT OK)
此时就模块就可以接收到远端的UDP包.可以用AT+CIPSRIP=1在收到的UDP包的前面
加上标识和发送方的IP地址和端口号.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
6
7. 如何使用DNS功能
利用SIM100TCP的DNS可直接连接到一个域名,或者可以用DNS解析域名获得IP地址.具体
步骤如下:
直接连接到一个域名
1:先配置DNS
AT+CDNSCFG="211.136.18.171" (以上海为例)
2:选择域名还是IP地址
AT+CDNSORIP=1(选择域名)
3:建立连接
AT+CIPSTART="TCP","", "80" (连接到SERVER)
4:发送数据
AT+CIPSEND返回"$amp;>amp;$quot;后开始发送数据,ctrl+z启动发送.
解析域名获得IP地址
1:先激活一个移动场景
AT+CSTT
AT+CIICR
AT+CIFSR
2:配置DNS
AT+CDNSCFG="211.136.18.171" (以上海为例)
3:解析域名,获得IP地址
AT+CDNSGIP=""
返回该域名的IP地址
8. 如何检测是否在线,断线后有什么提示
可以用AT+CIPSTATUS查询TCP所处的状态,具体状态请参考AT命令集,若处于连接
状态则返回CONNECTOK.断线后会主动返回CLOSE信息,同时TCP状态为IP CLOSE.
9. 如何区分接收的数据是AT命令的响应还是来自远端
设定AT+CIPHEAD=1,这样来自SERVER的数据前面就会自动加上一个标志,其格式
为:+IPD(datalength),+IPD为标识,datalength为来自SERVER端数据的长度.这样就可以
区分是来自SERVER的数据还是AT命令的相应.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
7
10. 如何使用SIM100TCP建立点对点的TCP连接,传输数据
用GPRS方式的具体步骤为:
第一台:
AT+CLPORT="TCP","3030"
AT+CIPSERVER (启动SERVER功能,开始侦听3030端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","3000"(设置本地TCP端口)
第二台:
AT+CLPORT="TCP","2020"
AT+CIPSERVER (启动SERVER功能,开始侦听2020端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","2000"(设置本地TCP端口)
第一台:
AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS
得到)
已经建立连接
第二台:
AT+CIPSTART="TCP","REMOTE IP ADDR","3030"
已经建立连接
之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送)
也可以用CSD方式建立,具体操作如下:
第一台:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和
密码皆为172,连接速率为9600)
AT+CLPORT="TCP","3030"
AT+CIPSERVER (启动SERVER功能,开始侦听3030端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","3000"
第二台:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和
密码皆为172,连接速率为9600)
AT+CLPORT="TCP","2020"
AT+CIPSERVER (启动SERVER功能,开始侦听2020端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","2000"
SIMCOM Application Note for SIM100 TCP/IP AT Commands
8
第一台:
AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS
得到)
已经建立连接
第二台:
AT+CIPSTART="TCP","REMOTE IP ADDR","3030"
已经建立连接
之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送)
SIMCOM Application Note for SIM100 TCP/IP AT Commands
9
11. 如何使用SIM100TCP实现多个模块之间的互相通信
目前SIM100TCP不支持多个TCP同时连接,但是可以用UDP方式来实现.可以用模块启
动UDP功能,这样模快就可以接收来自远端的UDP包,可以通过收到的UDP包获取发送方的
IP地址和端口号,然后本模块就可以作出应答,回应一个UDP包,实现相互的通讯.下面是
一个简单的例子:
假设A,B,C三个模块要相互通信,可以用以下的方式实现(以GPRS方式为例)
1:A,B,C分别初始化如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="UDP","端口号"(设置UDP端口号)
AT+CSTT (启动TCP任务,成功后返回OK)
AT+CIICR (激活场景,成功后返回OK)
AT+CIFSR (获得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP
连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功后返回
CONNECT OK)
2:若A要向B发送数据,只要这样就可以了:
AT+CIPCLOSE (注销当前UDP连接)
AT+CIPSTART="UDP","B的IP地址","B的端口号"(注册新的UDP连接)
(成功后会返回CONNECTOK和OK)
AT+CIPSEND (发送数据)
若C有数据发给A,则A自动接收到,同时可以获得C的IP地址和端口号,这样A就可以
发UDP包给C了,具体过程跟上面类似.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
10
12. TCP连接出错后应该如何处理
若在建立TCP连接的过程中出现错误或者SERVER断线,则先用AT+CIPCLOSE关闭
TCP连接(本地IP地址不变),然后再重新建立连接.若其他时候可以用AT+CIPSHUT关闭
PDP Context(本地IP地址会改变),然后重新建立连接.
13. 如何建立一个点对点的CSD连接
首先要确保SIM卡已开通CSD业务,直接呼叫对方号码(数据呼叫,非语音呼叫),对
方用ATA应答,然后会返回CONNECT 9600,这时候双方进入完全的透明数据传输状态,双
方都可以收发数据,发+++后返回命令态(注意+++的前后0.5秒内必须无数据传输才能返回
命令态),ATO可返回数据态.ATH可结束本次CSD连接.

怎么使用TCP向远端SERVER传输数据
如何使用TCP向远端SERVER传输数据 (发送与接收) 1. 如何使用TCP向远端SERVER传输数据先要建立一个TCP连接.模块作为CLIENT向远程的SERVER发起一个TCP连接,要成功建立连接需要SERVER端为连接到INTERNET的一台PC,而且该PC的IP地址是公网的IP地址(可以用拨号的方式获得,如在PC局域网内部则无法建立连接),然后该PC运行我们的SERVER软件,这时就可以在模块端用AT命令与SERVER建立TCP连接(AT+CIPSTART="TCP","SERVER的IP地址","SERVER的端口号"),连接成功后会返回CONNECTOK.然后就可以用AT+CIPSEND发送数据到SERVER,若SERVER有数据,模块自动通过串口接收.要关闭TCP连接可用AT+CIPCLOSE命令.2. 如何使用UDP向远端SERVER传输数据先要注册一个UDP端口(AT+CIPSTART="UDP","SERVER的IP地址","SERVER的端口号"),成功后返回CONNECT OK.然后用AT+CIPSEND发送UDP包到SERVER,若SERVER有数据,模块自动接收,从串口送出.3. 如何发送数据要发送数据必须先要建立TCP连接或注册一个UDP连接.有3种方式发送数据.可变长度的数据发送可以用AT+CIPSEND命令,返回"$amp;>amp;$quot;后输入发送的数据,ctrl+z(0x1a)启动发送.固定长度的数据发送用AT+CIPSEND=LENGTH命令,返回"> "后输入发送的数据,当输入的数据长度等于LENGTH的时候自动发送,不需结束符.还有一种自动发送方式,先用AT+CIPATS=,命令设定自动发送的时间,然后用AT+CIPSEND返回"$amp;>amp;$quot;输入要发送的数据,等定时到了之后自动发送输入的数据.发送完成之后返回SEND OK.此时处于命令态,若有数据发送再重复以上的步骤就可以了.注意:每次发送的数据长度应小于1024bytes.4. 如何接收数据接收数据为自动接收,若有远端数据则自动接收.可以用AT+CIPHEAD=1在接收的数据前面自动加上标识.SIMCOM Application Note for SIM100 TCP/IP AT Commands45. 如何使用SIM100TCP的SERVER功能模块可以配置为TCPSERVER,接收来自远端的TCP数据.具体的操作如下:AT+CIPCSGP=1,"cmnet"(GPRS方式)AT+CLPORT="TCP","PORT" (设定侦听的TCP的端口号)AT+CIPSERVER (启动SERVER功能,成功后返回SERVER OK,这时候已经启动了SERVER功能,开始侦听PORT)AT+CIFSR (获得SERVER的IP地址)或者:AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和密码皆为172,连接速率为9600)AT+CLPORT="TCP","PORT"(设定侦听的TCP端口号)AT+CIPSERVER(启动SERVER功能,成功后返回CONNECT 9600 和 SERVER OK,这时候已经启动了SERVER功能,开始侦听PORT)AT+CIFSR (获得SERVER的IP地址)可以用SMS通知远端模块本SERVER的IP地址和端口号,以便远端可以与之连接,收发数据.这时远端的模块就可以与本SERVER建立连接,收发数据了.如有CLIENT连接到SERVER,SERVER端会显示 REMOTE CLIENT的IP地址和端口号.这时候SERVER就可以接收来自REMOTE CLIENT的TCP数据包(不含TCP头)了.注意:目前TCP SERVER不能同时支持多个TCP连接.SIMCOM Application Note for SIM100 TCP/IP AT Commands56. 如何使用UDP,接收来自远端的数据可以使用SIM100TCP的UDP功能,接收来自远端的UDP数据.具体过程如下:AT+CIPCSGP=1,"cmnet"(GPRS方式)AT+CLPORT="UDP","端口号"(设置UDP端口号)AT+CSTT (启动TCP任务,成功后返回OK)AT+CIICR (激活场景,成功后返回OK)AT+CIFSR (获得本地IP地址)AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功后返回CONNECT OK)或者AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和密码皆为172,连接速率为9600)AT+CLPORT="UDP","PORT"(设定UDP端口号)AT+CSTT (启动TCP任务)AT+CIICR (激活场景,成功后返回CONNECT 9600和OK)AT+CIFSR (获得本地IP地址)AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功后返回CONNECT OK)此时就模块就可以接收到远端的UDP包.可以用AT+CIPSRIP=1在收到的UDP包的前面加上标识和发送方的IP地址和端口号.SIMCOM Application Note for SIM100 TCP/IP AT Commands67. 如何使用DNS功能利用SIM100TCP的DNS可直接连接到一个域名,或者可以用DNS解析域名获得IP地址.具体步骤如下:直接连接到一个域名1:先配置DNSAT+CDNSCFG="211.136.18.171" (以上海为例)2:选择域名还是IP地址AT+CDNSORIP=1(选择域名)3:建立连接AT+CIPSTART="TCP","", "80" (连接到SERVER)4:发送数据AT+CIPSEND返回"$amp;>amp;$quot;后开始发送数据,ctrl+z启动发送.解析域名获得IP地址1:先激活一个移动场景AT+CSTTAT+CIICRAT+CIFSR2:配置DNSAT+CDNSCFG="211.136.18.171" (以上海为例)3:解析域名,获得IP地址AT+CDNSGIP=""返回该域名的IP地址8. 如何检测是否在线,断线后有什么提示可以用AT+CIPSTATUS查询TCP所处的状态,具体状态请参考AT命令集,若处于连接状态则返回CONNECTOK.断线后会主动返回CLOSE信息,同时TCP状态为IP CLOSE.9. 如何区分接收的数据是AT命令的响应还是来自远端设定AT+CIPHEAD=1,这样来自SERVER的数据前面就会自动加上一个标志,其格式为:+IPD(datalength),+IPD为标识,datalength为来自SERVER端数据的长度.这样就可以区分是来自SERVER的数据还是AT命令的相应.SIMCOM Application Note for SIM100 TCP/IP AT Commands710. 如何使用SIM100TCP建立点对点的TCP连接,传输数据用GPRS方式的具体步骤为:第一台:AT+CLPORT="TCP","3030"AT+CIPSERVER (启动SERVER功能,开始侦听3030端口)AT+CIFSR(获取本地IP地址)AT+CLPORT="TCP","3000"(设置本地TCP端口)第二台:AT+CLPORT="TCP","2020"AT+CIPSERVER (启动SERVER功能,开始侦听2020端口)AT+CIFSR(获取本地IP地址)AT+CLPORT="TCP","2000"(设置本地TCP端口)第一台:AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS得到)已经建立连接第二台:AT+CIPSTART="TCP","REMOTE IP ADDR","3030"已经建立连接之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送)也可以用CSD方式建立,具体操作如下:第一台:AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和密码皆为172,连接速率为9600)AT+CLPORT="TCP","3030"AT+CIPSERVER (启动SERVER功能,开始侦听3030端口)AT+CIFSR(获取本地IP地址)AT+CLPORT="TCP","3000"第二台:AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和密码皆为172,连接速率为9600)AT+CLPORT="TCP","2020"AT+CIPSERVER (启动SERVER功能,开始侦听2020端口)AT+CIFSR(获取本地IP地址)AT+CLPORT="TCP","2000"SIMCOM Application Note for SIM100 TCP/IP AT Commands8第一台:AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS得到)已经建立连接第二台:AT+CIPSTART="TCP","REMOTE IP ADDR","3030"已经建立连接之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送)SIMCOM Application Note for SIM100 TCP/IP AT Commands911. 如何使用SIM100TCP实现多个模块之间的互相通信目前SIM100TCP不支持多个TCP同时连接,但是可以用UDP方式来实现.可以用模块启动UDP功能,这样模快就可以接收来自远端的UDP包,可以通过收到的UDP包获取发送方的IP地址和端口号,然后本模块就可以作出应答,回应一个UDP包,实现相互的通讯.下面是一个简单的例子:假设A,B,C三个模块要相互通信,可以用以下的方式实现(以GPRS方式为例)1:A,B,C分别初始化如下:AT+CIPCSGP=1,"cmnet"(GPRS方式)AT+CLPORT="UDP","端口号"(设置UDP端口号)AT+CSTT (启动TCP任务,成功后返回OK)AT+CIICR (激活场景,成功后返回OK)AT+CIFSR (获得本地IP地址)AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功后返回CONNECT OK)2:若A要向B发送数据,只要这样就可以了:AT+CIPCLOSE (注销当前UDP连接)AT+CIPSTART="UDP","B的IP地址","B的端口号"(注册新的UDP连接)(成功后会返回CONNECTOK和OK)AT+CIPSEND (发送数据)若C有数据发给A,则A自动接收到,同时可以获得C的IP地址和端口号,这样A就可以发UDP包给C了,具体过程跟上面类似.SIMCOM Application Note for SIM100 TCP/IP AT Commands1012. TCP连接出错后应该如何处理若在建立TCP连接的过程中出现错误或者SERVER断线,则先用AT+CIPCLOSE关闭TCP连接(本地IP地址不变),然后再重新建立连接.若其他时候可以用AT+CIPSHUT关闭PDP Context(本地IP地址会改变),然后重新建立连接.13. 如何建立一个点对点的CSD连接首先要确保SIM卡已开通CSD业务,直接呼叫对方号码(数据呼叫,非语音呼叫),对方用ATA应答,然后会返回CONNECT 9600,这时候双方进入完全的透明数据传输状态,双方都可以收发数据,发+++后返回命令态(注意+++的前后0.5秒内必须无数据传输才能返回 命令态),ATO可返回数据态.ATH可结束本次CSD连接.

TCP/IP协议的一些基础知识?
相信大家在学习互联网网页开发的时候应该接触过关于网络协议的一些知识点吧。今天IT培训http://www.kmbdqn.cn/就来简单了解一下,关于TCP/IP协议的一些基础知识。1.TCP/IP的具体含义从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP协议。他们与TCP或IP的关系紧密,是互联网必不可少的组成部分。TCP/IP一词泛指这些协议,因此,有时也称TCP/IP为网际协议群。互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。2.数据包包、帧、数据包、段、消息以上五个术语都用来表述数据的单位,大致区分如下:包可以说是全能性术语;帧用于表示数据链路层中包的单位;数据包是IP和UDP等网络层以上的分层中包的单位;段则表示TCP数据流中的信息;消息是指应用协议中数据的单位。每个分层中,都会对所发送的数据附加一个部,在这个部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。3.数据处理流程①应用程序处理先应用程序会进行编码处理,这些编码相当于OSI的表示层功能;编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,相当于OSI的会话层功能。②TCP模块的处理TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现这一功能,需要在应用层数据的前端附加一个TCP部。③IP模块的处理IP将TCP传过来的TCP部和TCP数据合起来当做自己的数据,并在TCP部的前端加上自己的IP部。IP包生成后,参考路由控制表决定接受此IP包的路由或主机。④网络接口(以太网驱动)的处理从IP传过来的IP包对于以太网来说就是数据。给这些数据附加上以太网部并进行发送处理,生成的以太网数据包将通过物理层传输给接收端。

TCP建立连接时,(1)发送方第一次发送数据到收到对方确认的RTT样本值为4s,试计算超时重传时间?
数据传输举例 TCP数据传输发送方首先发送第一个包含序列号为1(可变化)和1460字节数据的TCP报文段给接收方。接收方以一个没有数据的TCP报文段来回复(只含报头)...

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/45619.html。