coding
hadoopCJ的gravatar头像
hadoopCJ2019-09-25 13:40:20
TCP三次握手那些事儿

最近,一天下班没啥事,几个老哥谈起来最近新来公司的几个新人,说到了一个面试题,问他们TCP的3次握手咋回事,几个人支支吾吾也没答个所以然,我自己一想,自己好像也都忘了,于是又回过头去炒了一顿回锅饭,正好做个记录吧。我们都知道TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP也是日常通讯中用的最广泛的一种协议,TCP的连接需要三次握手。为了便于大家理解,我在网上随便找了个原理图。

话不多说。三次握手,我来解释一下。

第一次握手:我们给服务器发消息“喂。老哥,咱两建个链接呗”,我们做这个动作是想证明,我们有没有发消息的能力,怎么证明呢,需要服务器把我们发的消息回传回来。

第二次握手:服务器告诉我们“好呀,来啊,来啊”,同时再把我们发的消息回传给我们。这个时候我们就可确定,我们发消息的能力是没有问题的,同时服务器也需要通过这次握手来确定自己的发消息能力。也就是这次握手确定了我们的发消息能力,需要确定的是服务器的发消息能力。

第三次握手:我们告诉服务器“得嘞,我马上就到,等我哟”。这时候服务器就确定了自己的发消息能力是没有问题的,于是你们就可以愉快的玩耍了。

名词解释:SYN:synchronous建立联机   ACK:acknowledgement 确认

原理图解释:

第一次握手:我们发送一个SYN=1,seq=x(x是随机数字的意思)的数据包,服务器看到我们发过来数据包,就知道你要跟他建立链接。

第二次握手:服务器发给我们一个SYN=1,seq=y,ACK=x+1。服务器发送前两个数据是为了确认自己的发消息能力,第三个数据在我们的seq上加1,以确认建立的是同一个链接。

第三次握手:我们只需要向服务器发送一个ACK=y+1,服务器便可以确认自己的发送能力了。

 


打赏

已有3人打赏

lczd888的gravatar头像Ckxlnd的gravatar头像最亚虎娱乐官网官方的gravatar头像

分享到:

最近浏览
最远的旅行 LV3昨天
星星星星星星
暂无贡献等级
骆宇天 LV7前天
月亮星星星星星星
syddys LV12前天
月亮月亮月亮
1jinge9 LV510月19日
月亮星星
我是谁0java LV1010月19日
月亮月亮星星星星
coding喵 LV1610月18日
太阳
hongbings415 LV1710月16日
太阳星星
a694110193 LV210月14日
星星星星
xxljxgz LV2110月14日
太阳月亮星星
最亚虎娱乐官网广告位
顶部客服微信二维码底部
>扫描二维码关注最亚虎娱乐官网为好友扫描二维码关注最亚虎娱乐官网为好友