TCP与UDP --- 前端网络必知

285 阅读4分钟

network.png

OSI/RM模型与网络协议

众所周知,为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。

它将计算机网络体系结构通信协议划分为七层,自下而上依次为:

  1. 物理层(Physics Layer)
  2. 数据链路层(Data Link Layer)
  3. 网络层(Network Layer)
  4. 传输层(Transport Layer)
  5. 会话层(Session Layer)
  6. 表示层(Presentation Layer)
  7. 应用层(Application Layer)

其中:

TCP/IP(Transport Control Protocol/Internet Protocol)

为了实现不同网络之间的互连,美国国防部于1977年到1979年间制定了TCP/IP体系结构和协议。
TCP/IP是由一组具有专业用途的多个子协议组合而成的

这些子协议包括:

  • TCP
  • IP
  • UDP
  • ARP
  • ICMP

TCP

TCP的优点:

  1. 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

TCP的缺点:

  • 因为每次握手和挥手都要4次,所以传输慢,效率低,占用系统资源高
  • 每次建立连接保持时间短
  • 易被攻击 -- 因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击

由于TCP在传递数据之前,需要走一系列的复杂流程

  1. 先建连接,三次握手(实际是四次)-- 这一步就很费时了
  2. 在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间
  3. 要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。

UDP

UDP用户数据包协议 是User Datagram Protocol的简称,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议。

UDP协议TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。

UDP的优点:

  1. 比TCP稍安全
  2. UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制
  3. UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。

UDP的缺点:

  1. 数据传输不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择。

TCP与UDP的区别

UDP协议TCP协议相同点:

  1. 都属于传输层, 同属TCP/IP子协议

  2. 都用于处理数据包 UDP协议TCP协议不同点:

  3. 基于连接与无连接(发送数据之前不需要建立连接)

  4. TCP要求系统资源较多,UDP较少

  5. UDP程序结构较简单 

  6. 流模式(TCP)与数据报模式(UDP)

  7. TCP保证数据正确性,UDP可能丢包 

  8. TCP保证数据顺序,UDP不保证

  9. 有状态和无状态

应用场景

什么时候应该使用TCP?

当对网络通讯质量且数据准确度有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

在日常生活中,常见使用TCP协议的应用如下:

  • 浏览器 用的HTTP
  • FlashFXP 用的FTP
  • Outlook 用的POP、SMTP
  • Putty 用的Telnet、SSH QQ文件传输 ,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下:

什么时候应该使用UDP?

当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快(实时传输)

  • QQ语音
  • QQ视频
  • TFTP
  • 网络游戏
  • 网络直播

参考文献

  1. TCP和UDP的最完整的区别