클라이언트 서버간 네트워크 통신

wlstn8224의 이미지

안녕하십니까. 클라이언트 서버간 통신을 하여 데이터를 전송하고 싶어하는 사람입니다. 잘 설명할지 모르겠지만 현 상황은 이렇습니다.

총 3곳(물리적 장소가 다름, 동일한 서버에 데이터 전송 예정)

클라이언트 IoT기기(데이터 생성됨) --- KT egg(포트포워딩 기능 없음) ---- 동일한 서버(이미 구축되어있음)


이러한 상황에서 클라이언트 IoT기기 부분에서 데이터가 생성되면 서버로 초당 데이터를 쏴주면 됩니다.(송신만 하면 됨)


1. 이미 구축되어있는 서버에서 통신을 하려면 체크해야 되는 부분이 어떠한 것이 있나요?

잘 모르겠으나 직감적으로 IP?, 방화벽해제 방법?, 서버에 물려있는 공유기?, 포트포워딩? 등이 있을 것 같은데 조언좀 해주시면 감사하겠습니다.

2. 위의 네트워크 환경에서 TCP 소켓 프로그래밍으로 송신 가능한가요?

KT egg가 포트포워딩 기능이 없기 때문에 클라이언트가 수신은 안될 것 같은데, 송신은 될 것 같아서요.

아니면 초당 데이터를 보내는 다른 방법 있다면 추천좀 해주세요.

3. 만약 해당 상황에서 송수신이 안된다면 어떠한 기계를 바꾸거나 추가해야 할까요?

chanik의 이미지

egg가 있는 클라이언트쪽은 별 문제 없을 것 같고,

서버가 공유기 아래에 있다면 외부에서는 공유기만 보일 뿐 서버는 보이지 않으므로 공유기에서 특정포트에 대해 서버에서 리스닝하는 포트로 연결되도록 포트포워딩을 해야 합니다. 그리고, 서버쪽에 방화벽(서버내부 방화벽이든 외부방화벽이든)이 있다면 서버에서 리스닝하는 포트를 방화벽에서 열어야 할 것이고요.

그런데, 매초마다 IoT 기기들로부터 데이터가 발생하는 상황이면 중간에 공유기는 두지 않는 것이 낫지 않을까요? 공유기에 문제 생기면 모든 데이터 수집이 두절될텐데, 보통 공유기는 24시간 상시 의존할만한 장비는 아니니까요. 물론 개발/테스트 과정에는 별 문제 안 되겠지만요.

어쨌든 IoT 기기들이 TCP로 서버로 접속하여 데이터 전송 가능한 상황같고, 서버 관리자, 망 관리자가 있을테니 의논해보시면 설정 문제는 금방 답 나오겠네요.

wlstn8224의 이미지

감사합니다. 혹시 지금 현재 테스트 단계여서 egg공유기를 사용하는 건데, 나중에는 유선 LAN으로 연결하는 것이 좋다는 말씀이신가요?

chanik의 이미지

공유기는 egg를 뜻한 것은 아니고, 글쓴님께서 '서버에 물려있는 공유기?'를 언급하셨기에, 아마 아래와 같이 서로 다른 세 장소에서 IoT 기기들이 egg를 통해 공유기 뒤에 있는 서버에 접속해오는 구성이라 생각하고 말씀드린 것입니다. 클라이언트쪽의 오류는 한 기기로부터의 데이터수집이 멈추는 것으로 끝나지만 서버쪽의 오류는 전체 데이터수집 두절로 이어지므로, 서버가 24시간 접속가능해야 한다면 공유기 뒤에 두지 않는 것이 좋겠다는 의미였습니다.

IoT #1 -- KT egg #1 --- ...
 
IoT #2 -- KT egg #2 --- ... (LTE망) ... (인터넷) ... -- 서버에 물려있는 공유기 -- 서버
 
IoT #3 -- KT egg #3 --- ...
익명 사용자의 이미지

1.egg 하단에 PC를 물려 서버IP 으로 Listen Port 접근이 가능한지 확인
2.tcp 송수신 가능합니다. 단, IOT기기에서 서버로 먼저 접근하여 ESTABLISHED 상태에서 송수신 가능합니다.
( ftp의 active와 passive 모드와 같은 개념입니다.)
3. 송수신이 안된다면, 위 1,2번 둘중 어떤게 문제인지만 확인 하면 될꺼 같네요

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.