- 애플리케이션은 소켓을 사용해서 통신함
- 클라이언트 프로세스와 httpd 프로세스를 통해서 애플리케이션 계층 프로토콜인 HTTP 요청(데이터)이 통신할 때 소켓을 이용함. 밖으로 통하는 하나의 구멍(?)이라고 생각하면 됨
- 요청을 보내는 애플리케이션이 구멍에 데이터를 넣음. 이 구멍을 '소켓(Socket)이라고 함
- 소켓에 기록된 데이터는 다른 한쪽의 소켓으로 전달됨.
- 이와 같이 애플리케이션 자체가 통신 구조를 가지지 않고서도 원격지에 있는 서버 애플리케이션과 소켓을 통해 통신할 수 있음.
Q. 소켓은 어떻게 만들어질까?
- 애플리케이션 프로세스가 네트워크 통신을 하는 경우, 커널에 'TCP/IP로 통신하고 싶으니까 상대방 애플리케이션과 통신할 수 있는 회선을 열어줘!'라고 의뢰함 => 의뢰 방법은 시스템 콜
- 이때 접속 대상 서버의 IP 주소(IP 도착 위치)와 TCP 포트(TCP 도착 위치), 2가지 정보가 필요함
- 의뢰받은 커널은 소켓을 만들어줌
- TCP를 사용한다는 것과 IP 주소 및 포트 번호 정보를 시스템 콜 경유로 커널에 전달하면, 접속 대상 서버와의 연결이 생성됨
- 이때 상대방 서버에서도 소켓이 만들어지며, 상대 서버와의 사이에 가상 경로(버추얼 서킷)이 생성됨
소켓에 기록된 데이터는 TCP/IP를 통해 전달됨
프로세스 관점에서 소켓이라는 구멍에 넣은(기록한) 데이터가 가상 경로를 통해서 상대 통신 소켓 구멍으로 나오는 것
이 과정에서 필요한 일을 커널이 해줌
출처: 그림으로 공부하는 IT인프라 구조
'Computer Science > Network' 카테고리의 다른 글
라우팅이란? (0) | 2022.11.11 |
---|---|
macOS 네트워크 키워드 정리 (0) | 2022.11.11 |
애플리케이션 계층의 프로토콜 HTTP (0) | 2022.03.18 |
OSI 7계층 모델 vs. TCP/IP 4계층 모델 (0) | 2022.03.18 |
프로토콜(Protocol) (0) | 2022.03.18 |