能否信任TCP?

能否信任TCP?

以TCP方式通过socket传输数据时。是否需要而外的逻辑校验每次传输的准确性?
   
本来我想以
try:
   sent = clientsock.send(bytes)           
   assert sent == len(bytes)
except :
   
方式确保每次传输的数据 均能顺利完成。
但看到 manual 里说 "this may be less than len(data) if the network is busy."


请问要确保传送完整。 需要而外的处理(比如hash,回传hash值,校验)吗?
的确可能。简单的我认为可以先传一个定长的(如4字节)的长度值,然后按长度来接收,不通过自动结束来判断。这样要可靠得多。校验应该无所谓,除非你还考虑到人有监听和篡改,可能要加上安全的校验。如果只是为了保证信息不丢,我想通过长度应该就够了吧。