티스토리 뷰
호스트란?
네트워크에 연결되어 IP를 할당받은 노드를 호스트라고 한다. 내가 지금 사용하고 있는 컴퓨터, 핸드폰 모드 호스트가 될 수 있으며, 서버도 호스트가 될 수 있다.
포트와 소켓이란?
프로세스를 기준으로 포트는 주소, 소켓은 창구라고 할 수 있다. 프로세스당 주소는 1개이며 창구는 여러개일 수 있다.
우리집 주소는 하나지만, 쿠팡배송, 배민배송, 11번가배송 창구가 있다고 이해하면 된다.
서버 프로세스에는 포트가 1개 할당되고, 소캣을 여러개 생성하여 다른 호스트로부터의 여러 요청을 동시에 처리할 수 있다.
포트란?
서버 내에는 여러 프로세스가 있다.
호스트에 요청이 들어왔을때 OS는 포트번호로 어떤 프로세스에 전달해야할지 알 수 있다.
호스트 내부에 여러 프로세스가 네트워크 통신을 위해 OS를 부터 할당받은 번호가 바로 '포트'이다.
데이터를 받기위해서는 OS로 부터 포트번호를 할당받아야하며, 데이터를 보낼때도 마찬가지이다.
소켓이란?
그럼 소켓이란 무엇일까?
호스트로 들어온 요청이 포트번호로 프로세스를 찾아갔다면, 소켓은 데이터를 실제로 주고받는 창구라고 생각하면된다.
소켓은 호스트IP, 포트 넘버, 프로토콜로 정의된다.
서버의 각 프로세스에는 연결요청을 듣고있는(Listen) 하나의 소켓이 존재한다.
이 소켓을 클라이언트 소켓으로 부터 연결을 받아들인 후, 자신을 복제하여 새로운 소켓을 생성한다.
이제 클라이언트(소켓) <-> 서버(새로운 소켓)연결이 되어있다. 통신이 종료되면 서버측에 새로 생성되었는 소켓은 소멸된다.
+
자세한 소켓 프로그래밍은 아래 블로그를 읽으면 이해가 잘된다.
'CS기초' 카테고리의 다른 글
리눅스 df, du 명령어 (파일시스템 사용량 확인) (0) | 2022.07.18 |
---|---|
docker compose 사용 시, Docker network bridge 대역 변경하는 방법 (0) | 2022.07.18 |
[리눅스] ps 명령어 (0) | 2022.04.07 |
[리눅스] tty, pts (0) | 2022.04.07 |
DNS 서버 종류 및 DNS 동작 원리 (0) | 2022.04.06 |