声明:文章由原文链接作者所创。
转载链接中,包含了TCP和UDP的区别,也有TCP可靠传输相关知识,以此作为TCP/UDP基础。
问:为什么TCP连接是三次握手,而不是两次?
答:从TCP的三次握手可以看出,为了保证可靠传输,TCP包中还包含序号,保证有序传输。在第一次握手时,客户端除了表达请求建立连接的意愿,还带上了序号seq=x。这表示第一次握手的包序号为x。当服务端接收到该包后,从seq=x可以推断客户端接下来要发送的包的序号为“x+1”。所以在第二次握手时,除了起到一个回复确认的作用以外,还带有ack=x+1,表示“我收到了,你下次发序号为x+1的包过来吧。”;此外还带有seq=y,表示第二次握手的包序号为y,也就是说“我这包序号为y,接下来我会发序号为y+1的包”。第三次握手跟第二次握手类似,就是进行回复确认。
总的来说,因为TCP是双向传输的,在服务端对客户端进行回复确认的同时,客户端也要对服务端进行回复确认。假如只有两次握手,相当于服务端没收到客户端的回复确认,所以服务端会认为第二次握手没发送成功,因为可能会重传,造成TCP不能正常建立连接。
问:流量控制和拥塞控制区别
答:以水壶为例,水壶有水量的多少,也有水壶的上限高度。流量控制关注水壶的水量,控制水量的多少变化;拥塞控制关注水壶的上限高度,关注水量是否达到上限高度。详细内容请查看https://www.cnblogs.com/twoheads/p/10185879.html