1, 应用数据被分割成TCP认为最适合发送的数据块,UDP则对应用程序产生的数据报长度保持不变。
TCP中最大报文段长度MSS,表示TCP传往另一端的最大块数据的长度。双方可以协商MSS,但是不能完全避免分片,因为中间某个路由器MTU更小。
2, TCP发送一个段后,它启动一个定时器,等待目的端确认收到这个报文段,如果不能收到确认,将重发这个报文段。也就是自适应的超时及重传策略。
3, TCP收到发自另一端的数据,它将发送一个确认,这个确认不是立即发送,而是推迟几分之一秒。
这样做的主要目的是将ACK和下一个数据一起发送,省去不必要的数据传输。
4, TCP保持首部和数据的校验和,如果校验和不对,则丢弃不确认,UDP则不强制使用,不过一般也会有校验和。
5, TCP使用IP作为传输,那么可能会乱序,例如a和b报文,a先发出,但是可能b先到达,TCP会对收到的数据进行重新排序,然后交给用户程序。
6, 同样也会丢弃重复的数据。
7, TCP同时提供流控功能。UDP没有流控,导致数据发送过快时会丢包。滑动窗口。
其他TCP重点概念
1,TIME_WAIT状态,让TCP再次发送最后的ACK防止ACK丢失。同时在这个期间内,这个连接不能再被使用。
客户端执行主动关闭进入TIME_WAIT状态,服务器通常是被动关闭,不会进入TIME_WAIT状态,如果使用SO_REUSEADDR,那么同一个socket也是不允许的,就是说对端IP端口和本机IP端口和上一个socket一致,不能成功。但如果不是一致,那么是可以成功的。2,
坚持定时器当窗口大小为0时
保活定时器没有数据发送时
3,其他
IP校验和只对IP头部进行,而不对首部后面的数据进行计算。
链路层 MTU 最大传输单元
IP 网际协议
ARP 地址解析协议 将IP地址解析为对应的物理地址,ARP代理,一台路由器开启代理就是说帮忙回应对应的arp请求。