TCP的协议特点(对于《Linux高性能服务器编程》的部分摘录以及自己的部分见解)

      最后更新:2022-02-09 17:29:40 手机定位技术交流文章

      一.TCP协议特点为面向连接、字节流和可靠传输

      面向连接:使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。

      字节流:发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系,这就是字节流的概念﹔应用程序对数据的发送和接收是没有边界限制的。TCP先将数据存放于发送缓冲区中,等待,等待发送数据的时候,发送缓冲区中等待发送的数据

      TCP为可靠传输机制:

      1.TCP采用了发送应答机制,即发送端每个TCP报文都必须收到收方的应答报文,才会认为TCP报文传输完成.

      2. TCP协议采用了超时重传机制,在发送发发送完TCP报文段之后 启动定时器,如果在规定时间内未收到应答的话,将会重新发送报文段

      3.TCP报文段最终是以IP数据报发送的,而IP数据报到达接收端可能会乱序,,重复,所以TCP协议还会对TCP报文段进行乱序重排,去重的操作

      TCP粘包

      什么是tcp粘包?拆包? 答:c向s发送2个数据包,那么可能会出现3种情况:1 正常,2 两个包一同发送,3 s接收到不完整的或多出一部分的数据包。

      原因是什么?答:1 c一次发送的数据大于套接字缓冲区,拆包,2 c一次发送数据小于套接字缓冲区大小,网卡将多次发送的数据一次发送到s, 3 c不及时读取 4 tcp报文长度大于分段长度。

      如何解决?答:c添加包首部,长度 !固定每次发送的报文长度,不够补0.! 约定好包的边界,添加首部尾部标识,或者每次发送完数据之后在接收端对发送端发送一个标志信息来代表发送成功,有这么一步之后再进行下一步的发送!

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

          热门文章

          文章分类