TCP(Transmission Control Protocol) 传输控制协议
因为是网络协议中最为重要的部分,所以今天给大家介绍一下三次握手,这也是在面试过程中经常问到的网络问题,下面咱们来看一下具体的过程,TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)
Sequence number(顺序号码) Acknowledge number(确认号码)
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认ackn值与ack=1则连接建立成功。
完成三次握手,主机A与主机B开始传送数据。也正因为主机之间通信必须经过三次握手,才得以保证数据传输的稳定性与可靠性
三次握手的过程可以用打电话来形象的描述一下,比如小红给小明打电话
第一次握手:小红拿起电话拨号,然后电话接通后,小红问:您好是小明吗?这一个过程也相当于主机A向主机B发送了一个联机请求
第二次握手:小明听到小红的问题后回答:是,我是小明,你是谁?这一个过程相当于主机B收到联机请求后,应答并且也同样发出联机请求
第三次握手:小红收到小明的应答后得知,是小明,然后说,我是小红,我找你有事。这一个过程相当于主机A收到主机B的应答后,确认并且应答主机B发出的联机请求
这样三次握手建立成功,开始正常交流,或者开始正常通信传输数据