티스토리 뷰
소켓이란?
프로그램이 네트워크 상에서 데이터를 송신과 수신을 하기 위한 연결부이다.
일반적으로 TCP/IP 프로토콜을 이용하거나 WebSocket을 이용한다.
TCP/IP Socket
네트워크상 서버와 클라이언트 두 개의 프로그램이 특정 포트를 통해 양방향 통신이 가능하도록 만들어주는 소프트웨어 장치이다.
- intranet 바운더리(조직 내 네트워크)에서 작업하는 경우에는 해당 네트워크의 컴퓨터를 제어하고 TCP 연결에 적합한 포트를 열 수 있기 때문에 TCP 소켓을 통해 통신하는 것이 더 쉽다.
- TCP/IP Socket은 인터넷을 통한 통신을 위한 프로토콜이기 때문에 소켓을 이용하여 양 끝단의 IP/Port 번호를 이용해 연결을 수립하고 데이터를 주고 받고, 데이터의 신뢰성을 보장한다. 기본적으로 네트워크 레이어에서 동작하기 때문에 단순한 바이트 스트림을 통해 전송할 수 있는 데이터만 다루어야 한다.
- 하나의 TCP 접속에 있는 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜이다.
웹 소켓
HTTP 프로토콜 위에 실시간 양방향 통신 기능을 추가한 프로토콜로 ws/wss 프로토콜 위에서 동작한다.
- 웹소켓은 http에서 실시간 통신을 할 수 없다는 문제를 해결하기 위해 나온 기술이다.
- http는 비연결성으로 connectionless 특징을 가지고 있다. 헤더의 비중이 크기에 실시간성으로 많은 데이터를 주고 받고자 하는 경우에는 부담이 된다. connection이 유지되는 실시간 통신을 위해 웹소켓 프로토콜이 등장하게 된 것이다.
- HTTP의 헤더를 Upgrade해서 동작하기 때문에 서버나 클라이언트는 전이중 양방향 통신을 수행하며 언제든지 메시지를 보낼 수 있다.
- 웹소켓은 연결지향으로 한 번 연결 맺은 뒤 유지된다. 핸드쉐이크 과정에서는 헤더의 비중이 크지만, 한번 연결이 되면 간단한 메시지들만 오고가기에 굉장히 경제적이다.
- HTTP나 HTTPS 위에서 동작하도록 설계되었으며 포트를 80번 443번 사용한다.
- 이에 따라 HTTP를 통해 연결을 시작하되 TCP 소켓과 유사한 통신 stream을 허용한다.
목적과 특성이 달라 상황에 따라 적합한 프로토콜을 선택하여야 한다.
웹소켓과 TCP/IP 소켓의 차이점은?
위의 둘은 서로 상반되는 개념이 아니다.
- 웹 소켓은 HTTP 레이어에서 작동하는 소켓으로 TCP/IP 소켓의 레이어가 다르다.
- IP, PORT를 통해서 통신한다는 점에서는 비슷하다.
- 추상화 정도
- TCP Socket은 저수준이다.
- 웹소켓은 추상화되어있다.
- protocol
- TCP Socket은 4 계층(전송계층)에 위치에서 위치하여 동작한다.
- WebSocket은 HTTP에 기반하므로 7 계층(애플리케이션 계층)에서 동작한다.
- Data 전송방법
- TCP Socket은 바이트스트림을 통한 데이터 전송을 사용한다.
- WebSocket은 구조화된 메시지 형식의 데이터를 다루게 된다.
- 방화벽
- TCP Socket은 방화벽에 의해 차단될 수 있는 새 TCP 포트를 열어야 한다.
- 웹소켓 통신은 TCP 포트 번호 80(또는 TLS 암호화 연결의 경우 443)을 통해 이루어지므로 방화벽을 사용하여 웹이 아닌 인터넷 연결을 차단하는 환경에 유용하다.
'CS > 컴퓨터네트워크' 카테고리의 다른 글
URL과 URI의 차이점을 알려주세요. (0) | 2023.07.23 |
---|---|
REST API에 대해 설명해주세요. (0) | 2023.07.23 |
CORS에 대해 간단하게 설명해주세요. (0) | 2023.07.23 |
HTTP 요청방법중 GET과 POST에 대해 비교 설명해주세요. (0) | 2023.07.07 |
쿠키와 세션을 이용한 로그인 방식을 설명해주세요. (0) | 2023.07.07 |