TCP建立(三次握手)与断开(四次握手)

来源:互联网 发布:涉密网络 编辑:程序博客网 时间:2024/06/07 23:51

常见的面试题之一

TCP建立(三次握手)

1. Client 首先发送SYN包(syn = i )到 Server端,并进入SYN_SEND状态,等待服务器确认。

2 . Server端收到Client端的syn包后,将会通知Client收到该Syn包(即:发送ack = i +1),同时发送给Client一个Syn包(syn = j),即syn + ack,此时,服务器进入SYN_RECV状态

3。Client收到Server的syn+ack包,同时向Server发送确认包ack (ack = j + 1)

 

至此,Client和Server进入ESTABLISHED状态,完成三次握手。

 

TCP断开(四次握手)

1. Client首先向Server端发送fin包(fin = m)

2. Server端收到fin包后,发送确认包ack(ack = m + 1),Client收到Server端的ack后,将会等待server的fin包。

3. Server发送fin包(fin = n)到Client端

4. Client收到fin包,并发送ack = n + 1

 

之后,Client和Server将断开连接。(在发送fin包之后表示该端不能继续发送数据了,但还可以接受数据)

 

术语解释:(来自百度百科)

SYN (synchronize):

        SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。

  TCP连接的第一个包,非常小的一种数据包。SYN 攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。每个机器的欺骗包都要花几秒钟进行尝试方可放弃提供正常响应。

 

ACK (Acknowledgement):

        在数据通信传输中,接收站发给发送站的一种传输控制字符。它表示确认发来的数据已经接受无误。

        在TCP/IP协议中,如果接受方成功的接收到数据,那么会回复一个ACK数据。通常ACK信号有自己固定的格式,长度大小,由接受方回复给发送方。其格式取决于采取的网络协议。当发送方接收到ACK信号时,就可以发送下一个数据。如果发送方没有收到信号,那么发送方可能会重发当前的数据包,也可能停止传送数据。具体情况取决于所采用的网络协议。ACK信号通常是一个ASCII字符,不同的协议中ACK信号都不一样。

  TCP报文格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表示确认号有效,为0表示报文中不包含确认信息,忽略确认号字段。

 

原创粉丝点击