Home

시스템 콜(System Call)

Summry 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많으 부분이 커널 모드를 사용한다. 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다. 보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출(System Call)을 사용할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법이다. 통상적으로 시스템 콜은 여러 종류의 기능으로 나뉘는데 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이러한 번호에 ...

Read more

Socket sockaddr, sockaddr_in, sockaddr_un

Summry 리눅스/유닉스 시스템에서는 소켓(socket)의 통신 대상을 지정하기 위해 주소(address)를 사용한다. 이 주소라는 것을 저장하거나 표현하는데 사용하는 구조체가 struct sockaddr 이다. bind( ), connect( ) 와 같은 함수들이 2번째 파라미터로 struct sockaddr 을 받는다. 본 문서에서는 socketaddr 구조체의 종류와 역할을 정리한다. send me email if you have any questions.

Read more

htons(), htonl(), ntohl(), ntohs()

Summry 데이터는 바이트 단위로 저장되지만 저장되는 방식에 있어서 CPU마다 차이가 발생하게 된다. 예를 들어 4바이트 크기의 int자료를 저장한다고 했을 때 어떤 CPU는 가장 낮은 바이트부터 저장을 하는가 하면, 어떤 CPU는 가장 높은 바이트 부터 데이터를 저장하기도 한다. 전자를 Little Endian방식, 후자를 Big Endian방식 이라고 한다. 이런 이유로 서로 다른 데이터 저장 방식을 사용하는 시스템끼리 통신을 하게 될경우 전혀 원하지 않는 값들을 서로 주고 받는 경우가 발생할 수 있다. 한쪽에서는 12345를 보냈는데, 다른 한쪽에서는 엉뚱하게 365779719로 받아 들이는 문제들이 발...

Read more

C TCP/UDP socket

Summry 본 문서에서는 클라이언트와 서버를 만들어 TCP/UDP Socket 통신을 구현한다. send me email if you have any questions.

Read more

Socket Parameters

Summry 본 문서에서는 socket 생성 시 대입하는 파라미터를 정리한다. send me email if you have any questions.

Read more

Socket bind

Summry 본 문서에서는 socket 에 IP 주소와 포트번호를 지정해주는 bind()함수를 설명한다. send me email if you have any questions.

Read more

AF_INET vs PF_INET

Summry 본 문서에서는 socket 생성 시 사용되는 파라미터인 AF_INET 과 PF_INET 의 차이를 설명한다. send me email if you have any questions.

Read more

바인딩(Binding)

Summry 바인딩(Binding)이란 프로그램의 어떤 기본 단위가 가질 수 있는 구성요소의 구체적인 값, 성격을 확정하는 것을 말한다. int num = 123; 위와 같은 C 코드가 있다 할 때 아래는 변수 속성의 구체적인 값이다. int : 자료형 num : 이름 123 : 값 이처럼 자료형, 이름, 값에 각각 int, num, 123이라는 구체적인 값을 할당하는 과정을 바인딩(Binding)이라 한다. 또한 함수에서도 바인딩이 일어나는데, 이때 바인딩은 어떤 코드에서 함수를 호출할 때 그 해당 함수가 위치한 메모리 주소로 연결해주는 것을 의미한다. 본 문서에서는 정적 바인딩(Sta...

Read more