반응형

네트워크 및 보안 56

[TCP/IP 프로토콜 파헤치기] 1. 통신 모델과 와이어 샤크

1. 통신 모델과 와이어 샤크데이터 통신(Data Communication)은 통신 규약에 맞게 통신 회선을 통해 원격지에 있는 통신 개체 사이에 데이터를 송수신하는 것을 말합니다. 그리고 데이터 통신에서의 통신 규약을 통신 프로토콜이라고 부릅니다. TCP/IP 프로토콜(Protocol)은 미국 국방성 산하 기구인 DARPA에서 개발한 통신 프로토콜입니다. 현재 인터넷에서 TCP/IP 프로토콜을 사용하고 있으며 통신 개체의 기종이나 운영체제에 관계없이 표준 프로토콜입니다. 통신 프로그램을 개발할 때 표준 프로토콜에 맞게 구현한 소켓 라이브러리를 사용하면 서로 다른 기종이나 운영체제에 관계없이 작성할 수 있습니다. 이 책은 TCP/IP 프로토콜을 하나 하나 소개하고 프로토콜에서 약속한 것이 어떠한 의미인지..

5. WSAEventSelect를 이용한 멀티플렉싱, 채팅 [TCP/IP 소켓 통신 프로그래밍 with 윈도우즈]

5. WSAEventSelect를 이용한 멀티플렉싱 이번에는 WSAEventSelect 이용한 멀티플렉싱을 살펴봅시다. 채팅 서버는 클라이언트로부터 메시지를 수신하면 채팅 방에 접속한 모든 클라이언트에게 메시지를 전달해 주어야 합니다. 이와 같은 처리를 위해서는 채팅 방에 접속한 전체 클라이언트 정보를 기억하고 있어야 합니다. 특히 채팅 서버에서는 별도의 쓰레드없이 Listen 소켓에 클라이언트의 연결 요청이 있는지와 클라이언트로부터 수신한 메시지가 있는지 확인하는 작업이 필요합니다. WSAEventSelect 모델은 특정 소켓에 특정 사건이 발생하였는지 확인하기 위한 이벤트 개체를 만들어 처리하는 모델입니다. 채팅 서버를 예를 들면 Listen 소켓에 연결 요청이 있을 때 신호 상태로 전이할 이벤트 개..

4. 스레드를 이용한 멀티플레싱 [TCP/IP 소켓 통신 프로그래밍 with 윈도우즈]

4. 스레드를 이용한 멀티플렉싱 3장에서 만든 TCP 에코 서버는 동시에 하나의 클라이언트에게만 서비스를 제공할 수 있습니다. 하나의 서버가 동시에 여러 클라이언트에게 서비스를 제공하는 것을 멀티플렉싱(Multiplexing)이라 부릅니다. 이번 장에서는 스레드를 이용하여 멀티플렉싱을 구현하는 방법을 알아보기로 합시다. 4.1 스레드 스레드란 하나의 프로세스 내에서 독립적인 수행할 수 있는 작업 단위입니다. 예를 들어 파일 공유 P2P 프로그램을 사용할 때 동시에 여러 개의 파일을 다운로드를 받는 것은 스레드를 사용한 대표적인 예입니다. #include using namespace std; #include #include void ThreadEntryPointA(void *param) { for(int ..

3. TCP 에코 서버/클라이언트 만들기 [TCP/IP 소켓 통신 프로그래밍 with 윈도우즈]

3. TCP 에코 서버/클라이언트 만들기 이번 장에서는 TCP 프로토콜을 이용하여 간단한 에코 서버와 에코 클라이언트를 만들어 봅시다. 이를 통해 여러분은 윈속 라이브러리에서 제공하는 기본 함수들의 사용법을 살펴볼 수 있습니다. 에코 서버란 클라이언트에서 수신한 데이터를 클라이언트에게 재전송하는 서버를 말합니다. 3.1TCP 통신 절차 TCP 프로토콜을 이용한 통신은 서버와 클라이언트 사이에 연결을 형성한 후에 스트림 방식으로 패킷을 송수신합니다. 스트림 방식의 통신에서는 전송한 패킷의 순서대로 도착하며 패킷 전송 중에 전송이 실패하면 다시 전송하여 신뢰성을 보장하는 방식입니다. TCP 통신에서 서버는 대기 소켓을 생성하고 로컬 소켓 주소로 네트워크 인터페이스와 결합한 후에 백 로그 큐를 설정합니다. 이..

2.5 자주 사용하는 윈속 함수[TCP/IP 소켓 통신 프로그래밍 with 윈도우즈]

