TCP(传输控制协议)和UDP(用户数据报协议)区别

导读:本篇文章讲解 TCP(传输控制协议)和UDP(用户数据报协议)区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

TCP传输控制协议和UDP用户数据报协议的区别

  • TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,是专门为了在不可靠的网络中提供一个可靠的端对端字节流而设计的,面向字节流。
  • UDP(用户数据报协议)是iso参考模型中一种无连接的传输层协议,提供简单不可靠的非连接传输层服务,面向报文

区别

1) TCP是面向连接的,可靠性高;UDP是基于非连接的,可靠性低
2) 由于TCP是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差,同时过程复杂,也使其易于攻击;UDP没有建立连接的过程,因而实时性较强,也稍安全
3) 在传输相同大小的数据时,TCP首部开销20字节;UDP首部开销8字节,TCP报头比UDP复杂,故实际包含的用户数据较少。TCP在IP协议的基础上添加了序号机制、确认机制、超时重传机制等,保证了传输的可靠性,不会出现丢包或乱序,而UDP有丢包,故TCP开销大,UDP开销较小
4) 每条TCP连接只能时点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信

TCP三次握手

tcp的三次握手是很有意思的,基本思想就是“让我知道你已经知道”了。服务器监听请求,客户端发起连接请求(第一次连接),请求在路上可能存在丢失的风险,所以当请求到了服务器后如果服务器同意建立连接会给客户端一个回信(第二次连接),告诉它:我已经收到请求,可以连接。但是回信也存在一个问题,那就是回信能不能到客户端?它需要客户端给他一个回信说我已经收到批准通知了,如果客户端一直不回复的话意味着客户端没有收到批准通知。因此客户端一收到批准通知就立马回复(第三次握手):OK老铁我收到你的批准通知了。至此,三次握手结束。 一个很类似的例子就是投简历:先投简历,然后对方公司会通知你通过简历筛选,你收到这个通知后一般会回复一下我知道了。 这种“让我知道你已经知道了”的想法是一种约定俗成的可靠信息交互的基本方式,基于此想法构建的信息交互框架叫做协议

TCP四次挥手

释放连接的时候也是如此:客户端发起关闭连接的请求,关闭连接意味着客户端结束了自己的工作即发送数据,但此时仍然处于数据传输的过程中,服务器可能未数据传输完毕,因此当请求到服务器时服务器知道了这个请求,但服务器数据传输未完成无法关闭连接,因此服务器先发送一个ack告诉客户端关闭请求已收到,但老子正忙,一会再关,你再等一会。等服务器工作完成了,就把fin信号发送给客户端,此时服务器要等着客户端给他一个回信,让服务器知道客户端已经知道了。因此客户端收到后就给服务器一个回信,为了防止回信丢失,客户端就再等2MSL个时间,之所以是2个,是因为涉及到来回,第一个MSL中是回信在路上的最大时间,第二个MSL是万一回信没到服务端,服务端重发的FIN确认在路上的时间

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/91007.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!