본문 바로가기

전체 글

(13)
심볼릭 링크 (symbolic link) POSIX 호환 운영 체제에서 심볼릭 링크는 symlink() 시스템콜을 사용하여 만든다. ln이라는 셸 명령어는 보통 하드 링크를 만드는 link()시스템콜을 사용하며, ln -s 플래그를 지정하게 되면 symlink() 시스템콜을 사용하여 링크를 만든다. ln -s [대상 경로] [링크 경로] 대상 경로 - 심볼릭 링크가 가리키는 상대 경로나 절대 경로 - 일반적으로 대상은 존재하지만, 심볼릭 링크는 존재하지 않는 대상을 가리키는데 사용할 수도 있다. 링크 경로 - 심볼릭 링크의 경로 심볼릭 링크를 만들면 이 링크는 대상에 대한 별명(Alias)로 취급되는 것이 보통이다. cp, rm과 같은 시스템 관리 명령을 심볼링 링크에 사용할 수도 있다. 심볼릭 링크를 읽고 쓰는 명령을 사용하면 대상 파일의 내..
Apache zookeeper란? Apache zookeeper 공식 문서에 나와있는 zookeeper의 정의는 "분산 어플리케이션을 위한 분산 코디네이션 서비스"이다. ZooKeeper: A Distributed Coordination Service for Distributed Applications 분산 어플리케이션을 위한 분산 코디네이션 서비스.. 이 단어 모음을 보고 한 번에 이해가 간다면 당신은 이미 서버 아키텍처에 대해 상당한 이해를 갖고 있는 거라고 생각한다. 분산 어플리케이션이 뭔지도 잘 모르겠는데, 이를 코디네이션 하는 서비스..? 차차 알아가 보자... 1. 분산 시스템이란? 주키퍼를 통해 관리한다는 분산 어플리케이션(정확한 의미를 위해 분산 시스템이라고 하겠다)이란 말 그대로 하나의 시스템이 여러 서버에 분산되어 있는..
Socket Programming - TCP 세션 수립 및 종료 TCP는 두 종단간 신뢰성 있는 데이터 전송을 보장한다. 이를 위해 TCP에서 어떻게 연결 세션을 맺고 끊는지 알아보며, 마지막에는 Socket API와 TCP flow를 매핑하여 흐름을 알아보자. 1. TCP 3-way handshake 두 장치들 사이에 논리적인 접속을 성립 (establish)하기 위하여 TCP에서 사용하는 방법 - 정확한 전송을 보장하기 위해 상대방 장치와 사전에 세션을 수립하는 과정을 의미한다. TCP 3-way handshaking 과정 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다. 서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 ..
Socket Programming 실습 정말 간단한 에코서버를 TCP소켓과, UDP소켓으로 구현해 보았다. 소켓 API를 어떻게 사용하는지 정도만 알아보는데 참고하면 좋을듯 하다. TCP Socket Client #include #include #include #include #include #include #include #define BUF_SIZE 128 int main(int argc, char *argv[]) { /* * 1. local variable 선언 * * s : socket descriptor * server_addr : server 의 주소를 정의하는 구조체 * ip_addr : server 의 ip address * buf : input, receiver buffer */ int sd; struct sockaddr_in..
Socket Programming - Socket # Index 1. Socket이란 2. Socket과 TCP, Application의 관계 3. Socker 구현 4. Socket API 5. Socket Programming Sequence 6. Socket Close 1. Socket이란 1-1. Socket의 정의 Socket은 파일 디스크립터(fd)를 통해 서로 다른 프로그램간에 정보 교환을 가능하게 해주는 방법이다. 따라서 소켓을 소프트웨어로 작성된 프로그램의 통신 접속점이라고 할 수 있으며, 응용 프로그램 (Application)은 소켓을 통해여 네트워크에 데이터를 송수신 하게 된다. 쉽게 말해 Socket이란, 응용 프로그램 (Application)에서 네트워크에 데이터를 전송하기 위해 사용하는 콘센트(?) 라고 생각할 수 있다. 1-2..