오늘은 소켓과 포트의 차이에 대해서 공부한 것을 정리해보겠습니다.
먼저 소켓과 포트에 대해서 설명하기 위해 호스트에 대해서 설명하겠습니다.
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
'네트워크 및 서버 & 웹' 카테고리의 다른 글
[TCP/IP] 소켓 통신 공부한 것 정리 (0) | 2022.02.06 |
---|---|
[TCP/UDP]특징 및 차이 (0) | 2022.02.04 |
패킷에 대해서 공부한 것 정리 (0) | 2022.02.04 |
댓글