首页 > 其他分享 >TCP三次握手/四次挥手

TCP三次握手/四次挥手

时间:2023-06-29 14:32:25浏览次数:64  
标签:seq ack 主机 握手 TCP 四次 关闭 服务器 FIN

三次握手

第一次握手:主机 A 发送位码为 syn=1,随机产生 seq number=1234567 的数据包到服务器,主机 B由 SYN=1 知道,A 要求建立联机;

第二次握手:主机 B 收到请求后要确认联机信息,向 A 发 送 ack number=( 主 机 A 的seq+1),syn=1,ack=1,随机产生 seq=7654321 的包;

第三次握手:主机 A 收到后检查 ack number 是否正确,即第一次发送的 seq number+1,以及位码ack 是否为 1,若正确,主机 A 会再发送 ack number=(主机 B 的 seq+1),ack=1,主机 B 收到后确认,seq 值与 ack=1 则连接建立成功。

TCP三次握手/四次挥手_四次挥手

四次挥手

TCP建立连接要进行三次握手,而断开连接要进行四次。这时由于TCP的半关闭造成的。因为TCP连接是全双工的(即数据可在两个方向上同时传输)所以进行关闭时每个方向上都要进行单独关闭。这个单方向的关闭就叫半关闭。当一方完成它的数据发送任务,就发送一个FIN来向另一方通告将要终止这个方向的连接。

1.关闭客户端到服务器的连接:首先客户端AA 发送一个 FIN,用来关闭客户到服务器的数据传送,然后等待服务器的确认。其中终止标志位 FIN=1,序列号 seq=u

2) 服务器收到这个 FIN,它发回一个 ACK,确认号 ack 为收到的序号加 1。

3) 关闭服务器到客户端的连接:也是发送一个 FIN 给客户端。

4) 客户段收到 FIN 后,并发回一个 ACK 报文确认,并将确认序号 seq 设置为收到序号加 1。首先,进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

TCP三次握手/四次挥手_四次挥手_02

主机 A 发送 FIN 后,进入终止等待状态, 服务器 B 收到主机 A 连接释放报文段后,就立即给主机 A 发送确认,然后服务器 B 就进入 close-wait 状态,此时 TCP 服务器进程就通知高层应用进程,因而从 A 到 B 的连接就释放了。此时是“半关闭”状态。即 A 不可以发送给B,但是 B 可以发送给 A。此时,若 B 没有数据报要发送给 A 了,其应用进程就通知 TCP 释放连接,然后发送给 A 连接释放报文段,并等待确认。A 发送确认后,进入 time-wait,注意,此时 TCP 连接还没有释放掉,然后经过时间等待计时器设置的 2MSL 后,A 才进入到close 状态。

标签:seq,ack,主机,握手,TCP,四次,关闭,服务器,FIN
From: https://blog.51cto.com/u_11315052/6582469

相关文章

  • C#TCP通讯
    服务端代码TcpListenertcpListener=newTcpListener(IPAddress.Parse("192.168.1.1"),9000);tcpListener.Start();//启动服务While(true){TcpClienttcpClient=tcpListener.AcceptTCPClient();//收到链接NetWorkStreamsteam=tcpClient.GetStream();byte[]receiveData=n......
  • ETH-TCP协议与常见问题分析
    SourcePort:源端口,标识发送方的应用进程DestinationPort:目的端口,标识接收方的应用进程SequenceNumber:序列号,用于标识从发送端发出的不同的TCP数据段的序号。数据段在网络中传输时,它们的顺序可能会发生变化;接收端依据此序列号,便可按照正确的顺序重组数据。保证数据传输的有序性......
  • Kong入门学习实践(6)HTTPS与TCP流代理
    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。本篇,我们学习快速配置HTTPS跳转与TCP流代理。HTTPS跳转配置HTTP协议虽然应用广泛,简单易用,但存在着巨大的安......
  • TCP的拥塞发生时为什么超时重传触发的是cwnd重置为1,而快速恢复触发的cwnd设置为cwnd/2
    首先要明确的是超时重传的情况相对于快速恢复而言是更恶劣的,发生了超时重传可以理解为超过了设定的时间都没有收到3个相同的ACK,那么网络肯定拥堵的更严重。所以超时重传时将cwnd重置为1,尽可能少的向网络中发送数据。而快速恢复不以时间为标度,触发条件是接收到了三个相同的ACK。......
  • tcp_bbr 代码分析
     brr算法流程:bbr算是一个完全独立的拥塞算法,具有自己的拥塞状态机.tcp_cong_control函数已经被bbr_main函数接管了 staticvoidtcp_cong_control(structsock*sk,u32ack,u32acked_sacked,intflag,conststructrate_sample*rs){conststr......
  • TCP相关知识
    1、TCP可靠传输是怎么实现的?TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的传输协议。在TCP中,可靠传输是通过以下几种机制来实现的:序列号和确认应答机制:在TCP通信过程中,每个数据包都有一个唯一的序列号。接收方通过确认应答机制来告诉发送方已经正......
  • TCP连接中CLOSE_WAIT状态的原因与解决方法?
        关闭socket分为主动关闭和被动关闭两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接;将关闭部分的状态转移摘出来,就得到了下图: 产生原因?通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状......
  • Modbus RTU 转 Modbus TCP协议转换网关
    现今,工业自动化系统中,西门子和欧姆龙PLC是最常用的控制器之一。然而,由于PLC之间使用的通信协议不尽相同,因此需要一种能够实现多种协议转换的采集网关产品。BL110采集网关就是一款能够支持西门子和欧姆龙PLC远程数据上云平台的产品。BL110采集网关采用嵌入式Linux系统开发,具有高度的......
  • 监听调试web service的好工具TCPMon
    一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢。 首先我们先介绍一下一个简单的远程监控程序的实现原理。 功能一,远程屏幕监视 (1)必须要有监控端与被监控端,而且程序保持启动。 (2)被监控端获取本机的屏幕截屏发图给监控端。 (3)监控端在......
  • tcpdump捕获网络http流量
    tcpdump-iany-s0-A|egrep-i"POST/|GET/|Host:" 这个命令将使用tcpdump捕获网络流量,并过滤出包含POST、GET和Host字段的流量。具体各选项的含义如下:*`-iany`:捕获任何网络接口的流量。*`-s0`:指定抓包时每个数据包的只捕获前0个字节,即只捕获数据包的头部信息,......