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

TCP三次握手,四次挥手

时间:2023-11-02 09:11:40浏览次数:30  
标签:ACK 报文 TCP 连接 四次 FIN 握手

# TCP三次握手,四次挥手

首先,讲一讲tcp的特点。tcp市一种可靠的传输层协议。它的特点如下:

① 面向连接

TCP是面向客户端和服务器端连接的通讯协议,即面向B/S的通讯协议。数据通信之前,必须要有一个连接通道建立。

② 可靠性

是指无论网络环境多差,TCP都可以保证信息一定能够传递到接收端。怎么保证可靠性呢?一个是“状态性”,另一个是“可控制性”。所谓状态性是指TCP会记录信息的发送状态,例如,哪些数据收到了、哪些数据没收到等状态信息都会被记录;可控制性是指TCP会根据状态情况控制自己的行为,比如当TCP意识到丢包了就会控制重发此包,这样就实现了TCP的可靠性。

③ 传输单位为数据段

比如:要传送一个1MB文件,那这个文件会被切割成诸多数据段来传输。

三次挥手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

image-20231101222009483

第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

image-20231102084950842

四次挥手

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。

(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。

(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。

(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

image-20231102085519013

为什么不能用两次握手进行连接?

我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。

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

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

参考:https://www.cnblogs.com/zmlctt/p/3690998.html、https://mp.weixin.qq.com/s/MyjC8RLR_9lgsfU2dGSprA

标签:ACK,报文,TCP,连接,四次,FIN,握手
From: https://www.cnblogs.com/ahui-blog/p/17804648.html

相关文章

  • 验证2个节点udp和tcp可通性
    -u表示udp,默认是tcp。-l表示作为server监听。server:192.168.0.104上开启udp123端口server发送11client:连接192.168.0.104上udp123端口client发送100 server:192.168.0.104上开启tcp123端口server发送102client:连接192.168.0.104上tcp123端口client发送101......
  • TCP三次握手与四次挥手
    一、TCP三次握手过程?​ TCP是面向连接的协议,所以使用TCP前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图:一开始,客户端和服务端都处于CLOSE状态。先是服务端主动监听某个端口,处于LISTEN状态客户端会随机初始化序号(client_isn),将此序号置于......
  • tcpdump抓包实例-syslog和ping
    在实际运维过程中经常遇到网络问题,比如发出去的包是否对端收到了,以下通过syslog和ping的两个例子看看tcpdump抓包过程。实例1:syslog测试主机A(本例中129.73)通过syslog发送信息:“123456”,给主机B日志服务器(本例中120.90,需要配置syslog服务514端口的tcp和udp打开),在日志服务器主机B上抓......
  • 抓包指令tcpdump和包处理editcap指令 使用
    editcap的使用按照时间范围进行截取包editcap-A'YYYY-MM-DDhh:mm:ss'-B'YYYY-MM-DDhh:mm:ss'infileoutfile 从infile文件中选取从A-B时间范围内的包输出到outfile中editcap-A'YYYY-MM-DDhh:mm:ss'infileoutfile从infile文件中选取A时间点之后的数据,输出......
  • 通过 TCPView 还发现个流氓 KPKIService.exe 删掉
    叫统一安全中间件,就是个第三方做的key的安全检查,谁知道是哪年装的资料https://baijiahao.baidu.com/s?id=1717384219148345375&wfr=spider&for=pc---------------------------------------------生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!https://p......
  • tcp bbr v3
    目前google发布了tcpbbrv2+fixbug===tcpbbrv3https://github.com/google/bbr/blob/v3/README.mdhttps://datatracker.ietf.org/meeting/117/materials/slides-117-ccwg-bbrv3-algorithm-bug-fixes-and-public-internet-deployment-00 http代理服务器(3-4-7层代理)-网络事件......
  • tcp连接断开的四次挥手。
    1.c端将FIN置1,向s端发送请求断开序列号例如是m;2.s端接收到后向c端发送应答将m+1;3.当s端完成数据交换也不需要通信的时候,向c端发送序列号n请求断开;4.c端将n+1后发送应答给s端。 ......
  • tcp三次握手。
    1.c端将SYN置一,然后向s端发送一串序列号例如x,这是第一次握手;2.s端接收到后发送x+1应答,同时发送一个自己的序列号y,这是第二次握手;3.c端收到应答后,将y+1发送给s端,完成第三次握手。注:SYN:同步的缩写,意思是双方保持步调一致。ACK:  确认字符。......
  • TCP基础
    一、TCP基本认识​ 介绍比较重要的部分​ ​ 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。​ 确认应答号:指下一次「期望」收到的数据的序列号,发送端收到这个......
  • netty同时支持tcp和websocket
    最近接手了别人的netty框架实现的im的一个项目,基于tcp实现通信,但是领导要求做一个网页版的聊天,接入到目前的系统,由于第一次接触这种项目,百度一圈大部分都是通过websocket实现通信的方式,最后通过chatgpt发现确实可以同时支持tcp和websocket,现在把方式放上Netty是一个高性能、异步事......