내 잡다한 노트

소켓 본문

네트워크

소켓

peanutwalnut 2023. 3. 8. 18:38

프로그램이 네트워크에서 데이터를 주고받을 수 있도록 두 프로그램 간 양방향 통신의

하나의 엔드 포인트(?)이다. 소켓은 포트 번호에 바인딩되어 TCP 레이어에서 데이터가

전달되야하는 애플리케이션을 식별할 수 있게 한다.

소켓은 소프트웨어와 소프트웨어를 연결한다. 바로 IP와 포트를 통해서 한다.

 

엔드 포인트의 정의 )) 아이피 주소와 포트 번호의 조합을 의미한다.

 

프로세스 간 통신에 사용되는 Socket을 이용한 통신 프로그래밍을 socket Programming이라고 한다.

Client Socket과 Server Socket로 구분된다.

## 클라이언트에서 하는 일

- 소켓 생성,

연결 요청(IP주소와 포트 번호로 연결하고 싶은 타겟대상을 특정),

데이터 송수신(수신하는 API는 별도의 Thread에서 진행하게 된다.),

소켓 닫기

## 서버에서 하는 일

- 소켓 생성(껍데기 소켓을 생성),

결합(bind)(서버 소켓이 받은 데이터를 다시 보내줘야할때, 프로세스들의 포트번호가 동일하다면

혼란이 생길 수 있다. 따라서 서버 소켓이 고유한 포트 번호를 만들 수 있도록 소켓과 포트번호를 결합

하나의 포트번호가 여러 개의 소켓과 결합할 수 있다),

주시(listen)(클라이언트가 연결 요청을 할 때까지 기다리다가 오면 대기 상태를 종료하고 리턴),

받아들이기(accept)(연결 요청을 받아들임과 동시에 새로운 소켓을 생성),

데이터 송수신,

소켓 닫기

 

 

 

'네트워크' 카테고리의 다른 글

TCP와 UDP  (0) 2023.03.08
패킷(packet)  (0) 2023.03.08
3계층과 IP  (0) 2022.09.02
2계층 프로토콜  (0) 2022.08.31
네트워크 모델  (0) 2022.08.31