PE Notes · 네트워크
TCP 종료, ICMP, IGMP
양방향 독립 종료인 TCP 4-way FIN과 TIME_WAIT, IP 오류·진단의 ICMP와 멀티캐스트 멤버십의 IGMP를 메시지와 보안 자리로 비교합니다.
는 한 방향으로 보내기를 끝낸 뒤에도 반대쪽 데이터가 남을 수 있습니다. 그래서 연 절차는 세 장, 닫는 절차는 네 장입니다. IP 옆에는 오류를 알리는 ICMP와, 그룹 수신자를 관리하는 IGMP가 따로 앉습니다. 둘 다 보조 프로토콜이지만 하는 일이 갈립니다.
닫힘은 양쪽이 따로다
열 때는 SYN → SYN-ACK → ACK입니다. 토픽이 창과 혼잡을 다루면, 여기서는 반닫힘을 적습니다. 클라이언트가 FIN을 보내면 서버는 먼저 ACK만 합니다. 남은 바이트를 보낸 뒤 자기 FIN을 올리고, 클라이언트가 마지막 ACK를 줍니다.
서버 ACK와 서버 FIN이 분리되는 이유는, ACK 직후에도 보낼 것이 남아 있기 때문입니다. 한쪽만 닫힌 동안 반대 방향은 계속 흐릅니다. RST는 정상 종료가 아니라 강제 절단입니다.
| 단계 | 세그먼트 | 의미 |
|---|---|---|
| 1 | FIN | 이 방향은 더 보내지 않는다 |
| 2 | ACK | 종료 요청을 받았다. 반대쪽은 아직 열릴 수 있다 |
| 3 | FIN | 반대 방향도 끝났다 |
| 4 | ACK | 양쪽 닫힘 확인 |
에는 이 상태가 없습니다. 연결이 없으니 반닫힘도 없습니다.
TIME_WAIT는 마지막 ACK를 지킨다
마지막 ACK를 보낸 쪽은 보통 2MSL(세그먼트 최대 수명×2, 흔히 1~2분) 동안 에 남습니다. ACK가 사라지면 상대가 FIN을 다시 보내고, 그때 응답할 소켓이 있어야 합니다. 늦게 도착한 세그먼트가 같은 주소 쌍의 새 연결을 오염시키지 않게 가두는 시간이기도 합니다.
고부하 서버는 짧은 연결을 많이 닫아 TIME_WAIT가 포트를 채웁니다. 풀로 재사용하고, 필요하면 재바인드를 허용합니다. 종료를 생략하는 편법은 지연 패킷을 다음 세션에 섞습니다.
인터넷 계층의 ICMP는 이 종단 상태와 별개입니다. 경로는 이 고르고, 그 경로가 깨졌다는 신호는 ICMP가 올립니다.
ICMP는 진단, IGMP는 그룹
ICMP는 IP 오류와 진단입니다. Echo Request/Reply가 ping이고, Time Exceeded와 TTL 조작이 traceroute입니다. Destination Unreachable은 호스트·포트가 없을 때, Redirect는 더 나은 다음 홉을 알려 줄 때입니다. Source Quench는 옛 혼잡 신호로 지금은 쓰지 않습니다.
는 호스트가 멀티캐스트 그룹에 들고 나는 일을 라우터에 알립니다. 주소는 224.0.0.0/4입니다. v1은 가입과 질의, v2는 Leave로 탈퇴를 빠르게, v3는 특정 송신 소스(SSM)를 고릅니다. IPv6에서는 MLD가 이 자리를 잇습니다.
| 비교축 | IGMP | |
|---|---|---|
| 목적 | 오류·진단 | 그룹 멤버십 |
| 전달 | 주로 1:1 | 1:N 그룹 |
| 도구 | ping, traceroute | IPTV·시세·사내 배포 |
| 보안 | 플러드·스머프·리다이렉트 | 위조 가입·그룹 탈취 |
| IPv6 | ICMPv6(+NDP) | MLD |
Ping Flood와 스머프는 대역을 삼킵니다. Redirect는 경로를 속입니다. 방화벽에서 ICMP 속도를 제한하고 브로드캐스트 에코를 막습니다. IGMP는 가입하지 않은 수신자에게 스트림을 흘리지 않게 하는 제어이지, 파일 신뢰 전송이 아닙니다.
PSH는 버퍼를 건너 상위로 바로 올리고, URG는 긴급 포인터를 켭니다. 답안에서는 4-way와 TIME_WAIT 이유, ICMP vs IGMP 목적 한 표를 같이 그립니다.