본문 바로가기
Tech/Network

포트와 소켓

by mozzi329 2023. 1. 13.
728x90

 

📌 알림


해당 글은 공부 목적으로 작성한 글입니다.

 

📌 포트(Port)


포트(Port)
네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값이다.

- 하나의 IP 주소 내에 개별적으로 부여된 통신 프로세스이다.
- 포트의 범위 : 0 ~ 65535

 

📌 소켓(Socket)


소켓(Socket)
컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다.

- 소켓은 포트 번호에 바인딩 되어 TCP 레이어에서 데이터가 전달되어야하는 어플리케이션을 식별할 수 있다.
- 소켓을 열기 위해선 호스트에 할당된 IP, 포트 번호, 프로토콜이 필요하다.
- 위 세가지가 소켓을 정의할 수 있지만 유일하게 식별하지는 않는다.
- 보내는 쪽과 받는 쪽 모두 소켓을 열어야 한다.
- 하나의 프로세스가 같은 포트를 갖고 여러 개의 소켓을 열 수 있다.

 

📌 모의 면접


포트가 무엇인가요?
포트는 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유 값입니다.
포트 번호는 0부터 65535번까지 사용이 가능하며, 이미 사용 중인 포트는 중복해서 사용할 수 없습니다. 잘 알려져 있는 포트로 80번 HTTP, 443번 HTTPS, 이메일 전송의 25번의 SMTP 포트가 있습니다.

소켓이 무엇인가요?
소켓은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점을 말합니다.
오늘날의 컴퓨터 간 통신은 TCP/IP. 즉, 대부분 인터넷 프로토콜을 기반으로 하고 있으므로 대부분의 네트워크 소켓은 인터넷 소켓입니다. 또한 하나의 프로세스는 같은 포트를 갖고 여러 개의 소켓을 열 수 있습니다.

소켓의 흐름으로는 크게 클라이언트와 서버의 흐름이 존재하는데, 클라이언트의 소켓 흐름은 소켓 생성, 연결 요청, 데이터 송수신, 소켓 닫기 순으로 생성되며, 서버에서의 소켓 흐름으로는 소켓 생성, 결합, 주시, 클라이언트 연결 수립, 데이터 송수신, 소켓 닫기 순으로 진행됩니다.

소켓의 클라이언트와 서버의 흐름에 대해 설명해주세요(+⍺)
먼저 클라이언트의 흐름으로 연결 대상에 대한 정보가 들어있지 않은 소켓을 생성하고, IP 주소와 서비스 포트 번호를 통해 연결하고 싶은 타겟 대상을 특정하여 연결 요청합니다. 이 때 요청을 보내고 끝나는 것이 아닌, 그 요청에 대한 결과가 돌아와야만 연결 요청의 실행이 끝납니다. 데이터 송수신 단계에서는 데이터의 송수신이 일어나며, 데이터 송수신 단계 역시, 요청을 보낸다고 끝나는 게 아니라 요청에 대한 결과 신호가 들어와야 실행이 끝납니다. 마지막으로 소켓 닫기 단계에서는 데이터의 송수신이 없다고 판단되면 소켓을 닫습니다.

클라이언트와 마찬가지로 정보가 들어있지 않은 소켓을 생성하고, 바인딩을 통해 소켓과 포트번호를 결합해주는 작업을 진행합니다. 이 때, 하나의 프로세스는 동일한 포트 번호를 가진 여러 개의 소켓을 결합할 수 있습니다. 주시 단계에서는 서버 소켓에서 포트번호와의 바인딩 작업을 마치고 클라이언트의 연결 요청을 기다리며, 연결 요청이 오면 대기 상태를 종료하고 리턴됩니다. 클라이언트 연결 수립 단계에서는 클라이언트 소켓으로부터 연결 요청을 받으면 새로운 소켓을 열고, 이것과 클라이언트 소켓을 맵핑하여 넘겨줍니다. 데이터 송수신 단계에서는 데이터의 송수신이 일어나며 역시나, 결과 신호가 들어와야 실행이 종료됩니다. 소켓 닫기 단계 역시 클라이언트 소켓과 동일하지만 자신의 생성한 소켓들도 관리해야한다는 차이점이 있습니다.

 

📌 참고 자료

❗️IBM 공식 문서

❗️[소켓과 웹소켓] 한 번에 정리

댓글