TCP不仅提供错误检查,如果您想替换它,需要实现很多东西。以下是一些无特定顺序的想法:
1. 标准化
您编写了自己的传输协议。恭喜!但由于只有您一个人在使用,所以只能和自己玩耍。而TCP已经存在并在任何平台上得到了充分测试。它受防火墙、代理、路由器和网络中可能遇到的其他所有内容的支持。
2. 拥塞控制
这里所说的“流量控制”(见下一条)是指拥塞控制,它会在网络拥塞时对TCP流进行限制。但是你是个自私的人(没关系!),所以你会问为什么要关心拥塞控制。那么,你大部分网络使用的瓶颈是你和服务提供商之间的链接。你的服务提供商通常会有充足的资源和网络工程师。这些人知道如何保护网络不被过度使用并避免热点问题。因此,TCP的拥塞控制实际上是最大程度地保护了你和你的应用程序,确保单个应用程序不能占用整个连接。它有助于确保你不会做出愚蠢的事情,比如只因为你的PC到路由器的链接支持1Gbps就发送价值1Gbps的流量到50Mbps的连接中。
3. 流量控制
流量控制并非拥塞控制。简而言之,流量控制是在您无法处理传入信息时告诉对方停止发送。想象一下移动电话试图从附近的HTTP服务器加载一个重的网页。服务器可以在短时间内将整个页面倾泻到网络上,而手机处理它需要更长的时间。在这种情况下,瓶颈不是网络,而是其中的某个设备。您的TCP替代方案也必须解决此问题。
4. 按顺序交付
除了错误检测外,TCP保证数据按正确顺序到达。这与错误检测不同,它是一项额外的功能。
5. 安全性
TCP三次握手以及现代操作系统生成初始序列号的方式几乎保证了双方对方的IP地址是真实的,而不是伪造的。这并不总是这样。当初始序列号容易预测时,存在
这些攻击。
此外,实现TCP的所有功能很难,而且复杂性会导致错误。许多TCP实现已知包含各种漏洞,例如缓冲区溢出,其中一些漏洞具有严重的安全影响。希望现在已经找到并修复了所有这些问题。新协议和新实现总是存在引入新安全漏洞的风险。
6. 性能
网络卡和现代操作系统已经很好地承担了管理TCP的负载。你想使用自己的序列号和错误检测?你必须在用户空间中自己实现它们(并承受性能损失,特别是如果你的应用程序是用像Java这样的语言编写的),或者准备编写内核和驱动程序补丁。
此外,现有的TCP实现已经被整整一代工程师审查和优化过了。要创建一些像它们一样精细的东西将非常具有挑战性。