2018. 10. 16. 06:30ㆍ보안 & 해킹/Network
TCP 3way handshake, 4way handshake, 소켓의 상태 천이, 상태 플래그, seq, ack 계산 한방 정리
seq : 패킷의 고유 넘버, 랜덤값으로 초기화
ack : 내가 다음에 받을 패킷 넘버. seq + 1 , seq + data length
Client seq 는 1000, Server 는 2000 이라고 가정
MSL ( Maximum Segment Lifetime ) X 2 만큼의 시간 동안 TIME_WAIT 상태를 유지한다.
TIME_WAIT이 없다면 서버측에서 마지막에 받아야할 ACK를 받지 못했을 경우 TCP Retransmission을 계속 반복 시도할 것이다.
Ref)
1. TCP TIME_WAIT
http://docs.likejazz.com/time-wait/
RFC 793 에는 TIME_WAIT
을 2 MSL로 규정했으며 CentOS 6에서는 60초 동안 유지된다. 아울러 이 값은 조정할 수 없다.
틀린 정보
net.ipv4.tcp_fin_timeout을 설정하면 TIME_WAIT 타임아웃을 변경할 수 있다.
TIME_WAIT
의 타임아웃 정보는 커널 헤더 include/net/tcp.h
에 하드 코딩 되어 있으며 변경이 불가능하다.
https://github.com/torvalds/linux/blob/master/include/net/tcp.h#L120
// include/net/tcp.h
#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
* state, about 60 seconds */
2. 로컬 포트 부족과 TIME_WAIT
https://www.popit.kr/%EB%A1%9C%EC%BB%AC-%ED%8F%AC%ED%8A%B8-%EB%B6%80%EC%A1%B1%EA%B3%BC-time-wait/
'보안 & 해킹 > Network' 카테고리의 다른 글
ICMP Bypass Scanning / ICMP 스캐닝 방화벽 우회 전략 (0) | 2018.01.04 |
---|---|
NAT(Network Address Translation)의 장단점 (0) | 2018.01.03 |
포트 번호에 대하여 (0) | 2018.01.02 |