13장. TCP Timestamps의 이점
TCP Timestamps는 TCP 헤더의 선택적 정보이며 TCP 프로토콜 확장입니다. 기본적으로 TCP Timestamp는 Red Hat Enterprise Linux에서 활성화되며 커널은 TCP 연결에서 RTT(Round trip Timestamp)를 보다 효과적으로 추정합니다. 따라서 TCP 창 및 버퍼 계산이 더 정확합니다.
또한 TCP Timestamps는 세그먼트의 나이와 순서를 결정하고 래핑된 시퀀스 번호로부터 보호하는 대체 방법을 제공합니다. TCP 패킷 헤더는 32비트 필드의 시퀀스 번호를 기록합니다. 10Gbps 연결에서 이 필드의 값은 1.7초 후에 래핑할 수 있습니다. TCP Timestamps가 없으면 수신자는 래핑된 시퀀스 번호가 있는 세그먼트가 새 세그먼트인지 또는 이전 중복인지를 확인할 수 없었습니다. 그러나 TCP Timestamps를 사용하면 수신자가 세그먼트를 수신하거나 삭제할 수 있는 올바른 선택을 할 수 있습니다. 따라서 빠른 네트워크 인터페이스가 있는 시스템에서 TCP Timestamp를 활성화하는 것이 중요합니다.
net.ipv4.tcp_timestamps 커널 매개변수에는 다음 값 중 하나가 있을 수 있습니다.
-
0: TCP Timestamps는 비활성화되어 있습니다. -
1: TCP Timestamps가 활성화됩니다(기본값). 2: TCP Timestamps는 활성화되지만 임의의 오프셋이 없습니다.중요각 연결에 대한 임의의 오프셋이 없으면 호스트의 가동 시간 및 지문을 대략 확인하고 이 정보를 공격에 사용할 수 있습니다.
기본적으로 TCP Timestamp는 Red Hat Enterprise Linux에서 활성화되며 현재 시간을 저장하는 대신 각 연결에 임의의 오프셋을 사용합니다.
# sysctl net.ipv4.tcp_timestamps
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_timestamps 매개변수에 기본값(1)과 다른 값이 있는 경우 설정을 설정하는 것과 동일한 방식으로 설정을 되돌립니다.