프로그래밍 95

캡슐화

캡슐화 택배를 보낼 때 완충재를 넣거나 주소를 적듯이, 데이터를 주고받기 위해서도 여러 가지 필요한 것이 있다. 때문에 데이터에 수신처, 송신처의 주소, 그리고 데이터 통신을 제어하기 위한 데이터나 각 프로토콜에서 필요한 정보를 덧붙인다. 이렇게 데이터와 데이터를 보내기 위해 필요한 것들이 통합된 상태를 프로토콜 데이터 유닛(Protocol Data Unit:PDU)이라고 한다. 각 계층을 지날 때마다 데이터에 통신에 필요한 정보(제어 데이터)를 덧붙인다고 했는데, 이 제어 데이터가 데이터의 앞에 붙으면 헤더(Header), 뒤에 붙으면 꼬리부(Tailer)라고 한다. 각 계층에서 PDU의 호칭 계층 호칭 내용 사용자 데이터(Data) 송수신하고 싶은 데이터 7계층 PDU 6계층 PDU 5계층 PDU 메..

TCP/IP

프로토콜군 보통 데이터 통신에 필요한 프로토콜은 한 개가 아니라 여러 개이며, 각각이 독립적이다. 하지만 각 프로토콜이 완전히 독립적이면 상하 계층의 연결이 되지 않기 때문에 곤란하다. 때문에 상위 계층 프로토콜이 하위 계층 프로토콜을 이용할 수 있는 구조를 가지고, 하위 계층 프로토콜이 상위 계층 프로토콜에 데이터를 전송할 수 있는 구조를 가질 필요가 존재한다. 이러한 구조, 또는 프로토콜과 프로토콜의 중개역을 인터페이스라고 부른다. 상하 프로토콜의 인터페이스를 결정해두면 프로토콜 그룹이 되는데, 이것을 프로토콜군(Protocol Sutie)라고 부른다. TCP/IP 프로토콜군 TCP 및 IP라고 불리우는 프로토콜을 중심으로 구성되는 일련의 프로토콜들을 총칭하는 말이다. 일반적으로 TCP/IP라고 하면..

C++ std::istream::get, std::istream::getline 함수 알아보기

std::istream::get istream에 정의되어 있는 퍼블릭멤버함수로, 스트림에서 unformatted input으로 문자를 추출하는 기능을 한다. int get() // 1-1 istream& get(char& c) // 1-2 istream& get(char* s, streamsize n) // 2-1 istream& get(char* s, streamsize n, char delim // 2-2 istream& get(streambuf& sb) // 3-1 istream& get(streambuf& sb, char delim) // 3-2 /* 매개변수 설명 c : 추출할 문자를 저장할 변수에 대한 reference s : 문자 배열에 대한 포인터. 추출된 문자들은 c-string으로 여기..

OSI 참조 모델

OSI 참조 모델 데이터를 주고받을 때(통신할 때) 사용하는 규칙을 프로토콜(Protocol)이라고 하고, 통신하는 상호 간에 같은 프로토콜을 사용해야만 의도한 내용을 주고받을 수 있다고 한다. 1960년대 ~ 1970년대에는 각 업체가 자신들의 컴퓨터끼리 네트워크를 사용해서 데이터 통신을 할 수 있도록 컴퓨터와 통신에서 사용하는 기기, 프로토콜 규격을 독자적으로 만들었고, 이로 인해 다른 회사와는 규격이 달라 호환되지 않는 문제가 발생했다. 이를 해결하고자 데이터 통신의 규격과 프로토콜을 통일하려고 했던 ISO(International Organization for Standardization, 국제표준화기구)라는 단체가 있었다. ISO의 표준화 단계에서 선언한 것이 바로 OSI 참조 모델(Open S..

C++ cin 객체 알아보기

1. cin cin은 istream 클래스의 객체로, narrow characters(8비트 문자로 인코딩되는 문자들)를 위한 표준 입력 스트림(standard input stream)이다. cin은 C stream인 stdin과 대응되고 동기화된다. 표준 입력 스트림이란 프로그램에서 입력을 받는 통로이다. 기본적으로는 키보드로부터 입력을 받지만, 파일로부터 입력을 받을 수도 있다. 추출 연산자(extraction operator) >>를 사용하여 타입을 가진 데이터(formatted data)를 입력받을 수 있고, read와 같은 멤버 함수를 사용하여 타입이 지정되지 않은 데이터(unformatted data)를 입력받을 수 있다. cin 객체는

C++에서 isdigit, isalpha 함수 알아보기

1. isdigit 에 의해 정의되어 있으며, 매개변수로 들어온 문자가 십진수인지 아닌지 검사하는 함수이다. 매개변수는 검사되어야 하는 문자인 c가 있다. 이를 통해 isdigit 함수는 매개변수로 들어온 c가 십진수인지 아닌지 검사하는 함수라는 것을 알 수 있다. 이때 c는 int나 EOF로 캐스팅된다. 만약 c가 십진수라면 0이 아닌 수를 반환하고(참), c가 십진수가 아니라면 0을 반환한다(거짓). 사용 예시 /* isdigit example */ #include #include #include int main () { char str[]="1776ad"; int year; if (isdigit(str[0])) { year = atoi (str); printf ("The year that follo..

네트워크 구분

멀티액세스 네트워크와 포인트 투 포인트 네트워크 멀티액세스 네트워크(multi-access network)는 특정 네트워크에 속해 있는 어느 컴퓨터가 세그먼트 내의 어떤 컴퓨터에도 자유롭게 데이터를 송신할 수 있는 네트워크 구조를 의미한다. 세그먼트를 설명하기 위해서는 다음과 같은 가정이 필요하다. 우리가 다룰 네트워크가 컴퓨터와 라우터, 라우터와 라우터, 라우터와 컴퓨터로 연결되어 있다고 가정해보자. 그렇다면 컴퓨터가 세 대 존재할 때, 라우터가 세 대가 필요하다. 물론 실제로는 이렇게 사용하지 않는다. 특정 범위 내에 있는 컴퓨터는 라우터에 의한 패킷 교환이 아니라 회선을 나누어서(파이프를 T자로 나눈다고 한다.) 연결한다. 이때 패킷 교환 없이 케이블 분배기로 연결되는 범위(케이블을 T자로 나누어서..