1. 소켓(Socket)
소켓은 응용 계층에서 프로세스간 통신을 쉽게 행하기 위한 창구의 역할을 한다. 사용자는 소켓이라는 형태로
통신할 대상과의 연결을 확립하고 소켓과의 송/수신으로 대상과의 송/수신을 하는 것과 마찬가지인 결과를
얻게된다. 즉, 소켓을 사용하는 법만 알면 하위 계층에 대한 지식이 없더라도 쉽게 통신이 가능해지는 것이다.
서버와 클라이언트가 특정 port 를 통해 실시간 양방향 통신을 하는 방식이기에 실시간 통신이 필요한
스트리밍이나 채팅 등의 서비스에 사용된다.
2. 소켓의 종류
① 스트림(TCP 소켓)
- 서버측 흐름
- 소켓 생성(socket)
- 포트번호 설정(bind)
- 수신 대기열 생성(listen)
- 연결 대기(accept) - 연결 요청이 들어올 때 까지 block 상태
- 연결 요청이 들어오면 handshaking 과정을 거쳐 연결수립
- 이후 양방향 통신 가능
- 연결 종료 요청이 들어오면 종료과정을 거쳐 연결종료(close)
- 클라이언트측 흐름
- 소켓 생성(socket)
- 연결 요청(connect) - handshaking 과정을 거쳐 연결수립
- 이후 양방향 통신 가능
- 통신 종료시 종료 요청(close) - 종료 과정을 거쳐 연결종료
- 연결 지향성 양방향 통신을 위한 소켓
- 데이터를 스트림 형태로 전송하기에 데이터간의 경계가 없음
- 데이터의 순서유지와 무결성 보장
- 대량의 데이터를 안전하게 주고받기 위해 사용
② 데이터그램(UDP 소켓)
- 서버측 흐름
- 소켓 생성(socket)
- 포트번호 설정(bind)
- 요청 대기(recvfrom) - request 데이터그램을 수신할 때 까지 대기
- 요청이 들어오면 응답(sendto)
- 클라이언트측 흐름
- 소켓 생성(socket)
- 요청(sendTo)
- 응답 대기(recvfrom)
- 통신 완료시 연결 종료(close)
- 비연결형 통신을 위한 소켓
- 한번의 전송으로 보낼 수 있는 데이터의 크기에 제한이 있다.
- 데이터의 순서유지와 무결성을 보장하지 않음
- 신뢰성보다는 속도가 중시되는 경우, 작은 데이터를 자주 보내야하는 경우 등에 사용(RTP 등)
'CS > 네트워크' 카테고리의 다른 글
#5 Application Layer 2 - HTTP (0) | 2021.11.01 |
---|---|
#4 Socket Programming (0) | 2021.10.29 |
#2 OSI 7계층 (0) | 2021.10.28 |
#1 네트워크 구성 2 - Network Core (0) | 2021.10.28 |
#0 네트워크의 구성 1 - Network Edge (0) | 2021.05.29 |