내 잡다한 노트
소켓 본문
프로그램이 네트워크에서 데이터를 주고받을 수 있도록 두 프로그램 간 양방향 통신의
하나의 엔드 포인트(?)이다. 소켓은 포트 번호에 바인딩되어 TCP 레이어에서 데이터가
전달되야하는 애플리케이션을 식별할 수 있게 한다.
소켓은 소프트웨어와 소프트웨어를 연결한다. 바로 IP와 포트를 통해서 한다.
엔드 포인트의 정의 )) 아이피 주소와 포트 번호의 조합을 의미한다.
프로세스 간 통신에 사용되는 Socket을 이용한 통신 프로그래밍을 socket Programming이라고 한다.
Client Socket과 Server Socket로 구분된다.
## 클라이언트에서 하는 일
- 소켓 생성,
연결 요청(IP주소와 포트 번호로 연결하고 싶은 타겟대상을 특정),
데이터 송수신(수신하는 API는 별도의 Thread에서 진행하게 된다.),
소켓 닫기
## 서버에서 하는 일
- 소켓 생성(껍데기 소켓을 생성),
결합(bind)(서버 소켓이 받은 데이터를 다시 보내줘야할때, 프로세스들의 포트번호가 동일하다면
혼란이 생길 수 있다. 따라서 서버 소켓이 고유한 포트 번호를 만들 수 있도록 소켓과 포트번호를 결합
하나의 포트번호가 여러 개의 소켓과 결합할 수 있다),
주시(listen)(클라이언트가 연결 요청을 할 때까지 기다리다가 오면 대기 상태를 종료하고 리턴),
받아들이기(accept)(연결 요청을 받아들임과 동시에 새로운 소켓을 생성),
데이터 송수신,
소켓 닫기