본문 바로가기
네트워크 및 서버 & 웹

포트와 소켓의 차이 및 호스트

by 문톰 2022. 2. 3.

오늘은 소켓과 포트의 차이에 대해서 공부한 것을 정리해보겠습니다.

 

먼저 소켓과 포트에 대해서 설명하기 위해 호스트에 대해서 설명하겠습니다.

1.호스트

-네트워크 주소[IP 주소]가 할당된 노드

-할당된 네트워크 주소[IP주소]를 이용해서 호스트들끼리 서로 데이터를 주고받는다.

ex) 스마트폰이든 데스크톱이든 노트북이든 인터넷에 연결돼 있으면 다 호스트라고 부르면 된다.

*노드: 네트워크에 연결된 모든 종류의 장치

 

1)실질적으로 데이터를 주고받는 것은 호스트내의 앱이나, 프로그램, 어플리케이션이다(편하게 설명하기 위해서 "어플리케이션"으로 통일하겠다)

-카톡(앱)을 통해 상대방 호스트에게 전송한 메시지는 상대방의 호스트 내의 카톡(앱) 도착해야 한다. 이처럼

데이터를 주고받는 것은 호스트의 내의 어플리케이션 까지 거쳐야한다.

 

 

2.포트와 소켓

1)포트(Port)

-호스트 내에는  어플리케이션 이 동작하고 있다. 네트워크를 통해 데이터를 주고받을 때  포트는  어플리케이션을 식별하기 위해 호스트 내부적으로 할당받는 고유의 값이다. 

ex) 1번앱 -> 10번 포트 2번 앱은 -> 11번포트  3번앱은 -> 12번 포트  등등 

 

-이 값은 숫자로 표현되기 때문에 포트넘버라고 불린다.

ex)데이터를 담고 있는 편지봉투의 목적지에 포트가 2000번이라고 적혀있으면 목적지 호스트에 도착한뒤에 

해당 호스트에 2000번 포트를 할당받은 어플리케이션을 찾아서 데이터를 전달해야 한다.

 

-데이터를 받을 때 뿐만 아니라 데이터를 보낼때도 반드시 어플리케이션도 포트를 할당받아야 한다.

ex)메일을 보냈는데 발신인이 안적혀있는 것과 같다 이렇게되면 메일에 답장을 해줄수가 없다. 

 

2)소켓(Socket)

-어플리케이션이 네트워크를 통해서 데이터를 주고받으려면 반드시 열어야 하는 창구같은 것이다.

-데이터를 보내고 싶다고 막 보낼 수 있는것이 아니라 보내는 쪽이나 받는쪽이 서로 소켓을 열어야 한다.

-소켓을 열기 위해선 호스트에 할당된 IP주소, 포트넘버, 프로토콜 등이 필요하며 이 세가지가

소켓을 정의한다.

*창구: 사무실 등에서 바깥손님을 상대하여 문서나 돈을 주고받을 수 있도록 조그마하게 만든 창문.

 

3)소켓과 포트의 차이

-어플리케이션이 네트워크와 통신을 하기위해서는 포트를 할당받아야 하는데 서버의 경우에는 보통 하나만 할당받는다.

왜냐하면 같은 어플리케이션이 같은 포트를 가지고도 여러개의 소켓을 열 수 있기 때문에 굳이 여러개의 포트가 필요가 없다

-하나의 어플리케이션 서버등 같은 프로토콜, 같은 IP주소, 같은 포트넘버를 가지는 수십 혹은 수만 개의 소켓을 가질 수 있다. 이런 이유 때문에 하나의 프로세스는 하나의 포트만으로도 다른 여러 호스트에 있는 프로세스의 요청을 처리할 수 있고 게임 서버의 동시 접속자 수가 수십수백만이 될 수가 있다. 

 

ex1) 민수라는 이름이 여러명일 수 있듯이 같은 IP주소, 포트넘버, 프로토콜을 가지고 있는 소켓이라고해도 서로 다른 소켓이 존재할 수 있다.

ex2) 서버에 입장한 수 없이 많은 유저(소켓)들을 구분하기 위해서 처음에 유저가 서버에 접속했을 때 변하지 않는 고유한 값을 유저에게 발급해서 유저를 구분한다. 

 

 

참고

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=myca11&logNo=221389847130 

 

소켓(Socket) 포트(Port) 뜻과 차이

나도 개발자지만 소켓과 포트의 정확한 의미 차이가 헷갈릴 때가 있어서, 최근에 다시 꼼꼼하게 공부를 했...

blog.naver.com

 

 

 

댓글