什么是TCP、UDP

协议,他们都只工作在传输层。

什么是TCP的挥手、握手

三次握手、传输确认、四次挥手。

三次握手:建立连接用的。客户端发起请求给服务端,服务端返回消息给客户端发番号,客户端再发送请求给服务端,完成连接的建立。

为什么需要第三步?为了解决网络信道不可靠问题。第一个请求包阻塞了,所以客户端重新再做了第一步成功建立了连接,此时之前的那个阻塞包又恢复了,此时如果没有第三步服务端就会成功建立第二个连接。

传输确认:一包数据可能拆成多包发送,如何处理丢包问题?这些包的到达顺序不一定,如何处理乱序问题?答案是通过回复确认包。

这个根据下图模型理解。首先TCP会在建立连接之后,会创建如下的发送缓冲区。每次发送报文时,除了数据内容,还会在TCP协议头中附带本次数据内容的序列号(起始下标)+长度。接收端收到这个包后,会进行回复确认,内容为序列号+长度,也就是下一包的其实序列号。这样做是为了能够把整个包根据序列号和长度重组,中间遇到丢包的情况申请重发即可。

四次挥手:结束连接用的。

一、二挥手:客户端发送结束包给服务端;服务端返回一个包表示自己进入终止等待状态。这前两次挥手完之后,服务端还可以给客户端发送之前未发完的数据,此时客户端还可以接收。也就是说这前两次是为了发送之前未发完数据。

三、四挥手:服务端发送完未完数据后,给客户端发送结束包,服务端进入最后确认状态;客户端收到后回复服务端一个确认包,客户端进入超时等待状态,超时后自动关闭连接。这最后一段等待是为了第四次挥手的确认包万一服务端没收到,服务端要求重发时客户端这还能响应。

TCP和UDP区别

基于连接 与 基于非连接。

UDP不像TCP握手、确认、挥手,它是直接把数据包发过去的,所以占用资源少、速度快。

因此TCP稳定可靠,UDP速度快实时性强。

隧道网络:VPN等。// TODO