TCP三次握手

TCP(Transmission Control Protocol 传输控制协议) 三次握手是一个老生长谈的问题,此处也讲一讲,让自己再次加深一下记忆并深化讲一下。

这里先引用一个从朋友那里看到的例子:A和B进行通信

A:您好,我是A

B:您好,我是B

A:您好 B

我们也常称为“请求-应答-应答之应答”的三个回合,这个说起来简单,其实里面还是有很多的学问,很多的细节。

首先,为什么要三次,而不是两次?按说两个人打招呼,一来一回就可以了啊?为了可靠,为什么不是四次?

我们还是假设这个通路是非常不可靠的,A要发起一个连接,当发了第一个请求了无音讯的时候,会有很多可能性,比如第一个请求包丢了。或者没有丢,只是饶了弯路,超时了。还有可能是B没有响应,不想和A进行连接。

A不能确认结果,于是再发,再发。终于,有一个请求包到了B,但是请求包到了B的这件事情,目前A还是不知道的,A还有可能再发。

B收到了请求包,就知道了A的存在,并且知道了A要和它建立连接,如果B不乐意建立连接,则A会重试一阵后放弃,连接建立失败,没有问题。如果B是乐意建立连接的,则会发送应答包给A。

当然对于B来说,这个应答也是一入网络深似海,不知道能不能到达A,这个时候B自然不能认为连接是简历好了,因为应答包仍然会丢,会绕弯路或者A已经挂了都有可能。

而且这个时候B还能碰到一个诡异的现象就是,A和B原来建立了连接,做了简单通信后,结束了连接。还记得吗?A建立连接的时候,请求包重发了几次,有的请求饶了一大圈又回来了,B认为这也是一个正常的请求的话,因此建立了连接,可以想象,这个连接不会进行下去,也没有终结的时候,纯属单相思了,因此两次握手肯定不行。

B发送的应答可能会发送多次,但是只要一次到达A,A就认为连接已经建立了,因为对于A来讲,它的消息有去有回,A会给B发送应答之应答,而B也在等这个消息,才能确认连接的建立,只有等到这个消息,对于B来讲,才算它的消息有去有回。

---------------------------------------------------------------------------------------------------------手动分割线

TCP协议是主机对主机层的连接控制协议,位码即tcp标志位,有6种标示:SYN(synchronous建立联机)、 ACK(acknowledgement 确认)、 PSH(push传送) 、FIN(finish结束) 、RST(reset重置) 、URG(urgent紧急)、Sequence number(顺序号码) 、Acknowledge number(确认号码)。

下面给出TCP三次握手图文详解:

请求过程:

第一次握手:客户端请求与服务端时,客户端发送SYN包(syn=1 Seq=X)到服务器,并进入SYN_SEND状态,等待服务器确认

第二次握手:服务器收到SYN包,必须确认客户端发送的SYN包(syn=1),同时自己也发送一个SYN+ACK包(SYN=1 ACK= X+1 Seq = Y),此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,先确认收到了SYN+ACK包是否正确,然后会再次服务器发送确认包ACK(ACK=Y+1,Seq=Z),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值