TCP 3way handshake 과정중에 궁금한 점이 있습니다....^^;
커널의 TCP 부분을 열심히 보고 있는 초보프로그래멉니다.
궁금한 점이 있어서, 이렇게 글을 올리게 되네요...고수님들의 조언 부탁드립니다..
클라이언트가 서버와 처음 TCP 연결을 할때 다음과 같이 3way Handshack 하잖아요.
client .................... server
(222.222.222.222) (111.111.111.111)
--------1. syn --------- |
| --------2. syn/ack -----
--------3. ack --------- |
그런데 제 리눅스 서버 머신에서 2번 syn/ack를 아래의 '재전송 상황'에서 처럼 한꺼번에 여러번 발송하는 경우가
있습니다. 재전송 시간이 되지 않았는데도 말이죠.. 또 클라이언트에서는 ack 대신에 rst을 시켜 버리던데요..
===== 정상상황 =======
22:20:22.636059 IP 111.111.111.111.60017 > 222.222.222.222.http: S 4253378593:4253378593(0) win 5840
22:20:24.220551 IP 222.222.222.222.http > 111.111.111.111.60017: S 1732083836:1732083836(0) ack 4253378594 win 5792
22:20:24.253064 IP 111.111.111.111.60017 > 222.222.222.222.http: . ack 1 win 1460
22:20:24.253135 IP 111.111.111.111.60017 > 222.222.222.222.http: F 1:1(0) ack 1 win 1460
22:20:24.256411 IP 222.222.222.222.http > 111.111.111.111.60017: . ack 2 win 1448
22:20:24.358432 IP 222.222.222.222.http > 111.111.111.111.60017: F 1:1(0) ack 2 win 1448
22:20:24.419651 IP 111.111.111.111.60017 > 222.222.222.222.http: . ack 2 win 1460
===== 재전송 상황 ==========
22:20:19.620739 IP 111.111.111.111.59912 > 222.222.222.222.http: S 4248794435:4248794435(0) win 5840
22:20:24.212042 IP 222.222.222.222.http > 111.111.111.111.59912: S 1735254054:1735254054(0) ack 4248794436 win 5792
22:20:24.228081 IP IP 222.222.222.222.http > 111.111.111.111.59912: S 1735254054:1735254054(0) ack 4248794436 win 5792
22:20:24.245332 IP 111.111.111.111.59912 > 222.222.222.222.http: R 4248794436:4248794436(0) win 0
22:20:24.266678 IP 111.111.111.111.59912 > 222.222.222.222.http: R 4248794436:4248794436(0) win 0
궁금한점 입니다.
먼저, 재전송시 한번에 여러번 보내는 이유가 궁금합니다.
- 짐작에는 서버가 연결 과정에서도 duplicate ACK 을 지원하기 때문일것 같은데(???)
다음으로, 클라이언트가 rst를 보내는 이유가 뭘까요?
- 짐작에는 시간이 초과 되어서 일것 같은데요...
다음으로, 3번 ack나 rst가 클라이언트로부터 서버에게 전달되지 못한다면 어떤 문제가 생길까요?
- 짐작에는 클라이언트가 다시 전송할 것 같기도하고, 아니면 클라이언트가 계속 대기 상태가 될것 같기도하고
잘 모르겠습니다....
끝으로, 혹시 syncookie에 대한 기능이나 장단점에 대해 소개한 사이트를 알고 계시면 소개좀 해주실수 있나요??
두서 없이 걸어졌네요. 조언 부탁드립니다.
댓글 달기