소켓(Socket)

유영·2023년 5월 3일
0

HTTP

목록 보기
18/22

소켓(Socket)

네트워크 상에서 돌아가는 두개의 프로그램 간 양방향 통신의 하나의 엔드포인트
(IP address와 Port 번호의 조합)
프로그램이 네트워크에서 데이터를 통신할 수 있도록 연결해주는 연결부
통신할 두 프로그램(Client, Server) 모두에 소켓이 생성되야 함
서버와 클라이언트가 실시간으로 데이터를 주고받는 상황이 필요한 경우에 사용

통신 흐름

  • 서버(Server)
    클라이언트 소켓의 연결 요청을 대기, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다.
  1. 소켓 생성 - socket()
  2. IP를 가지고 port를 연다. - bind()
  3. 클라이언트 연결 대기 - listen()
  4. 클라이언트와의 연결 수락 - accept()
  • 클라이언트(Client)
    실제 데이터 송수신이 일어나는 것은 클라이언트 소켓
  1. 소켓 생성 - socket()
  2. 통신할 서버의 설정된 ip와 port 번호에 통신을 시도 - connect()
  3. 서버가 accept() 함수를 이용하여 클라이언트의 scoket descriptor 반환
  4. 클라이언트, 서버가 서로 read(), write() 하며 통신

종류

- 스트림(TCP)
양방향으로 바이트 스트림 전송, 연결 지향성
오류 수정, 전송 처리, 흐름 제어 보장
송신된 순서에 따라 중복되지 않게 데이터 수신(오버헤드 발생)
소량의 데이터보다 대량의 데이터 전송에 적합

- 데이터그램(UDP)
비연결형 소켓
데이터 크기에 제한 X
데이터 전달 보장 X, 손실되어도 재 전송 X
실시간 멀티미디어 정보 처리를 위해 주로 사용

HTTP 통신과 Socket 통신 비교

HTTP 통신은 Client가 요청을 보내는 경우에만 Server가 응답하는
단방향 통신으로 응답을 받은 후에 연결이 바로 종료
Socket 통신은 Server와 Client가 연결을 계속 유지하는 양방향 통신

0개의 댓글