【计算机网络】TCP握手与挥手:三步奏和四步曲

这篇具有很好参考价值的文章主要介绍了【计算机网络】TCP握手与挥手:三步奏和四步曲。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

TCP(传输控制协议)是一种面向连接的可靠的传输协议。在建立连接和关闭连接时,TCP使用了三次握手和四次挥手的机制来确保通信的可靠性。
TCP是一种非常重要的传输层协议,被广泛应用于各种网络通信场景中。无论是企业内部的数据传输,还是互联网上的数据交换,都离不开TCP的支持。

三次握手

三次握手的过程是这样的:

  • 第一步:客户端向服务器发送一个SYN(同步)标志位的数据包,请求建立连接。这个数据包包含了一个随机生成的序列号X。

  • 第二步:服务器收到客户端的请求后,会回复一个带有SYN和ACK(确认)标志位的数据包。这个数据包中除了SYN标志位外,还包含了服务器随机生成的序列号Y,以及确认号ACK为X+1。

  • 第三步:客户端收到服务器的响应后,会发送一个ACK标志位的数据包给服务器,确认连接建立。该数据包中的确认号ACK为Y+1。
    经过以上三个步骤,双方都知道彼此已经准备好进行通信,连接成功建立。

注意:三次握手的目的是为了确保双方都能够收到对方的数据包。如果只有两次握手,则存在一种情况,即客户端发送的SYN数据包在传输过程中丢失,而服务器没有收到客户端的请求,但是客户端已经认为连接建立成功了。当客户端向服务器发送数据时,服务器会认为这是一个非法的数据包,并拒绝接收。因此,三次握手可以避免这种情况的发生。
【计算机网络】TCP握手与挥手:三步奏和四步曲,Linux网络编程,计算机网络,网络,tcp/ip

四次挥手

四次挥手的过程是这样的:

  • 第一步:客户端发送一个FIN(结束)标志位的数据包给服务器,请求关闭连接。

  • 第二步:服务器收到客户端的请求后,发送一个ACK标志位的数据包给客户端,确认收到关闭请求。

  • 第三步:服务器继续向客户端发送一个FIN标志位的数据包,表示服务器也准备关闭连接。

  • 第四步:客户端收到服务器的关闭请求后,发送一个ACK标志位的数据包给服务器,确认收到关闭请求。

经过以上四个步骤,双方都完成了关闭连接的过程。在这个过程中,服务器和客户端都需要等待一段时间(即TIME_WAIT状态)才能完全关闭连接,等待时间一般为2MSL,即2倍最大报文段生存时间。这是因为在实际应用中,网络状况可能不稳定,需要确保对方已经接收到最后一个ACK数据包。
四次挥手的过程可以避免连接关闭时出现问题,如双方同时关闭连接,但是还有数据传输的情况。
【计算机网络】TCP握手与挥手:三步奏和四步曲,Linux网络编程,计算机网络,网络,tcp/ip

三次握手和四次挥手的作用

TCP三次握手的作用

建立连接

三次握手确保了客户端和服务器之间建立了可靠的连接。客户端发送SYN数据包给服务器,服务器回复SYN+ACK数据包给客户端,最后客户端发送ACK数据包给服务器。通过这个过程,双方都确认对方可达,并同步了序列号和确认号。只有完成三次握手,才能确保双方能够正常通信。

防止已失效的连接请求建立连接

在网络传输过程中,可能会有延迟或丢失的情况发生。如果没有三次握手,客户端发送的连接请求可能会在网络中滞留,当客户端重新发送请求时,服务器无法区分新的连接请求与旧的失效请求。通过三次握手,服务器可以确认客户端发送的连接请求是有效的,避免建立无效的连接。

防止重复连接

在网络环境中,可能存在网络拓扑改变或网络故障的情况。如果没有三次握手,客户端可能会发送多个连接请求给服务器,而服务器则无法判断是新的连接请求还是旧的重复连接。通过三次握手,服务器可以确认客户端的序列号和确认号,避免重复连接的情况发生。

TCP四次挥手的作用:

安全关闭连接

四次挥手确保了双方在关闭连接时能够安全地完成数据传输。客户端发送FIN数据包给服务器,表示不再发送数据;服务器回复ACK数据包给客户端,确认收到关闭请求;服务器继续发送FIN数据包给客户端,表示也准备关闭连接;最后,客户端回复ACK数据包给服务器,确认收到关闭请求。通过这个过程,双方都完成了数据传输并安全地关闭连接。

避免数据丢失

在关闭连接之前,可能存在数据传输的延迟。通过四次挥手,客户端和服务器可以互相通知对方不再发送数据,确保所有数据都能被接收和处理,避免数据丢失的情况。

避免半开连接

在网络环境中,可能存在半开连接的情况,即一方已经关闭连接但另一方不知道。通过四次挥手,双方都可以通知对方自己的关闭意图,并确认对方已经收到关闭请求,避免出现半开连接的情况。

总结:

