TCP 的长处:牢靠,稳固 TCP 的牢靠体现在 TCP 在传递数据之前,会有三次握手来建设连贯,而且在数据传递时,有确认、窗口、重传、拥塞管制机制,在数据传完后,还会断开连接用来节约系统资源。TCP 的毛病:慢,效率低,占用系统资源高,易被攻打 TCP 在传递数据之前,要先建连贯,这会耗费工夫,而且在数据传递时,确认机制、重传机制、拥塞管制机制等都会耗费大量的工夫,而且要在每台设施上保护所有的传输连贯,事实上,每个连贯都会占用零碎的 CPU、内存等硬件资源。而且,因为 TCP 有确认机制、三次握手机制,这些也导致 TCP 容易被人利用,实现 DOS、DDOS、CC 等攻打。
UDP 的长处:快,比 TCP 稍平安 UDP 没有 TCP 的握手、确认、窗口、重传、拥塞管制等机制,UDP 是一个无状态的传输协定,所以它在传递数据时十分快。没有 TCP 的这些机制,UDP 较 TCP 被攻击者利用的破绽就要少一些。但 UDP 也是无奈防止攻打的,比方:UDP Flood 攻打…… UDP 的毛病:不牢靠,不稳固 因为 UDP 没有 TCP 那些牢靠的机制,在数据传递时,如果网络品质不好,就会很容易丢包。基于下面的优缺点,那么:什么时候应该应用 TCP:当对网络通讯品质有要求的时候,比方:整个数据要准确无误的传递给对方,这往往用于一些要求牢靠的利用,比方 HTTP、HTTPS、FTP 等传输文件的协定,POP、SMTP 等邮件传输的协定。在日常生活中,常见应用 TCP 协定的利用如下:浏览器,用的 HTTP FlashFXP,用的 FTP Outlook,用的 POP、SMTP Putty,用的 Telnet、SSH QQ 文件传输 ………… 什么时候应该应用 UDP:当对网络通讯品质要求不高的时候,要求网络通讯速度能尽量的快,这时就能够应用 UDP。比方,日常生活中,常见应用 UDP 协定的利用如下:QQ 语音 QQ 视频 TFTP ……
有些利用场景对可靠性要求不高会用到 UPD,比方长视频,要求速率
小结 TCP 与 UDP 的区别:
1. 基于连贯与无连贯;
2. 对系统资源的要求(TCP 较多,UDP 少);
3.UDP 程序结构较简略;
4. 流模式与数据报模式;
5.TCP 保证数据正确性,UDP 可能丢包,TCP 保证数据程序,UDP 不保障。
tcp 协定和 udp 协定的差异
TCP UDP
是否连贯 面向连贯 面向非连贯
传输可靠性 牢靠 不牢靠
利用场合 大量数据 传输大量数据
速度 慢 快
TCP 与 UDP 区别总结:
1、TCP 面向连贯(如打电话要先拨号建设连贯);UDP 是无连贯的,即发送数据之前不须要建设连贯
2、TCP 提供牢靠的服务。也就是说,通过 TCP 连贯传送的数据,无差错,不失落,不反复,且按序达到;UDP 尽最大致力交付,即不保障牢靠交付
3、TCP 面向字节流,实际上是 TCP 把数据看成一连串无构造的字节流;UDP 是面向报文的
UDP 没有拥塞管制,因而网络呈现拥塞不会使源主机的发送速率升高(对实时利用很有用,如 IP 电话,实时视频会议等)
4、每一条 TCP 连贯只能是点到点的;UDP 反对一对一,一对多,多对一和多对多的交互通信
5、TCP 首部开销 20 字节;UDP 的首部开销小,只有 8 个字节
6、TCP 的逻辑通信信道是全双工的牢靠信道,UDP 则是不牢靠信道
TCP UDP
TCP 与 UDP 根本区别
1. 基于连贯与无连贯
2.TCP 要求系统资源较多,UDP 较少;
3.UDP 程序结构较简略
4. 流模式(TCP)与数据报模式(UDP);
5.TCP 保证数据正确性,UDP 可能丢包
6.TCP 保证数据程序,UDP 不保障
UDP 利用场景:
1. 面向数据报形式
2. 网络数据大多为短消息
3. 领有大量 Client
4. 对数据安全性无特殊要求
5. 网络累赘十分重,但对响应速度要求高
具体编程时的区别
1.socket() 的参数不同
2.UDP Server 不须要调用 listen 和 accept
3.UDP 收发数据用 sendto/recvfrom 函数
4.TCP:地址信息在 connect/accept 时确定
5.UDP:在 sendto/recvfrom 函数中每次均 需指定地址信息
6.UDP:shutdown 函数有效
编程区别
通常咱们在说到网络编程时默认是指 TCP 编程,即用后面提到的 socket 函数创立一个 socket 用于 TCP 通信,函数参数咱们通常填为 SOCK_STREAM。即 socket(PF_INET, SOCK_STREAM, 0),这示意建设一个 socket 用于流式网络通讯。
SOCK_STREAM 这种的特点是面向连贯的,即每次收发数据之前必须通过 connect 建设连贯,也是双向的,即任何一方都能够收发数据,协定自身提供了一些保障机制保障它是牢靠的、有序的,即每个包依照发送的程序达到接管方。
而 SOCK_DGRAM 这种是 User Datagram Protocol 协定的网络通讯,它是无连贯的,不牢靠的,因为通信单方发送数据后不晓得对方是否曾经收到数据,是否失常收到数据。任何一方建设一个 socket 当前就能够用 sendto 发送数据,也能够用 recvfrom 接收数据。基本不关怀对方是否存在,是否发送了数据。它的特点是通信速度比拟快。大家都晓得 TCP 是要通过三次握手的,而 UDP 没有。
基于上述不同,UDP 和 TCP 编程步骤也有些不同,如下:
TCP:
TCP 编程的服务器端个别步骤是:
1、创立一个 socket,用函数 socket();
2、设置 socket 属性,用函数 setsockopt(); * 可选
3、绑定 IP 地址、端口等信息到 socket 上,用函数 bind();
4、开启监听,用函数 listen();
5、接管客户端上来的连贯,用函数 accept();
6、收发数据,用函数 send()和 recv(),或者 read()和 write();
7、敞开网络连接;
8、敞开监听;
TCP 编程的客户端个别步骤是:
1、创立一个 socket,用函数 socket();
2、设置 socket 属性,用函数 setsockopt();* 可选
3、绑定 IP 地址、端口等信息到 socket 上,用函数 bind();* 可选
4、设置要连贯的对方的 IP 地址和端口等属性;
5、连贯服务器,用函数 connect();
6、收发数据,用函数 send()和 recv(),或者 read()和 write();
7、敞开网络连接;
UDP:
与之对应的 UDP 编程步骤要简略许多,别离如下:
UDP 编程的服务器端个别步骤是:
1、创立一个 socket,用函数 socket();
2、设置 socket 属性,用函数 setsockopt();* 可选
3、绑定 IP 地址、端口等信息到 socket 上,用函数 bind();
4、循环接收数据,用函数 recvfrom();
5、敞开网络连接;
UDP 编程的客户端个别步骤是:
1、创立一个 socket,用函数 socket();
2、设置 socket 属性,用函数 setsockopt();* 可选
3、绑定 IP 地址、端口等信息到 socket 上,用函数 bind();* 可选
4、设置对方的 IP 地址和端口等属性;
5、发送数据,用函数 sendto();
6、敞开网络连接;
TCP 和 UDP 是 OSI 模型中的运输层中的协定。TCP 提供牢靠的通信传输,而 UDP 则常被用于让播送和细节管制交给利用的通信传输。
UDP 补充:
UDP 不提供简单的管制机制,利用 IP 提供面向无连贯的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即依照原样发送到网络上的一种机制。即便是呈现网络拥挤的状况下,UDP 也无奈进行流量管制等防止网络拥塞的行为。此外,传输途中如果呈现了丢包,UDO 也不负责重发。甚至当呈现包的达到程序乱掉时也没有纠正的性能。如果须要这些细节管制,那么不得不交给由采纳 UDO 的应用程序去解决。换句话说,UDP 将局部管制转移到应用程序去解决,本人却只提供作为传输层协定的最基本功能。UDP 有点相似于用户说什么听什么的机制,然而须要用户充分考虑好下层协定类型并制作相应的应用程序。
TCP 补充:
TCP 充沛实现了数据传输时各种管制性能,能够进行丢包的重发管制,还能够对秩序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。此外,TCP 作为一种面向有连贯的协定,只有在确认通信对端存在时才会发送数据,从而能够管制通信流量的节约。TCP 通过测验和、序列号、确认应答、重发管制、连贯治理以及窗口管制等机制实现可靠性传输。
TCP 与 UDP 区别总结:
1、TCP 面向连贯(如打电话要先拨号建设连贯);UDP 是无连贯的,即发送数据之前不须要建设连贯
2、TCP 提供牢靠的服务。也就是说,通过 TCP 连贯传送的数据,无差错,不失落,不反复,且按序达到;UDP 尽最大致力交付,即不保 证牢靠交付
3、TCP 面向字节流,实际上是 TCP 把数据看成一连串无构造的字节流;UDP 是面向报文的
UDP 没有拥塞管制,因而网络呈现拥塞不会使源主机的发送速率升高(对实时利用很有用,如 IP 电话,实时视频会议等)
4、每一条 TCP 连贯只能是点到点的;UDP 反对一对一,一对多,多对一和多对多的交互通信
5、TCP 首部开销 20 字节;UDP 的首部开销小,只有 8 个字节
6、TCP 的逻辑通信信道是全双工的牢靠信道,UDP 则是不牢靠信道