TCP之三次握手四次挥手

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

         在前面的文章中我们了解到http是基于TCP/IP协议的,这篇文章我们来了解一下TCP/IP。

一、TCP与UDP

1、UDP

       基于非连接。类似于写信,不能保证对方能不能接收到,接收到的内容是否完整,顺序是否正确。

    优缺点:性能损耗小,占用资源少,稳定弱,速度块。

2、TCP

      基于连接,类似与通话,能够确认对方能够准确的接收到发送的信息。

    优缺点:数据传输可靠,支持全双工,建立时间和消耗资源过大,有延迟,效率相对较低。

二、TCP建立连接和断开连接

1、三次握手建立连接

(1)作用

          三次握手是TCP用来建立连接的一种机制,确保双方可以正常通信。每一步都需要对方的确认才能进行下一步,从而确保双方都同意建立连接,并且状态得到正确同步。这样可以减少因网络延迟、丢包等问题导致的连接建立失败或错误。

(2)建立过程

TCP之三次握手四次挥手,tcp/ip,网络协议,网络

  • 第一次握手:客户端发送SYN包,客户端向服务器发送一个SYN(同步)包,其中包含一个初始序列号(ISN)作为起始值。此时客户端处于SYN_SENT(同步已发送)状态。
  • 第二次握手:服务器回复SYN-ACK包,服务器收到客户端的SYN包后,会生成自己的初始序列号,并对客户端的SYN进行确认。服务器构造一个SYN-ACK(同步-确认)包,将自己的初始序列号作为起始值,同时也将确认号设置为客户端初始序列号加一。然后服务器发送这个SYN-ACK包给客户端。此时服务器处于SYN_RCVD(同步已接收)状态。
  • 第三次握手:客户端发送ACK包,客户端收到服务器的SYN-ACK包后,确认服务器的初始序列号和确认号,并构造一个ACK(确认)包,将确认号设置为服务器初始序列号加一。客户端发送这个ACK包给服务器。此时客户端处于ESTABLISHED(已建立连接)状态,服务器收到ACK包后也转入ESTABLISHED状态。
  • 三次握手完成,客户端和服务器正式建立了TCP连接,可以进行数据的传输。
(3)注意事项

         ①握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

         ②如果已经建立了连接,但是客户端突然出现故障了怎么办?

         TCP协议引入了超时机制。TCP为每个连接都设置了一个定时器,用于在一定时间内检测连接是否还处于活动状态。如果在规定时间内没有收到客户端的数据,则服务器认为客户端已经断开连接,并会关闭连接。

(4)为什么不能用两次握手?
  • 确保双方都愿意建立连接:在两次握手的情况下,客户端只发送一次连接请求,但服务器无法确认客户端是否真正希望建立连接,因为可能只是一个错误的或者重复的请求。通过三次握手,服务器可以回复确认信号来确认客户端真正的通信意愿。
  • 防止已失效的连接请求影响:如果使用两次握手,可能会遇到客户端已经发送了一个连接请求,在网络中滞留了一段时间后终于到达服务器,导致服务器误认为客户端希望建立连接。而通过三次握手,服务器可以得到客户端最新的连接请求,并且可以排除掉之前的已失效的连接请求。
  • 同步双方的初始序列号:在TCP连接中,每个连接都有一个初始序列号(ISN)用于标识数据流的起始位置。通过三次握手,双方可以交换彼此的初始序列号,从而实现双方序列号的同步,确保后续传输的数据能够正确地按序组装和重组。

2、四次挥手断开连接

(1)作用

       是用于关闭TCP连接的过程。它是在双方确认不再需要通信时,进行连接释放和资源回收的步骤。在这个过程中,双方都需要发送FIN和ACK两个标志位的报文段,以确保双方都知道对方已经确认了关闭连接的请求。最后,当双方都收到了对方发送的ACK报文段后,连接就顺利关闭,并且可以回收连接所占用的资源。

(2)建立过程

TCP之三次握手四次挥手,tcp/ip,网络协议,网络

  • 第一次挥手:客户端发送连接释放请求(FIN),当客户端确定不再发送数据时,它会发送一个带有FIN标志位的报文段给服务器,表示请求关闭连接。此时,客户端进入FIN-WAIT-1(终止等待1)状态。
  • 第二次挥手:服务器回复确认客户端的请求(ACK),服务器收到客户端的连接释放请求后,会发送一个带有ACK标志位的报文段给客户端,确认收到了客户端的请求。服务端就进入了CLOSE-WAIT 关闭等待状态。
  • 第三次挥手:服务器发送连接释放请求(FIN),客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  • 第四次挥手:客户端回复确认服务器的请求(ACK),客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命)客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成