TCP三次握手和四次挥手在网络通信中起着至关重要的作用。通过三次握手,双方建立可靠的连接,确保能够正常通信,并避免无效连接和重复连接的问题。而通过四次挥手,双方安全地关闭连接,完成数据传输,并避免数据丢失和半开连接的情况发生。

总结

通过三次握手和四次挥手的机制,TCP能够可靠地建立连接和关闭连接,保证数据的完整性和可靠性。在实际应用中,TCP是非常重要的协议,被广泛应用于各种网络通信场景中。了解TCP的三次握手和四次挥手机制对于网络开发人员来说是非常重要的基础知识。文章来源地址https://www.toymoban.com/news/detail-812144.html

到了这里,关于【计算机网络】TCP握手与挥手:三步奏和四步曲的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 计算机网络—TCP和UDP、输入url之后显示主页过程、TCP三次握手和四次挥手

    TCP是面向连接的、可靠的,基于字节流的传输层通信协议 。 图片来源小林coding 序号:传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A - B且ISN = 1024,第一段数据512字节已经

    2024年02月14日
    浏览(49)
  • 【计算机网络】三次握手 四次挥手

    目录 1.三次握手 2.四次挥手 3.总结 三次握手和四次挥手是有连接特有的。三次握手,四次挥手指的是TCP有连接特点的中的步骤 。建立连接(三次握手),断开连接(四次挥手)。建立连接操作一般都是客户端主动发起,断开连接操作客户端和服务器都可以主动发起。 1.三次握手

    2024年02月08日
    浏览(42)
  • 【计算机网络】 TCP——四次挥手

    主动方打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,也即FIN报文,之后主动方进入FIN_WAIT_1状态。 被动方收到该报文后,就向主动方发送ACK应答报文,接着被动方进入CLOSE_WAIT状态。 主动方收到被动方的ACK应答报文后,进入FIN_WAIT_2状态。 等待被动方处理完数

    2024年02月09日
    浏览(41)
  • 计算机网络之TCP四次挥手

    定义:建立一个连接需要三次握手,而终止一个连接要经过四次挥手;这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力 刚开始双方都处于ESTABLISHED 状态,假如是客户端先发起关闭请求。四次

    2024年02月13日
    浏览(31)
  • 【计算机网络】TCP传输控制协议——三次握手

    一开始,客户端和服务端都处于CLOSE状态,先是服务端监听某个端口,处于LISTEN状态。 然后客户端主动发起连接SYN,之后处于SYN-SEND状态。 服务端收到发起的连接,返回SYN,并且ACK客户端的SYN,之后处于SYN-RECV状态。 客户端收到服务端发送的SYN和ACK之后,发送ACK的ACK,之后处

    2024年02月09日
    浏览(49)
  • 计算机网络——三次握⼿、四次挥手

    1、 第⼀个SYN报⽂ : 客户端 随机初始化序列号client_isn ,放进TCP⾸部序列号段, 然后把 SYN置1 。把SYN报⽂发送给服务端,表⽰发起连接, 之后 客户端处于SYN-SENT状态。 2、 第⼆个报⽂SYN+ACK报⽂ : 服务端收到客户端的SYN报⽂,把 ⾃⼰的序号server_isn放进TCP⾸部序列号 段,

    2024年02月15日
    浏览(37)
  • 计算机网络—TCP

    源端口号和目标端口号:16位字段,用于标识TCP连接的源和目标端口号。 序列号(Sequence Number):32位字段,用于标识发送的数据字节流中的第一个字节的序号。 确认号(Acknowledgment Number):32位字段,确认收到的字节序号,即期望接收的下一个字节的序号。 数据偏移:4位字

    2024年02月13日
    浏览(64)
  • 计算机网络-TCP协议

    TCP被称为面向连接的,因为在应用程序开始互传数据之前,TCP会先建立一个连接,该连接的建立涉及到 三次“握手 ”。 TCP的连接不是一条真实存在的电路,而是一条逻辑链接 ,其共同状态仅保留在两个通信端系统的TCP程序中。 TCP连接也是点对点的,即TCP连接只能存在于一

    2024年02月08日
    浏览(56)
  • 【计算机网络】TCP协议

    实验目的 应用所学知识: 1. 熟悉 TCP 的协议格式。 2. 理解 TCP 对序列号和确认号的使用。 3. 理解 TCP 的流量控制算法和拥塞控制算法。 实验步骤与结果 1.任务一: 将Alice.txt上传到服务器: 使用wireshark捕获数据包,看到计算机和gaia.cs.umass.edu之间的一系列 TCP 和 HTTP 通信,包

    2023年04月20日
    浏览(55)
  • 【计算机网络】简易TCP网络小程序

    1.1.1 服务端创建套接字 我们将TCP服务器封装成一个类,当我们定义出一个服务器对象后需要马上对服务器进行初始化,而初始化TCP服务器要做的第一件事就是创建套接字。 TCP服务器在调用socket函数创建套接字时,参数设置如下: 协议家族选择 AF_INET ,因为我们要进行的是网

    2024年02月16日
    浏览(83)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包