深入理解TCP——面试20问
深入理解TCP——面试20问
TCP超时重传(RTO)
- 间隔一段时间没有收到数据包的回复时,会重传这个数据包
- RTO太小会导致不必要的重传;RTO太大会导致丢包很久才重传
- 经典方法(适用于RTT波动较小):
往返时延RTT(Round-Trip Time)
TCP流量控制
- 接收端返回的ACK报文中会带上接收窗口大小,发送端根据这个调节滑动窗口。
TCP的keep-alive原理
- 为了检测长时间死连接
- 默认情况下要7200S没有数据包才会发送keepalive探测包,这个时间太久了,因此大部分我们熟知的组件都没有开启keepalive特性,而是选择在应用层自己做心跳机制
TCP中的端口号
- Port 英文原意是港口,口岸的意思
- 两字节的整数来表示,最大允许65536个
- 数值端口号:0-1023;已登记端口号:1024-49151;临时端口号:49152-65535
TCP场景问题
- 传输层如何区分TCP报文和UDP报文?
IP头中协议字段(8位),ICMP为1,TCP为6,UDP为17 - TCP是一种字节流服务,收发双方都不记录消息的边界,应用程序应自己保证消息分隔的标识,比如适用回车+换行(“\r\n”)
telnet的用法
- 检查一个端口是否处于打开
telnet [domainname or ip] [port]