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适用于一次只传送少量数据,对可靠性要求不高的应用环境