我是靠谱客的博主 愤怒往事,最近开发中收集的这篇文章主要介绍TCP建立(三次握手)与断开(四次握手),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

常见的面试题之一

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表示报文中不包含确认信息,忽略确认号字段。

 

最后

以上就是愤怒往事为你收集整理的TCP建立(三次握手)与断开(四次握手)的全部内容,希望文章能够帮你解决TCP建立(三次握手)与断开(四次握手)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部