Socket
- 프로그램이 네트워크에서 데이터를 주고 받을 수 있도록 네트워크 환경에 연결 할 수 있게 만들어진 연결부
일반적으로 TCP/IP 프로토콜을 이용한다.
TCP/IP 4계층에서 전송 계층 위에 놓인다
전송계층 위에서 전송계층의 프로토콜 제어를 위한 코드를 제공
소켓은 end point고 통신의 양 끝단이다.
소켓이 하는일
- 소프트웨어와 소프트웨어를 연결
- 소프트웨어간 데이터 통신
클라이언트
- 실제로 데이터 송/수신이 일어나는 것은 클라이언트 소켓임
- 소켓 생성, 연결 요청, 데이터 송/수신, 소켓 닫기
서버
- 클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다
- 소켓 생성, 결합, 주시, 받아들이기, 데이터 송수신, 소켓 닫기
클라이언트 흐름
1. 클라이언트 소켓 생성
2. 연결요청 ( connection )
3. 데이터의 송수신 ( Send, Recieve )
4. 소켓 닫기
서버의 흐름
0. 데이터를 송수신 할 땐 보안이 가장 중요함
1. 서버 소켓 생성
2. 바인딩
3. 클라이언트 연결 요청 대기
4. 클라이언트 연결 수립
5. 데이터 송/수신
6. 소켓 닫기
소켓의 종류
스트림 ( TCP )
- 양방향으로 바이트 스트림을 전송, 연결 지향성
- 오류 수정, 흐름제어 보장
- 송신된 순서에 따라 중복되지 않게 데이터를 수신 >> 오버헤드가 발생
- 소량의 데이터보다 대량의 데이터 전송에 적합 >> TCP를 사용
데이터그램 ( UDP )
- 비연결형 소켓
- 데이터의 크기에 제한이 있음
- 확실하게 전달이 보장되지 않음, 데이터가 손실돼도 오류가 발생하지 않는다.
- 실시간 멀티미디어 정보를 처리하기 위해 주로 사용됨
HTTP 통신과 Socket 통신의 비교
HTTP 통신
- Client 요청이 있을 때만 서버가 응답하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식
HTTP 특징
- Client가 요청을 보내는경우에만 Server가 응답하는 단방향 통신이다.
- Server로 부터 응답을 받은 후에는 연결이 바로 종료된다.
- 실시간 연결이 아니고, 필요한 경우에만 Server로 요청을 보내는 상황에 유용하다.
- 요청을 보내 Server의 응답을 기다리는 어플리케이션의 개발에 주로 사용된다.
Socket 통신
- Server와 Client가 특정 Port를 통해 실시간으로 양방향 통신을 하는 방식
Socket 통신의 특징
- Server와 Client가 계속 연결을 유지하는 양방향 통신
- Server와 Client가 실시간으로 데이터를 주고 받는 상황이 필요한 경우에 사용됨
- 실시간 동영상 Streaming 이나 온라인 게임 등과 같은 경우에 자주 사용됨
'인턴' 카테고리의 다른 글
[인턴 OJT 18일차] 소켓 주소록 피드백 (0) | 2023.01.09 |
---|---|
[인턴 OJT 17일차] 소켓을 활용한 주소록과 흐름 (0) | 2023.01.09 |
[인턴 OJT 15일차] swing 파일 탐색기 - 2 (0) | 2023.01.09 |
[인턴 OJT 14일차] JTree 파일 탐색기 트리 추가 (0) | 2022.12.30 |
[인턴 OJT 13일차] JTree 파일 탐색기 (진행중) (0) | 2022.12.30 |