아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • Linux
  • jsp
  • 아이폰
  • C
  • Java
  • Android
  • javascript
  • 전라도
  • 안드로이드
  • mysql
  • 여행
  • Python
  • Dungeons & Dragons
  • 해킨토시
  • Ruby on Rails
  • 정읍
  • 던젼 앤 드래곤즈
  • TRPG
  • 자바
  • CSS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Devlopment/정리 글

Java에서 JNI를 써서 핑 프로그램을 구현하는 이유

2012. 1. 30. 10:18
반응형
자바로 된 핑 프로그램에 대해 분석하다가 이상한 점을 발견했다.
JNI를 이용해서 핑 프로그램을 구현한 것이다. 웹에서 찾다보면 자바로 구현한 소스도 있는데, 왜 굳이 JNI를 썼을까 알 수가 없었는데 책을 찾아보다가 그 이유를 알게 되었다.



핑 프로그램은 ICMP(Internet Control Message Protocol)을 사용하는데, ICMP 패킷은 SOCK_RAW형식의 소켓만을 지원한다. 이런 이유로 자바에서는 제대로 된 핑 프로그램을 구현할 수 없다. 결국 대부분의 자바 네트워크 책에서 소개되는 핑 프로그램은 핑 프로그램을 흉내를 내는것 뿐이다.

SOCK_RAW의 경우는 좀 더 높은 수준의 제어를 하고 싶은 사용자를 위한 것으로, 패킷(Packet)을 전달할 때 패킷이 지나갈 경로까지도 지정할 수 있따. 이는 패킷을 받는 쪽에게 잘못된 경로의 패킷을 전송할 수도 있다는 것을 의미한다. 마치, 이미 접근을 허락 받은 클라이언트인 것처럼 잘못된 내용을 담아서 전송할 수 있다는 것이다. 이러한 이유로 보안상 문제가 발생할 수 있기 때문에 자바 언어에서는 SOCK_RAW를 지원하지 않는다.

자바 IO&NIO 네트워크 프로그래밍에서 발췌.


참고
SOCKET의 3가지 타입 - SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
자바에서는 SOCK_RAW를 지원하지 않음.
반응형

'Devlopment > 정리 글' 카테고리의 다른 글

DDD와 JPA에 대해서 알아야 하는 이유  (0) 2016.06.24
함수형 프로그래밍이 주목받는 이유  (0) 2016.04.27
적정 스레드 수  (0) 2013.05.20
Qt(Qt Development Frameworks)란 무엇인가?  (0) 2012.04.16
정규식 예제  (0) 2012.03.29
버전 관리 & 이슈 관리 시스템  (0) 2011.06.07
C와 Java의 컴파일 과정  (1) 2011.05.27
난수 발생기  (2) 2010.06.23
SnmpWalk  (0) 2010.04.27
객체 지향 원칙  (0) 2008.08.21
    'Devlopment/정리 글' 카테고리의 다른 글
    • Qt(Qt Development Frameworks)란 무엇인가?
    • 정규식 예제
    • 버전 관리 & 이슈 관리 시스템
    • C와 Java의 컴파일 과정
    아틴
    아틴

    티스토리툴바