最近在工作中涉及到使用一种4G 的DTU 模块与服务器后台通信。因在部分场景下需要在消息中传输文件(通过base64),因此考虑到以下两个问题:
1) TCP连接 是否保证多次send(发送)的数据与接收数据顺序一致?
2)TCP连接 调用一次send中发送数据,在数据比较大的情况下,是否分为多个tcp包发送?
为方便采用wireshark 分析TCP包,列出TCP协议字段含义如下:
16位源端口号:TCP 发端 端口号(标示发送方计算机上的应用程序收发端口)。
16位目的端口号:TCP 接收端端口号(标示接收方计算机上应用程序收发端口)
32位序号(sequence number):将整个一次TCP 通讯(从三次握手到四次挥手)中传输的发送方发送的数据作为一次流动的字节流,32位序号,它表示在发送的这个报文段第一个字节在整个字节流中所处的字节位置。在tcp中tcp用序号对每个字节进行计数(这个值与发送的帧数没有关系,而是与发送的数据字节数有关系)。
32位确认序号:一次TCP通讯中,发送该报文的发送方,确认收到的另一方发送过来的字节序+1(即所期望收到的下一个序号)。<