简单介绍TCP协议三次握手过程:对于网络工程师来说,TCP协议几乎是大家每天都会接触到的网络协议,要知道,绝大多数网络连接的建立都是基于 TCP 协议的,那么接下来,我们就要来简单介绍一下使用 TCP 协议建立连接所需要经过的三次握手过程。
何为TCP协议三次握手?
先来说说什么是TCP协议三次握手,所谓三次握手,英文我们称Three-Way Handshake,即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。
TCP协议三次握手的目的
那么为什么要进行三次握手呢?就是在你来我间,确认信息,以便建立连接。谢希仁的《计算机网络》中是这么说的:“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。三次握手其实就是为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。业内有一个通俗的说法:“喂,你听得到吗?”“我听得到呀,你听得到我吗?”“我能听到你”虽然不能说是很全面的,但是也有助于大家更简单的理解它。
TCP协议三次握手过程
第一次握手
客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器,客户端进入SYN_SENT状态,等待服务器确认。
第二次握手
服务器收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器进入SYN_RCVD状态。
第三次握手
客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器,服务器检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器进入ESTABLISHED(TCP连接成功)状态。
完成三次握手,客户端与服务器就开始传送数据了。
TCP协议三次握手中的一些概念
在TCP协议三次握手过程中,还有一些重要的概念:比如说未连接列队、Backlog参数、半连接存活时间等等。当服务器维护一个未连接队列,该队列为每个客户端的SYN包(seq=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包;Backlog参数表示内核为相应套接字排队的最大连接个数;而半连接存活时间是指半连接队列的条目存活的最长时间,也即服务器从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。
编程学习网教育,拥有十年华为网络工程师认证培训经验,编程学习网教育一直坚持自主研发,将丰富的华为网络工程师培训经验有效融入教程研发过程,自成体系的华为网络工程师视频教程和华为网络工程师培训教材、华为网络工程师在线题库等使考生的学习更具系统性,辅导更具针对性。
>>>>>>点击进入华为认证专题