hadoopCJ
2019-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,服务器便可以确认自己的发送能力了。
评论
最近浏览
刘先生-OL LV13
2022年11月21日
crazy11crazy LV30
2021年6月21日
噜噜噜路口 LV2
2021年6月16日
liupengfei LV7
2021年3月5日
水光浮藻 LV6
2021年3月4日
java小书童 LV18
2021年1月6日
lininj
2020年7月31日
暂无贡献等级
admin1021 LV6
2020年7月24日
大朗丶起来喝药了 LV4
2020年5月8日
zzctest LV1
2020年4月20日