소켓(Socket)?
- 네트워크 상에서 두 프로그램 간의 통신을 가능하게 하는 소프트웨어 엔드포인트.
- 다른 기기, 같은 기기 내의 프로세스 간에 데이터를 주고받을 수 있음.
- 소켓은 OSI 모델의 전송 계층(Transport Layer)에 위치, TCP/IP 또는 UDP/IP와 같은 프로토콜을 통해 데이터를 전송.
소켓의 종류
1. TCP 소켓 (스트림 소켓)
- 연결 지향적(연결을 설정하고 통신을 시작)
- 신뢰성 있는 데이터 전송 (데이터 순서 보장, 손실 시 재전송)
- 예: 웹 브라우징(HTTP), 이메일(SMTP), 파일 전송(FTP)
2. UDP 소켓 (데이터그램 소켓)
- 비연결 지향적(연결을 설정하지 않고 통신)
- 신뢰성 없는 데이터 전송 (데이터 순서 보장 없음, 손실 시 재전송 없음) 예: 실시간 스트리밍, 온라인 게임
소켓 통신의 기본 과정
서버 측
1. 소켓 생성: 소켓을 생성하여 네트워크 통신 준비.
2. 바인딩: 소켓에 IP 주소와 포트를 할당.
3. 리스닝: 클라이언트의 연결 요청을 기다림.
4. 수락: 클라이언트의 연결 요청을 수락.
5. 데이터 통신: 클라이언트와 데이터를 주고받음.
6. 종료: 소켓 연결을 종료하고 자원 해제.
클라이언트 측:
1. 소켓 생성: 소켓을 생성하여 네트워크 통신 준비.
2. 연결 요청: 서버의 IP 주소와 포트로 연결 요청.
3. 데이터 통신: 서버와 데이터를 주고받음.
4. 종료: 소켓 연결을 종료하고 자원 해제.
'Backend > Socket' 카테고리의 다른 글
[Socket] 웹소켓 (WebSocket) (0) | 2024.05.28 |
---|
댓글