JMSN은 MSNP9 이하 버젼의 파일전송 프로토콜을 사용합니다. Direct 모드로 파일을 주고 받으며, 이는 결국 파일을 보내는 사람이 NAT에 있거나 방화벽등으로 public ip를 가지지 못한다면 파일을 보낼 수 없음을 의미합니다. 파일을 주고 받는데 사용하는 TCP 포트번호는 6891 부터 1씩 증가하도록 해두었으며, Microsoft의 MSN 또한 TCP/6891 포트를 사용합니다.
하고자 하는 말인즉.. 파일을 보내려고 하는 사람의 PC에 랜카드가 여러장 있을 경우 JMSN은 무슨 주소를 사용해야하는지 혼란스러워합니다. JMSN에서는 단지 java.net.InetAddress 의 getLocalHost().getHostAddress()를 자신의 주소라고 판단하기 때문입니다. 이럴 경우 자신은 public ip 인 경우에도 파일을 보내지 못할 수 있습니다.
상대방에게 '내 주소는 여기니까 이리로 와서 파일을 받으렴' 하고 말하는데, 잘못된 주소를 넘겼다면 파일 송신이 정상적으로 될리 만무합니다. 그럴때 사용하는 System property가 있습니다. jmsn.file.host 입니다. JMSN에서는 만약 jmsn.file.host 프로퍼티가 설정되어있다면 InetAddress.getLocalHost를 사용하지 않고 jmsn.file.host 의 값을 자신의 주소로 대입시키기 때문입니다.
java -Djmsn.file.host=211.233.51.29 -jar jmsn.jar
이런식의 사용이 가능합니다. 이것은 잘 활용하면 NAT 에서도 파일을 보낼 잔머리를 굴릴 수도 있지요. JMSN을 사용하는 데스크탑의 아이피가 192.168.1.100 이지만, public ip를 가지면서 192.168.1.100 에 접근할수 있는 녀석이 있다면 (혹은 ssh의 -L 옵션을 사용한다면) jmsn.file.host는 public ip를 가지는 장비의 주소를 주고, 해당 장비에서 6891 포트로 들어오는 패킷을 192.168.1.100의 6891로 포워딩 해주면 파일을 잘 보낼수가 있지요!
이 프로퍼티는 위와 같은 상황에서 쓰려고 JMSN 초반인 2002년 초에 만들어둔 것이지만, 특별히 document 된적도 없기때문에 늦게나마 블로그로 올려봅니다. :D
Continue Reading
Discover more thoughts and insights
규칙적인 생활
사회적 동물인 사람이 세상을 살아가면서 규칙적으로 (특히 시간) 사는게 중요하다는 생각을 문득 다시 해본다. 언제부터 이렇게 생활패턴이 개판이 됐을까. 초중고 결석, 지각해본 역사 없고 98-99년에 학교다닐때도
마인드 해킹 - 인상 깊었던 구절
다 읽은 후 인상 깊었던 구절들을 역순으로 적어본다. 카페인 중독자들이 사회적으로 용인된 이 갈색 액체 흥분제를 정기적으로 소비해야만 하는 강박을 통하여 과연 실제로 득을 보는지에 관한 논란은 아직도 끝나지
세상의 중심에서 사랑을 외치다 - 눈을 감고
이번에는 영화 '세상의 중심에서 사랑을 외치다' OST 중 하나인 '눈을 감고' 곡의 Piano version 입니다. 여태까지 올렸던 4곡 중 가장 연습을 많이 했으면서 가장 틀린 부분이 많은 곡입니다만