linux - tcp_tw_reuse 和 tcp_tw_recycle 在原理上有什么区别?
ringa_lee
ringa_lee 2017-04-17 16:03:21
0
1
1247

我的理解是,reuse 只会抛弃时间戳后退的 fin 包来,而 recycle 会抛弃所有时间戳后退的包,不止 fin 包,这个理解对不对?

如果对,那么如果遇到了 NAT 后面的多个客户端,reuse 打开的情况下为什么能够正确关闭连接?NAT 后面的多个客户端的时钟不一定一致,fin 包有可能时间戳后退,就被抛弃了。

ringa_lee
ringa_lee

ringa_lee

모든 응답(1)
Peter_Zhu

우선 이 질문을 Stackoverflow에 게시해야 합니다. 중국 커뮤니티에는 아직 마스터가 거의 없으며 특정 포인트도 더 적습니다.
net.ipv4.tcp_tw_recycle = {0|1} timewait 빠른 재활용 활성화 여부, 참고: 이 기능을 켜면 NAT 환경에서 심각한 문제가 발생할 수 있습니다. TCP에는 동작이 있기 때문에 각 연결의 최신 타임스탬프를 캐시할 수 있으며, 이후의 시간이 요청 스탬프가 캐시의 타임스탬프보다 작은 경우 유효하지 않은 것으로 간주되어 해당 요청 메시지가 삭제됩니다. Linux에서 이 동작을 활성화할지 여부는 tcp_timestamptcp_tw_recycle에 따라 달라지며 이전 매개변수는 기본적으로 활성화됩니다. 다음 매개변수를 활성화하면 이 기능이 활성화되므로 NAT 환경인 경우 보안상의 이유로 tcp_tw_recycle 비활성화해야 합니다. 또 다른 해결 방법: tcp_timestamps을 0으로 설정하고 tcp_tw_recycle을 1로 설정하면 예상대로 작동하지 않습니다. 왜냐하면 tcp_timestamps가 꺼지면 tcp_tw_recycle가 켜져 있어도 후속 매개변수가 아무런 영향을 주지 않기 때문입니다. 이때 net.ipv4.tcp_max_tw_buckets 값을 줄이면 tw 연결 수를 크게 줄일 수 있습니다.

net.ipv4.tcp_tw_reuse = {0|1} tw 재사용을 활성화할지, 즉 TIME-WAIT sockets를 새로운 TCP 연결에 사용할지, 즉 데이터 구조를 수집하지 않을지 여부만 변경하면 계속 사용할 수 있습니다. ip와 port는 당신이 언급한 기능이 아닙니다!

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