socket())connect())bind(), listen())accept())send() / sendto() 함수로 메시지를 보냄recv() / recvfrom() 함수로 메시지를 받음소켓은 네트워크 통신을 쉽게 할 수 있도록 제공되는 하나의 "인터페이스"
| 역할 | 설명 |
|---|---|
| 추상화 | send(), recv() 등으로 복잡한 통신을 단순하게 수행 가능 |
| 연결 설정 | TCP라면 connect()와 accept() 등으로 연결 관리 |
| 데이터 송수신 | 바이트 단위로 데이터 보내고 받기 가능 |
| 프로토콜 선택 | TCP (스트림), UDP (데이터그램) 등 원하는 방식 선택 가능 |
마치 전화기처럼, 각 프로세스가 소켓을 들고 전화를 거는 느낌이다. 전화선(네트워크)은 복잡하지만, 우리는 전화기만 잘 다루면 통신할 수 있다.
소켓에는 포트번호가 반드시 할당될까 ? A) 그렇다.
📦 즉, "IP 주소 + 포트 번호" = 하나의 고유한 네트워크 통신 종착점 (이걸 소켓 주소 혹은 endpoint라고 부르기도 함)
| 상황 | 포트 번호 할당 방식 |
|---|---|
| 서버 | 개발자가 직접 지정 (bind() 함수에서 포트 설정) 예: 웹서버는 보통 80번, HTTPS는 443번 |
| 클라이언트 | OS가 자동으로 임시 포트(동적 포트)를 할당 (보통 49152 ~ 65535 범위) |