【Linux网络】TCP/IP三次握手、四次挥手流程

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

目录

一、三次握手,建立连接

二、四次挥手,断开连接

三、主要字段

 1、标志位(Flags)

 2、序号(sequence number)

 3、确认号(acknowledgement number)

四、三次握手的报文变化

五、四次挥手的报文变化

六、面试题


一、三次握手,建立连接

【Linux网络】TCP/IP三次握手、四次挥手流程,网络,linux,tcp/ip

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

  1. 第一次握手: 建立连接时,客户端 发送 SYN 包到 服务器,并且,客户端 进入 SYN_SENT状态,等待 服务器 确认;
  2. 第二次握手: 服务器 收到 SYN包 后,同时,发送一个 SYN+ACK 包给 客户端 ,此时,服务器进入 SYN_RCVD 状态;
  3. 第三次握手: 客户端 收到服务器的 SYN+ACK 包后,向 服务器 发送确认的 ACK 包 。此包发送完毕,客户端 和 服务器 进入 ESTABLISHED 状态,完成三次握手。

  完成三次握手,建立好链接。

二、四次挥手,断开连接

【Linux网络】TCP/IP三次握手、四次挥手流程,网络,linux,tcp/ip

  1. 第1次挥手:主动关闭方 向 被动关闭方 发送一个 FIN 包 。也就是主动关闭方 告诉 被动关闭方 :我已经不会再给你发数据了。

  2. 第2次挥手:被动关闭方 收到 FIN 包后,发送一个 ACK 包给 主动关闭方 。 就告诉 主动关闭方 已收到通知 。

  3. 第3次挥手:被动关闭方 又发送一个 FIN 包,给 主动关闭方,用来关闭 被动关闭方 到 主动关闭方 的数据传送。也就是告诉 主动关闭方,我的数据也发送完了,不会再给你发数据了。

  4. 第4次挥手:主动关闭方 收到 FIN 包后,发送一个 ACK 包给 被动关闭方 ,至此,完成四次挥手。

  注意:第2次和第3次, 被动关闭方 连续两次向 主动关闭方 发送报文。

三、主要字段

 1、标志位(Flags)

标志位 含义 说明
SYN 发起建立连接 当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该有 SYN=1,ACK=1。
ACK 确认标识 当ACK=1,确认标识才有效。(为了与 确认号ack 区分开,我们一定要用大写字母)
FIN 释放连接 当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放。
PSH 读取数据 当PSH=1,提示接收端应用程序立即从TCP缓存区把数据读走。
RST 重置连接 当RST=1,表时TCP连接出现严重差错,必须释放连接,在后再重新连接。
URG 紧急指针 当URG=1,表明紧急指针字段有效,告诉系统此报文段中有紧急数据。

 2、序号(sequence number)

  seq序号,占32位。用来标识从TCP 源端 向 目的端 发送的字节流,发起方 发送数据时对此进行标记。

 3、确认号(acknowledgement number)

   ack 序号,占32位。只有 ACK 标志位为1时,确认序号字段才有效,ack=seq+1。

四、三次握手的报文变化

【Linux网络】TCP/IP三次握手、四次挥手流程,网络,linux,tcp/ip

五、四次挥手的报文变化

【Linux网络】TCP/IP三次握手、四次挥手流程,网络,linux,tcp/ip

六、面试题

 1、为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

  建立连接时,ACK 和 SYN可以放在一个报文里来发送。而关闭连接时,被 动关闭方 可能还需要发送一些数据后,再发送 FIN 报文表示同意现在可以关闭连接了,所以它这里的 ACK报文 和 FIN报文 多数情况下都是分开发送的。

 2、为什么必须是三次握手,不能用两次握手进行连接?

  TCP 建立连接时,通过 三次握手 能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。

  不使用「两次握手」和「四次握手」的原因:

「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

 3、三次握手、四次挥手的目的

  三次握手 :是为了保证双方都准备好了资源。

  四次挥手 :是为了保证双方把资源都释放掉了。

 4、tcp三次握手的过程, accept发生在三次握手哪个阶段?

  client 的 connect 引起3次握手。

  server 在socket, bind, listen后,阻塞在accept,三次握⼿手完成后, accept 返回⼀一个fd,因此 accept 发⽣生在三次握⼿手之后。

 5、四次挥手,为什么 TIME_WAIT 状态还需要等 2MSL 后才能返回到 CLOSED 状态?

  两个存在的理由:

  1、无法保证最后发送的 ACK报文 会一定被对方收到,所以需要重发可能丢失的 ACK报文。

  2、关闭链接一段时间后可能会在相同的IP地址和端口建立新的连接,为了防止旧连接的重复分组在新连接已经终止后再现。2MSL足以让分组最多存活 MSL秒 被丢弃。


