소켓 Socket
🙊

소켓 Socket

Created
Jan 17, 2024 08:00 AM
Last edited time
Last updated January 23, 2024
Tags
CS
Language
None
URL

소켓이란 ?

프로세스가 네트워크를 통해 데이터를 내보내거나 받기위한 실질적인 창구 역할을 한다. 데이터의 송수신을 위해서는 반드시 소켓을 열어서 소켓을 통해 쓰고 읽어야한다.
 
  • TCP 와 UDP 로 종류가 나뉜다.
 
소켓은 프로토콜, IP, 포트 넘버로 정의 된다.
 
💡
소켓은 떨어져 있는 두 호스트를 연결해 주는 도구로 인터페이스 역할을 하는데, 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어진다. 소켓은 역할에 따라 서버 소켓, 클라이언트 소켓으로 나뉜다.
 

소켓 통신의 흐름

 
notion image
 

서버

클라이언트 소켓의 연결 요청을 대기하고, 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다.
 
  1. socket() 을 사용하여 소켓 생성
  1. bind() 를 사용해 ip 와 port 번호를 설정
  1. listen() 을 사용해 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정
  1. accept() 를 사용해 클라이언트와 연결
 

클라이언트

데이터 송수신이 일어나는 것은 클라이언트 소켓이다.
 
  1. socket()을 통해 소켓을 연다.
  1. connect()를 통해 통신할 서버의 ip와 port번호로 통신 시도
  1. 서버가 accept()를 사용해 클라이언트의 socket descriptor를 반환
  1. 클라이언트와 서버가 read(), write()으로 데이터 통신(반복)
 

참조

 

Loading Comments...