소켓이란?

이도현·2023년 11월 26일
0

호기심 천국

목록 보기
12/13
post-thumbnail

https://helloworld-88.tistory.com/215
위 사이트를 참고하여 작성하였습니다.

소켓이란?

프로세스가 네트워크 세꼐로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽여들여야 한다.

소켓은 어떻게 정의되는가?

프로토콜, IP, 포트로 정의된다.

소켓은 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스 역할을 하는데 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어 진다. 이러한 소켓은 역할에 따라 서버 소켓, 클라이언트 소켓으로 구분된다.

1) Server

  • socket() 함수를 이용하여 소켓을 생성
  • bind() 함수로 ip와 port 번호를 설정하게 됩니다.
  • listen() 함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정
  • accept() 함수를 사용하여 클라이언트와의 연결을 기다림

2) Client

  • socket() 함수로 가정먼저 소켓을 연다
  • connect() 함수를 이용하여 통신 할 서버의 설정된 ip와 port번호에 통신을 시도
  • 통신을 시도 시, 서버가 accept() 함수를 이용하여 클라이언트의 socket descriptor를 반환
  • 이를 통해 클라이언트와 서버가 서로 read(), write()를 하며 통신(이 과정이 반복)

소켓 종류

1) 스트림(TCP)

2) 데이터 그램(UDP)

HTTP 통신과 SOCKET 통신과의 비교

1) HTTP 통신

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

2) SOCKET 통신

  • Server와 Client가 특정 Port를 통해 실시간으로 양방향 통신을 하는 방식
  • Server와 Client가 계속 연결을 유지하는 양방향 통신이다.
  • 실시간 동영상 Streaming이나 온라인 게임 등과 같은 경우에 자주 사용된다.
profile
좋은 지식 나누어요

0개의 댓글