맥어드레스(Mac Address)로 장비에 연결
제가 하려고 하는것은 IP를 설정할 수 없는 장비에 접속해서 패킷을 보내려고 합니다.
IP는 없지만 맥어드레스는 있습니다.
기존에 장비와 통신하고 있는 프로그램이 있는데 그프로그램과 장비가 통신하고 있는 프로토콜을 캡쳐해서
제가 별도로 프로그램을 만들고 싶습니다.
캡쳐한 패킷을 보고 패킷을 만들어서 WinPcap Lib의 SendPacket()으로 패킷 보내는(CR : Connection Request)것까진 됐는데
응답이 CC(Connection Confirm)가 와야하는데 DR(Disonnection Request)이 날라옵니다.
PC 프로그램과 장비의 프로토콜은 ISO 8073 COTP(Connection-Oriented Transport Protocol) 입니다.
프로토콜을 캡쳐한 화면을 캡쳐해서 파일첨부했습니다.
첨부한 이미지를 보시면 Source Reference와 Called TSAP, Calling TSAP가 있는데
Calling TSAP는 장비에 설정되어 있는값을 넣으주면 되는것 같고 , 문제는 Called TSAP와 Source Reference입니다.
Called TSAP는 원래 통신이 잘되는 PC프로그램에 특정값("READREA5")을 설정해 두고 패킷을 전송할때 이값이 동일하게
날라갑니다. 이값이 하는 역활이 뭔지 모르겠네요. 그리고 Source Reference 가 뭐하는 넘인지 모르겠습니다.
막연한 생각으로는 일반 소켓통신에서 Port와 같은 역활을 하는거 같은데 그냥 제 생각입니다.
처음 PC프로그램이 통신을 연결할때(CR 패킷을 보낼때) Source Reference에 랜덤한 값을 넣어주고
Destination Reference에는 0x0000값을 넣어서 보내면 정상적일때는 장비에서 CC 패킷이 날라오는데 Source Reference에
장비의 Source Reference 값이 들어있고 Destination Reference에는 PC가 보냈던 Source Reference값이 들어있습니다.
연결된 이후에는 서로 주고 받는 Source, Destination Reference로 서로 통신을 하는것 같습니다.
통신을 재연결하면 이 값들이 다시 바뀝니다. 이런 부분들이 일반 소켓통신에서 Port와 비슷해서 Port 역활이 아닌가 생각했습니다.
비정상적을때(제가 별도로 만든 프로그램)는 PC에서 CR 패킷을 보내면 DR 패킷이 날라옵니다.
당연히 DR 패킷에는 장비의 Source Reference값이 0x0000값이 들어있습니다.
제가 알고싶은것은 Called TSAP가 하는 역활이 무엇인지와 PC에서 CR 패킷을 보낼때 Source Reference 하는 역활이 무엇이며
Source Reference 값을 만드는 규칙이 있는건지 궁금합니다. 더 궁금한건 많지만 일단 하나하나 풀어나가야 되겠네요..
제가 지식이 짧고 말주변이 없어서 이해하시기 힘드실수도 있습니다. 고수님들의 답변 부탁드립니다.
[요청 패킷(CR)]
[정상응답 패킷(CC)]
[비정상응답 패킷(DR), 연결해제 패킷]
| 첨부 | 파일 크기 |
|---|---|
| 195.42 KB | |
| 218.97 KB | |
| 153.54 KB |


댓글 달기