본문 바로가기
Backend/Socket

[Socket] 소켓?

by BenKangKang 2024. 5. 28.

소켓(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

댓글