W5200 client 연결 문제


#1

안녕하세요.

기본 구현 소스는 wiznet사에서 제공한 소스(W5200E01-M3_Firmware_polling_v1.5)를 STM32F407에 적용하여 사용하였습니다.
tcp server, udp는 정상 동작을 하고 있으나, client의 경우에는 동작을 하지 않습니다.
디버깅시에도 3초에 한 번씩 주기적으로 connect를 요청하는 것을 확인 하였습니다.
tcp client의 전송데이터를 확인 할 수 있는 방법이나, 체크 항목이 있으면 알려 주셨으면 합니다.

답변 부탁드립니다.


#2

client용 socket을 open할 경우 source port number는 Random으로 사용하셔야 합니다.
그렇지 않을 경우 Server에서 접속을 거부 할 수 있습니다.
만일, 위와 같이 같이 하였는데도 그렇다면,
Wireshark program으로 network packet을 캡쳐하여 Syn packet이 Sever로 전송되고 있는지 확인부탁드립니다.

아래를 참조하세요.
[url]소켓 connect 관련 문의드립니다]


#3

안녕하십니까.

추가적인 질문을 드립니다.
Source port number를 random하게 사용하는 것은 W5200의 Socket open시에 설정해주는 port를 말하는 것인지요?
wireshark를 이용하여 전송되는 패킷에서는 TCP Retransmission이 발생하는 것 같습니다.
wireshark log를 첨부해 드리니 문제점을 알려 주셨으면 합니다.

감사합니다.
ClientMsg2.zip (973 Bytes)


#4

[quote]
Source port number를 random하게 사용하는 것은 W5200의 Socket open시에 설정해주는 port를 말하는 것인지요?[/quote]
맞습니다. 포스트 해주신 패킷 분석 결과 Source port는 접속 마다 2씩 증가는 걸로 보입니다.

하지만, 저희쪽에서 보내는 서버 접속 요청 SYN 패킷을 Server가 무슨 이유인지 모르겠지만, 아무런 반응을 보이지 않습니다. 접속포트가 잘못 되었다면, 서버에서 RST패킷을 보내는게 정상입니다.
우선 잘못된 포트로 접속을 시도했을 경우 RST 패킷을 보내는지 확인 해보세요. 이는 서버가 제대로 동작하고 있는지 검증하기 위함입니다.


#5

현재 저희쪽에서 PC 환경 및 프로그램은 WIN 64bit과 wiznet application인 AX1을 이용하여 테스트를 진행하고 있습니다.
혹시 환경상에는 문제가 없는 것인지요?
말씀하신 서버는 wiznet application program인 AX1이 될것으로 생각되며, RST 패킷 역시 AX1에서 보내야 할 것으로
판단됩니다.

그리고 RST 패킷을 분석 할 수 있는 예제 패킷 메세지가 있으면 참조해 보았으면 합니다.

감사합니다.


#6

AX1 program은 이전 winXP 환경에 개발되었으며, win 64bit 환경에서 동작하는지는 확인이 되지 않았습니다.
간단한 Test는 Freeware인 Hecles program(http://www.hw-group.com/products/hercules/index_en.html)를 이용하세요.

RST는 AX1이 보내는 것이 아니라, PC에서 운영되는 TCP/IP stack에서 처리하여 보내게 되어 있습니다. 일반적인 TCP/IP인 경우 Port가 없는 경우 RST를 전송하게 되어 있는데, 보내지 않는 경우도 있는 것 같습니다. (해당 RST 테스트시 RST 패킷을 전송하지 않음)

제가 궁금한 것은 한번도 접속에 성공에 한적이 없는지 아니면, 성공 이후 계속 접속이 안되는 경우 인지 알고 있습니다.
한번도 성공한 적이 없다며, Server의 Listen port가 없을 가능성이 높으며,
성공이 후 접속 지연문제라면, client port 문제로 볼수 있습니다. 리셋을 하면 다시 같은 초기 값부터 다시 2씩 증가하는 구조라면, PC에 이전 소켓 정보가 남아 있어서 접속이 안될 수 있습니다. 이럴 경우 PC를 재부퉁하여 다시 시도할 경우 접속이 됩니다. 여기를 참조하세요.
[url]소켓 connect 관련 문의드립니다]