[도와주세요!!] 혹시 패킷센더(packet sender)라는 프로그램 써보신 분 계신가요? TIME_WAIT과 함께 질문합니다.
안녕하세요. 네트워크 쪽에서 개발자로 일하고 있는 초급 개발자입니다.
회사에서 네트워크 패킷을 만들고 이것을 보내서 서버에서 테스트하는 작업을 하고 있는데요.
패킷을 만들어서 보내는 툴로 packet sender(https://packetsender.com)라는 프로그램을 사용하고 있습니다.
그런데 이 프로그램이 문제(?)라고 하기엔 그렇지만 특이한 방식을 갖고 있더라구요.
tcp의 경우 period를 입력해서 매초마다 만들라고 지시하면 tcp의 세션을 계속해서 만들고 있었습니다 (syn-syn/ack-ack->fin)
패킷을 보내고나면 세션도 종료하구요.
원래 다른 프로그램도 그러는지 잘 모르겠지만....
이 문제인지 모르겠습니다만.. tcp와 udp를 몇개씩 만들어서 패킷을 보내고 서버에서도 동일하게 pc로 보내다보면
어느순간 서버나 pc가 동작을 멈추더라구요.
이게 제가 서버나 pc에 만든 프로그램의 문제인지, 혹은 프로그램의 문제인지 잘 모르겠습니다.
제 의견은 tcp가 계속해서 세션을 끊고 맺는 과정에서 tcp 패킷이 엉키는 현상이 아닌가 싶어서요..
1개만 되더라도 중간에 멈추는 경우가 발생했습니다.
TIME_WAIT 현상과 연관된거 같은데.. 맞는지는 잘 모르겠습니다.
질문이 잘 이해가 안 되신다면, 답글로라도 한번만 더 여쭤봐주셨으면 감사하겠습니다.
몇주째 테스트하면서 고쳐지지 않는 문제인데, 이게 왜 그런지 잘 모르겠어서 여기에 도움을 청해봅니다.
감사합니다!!
위키에서는 다음과 같이 프로그램을 설명합니다!
https://en.wikipedia.org/wiki/Packet_Sender
음 ..
서버나 PC 가 동작을 멈춘다는게 어떤 의미인지 좀 더 정확한 묘사가 필요할 것 같네요.
아마도 TIME_WAIT 상태의 socket 들 때문에 fd 가 꽉차서 더 이상 새로운 socket 이 생성되지 못하고 있는 게 아닐까 싶은데..
netstat 으로 상태 체크해 보시고.. 맞다면 아래 게시물 참고해 보세요.
https://kldp.org/node/149106
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
아! 멈춘다는 의미는..
제가 지금 pcap으로 패킷을 확인하고 있습니다.
근데 pcap에서 확인을 못하더라구요... 패킷센더 프로그램에서도 패킷이 더이상 전송된다고 나오지 않구요..
그래서 멈춘다는 말로 적었습니다. 이해가 어려웠다면 죄송합니다.
답변 주셔서 너무 감사해요.
툴 받아서 실행해 보니 Persistent TCP
툴 받아서 실행해 보니 Persistent TCP 체크박스 체크하면 접속 유지되네요.
Signature :) - "여유를 갖고 행동하되 게을러지지 말자"
그럼 persistent로 하면 TIME_WAIT이 안생기나요?
제가 알아본바로 TIME_WAIT은
다수의 tcp 세션이 계속해서 연결 및 해제를 반복할 때 남아있는 time_wait 상태에서 소켓을 보내지 못해서 정지현상이 일어난다고 보았는데요,
그럼 persistent로 하면 time_wait 멈춤현상을 제외하고 테스트해볼 수 있다는 말이 되는건가요?
또 하나 궁금한게, 지금 여러 패킷들을 복합적으로 보내서 부하테스트를 해보려고 패킷을 보내는건데..
혹시 좋은 툴 추천해주실 수 있으신가요?
패킷센더는 그러면 tcp 패킷을 하나씩만 보낼 수 있을 것 같아서...
부탁드리겠습니다!
persistant로 한다면 TIME_WAIT 문제는
persistant로 한다면 TIME_WAIT 문제는 안생기겠죠. 이거는 한 번 실행해 보시면 되지 않을까 합니다.
접속을 유지하지 않더라도 제가 알기는 TIME_WAIT는 먼저 접속을 끊는 쪽에서만 생기구요.
정상적이라면 클라이언트가 접속을 끊고 클라이언트쪽에 TIME_WAIT가 생깁니다. 서버쪽은 아니구요.
로직이 비정상 패킷을 보냈다고 서버쪽에서 접속을 먼저 끊는 경우엔 서버쪽에 TIME_WAIT가 생깁니다.
웹서버 같은거야 apache ab도 있고 여러가지 있는데 특정 패킷이면 보통은 그냥 만들어 써서, 잘 모르겠네요.
자기가 만든 패킷이면 스트레스 테스트툴도 만드는 게 어렵지 않으니...
그냥 드는 생각은 복합적으로 보내시려는 패킷이 서로 독립적인거면, packet sender를 여러 개 띄워서 테스트 해도 될 것 같습니다
Signature :) - "여유를 갖고 행동하되 게을러지지 말자"
댓글 달기