首页 > 其他分享 >TCP与UDP的联系与区别

TCP与UDP的联系与区别

时间:2022-10-08 20:45:04浏览次数:41  
标签:UDP 区别 主机 报文 TCP 发送 连接

联系:

TCP

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。TCP仅支持单播传输,面向字节流,提供全双工通信,是可靠传输。

建立连接
一个TC建立连接连接必须要经过三次对话才能建立起来,简单描述三次对话的过程:
1.第一次
主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;

2.第二次
主机B向主机A发送同意连接和要求同步 (同步就是两台主机一个在发送,一个在接收,协调工作)的数据包 :“可以,你什么时候发?”,这是第二次对话;

3.第三次
主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”, 这是第三次对话。

三次“对话”的目的是使数据包的发送和接收同步, 经过三次“对话”之后,主机A才向主机B正式发送数据。

断开连接
TCP断开连接要进行4次
1.第一次
若客户端 A 认为数据发送完成,则它需要向服务端 B 发送连接释放请求。
2.第二次
B 收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明 A 到 B 的连接已经释放,不再接收 A 发的数据了。但是因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A。
3.第三次
B 如果此时还有没发完的数据会继续发送,完毕后会向 A 发送连接释放请求,然后 B 便进入 LAST-ACK 状态。
4.第四次
A 收到释放请求后,向 B 发送确认应答,此时 A 进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有 B 的重发请求的话,就进入 CLOSED 状态。当 B 收到确认应答后,也便进入 CLOSED 状态。
UDP
面向无连接
UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制; 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
标题短
UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。

有单播,多播,广播的功能
UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

面向报文
发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文

不可靠性
首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。
并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。
再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

区别:

 

标签:UDP,区别,主机,报文,TCP,发送,连接
From: https://www.cnblogs.com/ahui0928/p/16770085.html

相关文章

  • Lambda表达式实现方式、标准格式、练习、省略模式、注意事项及和匿名内部类的区别
    目录​​一、Lambda表达式实现方式​​​​二、Lambda表达式的标准格式​​​​三、Lambda表达式练习​​​​四、Lambda表达式的省略模式​​​​五、Lambda表达式的注意事......
  • UDP发送数据、接收数据及UDP通信程序练习
    目录​​一、UDP发送数据​​​​二、UDP接收数据​​​​三、UDP通信程序练习​​一、UDP发送数据Java中的UDP通信:●UDP协议是一种不可靠的网络协议,它在通信的两端各建立......
  • TCP发送数据、接受数据及TCP通信程序练习
    目录​​一、TCP发送数据​​​​二、TCP接收数据​​​​三、TCP通信程序练习​​一、TCP发送数据Java中的TCP通信:Java对于基于TCP协议的网络提供了良好的封装,使用Socket对......
  • Ubuntu系统中环境变量设置两种方法,有什么区别?
    什么方法对/etc/profile进行变量的加入,相当于Windows当中的用户变量,另外一个就是~/.bashrc,相当于系统环境变量的设置,那么他们有什么区别?如何进行使用呢?区别与作用:/et......
  • 110、120、119 的警铃有何区别?
    这是有国家标准的,GB8108-1999。常用的就前四种。主要就是声调变换的周期不一样。消防车的最长,高低转换要三到五秒。警车的最短,一秒变两三次。至于频率上的不同,不做......
  • npm i -D和-s及-g以及–save 的使用区别
    https://blog.csdn.net/qq_51066068/article/details/125872774npm相信大家都很熟悉了,我们在项目中必须会用到的,但是每次用的时候就直接按照文档操作了,也没有搞清楚-D,......
  • SSL VPN和IPsec VPN的区别
    近几十年来,远程工作能够在办公室外完成任务可以提高生产力和灵活性,这就是为什么每年都有更多雇主接受远程工作的原因。为了使远程工作有效,员工必须能够在任何地方访问其公司......
  • TCP与UDP的联系和区别
    TCP与UDP的区别TCP是面向连接的,UDP是面向无连接的UDP程序结构较简单TCP是面向字节流的,UDP是基于数据报的TCP保证数据正确性,UDP可能丢包TCP保证数据顺序,UDP不......
  • wait()和sleep()的区别
    一、sleep()和wait()的区别1、相同点sleep()和wait()都可以暂停线程的执行。2、不同点所在类不同sleep()是Thread类的静态方法。wait()是Object类的方法。锁释放不......
  • TCP和UDP的联系和区别
    一、联系   TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。二、区别   1、TCP面向连接,UDP是无连接的,即......