Home Network time wait
Post
Cancel

Network time wait

https://tech.kakao.com/2016/04/21/closewait-timewait/

  • 다음 상황은 hserver에서 소켓을 열고 hclient에서 접속한 뒤,hclient는 close, hserver는 close하고 대기하는 장면이다.
  • 오른쪽 위를 보면 tcp 소켓이 fd에 저장되어 있다가, close 이후 삭제된 모습이다.
  • 하지만 netstat -tonp 명령어를 보면 10223 포트의 소켓은 time waitg하는 상태이다.
    • 커널로 넘어간 것인가?

  • tcp 상태 = 소켓의 상태
    • 어쩌면 당연한 거
    • 포트의 상태 아니다
      • 포트가 사용되고 있을 뿐이다.

  • netstat -antplFo-> tcp 소켓 정보 모두 출력
    • 10777 포트를 가지는 소켓 3개 존재
  • 한쪽 client가 close를 실

  • 서버에서 accept를 받은 뒤, 먼저 close를 불러 time wait 상태로 보내버림
    • 다만 이후 새로운 연결을 만들 수 있었다.
    • 포트 밴 ?
      • 소켓이 닫히는데 시간이 필요한 것이다.
      • 다른 프로세스가 10888포트를 요구한다면 당연히 에러 생김
      • 다만 같은 프로세스에서 바로 재 연결을 한다면?

  • 클라이언트에서 10888서버에 연결하고 close를 불러 연결을 종료하고, 다시 연결한 상태이다.
    • 기존 소켓이 time wait에 걸려 새로운 포트를 받은 것을 볼 수 있다.
This post is licensed under CC BY 4.0 by the author.