什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

这篇具有很好参考价值的文章主要介绍了什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    关于TCP协议和UDP协议大家应该都有所耳闻,我们常用的网络通讯。比如浏览网页、软件聊天、以及你看到的这篇文章,都是通过这两种协议来进行数据传输的。到底他们是如何工作的?这两种协议的区别又是什么呢?请随武汉海翎光电的小编一起耐心看完这篇文章,你一定会有所收获。TCP和UCP协议都工作在传输层,他们的目标都是在程序之间传输数据。数据可以是文本文件、视频、图片。对于TCP和UCP协议来说,都是一堆二进制数,并没有多大的区别。那TCP与UCP之间的区别是什么?很多伙伴会说,最大的区别就是一个基于连接,一个基于非连接。具体又是什么意思呢?我们来举一个简单的例子。

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

    如果把人与人的通信比喻为进程与进程的通信,我们基本有两个方式,第一种方式是写信,第二种方式是打电话,如果不考虑速度因素,这两种方式最大的区别是什么?

   就是信寄出去之后对方是否能收到,以及收到信的内容是否完整。先后寄两封信过去是否按照顺序接收,都变成了未知数。甚至你填写的收信地址和收件人是否存在,你都无法确认。

    而打电话则不同,从拨打电话到对方接通互相通话,再到结束通话后挂断,能得到及时的反馈,并且能确认对方准确的接收到。打电话是基于连接的也就是TCP,而写信就是基于非连接的就是UDP。(如下图)

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

   TCP是如何保证以上过程的,有三个关键的步骤。分别为三次握手、传输确认、四次挥手。

    三次握手是建立连接的过程,当客户端向服务端发起连接时,会无发一包连接请求数据,过去询问一下,能否与你建立连接。这包数据我们称为SYN。如果对端同意连接,则回复一包SYN+ACK包。客户端收到之后回复一包ACK包,连接建立。因为这个过程中互相发送了三包数据,所以称之为三次握手。

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

   为什么要三次握手而不是两次握手呢?

     服务端回复完SYN+ACK之后就建立连接,这是为了防止因为已失效的请求报文,突然又传到服务器引起错误。这是什么意思呢?假设采用两次握手建立连接,客户端向服务端发送了一个SYN包来请求建立连接,因为某些未知的原因并没有到达服务器,在中间某些网络节点产生了滞留。为了建立连接客户端会重发SYN包,这次的数据包正常送达。服务端回复SYN+ACK之后建立起了连接,但是第一包数据阻塞的网络节点突然恢复,第一包SNY包又送达到服务端。这时服务端会误认为是客户端又发起了新的连接。从而在两次握手之后,进入等待数据状态。服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致。如果是三次握手的情况下,服务端收不到最后的ACK自然不会认为连接建立成功,所以三次握手本质上来说就是为了解决网络信道不可靠的问题。

    为了能够在不可靠的信道上建立起可靠的连接,经过三次握手后,客户端和服务端都进入了数据传输状态。上面讲到TCP协议需要在不可靠的信道上,保证可靠的连接。

    现在就有几个问题需要面对,一包数据有可能会被拆成多包发送,如何处理丢包问题?这些数据包到达的先后顺序不同,如何处理乱序问题?武汉海翎光电的小编告诉你吧。

    针对这些要求,TCP协议为每一个连接建立了一个发送缓冲区,从建立连接后的第一个字节的序列号为0,后面每个字节的序列号就会增加1。发送数据时,从发送缓冲区取一部分数据组成发送报文,在其TCP协议头中会附带序列号和长度。接受端在收到数据后,需要回复确认报文,确认报文中的ACK等于接收序列号加长度。也就是下一包数据需要发送的开始序列号,这样一问一答的发送方式能够使发送端确认发送的数据已经被对方收到。发送端也可以一次发送连续的多包数据,接收到只需要回复一次ACK就可以了。这样发送端可以把待发送的数据分割成一系列的碎片发送到对端,对端根据序列号和长度在接收后得出完整的数据。假设其中丢失了某些数据包。在接收端可以要求发送端重传。比如丢失了100-199这100个字节,接收端向发送端发送ACK=100的报文,发送端收到后重传这一包数据。接收端进行补齐。以上过程不区分客户端和服务端。TCP连接是全双工的。对于两端来说均采用上述机制。

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

    我们再看一下什么是四次挥手?

    处于连接状态的客户端和服务端,都可以发起关闭连接请求。此时需要四次挥手来进行连接关闭。假设客户端主动发起连接关闭请求,他需要向服务端发起一个包FIN包,表示要关闭连接,自己进入终止等待1状态,这是第一次挥手。服务端收到FIN包,发送一包ACK包,表示自己进入了关闭等待状态。客户端进入终止等待2状态,这是第二次挥手。服务端此时还可以发送未发送的数据,而客户端还可以接收数据,待服务端发送完数据之后,发送一包FIN包进入最后确认状态,这是第三次挥手。客户端收到之后回复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后,立即关闭连接,这是第四次挥手。为什么客户端需要等待超时时间?这是为了保证对方已收到ACK包,因为假设客户端发送完最后一包ACK包后就释放了连接。一旦ACK包在网络中丢失,服务端将一直停留在最后确认状态。如果客户端发送最后一包ACK包后,等待一段时间,这时服务端因为没有收到ACK包会重发FIN包,客户端会响应这个FIN包重发ACK包并刷新超时时间

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

    以上机制和三次握手一样,也是为了保证在不可靠的网络链路中,进行可靠的连接断开、确认。

    了解了TCP协议,再跟着武汉海翎光电的小编看一下UDP协议。

    首先UDP协议是基于非连接的,发送数据就是简单的把数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系。正因为UDP这种简单的处理方式,导致他的性能损耗非常少,对于CPU内存资源的占用也过小于TCP。但是对于网络传输过程中产生的丢包UDP协议并不能保证,所以UDP在传输稳定性上要弱于TCP。

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

    来和海翎光电的小编一起总结一下TCP和UDP的主要区别

    TCP传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误地传输给对方。比如传输文件,发送邮件,浏览网页等。

    UDP的优点是速度快,但是可能产生丢包。所以适用于对实时性要求较高,但是对少量丢包并没有太大要求的场景。比如,域名查询,语音通话,视频直播等。

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

    UDP还有一个非常重要的应用场景。就是隧道网络。什么是隧道网络?比如我们常用的VPN就是一种隧道网络,以及在SDN中用到的VXLAN也是一种隧道网络。

