0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP连接的建立与中止

麦辣鸡腿堡 来源:盼盼编程 作者:盼盼编程 2023-10-08 16:52 次阅读

TCP三次握手其实,网络上的传输是没有连接的, TCP 是一样的 TCP 所谓的 “连接”,其实只不过是在通信的双方维护一个“连接状态”,让它看上去好像有连接一样 所以, TCP 的状态变换是非常重要的 。

TCP 连接的建立可以简单地称为三次握手,而连接的中止则可以称为四次挥手。

建立连接 TCP/IP 协议中, TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送 SYN 包到服务器,并进入 SYN_SEND 状态,等待服务器确认。

第二次握手:服务器收到 SYN 包,必须确认客户的 SYN ,同时自己也发送一个 SYN 包,即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。

第三次握手 :客户端收到服务器的 SYN + ACK 包,向服务器发送确认包 ACK,此包发送完毕,客户端和服务器进入 ESTABLISHE 态。

完成 三次握手,客户端与服务器开始传送数据,也就是 ESTABLISHED 状态。

TCP四次挥手

TCP的连接断开

TCP 一个特别的概念叫作半关闭,这个概念是说, TCP 的连接是全双工(可以同时发送和接收)连接,因此在关闭连接的时候,必须关闭传和送两个方向上的连接。

客户机给服务器 FIN 的 TCP 报文,然后服务器返回给客户端一个确认 ACK 报文,并且发送一个FIN 报文,当客户机回复 ACK 报文后( 四次握手),连接就结束了。

在建立连接的时候,通信的双方要互相确认对方的最大报文长度( MSS ),以便通信。

一般这个 SYN 长度是 MTU 减去固定 IP 首部和 TCP 首部长度。对于一个以太网,一般可以达 1460 Byte 。当然如果对于非本地的 IP ,这个 MSS 可能就只有 536 Byte ,而且,如果中间的传输网络的 MSS 更加的小的话,这个值还会变得更小。

为什么建连接要三次握手,断连接需要四次挥手?

对于建连接的三次握手,主要是要初始化 Sequence Number 的初始值。通信的双方要互相通知对方自己的初始化的 Sequence Numbe,所以叫 SYN 。

这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输问题而乱序( TCP 会用这个序号来拼接数据)。

对于四次挥手,其实仔细看则是两次,因为 TCP 是全双工的,所以,发送方和接收方都需要 FIN 和 ACK。

只不过,有一方是被动的,所以看上去就成了所谓的四次挥手 。如果两边同时断连接,那就会就进入到 CLOSING 状态,接着就是TIME_WAIT 状态。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8120

    浏览量

    82524
  • 网络
    +关注

    关注

    14

    文章

    7251

    浏览量

    87444
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1272

    浏览量

    78301
  • 客户端
    +关注

    关注

    1

    文章

    282

    浏览量

    16340
收藏 人收藏

    评论

    相关推荐

    TCP和UDP建立连接的差异和可靠性的差异

    TCP 建立连接需要经过三次握手,同时 TCP 断开连接需要经过四次挥手,这也表示 TCP 是一
    发表于 09-02 16:10 603次阅读

    如何标识一个TCP连接

    tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发
    的头像 发表于 10-10 10:33 2402次阅读

    STM32H7+FREERTOS+LWIP建立TCP连接连接不稳定怎么解决?

    利用ST的Demo建立TCP连接,但是当建立TCP连接超过4个时,
    发表于 04-25 06:05

    为什么建立TCP连接有时成功有时失败?

    时开发板自带的里程改的,TCP这部分基本没有改,只是增加了自己的应用进去。首次使用以太网接口,还不太清楚建立连接的机理,有了解这块的朋友吗,请问建立
    发表于 09-19 04:36

    CH9121配置成TCP Client/Server,无法和电脑建立TCP连接怎么解决?

    9121配置成TCP Client/Server,无法和电脑建立TCP连接
    发表于 10-12 08:18

    ESP-TCP有什么方法可以与域名服务器建立tcp连接呢?

    :8591E (27839) example: Socket unable to connect: errno 113我的理解是这个例程只能够连接IP4/6 而不能够连接有域名的服务器 ,那请问有什么方法可以与域名服务器建立
    发表于 02-13 08:01

    建立TCP/IP连接后可以发送json数据吗?

    建立TCP/IP连接后,可以发送json数据吗?
    发表于 10-18 06:05

    建立TCP/IP连接之后可以发送json的数据吗?

    建立TCP/IP连接之后,可以发送json的数据吗?​
    发表于 10-20 06:02

    TCP连接建立与终止

    学习TCP-IP的很好的书。TCP-IP详解卷1。
    发表于 05-10 15:44 0次下载

    大神告诉你TCP建立连接为什么是三次握手

    所谓三次握手(Three-Way Handshake)即建立TCP连接,是指建立一个TCP连接
    的头像 发表于 04-16 11:43 9988次阅读
    大神告诉你<b class='flag-5'>TCP</b><b class='flag-5'>建立</b><b class='flag-5'>连接</b>为什么是三次握手

    TCP通信通过网络调试助手与S7-1200建立TCP连接

    S7-1200 V4.5 版本开始支持网络视图组态开放式用户通信连接,不需要在程序中调用 TCON 等建立连接指令,只需要调用发送接收指令即可实现数据的收发。下面以 TCP 通信为例,
    的头像 发表于 07-06 15:39 9279次阅读

    TCP建立连接概述及三次握手、四次挥手的流程

    具备上述四个条件后A获取B的信息是有要求的,根本上的要求是数据信道可靠,就是平时所说的可靠连接,那么如何保证连接的可靠性呢,TCP协议就是靠确认应答机制、超时重传机制等保证连接可靠性的
    的头像 发表于 03-23 15:57 768次阅读
    <b class='flag-5'>TCP</b><b class='flag-5'>建立</b><b class='flag-5'>连接</b>概述及三次握手、四次挥手的流程

    什么是Socket连接?Socket与TCP连接的关系

    主机 A 的应用程序必须通过 Socket 建立连接才能与主机B的应用程序通信,而建立 Socket 连接需要底层 TCP/IP 协议来
    发表于 03-31 15:10 747次阅读

    TCP连接建立中的异常

        建连接时SYN超时问题 如果 server 端因为某种情况没有收到 client 回来的 ACK,那么,这个连接处还处于一个未建立的状态。于是,server端如果在一定时间内没有收到
    的头像 发表于 10-08 17:01 524次阅读

    TCP的长连接和短连接

    TCP在真正开始进行数据传输之前,Server 和 Client 之间必须建立一个连接。当数据传输完成后,双方不再需要这个连接时,就可以释放这个连接
    的头像 发表于 11-13 10:46 524次阅读