(3)注意事项

       为什么客户端要等待2MSL?
        确保连接彻底关闭,并在此期间处理延迟报文段和防止端口冲突,从而保证网络通信的可靠性和稳定性。文章来源地址https://www.toymoban.com/news/detail-687166.html

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

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

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

相关文章

  • 网络扫盲:Tcp协议和hettp、https协议、三次握手四次挥手

    是一种用于传输超文本的协议,是Web应用程序的基础。HTTP协议使用客户端-服务器模型,客户端发出请求,服务器返回响应。HTTP协议是无状态的,即服务器不会记住之前的请求和响应,每个请求和响应都是独立的。HTTP协议使用TCP作为传输协议,通常使用80端口。 HTTP协议的应

    2024年02月04日
    浏览(96)
  • 计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.

    TCP协议: UDP协议: TCP协议与UDP协议都工作在传输层. TCP协议与UDP协议它们的目标: TCP协议与UDP协议的最大区别: TCP协议保持连接的三个关键步骤: UDP协议: TCP协议与UDP协议主要区别: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的

    2023年04月15日
    浏览(53)
  • Linux TCP协议——三次握手,四次挥手

    TCP协议是可靠的、面向连接的、基于字节流的传输层通信协议。 TCP的头部结构: 源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去;(tcp是传输层的协议,端与端之间的数据传输,在TCP和UDP协议当中不会体现出IP) 32位序号:一次TCP通信(从TCP连接建立到断开)过程中某

    2024年02月11日
    浏览(42)
  • TCP 协议(包含三次握手,四次挥手)

    确认应答是可靠传输的最核心机制 接收方反馈一个应答报文(ACK),表示已收到 假设现在 A 想去 B 家里玩游戏,于是 A 给 B 发消息,若消息没有出现错误且顺序正确 结果如下所示: 但网络传输比较复杂,可能存在一种情况\\\"后发先至\\\" 由于数据的长度不同或者传输网络不同,先发

    2024年02月02日
    浏览(51)
  • 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日
    浏览(54)
  • OSI(七层)网络模型,三次握手四次挥手梳理,Socket.TCP/IP.HTTP三者说明

    目录 一   OSI网络模型 二   三次握手与四次挥手的简单理解 ● 常见问题梳理 三   Socket,TCP/IP,HTTP ① TCP/IP连接 ② HTTP连接 ③ Socket说明 ● 套接字(socket)概念 ● 建立socket连接 四   Socket连接与TCP/IP连接 五   Socket连接与HTTP连接 OSI网络模型也称七层网络模型 7 应用层

    2023年04月09日
    浏览(42)
  • 【TCP 协议】连接管理之 “三次握手,四次挥手”

    哈喽,大家好~我是你们的老朋友: 保护小周ღ    本期为大家带来的是网络编程中的 TCP 传输控制协议保证数据可靠性传输的机制 之一的—— 连接管理 ,通信双方采用 “三次握手” 来建立连接,采用 “四次挥手” 会断开连接,如何进行 ”握手” 和 “挥手” 操作,本文

    2024年02月07日
    浏览(51)
  • 【网络原理进阶篇】自定义协议,协议约定符,三次握手,四次挥手,TCP(保证可靠性机制)和UDP原理

    前言: 大家好,我是 良辰丫 ,我们已经学习了网络原理基础版,初步认识了网络,还学习了网络编程,了解了网络通信的各种程序,接下来我们更深入的了解网络是如何工作的.这篇文章我们主要介绍协议,UDP和TCP的一些原理.💞💞 🧑个人主页:良辰针不戳 📖所属专栏:javaEE初阶 🍎

    2023年04月24日
    浏览(90)
  • TCP协议+三次握手/四次挥手过程(带图详解!!!)

    传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的通信协议,工作在 传输层 。 应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。 TCP运输连接主要有三个阶段: 建立TCP连接,也就是三

    2024年02月03日
    浏览(52)
  • TCP协议的三次握手和四次挥手

    完整的TCP内容,请参考RFC 9293 TCP协议为应用提供可靠的、有序的的字节流服务。TCP是面向连接的,提供了全双工的通信。TCP使用端口号来识别应用程序服务并在主机之间复用不同的流。 TCP header也像IP header一样,在header中提供了一些专门用于TCP的信息,TCP header之后就是用户数

    2024年02月06日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包