什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

好了,关于TCP和UDP的介绍就到这里,看过武汉海翎光电的小编的讲解是不是豁然开朗了呢?文章来源地址https://www.toymoban.com/news/detail-487607.html

到了这里,关于什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP的三次握手与四次挥手

    参考文章:https://blog.csdn.net/qq_38950316/article/details/81087809 在介绍三次握手与四次挥手之前我们先来了解一下TCP的头部结构是什么样的。 TCP头部的最大长度为60字节,其中包括 TCP报文固定长度20字节+可变字节(最大40字节) ,具体结构如下: 在认识三次握手与四次挥手之前我们必

    2023年04月09日
    浏览(27)
  • TCP的三次握手与四次挥手(简述)

    传输控制协议-- 面向连接的可靠传输协议 在完成传输层的基本工作之上,还需要进一步的保障传输的可靠性。和UDP不同的是,TCP提供的是可靠的面向连接传输服务,并且提供了流量控制等功能。   TCP 报文格式中的主要标识标记位   1.SYN同步标记位,SYN = 1,代表这个数据包是

    2024年02月01日
    浏览(26)
  • 深入解析:HTTP和HTTPS的三次握手与四次挥手

    推荐阅读 字数统计:约 571 字 预计阅读时间:约 3 分钟 引言 在网络通信中,HTTP和HTTPS是两个最为常见的协议,它们作为应用层协议,扮演着浏览器与服务器之间传输数据的关键角色。而在建立和终止网络连接时,三次握手和四次挥手是不可或缺的步骤。本文将深入解析HTT

    2024年02月12日
    浏览(30)
  • 【三、接口协议与抓包】TCP的三次握手与四次挥手

    你好啊!我是山茶,一个持续探索 AI + 测试之路的程序员。 TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。常常被用于处理实时通信,因此,在传输效率上会稍逊色于UDP协议 报文结构 TCP协议的报文结构如下(图片源于网络,如果侵权,请联系我删除) 对于

    2024年03月14日
    浏览(44)
  • Wireshark数据包捕获与分析 观察三次握手与四次挥手

    本实验使用Wireshark抓取通信数据包。1)观察IP数据包的结构。2)观察TCP的三次握手与四次挥手过程。 预备知识:IP数据报结构、TCP数据报结构。 目录 原理 1. IP数据报结构 2. TCP数据报结构 3. TCP三次握手与四次挥手流程  步骤与结果 1. 使用Wireshark抓取ping命令的完整通信过程的

    2024年02月09日
    浏览(28)
  • 深入理解TCP三次握手与四次挥手过程以及抓包实验

    最近,我正好在做socket相关的实验,发现现在对计算机网络知识有一点点模糊,借此机会,熟悉一下TCP连接过程并利用WireShark工具进行测试。 源端口号:占16比特,写入源端口号,用来 标识发送该TCP报文段的应用进程。 目的端口号:占16比特,写入目的端口号,用来 标识接

    2024年02月08日
    浏览(29)
  • linux【网络编程】TCP协议通信模拟实现、日志函数模拟、守护进程化、TCP协议通信流程、三次握手与四次挥手

    Tcp通信模拟实现与Udp通信模拟实现的区别不大,一个是面向字节流,一个是面向数据报;udp协议下拿到的数据可以直接发送,tcp协议下需要创建链接,用文件描述符完成数据的读写 1.1.1 接口认识 1.1.1.1 listen:监听socket 1.1.1.2 accept:获取连接 通信就用accept返回的文件描述符,

    2024年02月06日
    浏览(39)
  • (学习笔记-TCP连接建立)TCP 为什么是三次握手?不是两次、四次?

    常规回答:“因为三次握手才能保证双方具有接收和发送的能力” 三次握手的 首要原因是为了防止旧的重复连接初始化造成混乱 。 假设:客户端先发送了SYN(seq=90)报文,然后客户端宕机了,而且这个SYN报文还被网络阻塞了,服务端并没有收到,接着客户端重启后,又重新向

    2024年02月17日
    浏览(36)
  • 说说TCP为什么需要三次握手和四次挥手?

    三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备 过程如下: 第一次握手:客户端给服务端发一个 SYN 报文,并指明

    2024年04月08日
    浏览(42)
  • 什么是网络编程?Java如何实现?三次握手和四次挥手?

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 网络编程 : 网络编程,就是指在网络通信协议下,不同计算机运行的程序,进行的数据传输,即:计算机与

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包