TCP为每条连接先后设置9个定时器,分别为:SYN-ACK定时器、重传定时器、丢失探测(LOSS_PROBE)定时器、ER(Early Retransmit)定时器、延迟ACK定时器、坚持定时器、保活定时器、FIN_WAIT2定时器、TIME_WAIT定时器。由于一些定时器不能同时设置,故TCP使用了5个定时器结构完成全部9个定时器的功能。相关数据结构如下:
285 struct sock {
...
381 struct timer_list sk_timer;//用于保活定时器、SYN-ACK定时器、FIN_WAIT2定时器
...
include/net/inet_connection_sock.h
87 struct inet_connection_sock {
...
93 struct timer_list icsk_retransmit_timer;//用于重传定时器、丢失探测定时器、ER定时器、坚持定时器
94 struct timer_list ic