UDP和TCP简介

UDP和TCP

1 UDP协议

​ 用户数据报协议UDP具有复用、分用以及差错检测的功能。

特点:

  1. UDP是无连接的,即发送数据之前不需要建立连接,因此也减少了开销和发送数据的延迟。
  2. UDP使用尽最大努力交付,即不保证可靠的交付,因此主机不需要维持复杂的连接状态。
  3. UDP是面向报文的,即对需要进行网络传输的数据直接传输,不会进行其他操作,比如当传输数据过大时进行分片多次传输。
  4. UDP没有拥塞控制,即不会因为网络出现拥堵而降低传输效率。
  5. UDP支持一对一、一对多、多对一和多对多的交互通信
  6. UDP的开销小,UDP在发送时,其首部只占用8字节。

2 TCP协议

​ 传输控制协议TCP具有可靠传输、流量控制和拥塞控制等功能。TCP协议是TCP/IP中非常复杂的一个协议(IP协议,即比TCP协议更底层的一个通信协议)。

特点

  1. TCP协议是面向连接的,即使用TCP协议之前必须建立TCP连接,通信结束后需要释放TCP连接。
  2. TCP协议只能进行P2P(point to point,点对点、一对一)通信
  3. TCP协议提供可靠交付,即无差错、不丢失、不重复。
  4. TCP协议是全双工通信,即通信双方都可以在任何时候进行收发数据。
  5. TCP协议是面向字节流的,即它并不关心传输的内容,只是把这些数据看作无结构的字节进行传输。
  6. TCP的开销比UDP大,TCP的首部占用20字节(开销大并不仅仅是首部大小上一个方面)。

3 UDP和TCP的区别

用户数据报协议UDP传输控制协议TCP
无连接的面向连接的
不可靠传输可靠传输
可以进行一对一、一对多、多对一和多对多的通信只能进行一对一通信
没有拥塞控制实现了拥塞控制
开销小开销大
面向报文的面向字节流的

4 TCP的三次握手

过程:

  1. 第一次握手:客户端进程A创建TCP连接,并向服务器进程B发出连接请求报文(A将自己的通信序列号发送给B)。
  2. 第二次握手:服务器进程B收到连接请求报文后,如果同意连接,则向客户端A发送确认(B收到了A的序列号,并将自己的序列号发送给A,同时通知A我知道你的序列号了)。
  3. 第三次握手:客户端进程A接收到服务器进程B的确认后,需要向其给出确认(A收到了B的序列号,并告知B我知道了你的序列号)。此时,正式建立连接。

为什么不是两次

​ 答:为了防止发出的已经失效的连接请求突然又传送到了B,因而产生错误。即以下的情况:A发送连接请求(记为Link1)至B,但是由于网络问题Link1在某一处滞留了,而一段实际内A没有收到B的确认,则再次发送连接请求,并且此次请求成功了,A和B在通信结束后释放了连接。此时Link1(刚刚滞留的连接)结束了滞留又发送到了B,如果是两次握手,那么在B发送响应后连接就建立了,并且此时B就在等待A发送数据,而A接收到B的确认后并不会理会,因为A没有发送请求(Link滞留时A已经默认连接失败了)。此时就造成了B的资源浪费。

为什么不是更多次?

​ 答:进行了两次握手的分析之后,可以得知三次握手已经可以使A和B建立可靠的连接,再进行更多次的重复确认并不能提高TCP协议的可靠性,反而会提高TCP协议的开销,得不偿失。(况且,虽然TCP协议被称为可靠的协议,但是只是相对性的,并不会出现100%可靠的协议,所以也没有必要进行反复的确认)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值