第1题:请详细介绍一下TCP的三次握手机制,为什么需要三次握手?

2个点:

  1. 为什么需要握手?
  2. 为什么是3次握手?(建连接需要3次握手,关闭连接需要4次握手)

TCP一个重要特性便是可靠性,必须对方告诉说收到消息才算收到消息,不然就会一直重发,互相发的时候如何确定消息发过去呢?给消息进行一个编号叫序列号,序列号不能从0开始,相对随机,需要通过握手同步序列号确定双方都收到消息。

正常是4次,但这里是3次为什么呢?因为建立连接的时候不允许连接处于半打开状态就发送消息,这是TCP所不允许的,其次使用3次连接可以节省一次连接建立的过程。

关连接为什么需要4次?因为关闭一方的连接需要2次握手,并且关闭一方之后另一方仍然可以长时间发送消息,例如server说要关闭之后,client依然可以发送消息。

双工:双方都可以发送接收,比如tcp中的client以及server

单工:只有一方可以发送,比如浏览器服务器

评论