Socket 통신

Jay Kim·2022년 9월 15일
0

Socket

  • 프로토콜, ip주소, 포트넘버로 정의
  • 소켓의 역할에 다라 클라이언트 소켓, 서버 소켓으로 구분
  • 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 TCP/UDP IP 환경에서 통신을 위한 데이터 통로가 만들어진다.
  • 즉, 떨어져 있는 두 호스트를 연결재누는 인터페이스 역할
  • 소켓 통신의 흐름 Untitled

SERVER

클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신한다.

CLIENT

실제로 데이터 송수신이 일어나는 것은 클라이언트 소켓

SERVERCLIENT
socket() 소켓 통신을 위한 소켓 생성socket() 소켓 통신을 위해 가장 먼저 소켓 생성
bind() 소켓에 주소 할당 (ip, port 번호 설정)connect() 서버로 연결 요청(통신 할 서버의 ip, port에 통신 시도)
listen() 연결 요청 대기 (수신 대기열 만들어 몇 개의 클라이언트를 대기 시킬지 결정)
acccept() 연결 승인
read() 클라이언트로 부터 데이터 수신read() 서버로 부터 데이터 수신 -반복
write() 클라이언트로 데이터 송신write() 서버로 부터 데이터 송신 -반복
close() 서버 종료close() 연결 종료

Client/ Server 통신 절차

Untitled

소켓의 종류

TCPUDP

| 양방향으로 바이트 스트림을 전송
→ 연결 지향성 | 비연결형 소켓 |
| 소량의 데이터보다 대량의 데이터에 적합 | 데이터의 크기에 제한이 있다 |
| 송신된 순서에 따라 중복되지 않게 데이터를 수신
→ 오버헤드 발생 | 확실하게 전달이 보장되지 않는다
→ 데이터가 손실되는 경우에도 오류가 발생되지 않는다. |
| 오류 수정, 전송 처리, 흐름제어 보장 | 실시간 멀티미디어 정보 처리에 주로 사용 EX) 전화 |

HTTP 통신과 Socket 통신 비교

HTTP 통신

  • Client의 요청(Request)가 있을 때 서버가 응답(Response)하여 해당 정보를 전송하고 곧바로 연결 종료.
  • HTTP 통신의 특징
    • Client가 요청을 보낼때만 서버가 응답하는 단방향 통신
    • Server로 부터 응답을 받은 후 바로 연결 종료.
    • 실시간 연결이 아니고, 필요한 경우에만 Server로 요청을 보내는 상황에 유용.
    • 요청을 보내 Server의 응답을 기다리는 애플리케이션의 개발에 주로 사용.

Socket 통신

  • Server와 Client가 특정 port를 통해 실시간으로 양방향 통신
  • SOCKET 통신의 특징
    • 서버와 클라이언트가 계속 연결을 유지하는 양방향 통신
    • 서버와 클라이언트가 실시간으로 데이터를 주고 받는 상황이 필요한 경우에 사용
    • 실시간 동영상 스트리밍이나 온라인 게임 등과 같은 경우에 주로 사용.

0개의 댓글