vlambda博客
学习文章列表

确保可靠性的TCP协议【杂谈】

回首这几年,凡是做的好的东西背后都有【习惯】在支撑,凡是做的不好的东西背后都缺乏稳定【习惯】。习惯就是【系统】。

今天给大家简单聊一聊【确保可靠性的TCP协议】。
按层次分,TCP位于传输层,提供可靠的字节流服务。
所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
为了准确无误地将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)建立连接。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)--SYN(synchronize)和ACK(acknowledgement).
发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN / ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表 “握手” 结束。
若在握手过程中某个阶段莫名终断,TCP协议会再次以相同的顺序发送相同的数据包。
除了上次三次握手,TCP协议还有其他各种手段来保证通信的可靠性。

协议对比:
1、TCP
  • TCP 是面向连接的传输控制协议。

  • TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序。

  • TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。(对可靠性要求高的通信系统往往使用 TCP 传输数据。比如 HTTP 运用 TCP 进行数据的传输。


2、UDP
  • UDP 提供了无连接的数据报服务。

  • UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。

  • UDP 具有较好的实时性,工作效率较 TCP 协议高。

  • UDP 段结构比 TCP 的段结构简单,因此网络开销也小。


以下为历史文章链接:
【软件测试基础】




【互联网协议】



最后分享一个前端打工仔的博客链接,感兴趣的朋友可以收藏哦~

http://breathlessway.com/home