最近在做socket网络编程,使用的TCP流式套接字进行收发。
一直在思考一个问题,由于TCP协议的底层做了很多校验:包括传输层TCP首部中的检验和、网络层IP数据包头部检验和数据链路层mac帧的CRC校验,在传输层可不可以认为数据就是准确无误的接收呢?
在TCP基础之上,又在应用层加入自己的协议或者校验是否还有必要?
最近在做socket网络编程,使用的TCP流式套接字进行收发。
一直在思考一个问题,由于TCP协议的底层做了很多校验:包括传输层TCP首部中的检验和、网络层IP数据包头部检验和数据链路层mac帧的CRC校验,在传输层可不可以认为数据就是准确无误的接收呢?
在TCP基础之上,又在应用层加入自己的协议或者校验是否还有必要?
有必要。因为在接收端,数据层层解包和处理过程中,传输层(TCP层)完成了解包和检验并正确,但在后面的层(会话,表示,应用)数据处理过程中可能会出现问题,因此最好在用户应用层进行检验,同时也可以定义用户协议