计算机网络--TCP协议之三次握手和四次挥手

计算机网络分层

今天强大的互联网无处不在,人们的生活日益便捷,联系更加紧密。
身为技术人员,怀有好奇心是非常无疑是非常重要的了。今天开始,我们将陆续和大家探讨一下TCP/IP协议的相关内容。
在计算机世界中,没有什么东西是一个分层解决不了的,如果有,那么就分两层。
计算机网络是如此复杂,不分层则导致混乱,分层是必然的。传统的教科书中会讲到OSI七层模型,公认的标准了。现实世界中却有所差距,一般用五层来解决问题,当然这也是有历史沿革的,这五层分别是:物理层、数据链路层、网络层、传输层、应用层。
大家比较熟悉的IP协议是网络层,TCP协议则是传输层。

三次握手和四次挥手

每一层的协议都能写出一本书了,我们只取其中核心思想和部分精华来一窥内在。
今天先来看TCP连接的建立是怎么样一个过程吧:
输入图片说明

1、三次握手

可以看到三次握手非常简单,大概过程是:

  • 客户端发送SYN(synchronous的缩写)信号给服务器端,这是第一次握手,意思是:“兄弟,我要和你建立连接了”
  • 服务端一看老铁有需求啊,直接给回复,就给客户端返回了一个ACK信号,顺便带了一个SYN信号
  • 客户端受到两个信号,这是他们第二次握手。为表做人之本,客户端把SYN揣怀里,ACK是说什么都不能要,又返回给服务器端
  • 服务器端知道老铁的性格,把ACK收回,这是第三次握手

至此,通过这么一个小礼节,以后客户端和服务器端就能正常通信,数据畅行无阻了。
分析一下为啥要三次握手,为啥不是两次或四次呢?这是因为在保证数据可靠传输的同时,有最有效率的方式了!

2、四次挥手

大致流程是:

  • 客户端发起FIN信号,表示给老铁说再见。服务器端受到FIN信号,开始折杨柳枝表示不舍,这是第一次挥手
  • 天下没有不散的宴席,服务器端只好给客户端回复了一个ACK信号。客户端受到ACK信号,这是第二次挥手
  • 服务端还是不舍,再折杨柳相送,发送了FIN信号给客户端。客户端收到,这是第三次挥手
  • 客户端把ACK返回给服务器端,这是第四次挥手

四次挥手后,两人依依送远情,真正告别了。
这里注意到客户端有个TIME-WAIT状态,如果好奇的话,参考这篇文章:TCP连接中TIME_WAIT状态

猜你喜欢

转载自my.oschina.net/lizaizhong/blog/1787732