TCP connection의 block 현상을 재연할 수 있을까요?
글쓴이: bstill / 작성시간: 목, 2013/08/22 - 4:17오후
TCP 소켓 프로그래밍 질문입니다.
NON-BLOCK이 아닌 일반 소켓일 경우..
tcp connect()를 할 경우, 서버쪽 받아주는 프로세스가 어떤 상황일 경우, 클라이언트의 connect()함수가 리턴을하지 않고 블럭(멈춤)상태로 있는것을 경험한적이 있습니다.
정확이 서버프로세스가 어떤 상태인지는 기억이 나질 않아서요..
서버프로세스를 간단히 코딩하여 이 경우를 재현 할 수 있을까요?
어렴풋이 기억으로는 서버쪽에서 accept()를 하지 않으면, 클라이언트쪽의 connect()가 block된다..라고 알고 있는데,
listen() 후에 sleep(1)로 무한루프를 돌려봤더니, 클라이언트의 connect() 함수는 그냥 0을 리턴합니다.
connect() 함수가 block 걸리는 경우를 재현하려면 서버쪽에어 어떻게 해야 할까요..?
Forums:
서버에서 클라이언트로 응답이 가지 않도록 해 보세요.
IP table을 변경해서 클라이언트와 서버와의 IP 패킷 통신을 막아 보세요.
클라인트가 connect를 요청하면 SYN 패킷만 클>서 로 전송이 되며
이후 클<서의 SYN+ACK이 클라이언트측에 전달이 안되기 때문에
쉽게 connect 함수의 block을 야기시킬 수 있습니다.
www.gilgil.net
감사합니다.
이런 방법이 있었군요..
감사드립니다.
댓글 달기