`
jaesonchen
  • 浏览: 312984 次
  • 来自: ...
社区版块
存档分类
最新评论

TCP/IP 三次握手协议过程

 
阅读更多

一、TCP报文格式

  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,两端配对。 

 

二、三次握手

TCP(Transmission Control Protocol) 传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接

位码即tcp标志位,有6种标示:

 

SYN(synchronous建立联机)

ACK(acknowledgement 确认)

PSH(push传送)

FIN(finish结束)

RST(reset重置)

URG(urgent紧急)

 

Sequence number(顺序号码)

Acknowledge number(确认号码) 

establish  建立,创建

 

  所谓三次握手(Three-Way Handshake)即建立TCP连接,是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:



 

 

  (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

 

  (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack (number )=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之间可以开始传输数据了。

 

 

  SYN攻击

  在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:

  #netstat -nap | grep SYN_RECV

  

 

三、四次挥手

 三次握手耳熟能详,四次挥手估计就..所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在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状态,完成四次挥手。



 

 

  上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况,具体流程如下图:



  

  流程和状态在上图中已经很明了了,在此不再赘述,可以参考前面的四次挥手解析步骤。

分享到:
评论

相关推荐

    TCP/IP协议三次握手

    三次握手,TCP/IP协议三次握手,TCP/IP协议三次握手

    TCP-IP详解卷一:协议_TCP-IP详解_TCP/IP_tcp/ip详解_

    TCP通过三次握手建立连接,确保双方都有发送和接收能力。在数据传输过程中,TCP使用滑动窗口机制进行流量控制,防止拥塞,并通过确认和重传机制保证数据的可靠性。 IP(Internet Protocol)则是网络层的主要协议,...

    tcp/ip,三次握手四次死挥手

    TCP/IP 协议群,三次握手四次死挥手 TCP/IP 协议群是计算机网络中最重要的基础协议之一,它是指一组使用 IP 进行通信时所必须用到的协议的统称。TCP/IP 协议群包括 IP、ICMP、TCP、UDP、TELNET、FTP、HTTP 等协议,...

    Tcp/Ip三卷合集

    传输层的TCP和UDP协议是整个卷一的核心,Stevens深入分析了TCP的三次握手、数据流控制和拥塞控制,为理解稳定可靠的网络通信打下基础。这部分内容对于网络通信的基础知识起到了至关重要的作用。 《TCP/IP详解卷二:...

    tcp/ip详解第三卷

    TCP是一种面向连接的、可靠的传输协议,通过三次握手建立连接,通过滑动窗口机制实现流量控制和拥塞控制,确保数据的正确无误传输。书中详细阐述了TCP的各种算法,包括慢启动、快速重传和快速恢复等,这些都是TCP...

    TCP/IP协议详解全三卷 下载

    书中深入探讨了这些协议的工作原理,如IP地址的分配、分片与重组、TCP的三次握手和四次挥手、拥塞控制等机制。 第二卷《TCP/IP实现》则侧重于实际的实现细节,比如TCP的连接管理、滑动窗口机制、超时与重传策略,...

    tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议

    TCP是一种面向连接的协议,它通过三次握手建立连接,确保数据传输的可靠性。TCP协议提供顺序控制、重传控制、流量控制和拥塞控制等机制,适用于文件传输、邮件传输等需要保证数据完整性的场景。与TCP相对的是UDP协议...

    TCP/IP协议族(第四版)习题答案

    习题可能涉及到TCP的三次握手、四次挥手、拥塞控制、滑动窗口机制以及UDP的特点与应用场景。 应用层是最接近用户的层次,包含了众多的应用协议,如HTTP、FTP、SMTP、DNS等。HTTP用于网页浏览,FTP用于文件传输,...

    TCP/IP的三次握手建立连接(带图释)

    在TCP/IP的连接建立过程中,三次握手是至关重要的步骤。这一过程确保了双方都能正确接收和理解彼此的连接请求,从而建立起可靠的通信链路。下面详细解析三次握手的过程: 1. **第一次握手**:客户端(如图中的...

    tcp/ip协议.pdf

    TCP/IP的三次握手和四次挥手是理解TCP连接建立和终止的关键过程。三次握手指的是在建立连接时,客户端和服务器之间进行的一系列通信步骤,以确认双方的接收和发送能力;四次挥手则是断开TCP连接时双方进行的确认和...

    TCP/IP协议分析与应用学习资料

    TCP通过三次握手建立连接,并在数据传输结束后四次挥手断开连接。 IP(Internet Protocol)是网络层的主要协议,负责数据包在网络中的路由。它不保证数据包的顺序或可靠性,但提供了基本的寻址机制,使得数据包能够...

    TCP IP 详解三宗卷,tcp,ip详解(三卷全)pdf,C,C++

    卷3《TCP/IP详解:TCP事务协议》聚焦于TCP的事务处理,如TCP的三次握手和四次挥手过程,这是建立和断开TCP连接的关键步骤。同时,这本书也探讨了TCP的性能优化和异常情况处理,以及TCP与其他应用层协议的交互。 ...

    TCP/IP协议栈的设计与实现

    LwIP通过实现TCP协议的关键特性,如三次握手、慢启动、快速重传等,来确保数据的可靠传输。 #### 使用示例与API LwIP提供了丰富的API接口,使得开发者能够轻松地开发基于TCP/IP的应用程序。API覆盖了从基本的网络...

    tcp/ip网络协议

    书中可能涵盖了网络通信的基本概念,如IP地址、子网掩码、端口号,以及TCP连接的三次握手和四次挥手过程,还有拥塞控制、滑动窗口机制等高级主题。 TCP/IP协议族的复杂性和广泛应用使得理解其工作原理对于任何IT...

    TCPIP网络协议.rar_22SZ_TCP/IP_antspjy_tcpip 编程_网络协议

    2. **三次握手**:TCP连接建立时需要通过三次握手确认双方可以进行可靠通信。 3. **四次挥手**:当通信结束,双方通过四次挥手来关闭连接。 4. **阻塞与非阻塞I/O**:理解如何处理网络I/O,选择合适的模式提高程序...

    图解TCP/IP协议

    建立TCP连接通道的过程涉及三次握手(three-way handshake)。第一次握手是客户端发送一个SYN(synchronize sequence numbers)包到服务器,以表达建立连接的请求,然后客户端进入SYN_SEND状态。第二次握手是服务器...

    TCP/IP详解 TCP/IP协议

    2. **传输层**:TCP协议的详细机制,如三次握手建立连接、四次挥手断开连接、拥塞控制、流量控制和超时重传。 3. **应用层**:HTTP、FTP、DNS等常见应用层协议的介绍,它们是如何利用TCP/IP进行通信的。 4. **网络...

    TCP/IP源码 完整的TCP/IP代码程序

    在源码中,你会看到TCP连接的建立(三次握手)、数据传输、以及断开连接(四次挥手)的过程。此外,TCP还采用了滑动窗口机制来控制流量和实现拥塞避免。 2. **IP(网际协议)**:IP负责将数据包发送到目标地址,它...

    tcp/ip详解,卷2:实现源码

    1. **TCP连接管理**:包括三次握手建立连接和四次挥手断开连接的过程。源码中会展示如何处理SYN、ACK、FIN等不同类型的报文段,以及超时重传和半关闭状态的处理。 2. **滑动窗口机制**:TCP使用滑动窗口来控制流量...

    TCP/IP协议学习PPT

    6. **TCP连接与三次握手**:TCP连接建立时的三次握手过程,包括SYN(同步序列编号)、SYN+ACK(同步并确认)和ACK(确认)的交互,确保双方都能正确接收和发送数据。 7. **TCP的四次挥手断开连接**:释放TCP连接时...

Global site tag (gtag.js) - Google Analytics