[완료] jvm에서 네트워크 스택 처리에 관한 질문입니다.

uviczz의 이미지

안녕하세요,

java를 이용해 소켓 프로그래밍을 하던 중 의문사항이 생겨
KLDP 유저 여러분께 질문을 올리게 되었습니다.

질문의 요지는
tcp socket 프로그래밍을 java로 구현하게 되면..
tcp 프로토콜 스택이 동작 할 텐데.. 이것이 jvm 내에서 동작하는건지.. 아니면
jvm은 단순히 커널과 인터페이스만 제공해주고 커널에서 프로토콜 스택을 처리하는 것인지 궁금합니다.

이런 의문이 생긴 이유는 소켓 API를 지원하는 새로운 프로토콜을 동작시킬 때,
java로 소켓 프로그래밍 하기 위해선 어떠한 일이 필요한 가에 대해 생각해 보았기 때문입니다.

표준 소켓 API를 지원하는 tcp 이외의 다른 프로토콜을 java기반 응용프로그램에서
사용하려면(이 프로토콜은 커널에서 지원 가능하다고 가정합니다) jvm을 수정해서 새로운 프로토콜이
jvm내에서 동작하도록 완전히 추가해야 하는 것인지, jvm이 커널과 인터페이스 역할을 해 줄 수 있도록만
수정하는 것인지 궁금합니다.

제가 리눅스 환경에서 C 프로그래밍을 위주로 일을 해오던 중
java 기반 응용프로그램을 이용해야 할 일이 생겨 질문 드립니다.

그리고 이러한 일의 복잡도 및 로드는 얼마 정도 될 것인지도 궁금합니다.

의견 있으시면 답글 남겨주시면 감사하겠습니다.
그럼 고운하루 되세요.

codepage의 이미지

JVM이 O/S와 interface하기 위해서는
반드시 JNI(JAVA NAtive Interface)란 것을 거치게 되어 있습니다.
JAVA를 쓰는 사람들이야 그냥 구현되어 있는 클래스를 갖다 쓰면 되지만
단순히 Socket Class 하나만 상요한다고 하더라도 JNI로 interface 되어 있는 것을 끌어다 쓸 뿐입니다.
따라서 JAVA에서 지원하지 않는 Network Protocol Stack을 올릴 경우에 반드시 JNI를 써야 합니다.
먼저 C로 dll이나 so를 JNI규격에 따라 만들고 java에서 이를 호출하면 됩니다.

JNI쓰는 방법은 인터넷 뒤지면 예제가 많이 나와 있으니 참고하시길 바라고
단 naming convetion이 까다로우니 유의하시기 바랍니다.

uviczz의 이미지

감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.