上半年白师傅去一家易*软件公司面试实习时,面试官问我TCP是全双工还是半双工。
我回答说是全双工,面试官说TCP是半双工的! 面试室内的三位负责人有点紧张,但什么也没说。 想到TCP有三次握手,是半双工吗?
今天看资料说明TCP的全双工。
这种TCP两者都能够同时发送数据的属性能够完全解释TCP是全双工的原因。
如果不能理解,则可以看到以下TCP差错控制中的重发ARQ协议的选择,每个时刻同时存在发送侧发送的帧和ACK信号。
二TCP握手为什么看起来像半双工,仔细观察TCP三次握手建立连接的过程,就会发现每个时刻只有发送方发送的SYN信号或接收方发送的ACK确认信号。
但是! TCP的三次握手不代表正常的数据传输。 三次握手的目的是建立连接,在实际的TCP传输中,收发方往往同时发送数据。
3传输层TCP是全双工的,但更高层的APP传输层在半双工的每个层中可能有自己的双工模式。 传输层有传输层的双模,而APP传输层有APP传输层的双模。
但是,下层的双模会影响上层。 例如,下层对应半双工,上层最多对应半双工,不能对应全双工。
tcp是全双工的,但其上层可能支持半双工,如http1.x,也可能支持全双工,如http2.
学习笔记记录,如有错误欢迎指正!