tcp/ip报文三次握手四次挥手

pjl1119 pjl1119     2022-12-30     336

关键词:

1、TCP报文格式
  TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:
技术分享图片
图1 TCP报文格式
  上图中有几个字段需要重点介绍下:
  (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
  (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
  (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
  (A)URG:紧急指针(urgent pointer)有效。
  (B)ACK:确认序号有效。
  (C)PSH:接收方应该尽快将这个报文交给应用层。
  (D)RST:重置连接。
  (E)SYN:发起一个新连接。
  (F)FIN:释放一个连接。

需要注意的是:
  (A)不要将确认序号Ack与标志位中的ACK搞混了。
  (B)确认方Ack=发起方Req+1,两端配对。 

 

2、建立一个TCP连接时,三次握手

在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:


技术分享图片
图2 TCP三次握手
  (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
  (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
  (3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

 

3、断开连接时,四次挥手

在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:


技术分享图片

 由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
 (1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  (2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
 (3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

 

4、为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
  这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

 



























tcp/ip协议三次握手与四次挥手

一、TCP报文格式      TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1TCP报文格式      上图中有几个字段需要重点介绍下:      (1... 查看详情

tcp协议三次握手与四次挥手通俗解析

 TCP/IP协议三次握手与四次握手流程解析一、TCP报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用... 查看详情

转---tcp三次握手四次挥手synfin......

http://blog.chinaunix.net/uid-22312037-id-3575121.html转自 一、TCP报文格式      TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1TCP报文格式      上图中有几 查看详情

tcp/ip三次握手和四次挥手

...认)确认序号有效  PSH(push传送)接收方应该尽快将这个报文交给应用层   查看详情

计算机网络—三次握手,四次挥手

...;是无连接的,IP数据报包含了IP首部和IP数据部分。TCP报文段TCP传输给IP的数据单元称作TCP报文段,TCP协议是面向有连接的协议,“有连接”的意思是TCP协议需要维护后续数据的状态信息。TCP连接中传送的数据流中的每... 查看详情

tcp/ip三次握手与四次挥手的正确姿势

A理解TCP/IP三次握手与四次挥手的正确姿势https://www.cnblogs.com/lms0755/p/9053119.htmlB四次挥手过程理解https://blog.csdn.net/qq_38950316/article/details/81087809CTCP三次握手四次挥手详解http://www.cnblogs.com/zmlctt/p/3690998.html 查看详情

三次握手四次挥手的原理

...小信息。1.第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,SequenceNumber为x;然后,客户端进入SYN_SEND状态,等待服务器的 查看详情

三次挥手四次挥手(转载)

...小信息。1.第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,SequenceNumber为x;然后,客户端进入SYN_SEND状态,等待服务 查看详情

tcp/ip三次握手四次挥手

TCP三次握手所谓握手,也就是建立连接,三次过程。三次握手旨在连接到服务端的指定端口,进行通信。建立一个TCP连接,需要向客户端和服务端发送三个包。其中包含同步序列号和确认号以及TCP窗口大小的信息交换。一般触发... 查看详情

tcp三次握手四次挥手

TCP三次握手四次挥手三次握手指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互:OSI参考模型中的网络层,在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。(TCP在运输层,IP在网... 查看详情

tcp/ip协议三次握手和四次挥手大白话解说

TCP/IP协议三次握手和四次挥手大白话解说前言昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧... 查看详情

图解tcp三次握手与四次挥手——北杨

TCP/IP、UDP协议简单介绍  TCP三次握手TCP四次挥手 【附上学习链接】https://www.bilibili.com/video/av21816559/?p=2 查看详情

tcp协议的三次握手和四次挥手机制

核心知识点:1.三次握手:seq和acknumber2.四次挥手:FIN和随机数 一、TCP/IP协议TCP/IP协议(Transmissioncontrolprotool/Internetprotool)叫做传输控制/网际协议,又叫做网络通讯协议。这个协议是Internet国际互联网络的基础,TCP/IP协议是网... 查看详情

关于tcp/ip的三次握手和四次挥手解释

TCP协议三次握手过程分析TCP(TransmissionControlProtocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH... 查看详情

tcp三次握手和四次挥手

...初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报文段1。2)服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号... 查看详情

使用wireshark分析tcp/ip三次握手和四次挥手

TCP三次握手示意图Wireshark抓包注意事项为了演示一个TCP三次握手建立连接的过程,我们通过Chrome访问一个网页。已知HTTP协议就是建立在TCP链接上的比如访问以下的网址:http://toutiao.newmedia139.net/通过Cmd的ping命令获取这个网站对应... 查看详情

tcp/ip协议三次握手与四次挥手

...接ACK标志位:确认序号有效FIN标志位:断开连接 二.三次握手三次握手是客户端与服务端建立一个TCP连接时,需要客户端和服务端发送三个包建立连接的过程(1)第一次握手  客户端将SYN置为1,随机产生一个seq序号=J,将... 查看详情

tcp三次握手四次挥手

...次挥手。三次握手,建立连接 首先Client发送连接请求报文,Server端接收连接后回复ACK报文,并为这次连接分配资源。Client接收到ACK报文后也向Server端发送ACK报文,并分配资源,这样TCP连接就建立。四次挥手断开连接可以是Cli... 查看详情