上线的图片来自《图解TCP/IP》一书。
三次握手的目的,主要是为了提升网络通讯的成功率。
如图所示的:
第一次握手:客户端会发送【SYNC包】给服务端,这是为了问问服务端,是不是可以进行通讯。
第二次握手:服务端在接受到客户端发来的包之后,向客户端发送【SYN/ACK】数据包,用来告诉客户端,我这边是OK的,
你能够向我发起连接。
第三次握手:客户端收到了服务端回传的【SYN/ACK】数据包之后,再次向服务端发送标注有【ACK】的数据包,意思就是说
我这里已经收到了你的回信,我们开始通信吧。
如果是发送者向接受者发送数据包之后,过了一段时间(超时时间)之后,还是没有收到回信,
那么发送者就会认为这次包丢失了,需要进行重新补发。
这里需要注意一个现象:
如果发送者是同时发送了三个数据包,只有最后一个包是确认接收到了,那么会认为前两个包也接收到了。
何为滑动窗口?
我们可以理解为是发送方式的协议。
假设说发送端一次发送包的大小为3,
发送端可以边发边接受,这样就可以显著提高通信的效率。
这里说的大小为3,就是滑动窗口的大小。
1_20180706_Java面试之简说TCP/IP协议三大要点
原文:https://www.cnblogs.com/gnuzsx/p/12091448.html