0%

TCP-三次握手

TCP传输连接有三个阶段:连接建立、数据传送、连接释放。

在TCP连接建立过程中要解决三个问题:

1.要使每一方能够确知对方的存在。

2.要允许双方协商一些参数(比如最大窗口值、是否使用时间戳选项等)

3.能够运输实体资源(比如缓存大小,连接表中的项目等)进行分配

使用三次握手的原因

首先我们需要知道为什么要有三次握手: 主要是为了防止已经失效的连接请求报文段突然又传送到了服务器B,从而发生错误。

TCP传输连接管理 - 连接建立 - 三次握手

客户端A,服务器端B

AB都要先创建传输控制模块TCB。

第一次握手:

客户端向服务器端发起请求,同步位SYN=1,序列号seq = x。(SYN=1的报文段不能携带数据)
这时,客户端进入到 SYN-SENT状态,即同步已发送。

第二次握手

服务器B收到请求的报文段后,如同意建立连接,那么就向A发送确认。 同步位SYN=1,ACK=1,确认号ack=x+1,同时自己也选择一个初始的序列号 seq = y
这时,服务器端进入SYN-RCVD状态,即同步收到。

第三次握手

客户端收到服务器端的确认之后还要给服务器发送确认。确认报文段 ACK = 1,确认号ack = y+1,自己的序列号seq = x+1。 此时连接建立,A进入ESTABLISHED状态,即连接已经建立。
当B收到A发来的确认报文时,也进入ESTABLISHED状态。

tcp三次握手的过程,accept发生在三次握手哪个阶段?
发生在三次握手之后,三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。

TCP和UDP的区别?

  • TCP是基于连接的协议,也就是说,在正式收发数据前,必须和对方简历可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来
  • UDP是与TCP相应的协议。他是面向非连接的协议,他不与对方建立连接,而是直接就把数据包发送过去了
  • UDP适用于一次只传送少量数据,对可靠性要求不高的应用环境