2.5 자주 사용하는 윈속 함수 윈속을 이용하여 TCP/IP 통신 프로그램을 작성할 때 사용하는 기본적인 함수와 자료형을 살펴봅시다. 여기에서 소개하는 함수는 다음 장부터 실제 사용하는 방법을 예제 코드와 함께 설명할게요. 여기에서는 먼저 윈속 라이브러리의 기본적인 함수와 자료 형식을 간략하게 살펴봅시다. 2.5.1 socket, closesocket 윈속 라이브러리에서는 소켓 생성 함수와 소켓을 닫는 함수를 제공합니다. 소켓과 로컬 네트워크 인터페이스를 결합하는 함수 int bind(SOCKET sock,const struct sockaddr *addr,int addrlen); 실패 시: -1(SOCKET_ERROR) 반환 소켓 주소 구조체 typedef struct sockaddr { u_short ..

2. 윈도우즈 소켓 [TCP/IP 소켓 통신 프로그래밍 with 윈도우즈]

2. 윈도우즈 소켓 네트워크 통신 프로그래밍을 하기 위해서 사용하는 입출력 인터페이스를 소켓이라 부릅니다. 버클리 대학에서 시작한 BSD 유닉스가 최초의 소켓이며 흔히 소켓이라 부르면 버클리 소켓을 말합니다. 그리고 버클리 소켓을 기반으로 마이크로 소프트 사에서 윈도우즈 운영체제에서 사용할 수 있게 만든 소켓을 윈도우즈 소켓이라 부르며 흔히 윈속이라 줄여서 불리고 있습니다. 윈속은 윈도우즈 운영체제의 버전 업그레이드와 함께 변화하였는데 95년에 윈속 2.0을 발표하였으며 이 책에서는 윈속 2.2 버전을 사용합니다. 이번 장에서는 윈속에서 제공하는 기본적인 함수와 자료형들에 관하여 살펴봅시다. 2.1 윈속 초기화 윈속을 사용하려면 먼저 WinSock2.h 파일을 포함하고 ws2_32.dll을 동적 링크하여..

1.2 프로토콜 [TCP/IP 소켓 프로그래밍 with 윈도우즈]

1.2 프로토콜 프로토콜은 네트워크 상의 호스트 사이에 데이터를 주고 받기 위해 약속한 구조와 방식을 말합니다. 프로토콜을 이해하기 위해 수평 통신과 수직 통신을 살펴봅시다. 수평 통신은 같은 계층의 엔터티간의 통신을 말하며 프로토콜 스택을 이용하여 약속합니다. 수직 통신은 N계층에서 N-1 계층의 서비스를 사용하는 것을 말합니다. 수직 통신은 N-1 계층에서 N계층에게 제공하는 서비스입니다. 따라서 하위계층에서 제공하는 서비스를 상위 계층에서 이용하여 메시지를 패킷화하여 물리계층의 프레임 형태로 만들어집니다. 이러한 네트워크 프레임은 라우터를 통해 목적하는 호스트까지 전달합니다. 목적하는 호스트에서는 하위 계층의 프로토콜 스택을 확인하여 상위계층에 수신한 프레임을 패킷화하여 응용 프로그램에 메시지로 전..

1. TCP/IP 네트워크 소개 1.1 통신 모델 [TCP/IP 소켓 프로그래밍 with 윈도우즈]

1.TCP/IP 네트워크 소개 네트워크는 송신자와 수신자 사이에 메시지를 주고 받기 위해 구성하고 있는 것들의 집합입니다. 그리고 네트워크를 구성하는 모습이 그물 구조와 비슷하여 네트워크 망이라고 부릅니다. 네트워크 망에는 전화 망과 디지털 통신 망 등이 있는데 이 책에서는 IEEE표준인 이더넷(Ethernet) 망을 기준으로 기술하였습니다. 네트워크 망에서 송신자와 수신자 사이에 메시지를 주고 받기 위해서는 통신 규칙과 방법에 관한 약속이 필요한데 이를 네트워크 프로토콜이라 부릅니다. 이 책에서는 이더넷 망의 기본 프로토콜인 TCP/IP 프로토콜로 통신하는 방법을 소개합니다. 1.1 통신 모델 통신 개체 사이에 통신을 효과적으로 진행할 수 있게 표준 기구에서는 역할에 따라 여러 개의 계층으로 나누고 있..

DNS(Domain Name System, RFC 1034)

DNS(Domain Name System, RFC 1034) 참고: RFC 1034, http://tools.ietf.org/html/rfc1034 DNS는 호스트 이름을 망 계층에서 IP 주소로 매핑하는 응용 계층 서비스이다. 도메인 이름 공간 도메인 이름 공간은 계층적인 트리 구조이다. 트리 구조의 각 노드는 63개의 문자로 구성한 문자열 레이블을 갖는데 루트 노드의 레이블은 빈 문자열이다. 같은 부모 노드의 자식 노드들은 서로 다른 레이블을 가질 수 있으며 이는 도메인 이름이 유일함을 보장한다. 그리고 도메인 이름은 자신의 이름에서 점(.)을 추가하여 부모 노드로 이동하며 완성한다. 위 그림에서 ehclub 노드의 완성한 이름(FQDN, Fully Qualified Domain Name)은 ehcl..

DHCP(Dynamic Host Configuration Protocol)

DHCP(Dynamic Host Configuration Protocol) DHCP 프로토콜은 동적으로 호스트 IP를 부여하기 위한 프로토콜이다. 참고: 위키백과, http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol RFC 2131, http://tools.ietf.org/html/rfc2131 DCHP 호스트 상태 및 동작 원리 INIT: 초기 상태 DHCP Discover 메시지를 67번 포트를 사용하여 브로드캐스트한다. SELECTING: 선택 상태 DHCP Discover 메시지를 보낸 후의 상태이다. 서버에서 DHCP Offer 메시지를 수신한다. REQUESTING: 요청 상태 DHCP Request 메시지를 보낸 후의 상태이다...

반응형