本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

【Linux网络】TCP/IP三次握手、四次挥手流程,网络,linux,tcp/ip

【Linux网络】TCP/IP三次握手、四次挥手流程,网络,linux,tcp/ip文章来源地址https://www.toymoban.com/news/detail-712417.html

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

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

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

相关文章

  • Linux网络编程:三次握手 & 四次挥手

    建立TCP可靠连接,只能是客户端先发起。   (1)SYN标志位为1,表示请求建立连接;ACK标志位为1,表示确认收到对方报文。 (2)seq为数据包序列号,ack为确认序列号。 (3)ack确认序列号含义:                 a)确认收到对方报文;                 b)希望收到

    2024年02月03日
    浏览(49)
  • 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日
    浏览(41)
  • Linux网络编程二(TCP图解三次握手及四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)

    1、TCP三次握手 TCP 三次握手 (TCP three-way handshake)是 TCP协议建立可靠连接 的过程,确保客户端和服务器之间可以进行可靠的通信。下面是TCP三次握手的 详细过程 : 假设客户端为A,服务器为B。 (1) 第一次握手 第一次握手(SYN=1,seq=500) A向B发送一个带有 SYN 标志位的数据包,

    2024年04月22日
    浏览(54)
  • 详解TCP/IP的三次握手和四次挥手

    本文章讲解TCP/IP协议的三次握手和四次挥手的流程。 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。 TCP协议位于传输层,作用是提供可靠的字节流服务

    2024年02月09日
    浏览(49)
  • TCP/IP 三次握手&四次挥手详解,以及异常状态分析

    1.TCP/IP 三次握手 TCP/IP 三次握手过程 主要依靠IP协议报文中的 SYN ACK 两个标识位,SYN 表示是请求连接的报文,ACK 表示确认报文的请求 过程: 客户端处于 CLOSE 状态,服务器处于 LISTEN 状态,客户端向服务器发送请求连接报文,SYN=1 seq=x,发送成功后,客户端状态修改为 SYN_SEND

    2024年02月22日
    浏览(37)
  • 网络连接管理除了TCP三次握手,还有TCP四次挥手

    网络通信 建立连接 ,TCP会进行三次握手,三次握手主要是两个主机之间建立连接,和其他没有什么关系,那么两个主机之间是如何进行三次握手的呢?他们又会使用什么操作来建立连接呢? 这里我们先了解一下TCP的报文结构: 三次握手主要是理解成客户端与服务器经过三次

    2024年02月07日
    浏览(63)
  • 【网络原理】TCP连接管理机制(三次握手四次挥手)

    🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 在使用TCP协议进行网络交互时,TCP会进行三次握手即建立连接,TCP四次挥手即断开连接。三次握手与四次挥手后就完成了网络交互,这样的操作也叫TCP的连接

    2024年02月09日
    浏览(48)
  • 【计算机网络】TCP 的三次握手和四次挥手

    TCP 是面向连接的,面向连接就是数据通讯的时候需要进行三次握手,断开通讯的时候需要进行四次挥手。 1.seq(sequence number),序列号,随机生成的 2.ack(acknowledgement number),确认号,ack=seq+1 3.ACK(acknowledgement),确定序列号有效 4.SYN(synchronous),发起新连接 5.FIN(FINISH),完成 TCP三次

    2024年02月10日
    浏览(48)
  • 网络扫盲:Tcp协议和hettp、https协议、三次握手四次挥手

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

    2024年02月04日
    浏览(95)
  • 计算机网络面经之TCP三次握手和四次挥手的详解

    1.详细描述三次握手和四次挥手的过程。 2.三次握手可以变成两次握手吗? 3.简述 TCP 连接和关闭的状态转移。 4.简述TCP 四次挥手的 TIME_WAIT状态,以及为什么需要有这个状态 (1)序号(sequence number):seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据

    2024年02月12日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包