TCP\UDP

TCP\UDP 的特点和区别

TCP的特点
(1)tcp是面向连接的,也就是在使用tcp协议之前要建立tcp连接,传送完数据后要释放连接;
(2)tcp是可靠的,传输的数据都不会发生错误;
(3)tcp是全双工的通信,也就是通信的双方都可以发送数据和接收数据;
(4)tcp是面向字节流的,也就是传输的数据是字节流的;
(5)tcp是一对一的,也就是发送对象和接收对象都只能是一个;
UDP的特点
(1)udp是无连接的;也就是发送数据之前不需要建立连接;
(2)udp是尽最大努力交付的,;就是不保证可靠;
(3)udp是没有拥塞控制的,网络出现拥塞也不影响发送速率,也就是不管网络是否拥塞,都按一定得速率发送数据;
(4)udp是面向报文的,也就是传输的数据是报文;
(5)udp支持一对一,多对多,一对多,多对一,也就是对传送和接收的对象没有数量限制;

TCP\UDP的优缺点

(1)tcp可靠,但是传输速率慢;
(2)udp不可靠的,但是传输速率快;

TCP连接的建立(三次握手)

**最后还要确认一次的原因是:**防止已失效的连接请求报文段突然传到服务端,从而产生错误。

TCP释放连接(四次握手)

time-wait的原因是
(1)保证最后一个字节能够传到服务端;
(2)防止已失效的连接请求报文段出现在服务端,从而产生错误。

转载于:https://juejin.im/post/5cab2f8bf265da034c70026e

03-08
### TCPUDP 协议的区别 #### 面向连接与否 TCP是一种面向连接的协议,这意味着在两个端点之间传输数据之前必须先建立连接[^2]。相比之下,UDP是无连接的,在发送数据前无需预先设置连接,这使得UDP更加轻量级和快速。 #### 可靠性 对于可靠性方面,TCP提供可靠的数据传输服务,它确保所传送的信息能够按序到达目的地,并且会重传丢失或损坏的数据包。而UDP则不具备这种保障机制,其设计目标是在尽力而为的基础上传递数据,因此可能会出现丢包现象,也不保证消息顺序[^3]。 #### 性能表现 由于TCP具有复杂的握手过程以及拥塞控制等功能来维持稳定性和准确性,所以在某些情况下它的性能可能不如UDP高效。相反地,因为UDP省去了这些额外的操作步骤,所以它可以实现更快捷的数据交换,尤其适合那些对延迟敏感的应用场合[^1]。 #### 数据处理方式 TCP采用的是字节流的方式来进行通信,即把应用程序交给TCP层的数据看作是一连串无结构的字节序列;而UDP则是以报文的形式进行封装并直接转发给对方主机上的特定进程。 ### 应用场景对比 #### 基于TCP的应用实例 - **Web浏览**:当用户利用浏览器访问网站时,HTTP(S)请求通常是经由TCP通道完成的,以此确保存取到完整的页面内容。 - **邮件系统**:无论是SMTP用于发送邮件还是IMAP/POP3负责接收邮件,它们都是依赖于TCP所提供的安全可靠的传输特性。 - 文件下载工具如FTP客户端也会选择TCP作为底层通讯手段之一,从而保护重要文档免受中途篡改的风险。 #### 使用UDP的情况 - 实时多媒体播放器往往倾向于选用UDP而非TCP,这是因为前者允许视频帧偶尔缺失而不影响整体观看体验,同时还能减少缓冲时间带来的不便感。 - DNS查询属于另一类典型例子——尽管单次解析失败可能导致短暂的服务中断,但从全局来看却有助于加快整个互联网寻址的速度。 - 游戏行业同样偏爱UDP,特别是在多人在线竞技游戏中,较低延迟能够显著提升玩家之间的互动流畅度。 ```python import socket def create_tcp_socket(): tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) return tcp_sock def create_udp_socket(): udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return udp_sock ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值