소켓 프로그래밍이란?

이동욱

2021/07/25

Categories: 네트워크

소켓 프로그래밍 입문


네트워크 프로그래밍의 정의

소켓 API를 이용하여 컴퓨터 네트워크를 사용하는 프로그램을 작성하는 것

소켓과 입출력


프로세스의 입장에서, 소켓에 관계된 작업은 다른 프로세스로부터 데이터를 받는 작업과 다른 프로세스에게 데이터를 주는 작업이라고 볼 수 있다.

간단한 소켓 프로그래밍


#include <sys/socket.h>

int socket(int domain, int type, int protocol);
#include <sys/socket.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main() {
  int sd1, fd1, sd2, fd2;
  sd1 = socket(PF_INET, SOCK_STREAM, 0);
  fd1 = open("test", O_RDONLY);
  sd2 = socket(PF_INET, SOCK_STREAM, 0);
  fd2 = open("test2", O_RDONLY | O_CREAT);
  printf("sd1: %d, fd1: %d, sd2: %d, fd2: %d\n", sd1, fd1, sd2, fd2);
  close(sd1);
  close(fd1);
  close(sd2);
  close(fd2);
  return 0;
}

// result: sd1: 3, fd1: 4, sd2: 5, fd2: 6

통신 프로토콜


1. 우리가 알고 있는 접속 주소를 네트워크 장비들이 이해할 수 있는 주소로 변환하는 작업
2. 교환할 데이터를 패킷으로 만드는 작업
3. 패킷이 이동하는 길의 이정표를 만드는 작업
4. 패킷의 목적지와 이정표를 확인하여 올바른 경로로 패킷을 전달하는 작업
5. 패킷이 목적지까지 제대로 도착했는지를 확인하는 작업
6. 네트워크가 혼잡할 때, 네트워크로 전송하는 패킷의 흐름을 조절하는 작업

인터넷 프로토콜


전송 계층 프로토콜


"원거리 호스트에서 실행중인 프로그램의 PID를 통신할 때마다 알아야 하는가?"

참고 문헌


>> Home