应用得到的是字节流

应用把字节交给TCP,TCP再把它们放入报文段,经IP数据报传送。接收应用得到按次序恢复的字节流,不应依赖发送调用的边界恰好成为接收调用的边界。若应用需要区分一条请求与下一条请求,还要自己定义长度、分隔符或其他消息格式。

参考:[1]

序号与确认怎样配合

TCP使用序号标明字节所在位置,并通过确认信息说明已接收进度。丢失或出错的数据可以触发重新传送;重复到达与乱序到达也需要处理。这里的可靠性是传输服务的行为,并不意味着网络永不故障:连接仍可能中断,应用需要处理超时与无法完成的传输。

参考:[1]

接收能力与网络拥塞

接收窗口反映接收端还允许对方发送多少数据,帮助避免接收缓冲被压垮;拥塞控制则调整进入网络的数据量。两者限制可能同时作用,不能混为一个问题。RFC 5681说明慢启动、拥塞避免及相关恢复机制,后续实现还可能采用其他符合要求的算法。

参考:[1] [2]

连接不等于业务已完成

TCP端口帮助区分主机上的通信端点,连接状态协调建立、传输和关闭。即使一段数据已经得到传输层确认,也不能据此断言服务器已经完成付款、写入或其他业务操作。应用协议仍需给出自己的成功回复;加密、身份验证与消息含义也不是TCP基本字节流服务独自提供的能力。

参考:[1]