
소켓(Socket), 웹소켓(WebSocket)은 정확히 어떤 것이고, 어떤 차이를 가지고 있는가?
결론부터 말하면 다음과 같다.
차이점을 얘기하기에는 본질적으로 다른 개념이라는 것을 알게 되었고, 이 소켓(Socket)에 대해 더 자세히 알아보고자 한다.
위에서 언급한 것과 같이 소켓은 파일이며, OS 커널에 구현되어 있는 추상화된 인터페이스이다.
운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 사이에서 중재 역할을 하는 프로그램으로 복잡한 하드웨어 동작을 간단한 함수 호출로 사용할 수 있도록 제공되는 표준화된 인터페이스
즉, 응용 프로그램을 수행하는데 필요한 여러가지 서비스(중에 소켓이 존재), 컴퓨터의 자원(CPU, 메모리)를 관리하는 역할이다.
유저 모드 (User Mode)
시스템 콜이란?
- 유저 모드와 커널 모드 간의 인터페이스
- 유저 모드에서 커널에 서비스를 요청하는 방법이로, 파일 입출력, 메모리 관리 등 작업에 사용
커널 모드 (Kernel Mode)
추가 : OS 커널
- 추상화란 복잡한 시스템의 내부 구현을 감추고, 간단하고 이해하기 쉬운 인터페이스만 제공하는 것을 의미한다.
socket()- 소켓 생성,connect()- 소켓(cli)연결, 3-way handshake 과정 수행- 위 함수와 같이 에플리케이션에서는 단순한 함수 호출하면, 시스템 콜을 통해 커널 모드에서 작업이 처리된다.
여기서 프로세스는 응용 프로그램 실행파일, 예를 들어 클라이언트-서버 모델에서 서버의 실행파일이 될 수 있는데 이러한 프로세스가 소켓(파일)에 대한 주체가 된다.
프로세스는 파일처럼 소켓을 열고(open) 닫으며(close), TCP/IP 프로토콜을 사용하는 TCP 소켓일 경우
write -> send : 데이터를 네트워크로 보냄 (서버 자원을 네트워크를 통해 보냄)read -> receive : 네트워크에서 데이터를 읽음(네트워크를 통해 들어온 데이터를 읽음)요약
- 소켓(Socket)은 애플리케이션의 프로세스가 네트워크를 사용하기 위한 통로이다.
- 파일로써, 데이터 입출력(I/O)과정을 통해 역할을 수행한다.