`
samuschen
  • 浏览: 407694 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

tcp三次握手和time wait

 
阅读更多

第一次握手:建立连接时,客户端发送syn包和一个随机序列号seq=x到服务器,并进入SYN_SEND状态,等待服务器进行确认。(syn,同 步序列编号)。第二次握手,服务器收到syn包,必须确认客户的SYN,然后服务器发送一个ACK=1, SYN=1, seq=y的随机数和ack=x+1的确认数的包发送回去。第三次握手是客户端收到服务器端的SYN+ACK包,然后向服务器端发送确认包 ack=y+1, seq=x+1, ACK=1,客户端和服务器端进入ESTABLISHED状态,完成三次握手。具体图示如下:

 

这里多说一点,既然提到了连接时的三次握手,就顺便把断开连接时的四次挥手也复习一下。首先客户端主动发送Fin=1,seq=u,它等于前面已传 送过去的最后一个字节的序号加1.这是A进入FIN-WAIT-1状态,等待B的确认。B收到连接后立即发出确认,确认号是ack=u+1,而这个报文段 自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号加1.然后B即进入CLOSE-WAIT状态。因而A到B的这个链接现在已经断开了,这时 的TCP连接处于半关闭状态,即A已经没有数据需要发送了。但B若发送数据,A还是要接受的。A收到来自B的确认之后就进入了FIN-WAIT-2状态等 待B发出连接释放报文段。若B已经没有要向A发送数据,其应用进程就通知TCP释放连接。这是B发出的连接释放报文段必须使用FIN=1.现在假定B的序 号为w,B还必须重复上次已发送过的确认号ack=u+1.这时B就进入了LAST-ACK状态,等待A确认。A在收到B的连接释放之后必须对此发出确 认。在确认号中把ACK置1,确认号ack=w+1,而自己的序号是seq=u+1。接着A进入TIME-WAIT状态。为了保证B可以收到确认释放报文 段。如上图:

 


是不是所有执行主动关闭的socket都会进入TIME_WAIT状态呢?
有没有什么情况使主动关闭的socket直接进入CLOSED状态呢?

主动关闭的一方在发送最后一个 ack 后
就会进入 TIME_WAIT 状态 停留2MSL(max segment lifetime)时间
这个是TCP/IP必不可少的,也就是“解决”不了的。

也就是TCP/IP设计者本来是这么设计的
主要有两个原因
1。防止上一次连接中的包,迷路后重新出现,影响新连接
(经过2MSL,上一次连接中所有的重复包都会消失)
2。可靠的关闭TCP连接
在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发
fin, 如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。所以
主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。

分享到:
评论

相关推荐

    TCP三次握手与四次挥手.pdf

    首先,来详细介绍TCP三次握手的过程: 1. 第一次握手:客户端发送一个带有SYN(同步序列编号)标志的数据包给服务器端,进入SYN_SEND状态,表示客户端希望与服务器建立连接。这个包中同时也会包含客户端的初始...

    TCP三次握手和四次挥手面试题详解.pdf

    TCP三次握手和四次挥手是互联网中最重要的基础知识点之一,尤其在面试中,它们是检验应聘者是否具备扎实网络基础知识的常用问题。面试官通常会考察应聘者对这些过程的理解程度,以及能否准确描述其细节。以下是关于...

    TCP三次握手和四次挥手

    为了更好地理解TCP三次握手和四次挥手的过程,我们首先需要了解TCP头部的各个字段及其作用。 1. **源端口(Source Port)** 和 **目的端口(Destination Port)** - 这两个字段各占用16位,分别表示发送端和接收端的...

    TCP 三次握手和四次挥手

    ### TCP 三次握手详解 #### 一、三次握手的基本概念 TCP(Transmission Control Protocol,传输控制协议...以上就是TCP三次握手、四次挥手及其11种状态的详细介绍。这些基础知识对于理解和分析网络通信问题至关重要。

    TCP三次握手与四次挥手

    TCP 三次握手与四次挥手 TCP/IP 协议中,建立连接协议是三次握手,而关闭连接是四次挥手。下面我们详细地解释这两种握手机制的知识点。 三次握手 在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手...

    案例测试TCP的三次握手和四次挥手过程

    如本案例所示,可以通过编写C语言的服务器端程序和C#的客户端程序来模拟TCP的连接和断开过程,同时使用Wireshark这样的网络抓包工具,可以直观地观察到三次握手和四次挥手的网络交互细节,这对于理解TCP协议的工作...

    TCP三次握手,四次断开

    ### TCP三次握手详解 #### 第一次握手:客户端发送同步序列号(SYN) - **动作描述**:在TCP连接建立过程中,客户端首先发起连接请求,它通过向服务器发送一个带有`SYN`标志位的数据包来实现。这个数据包包含了...

    TCP三次握手和四次挥手详解.docx

    "TCP三次握手和四次挥手详解" TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,它通过三次握手和四次挥手来确保连接的建立和终止。 一、TCP 三次握手 TCP 三次握手是指在客户端和...

    TCP三次握手四次挥手

    ### TCP三次握手与四次挥手详解 #### 一、TCP协议简介 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在计算机网络中,TCP用于在应用程序之间提供...

    tcp三次握手四次挥手

    ### TCP三次握手与四次挥手详解 #### 一、TCP协议概述 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接、可靠的、基于字节流的传输层通信协议。它在互联网的应用层与网络层之间提供了一种稳定...

    三次握手于四次挥手.docx

    在HTTP通信过程中,TCP的三次握手和四次挥手起着至关重要的作用,确保了连接的建立和终止的正确性。下面将详细解释这两个过程。 ### 三次握手 三次握手是为了在客户端和服务器之间建立一个可靠的连接。具体步骤...

    TCP三次握手 四次断开1

    总结来说,TCP的三次握手和四次挥手是为了确保连接的可靠性,三次握手确保双方都有能力接收和发送数据,四次挥手则确保双方都能安全地关闭连接,避免数据丢失或连接混乱。TIME_WAIT状态的存在进一步增强了这种可靠性...

    tcp三次握手四次挥手.md

    TCP三次握手和四次挥手是计算机网络中用于实现可靠传输的基础机制。TCP协议通过这两种机制确保数据能够准确无误地从发送端传输到接收端,同时保证连接的建立和关闭是有序的。 ### 三次握手 三次握手是TCP连接建立...

    TCP三次握手与四次挥手简解(csdn)————程序.pdf

    它的三次握手和四次挥手是TCP连接建立与终止的关键过程,确保了数据传输的可靠性和完整性。 ### 三次握手 三次握手是TCP在建立连接时必须遵循的步骤,其目的是为了防止已失效的连接请求报文突然又传到服务端,从而...

    tcp三次握手四次挥手.docx

    ### TCP三次握手与四次挥手详解 #### 一、引言 在计算机网络领域中,传输控制协议(TCP)作为互联网协议族中的重要成员之一,为应用层提供面向连接、可靠的数据传输服务。TCP通过一系列复杂的机制来确保数据包在...

    TCP三次握手和四次分手.doc

    TCP 的连接建立与终止过程是其可靠性的关键体现,具体包括了三次握手和四次分手。 **三次握手**是TCP连接建立的过程,确保双方都有能力接收和发送数据。这一过程分为以下三个步骤: 1. **第一次握手**:客户端...

    TCP三次握手在linux内核中的实现.doc

    TCP三次握手是TCP/IP...总的来说,Linux内核通过精细的状态管理和回调机制,实现了TCP三次握手的高效和可靠执行。无论是阻塞还是非阻塞模式,都保证了连接过程的正确性,从而为应用程序提供了一致且可靠的通信基础。

    02_TCP三次握手四次挥手的过程1

    **TCP三次握手**: 1. **第一次握手**:客户端想要与服务器建立连接,它会发送一个带有SYN(同步序列编号)标志的数据包给服务器,请求建立连接,进入SYN_SENT状态。 2. **第二次握手**:服务器收到客户端的SYN包后...

    TCP三次握手&四次挥手

    ### TCP三次握手与四次挥手详解 #### 一、TCP协议概述 传输控制协议(Transmission Control Protocol,简称TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在互联网应用中,TCP协议因其可靠性和稳定...

Global site tag (gtag.js) - Google Analytics