[네트워크] Socket(소켓) vs Websocket(웹소켓) 차이점
오늘 팀장님과 커피챗을 하면서 소켓이야기를 했다.
내가 알고 있는 소켓은 클라이언트의 요청없이 서버가 응답하는 것이였는데 오늘 팀장님 말씀을 들어보니까 뭔가 다른 내용이었다.
알고보니 팀장님은 소켓통신을 얘기하셨는데 내가 웹소켓으로 오해했기때문이다.
이참에 둘 차이를 공부해봤다.
내가 제일 부족한 부분은 네트워크인 듯하다. 올해는 이 부분에 대해 집중적으로 공부해봐야겠다.
Socket(소켓)
- OSI 7계층은 네트워크를 관리하는 계층이다. 계층별 각 프로토콜, 즉 통신규약이 존재한다. 프로토콜을 구현하려면 구체적인 구현부인 함수가 필요하다.
- 소켓이란? 별도의 구현없이 소켓을 이용하여 프로토콜 함수의 BODY를 만들 수 있다. 일반적으로 TCP/IP를 사용한다.
- 연결역할: 일종의 endpoint로 IP와 서비스포트를 통해서 두 개의 소프트웨어를 연결한다.
- 데이터송수신역할: 두 개의 소프트웨어를 연결하고 데이터를 송수신한다.
- 종류: 클라이언트 소켓, 서버 소켓
- TCP/IP 4계층 중 전송계층에서 사용됨
- TCP통신이란? TCP통신 vs UDP통신 차이점
Websocket(웹소켓)과의 차이점
- 웹소켓이란? 서버가 클라이언트에게 먼저 말(메세지)을 걸 수 있다. 즉, 클라이언트 요청없이도 서버가 클라이언트에 응답가능!
- Socket(소켓)과 차이점?
- 동작계층: 소켓은 인터넷프로토콜을 기반하므로 TCP가 속한 OSI 4계층에서 이루어지고 웹소켓은 TCP에 의존하지만 HTTP기반이므로 7계층에서 이루어짐
- 데이터형식: TCP에 기반한 소켓통신은 단순히 바이트로 이루어진 데이터, 웹소켓통신은 메시지형식의 데이터
사실 소켓과 웹소켓은 완전 다른 개념이 아니다. 소켓통신을 웹어플리케이션에 맞게 디자인한 것이 웹소캣이다.
여담
팀장님께 네트워크 공부를 어떻게 하면 좋을지 조언을 부탁드리니 네트워크관리사 자격증이 있다고 알려주셨다.
올해는 이 자격증을 취득해봐야겠다!