삽질의 현장/- 네트워크 프로그래밍 26

#006_Window_Network_IP, DNS

안녕하세요 삽잡이입니다. 이번 시간에는 IP와 DNS에 대해서 생각해보려고합니다. 여러분은 Domain Name Server를 아십니까? DNS라고 부르는데요...클라이언트와 서버가 있다고 생각해봅시다.클라이언트가 서버에 접속하려는데, 따라서 클라이언트의 위치를 알아야겠지요.... 그것이 바로 IP입니다.반대로, 서버도 위치가 있어야지 접속을 할 수 있지 않겠습니까...이 위치도 IP를 말합니다. 서버는 어차피 클라이언트가 붙게되면 IP를 알게 되니까 상관 없지만,처음에 접속할 때 클라이언트는 서버의 위치 즉, IP를 모르면 접속을 할 수 없습니다. 우리가 인터넷을 접속을 위해 sapzapee.tistory.com 과 같이 입력을 하고 접속하면 원래는 IP로 접속 되는 것입니다.사실, 다음, 네이버도 모..

#005_Window_Network_구조체 멤버 정렬

안녕하세요 삽잡이입니다. 이번 시간에는 구조체 멤버 정렬에 관해 배워보도록 하겠습니다. MSG라는 구조체의 크기는 몇일까요?char 1바이트 int 4바이트 double 8바이트... 총 13바이트가 나오지 않을까요? 하지만, 16바이트가 출력이 됩니다. 제가 계산을 잘못한 것일까요?아닙니다. 16이 나오는 것이 맞다는 것입니다. 그 이유에 대해서 알아보도록 하겠습니다. 자... 그런데 감히 잡히시지 않습니까?저기 저 주석 처리된 메크로가 의심스럽니다. 아무튼...이 문제는 구조체 바이트 정렬에 의해서 생겨난 일입니다. 우선 말씀드리고 싶은 말이 있습니다. '구조체를 함부로 날리지 않는다. 구조체를 함부로 받지 않는다.'만약, 통신하는 다른 PC와 서로 구조체 정렬 방식이 다르다면,연산이 잘못되는 문제가..

#004_Window_Network_바이트 정렬

안녕하세요 삽잡이입니다. 이번 시간에는 바이트 정렬에 대해서 알아보도록 하겠습니다. 우선 바이트 정렬이 뭔지 알아보기 전에 변수 하나를 생성하고 그 안에 값을 채웠다고 해보겠습니다.그러면 데이터는 어떻게 채워질까요?채워지는 방법에는 두가지 방법이 있습니다. int n = 0x1234 라는 값을 초기화 했다고 가정해봅시다. n은 int형 변수로써 4개의 바이트를 가지고 있겠지요...위의 그림과 같이 데이터가 저장됩니다.그런데 왜 두가지가 표현됬을까요? 바로 두 방식이 모두 표준이기 때문입니다. 작은쪽의 주소에 끝값을 보관하고, 큰 쪽 주소에 앞쪽 값을 보관하고 있는 방법.작은쪽의 주소에 앞쪽 값을 보관하고, 큰쪽 주소에 끝 값을 보관하고 있는 방법. 작은 쪽 주소에 끝값을 저장한다고 해서 리틀 엔디안 방식..

#003_Window_Network_ 윈도우 소켓 초기화 및 종료

안녕하세요 삽잡이입니다. 이번 시간에는 기본적으로 네트워크 프로그래밍에 도움이 될만한 것들을 찾아서 알아보도록 하겠습니다. 네트워크 프로그래밍을 하면서 가장 기초적인 작업은바로, 윈도우 소켓을 장착시키는 것입니다. 너무도 당연하지요.... 윈도우 소켓도 종류가 많은데 가장 최신버전은 2.2버전입니다. 그 헤더는 winsock2.h이지요...이전 시간에 언급을 했었습니다. 윈도우 소켓을 사용한다는 것은 다른 PC와의 통신이 가능한 프로그램을 만들기 위해서라구요...우리가 통신을 하며 데이터를 주고 받는데 OS의 역할이 필요한데,OS가 역할을 하기 위해서는 통신을 위한 네트워크 lib가 필요하다고 했었습니다.물론 모든 기능들은 DLL 파일에 있겠지만, DLL의 암묵적인 연결을 지원하는 라이브러리 말입니다. ..

#002_Window_Network_ Intro (TCP/IP 4계층)

안녕하세요 삽잡이입니다. 이번 시간에는 TCP/IP 4계층을 통해데이터가 목적지의 PC에 어떻게 전달되는지 생각해보는 시간을 가져보겠습니다. 네트워크에는 전송을 위한 OSI 7계층이라는 개념이 있습니다. 이론 쪽인데...소켓을 처음 고안해낸 버클리 대학쪽에서 TCP/IP라는 4계층을 만들어 냈습니다...이를 통해 우리는 데이터가 어떻게 날라가는지 확인을 해보도록 하지요... 각 계층별로 핵심을 소개하겠습니다.이해가 가지 않더라도 우선은 가볍게 보시길 바랍니다. 우선 링크 계층에서는 '일대일 전송'을 보장해주고, 데이터 통신을 위한 하드웨어에 관련된 정의를 담당합니다. 다음으로 인터넷 계층에서는ID 번호를 보고 컴퓨터간에 통신을 할 수 있도록 해줍니다.그리고 'IP'를 집어넣습니다... 따라서 데이터를 보..

#001_Window_Network_ Intro (라우터)

안녕하세요 삽잡이입니다. 이번시간부터는 윈도우즈 네트워크 프로그래밍에 대해서 배워보려고합니다.네트워크... 그림으로 같이 표현해줘야하는데... 이게... 핑계같지 않은 핑계로 시간 때문에... 글로만 서술하는 것이 참 힘들군요 허허... 아무튼 달려보도록 하겠습니다. 네트워크는 기본적인 개념이 상당히 중요합니다. 네트워크란 우선 무엇일까요?기본적으로 우리말로 해석하면 Network는 '연결'을 의미합니다.연결이 되려면 단일 시스템으로 안됩니다.그래서 네트워크라는 개념이 들어가면 최소한 시스템 두 대가 연결되어야합니다. 네트워크는 연결되어있는 시스템을 가리켜'네트워크에 물려있는 End System'이라고 부릅니다. 왜 Computer라고 부르지 않을까요?우리는 컴퓨터로 인터넷 하지 않나요...굳이 End ..