Socket과 Port, Port는 같지만 Socket이 다를때는???

Jeheon Park·2021년 10월 15일
0

문제점

운영체제를 공부하던 도중에 프로세스간 통신(IPC)를 다시금 보게되었다. 그중 소켓 프로그래밍 즉, 원격 프로세스 통신 부분을 읽던 중에 의문점이 하나 생겼다. 즉, IP로 네트워크내의 나의 주소를 알았다손 치고, Port번호를 통해서 어떤 프로세스인지 특정했다고 치더라도, Port에 붙어있는 Socket이 여러개인건 어떻게 처리 하냐는 말이다.

해결방안

사실 생각해보면 간단할 수 있다. 내가 운영체제이고 어떤 프로세스가 특정 포트를 열었다고 친다면, 거기서 네트워킹이 일어날것이다. 그러면, 우리가 가질 수 있는 정보는 딱, 5가지 정도이다.

프로토콜의 종류, 클라이언트 포트번호, 클라이언트 IP주소, 서버의 포트번호, 서버의 IP주소

우선 서버의 포트번호와 서버의 IP주소는 같을 수 밖에 없다. 왜냐? 프로세스가 해당 IP와 해당 포트로 Listen을 하고 있기 때문이다. 그럼, 남은것은 프로토콜과 클라이언트 포트번호, 클라이언트 IP주소이다. 우리는 클라이언트 포트번호로 모든것을 해결할 수 있다.

예를 들자면,

이런, 상황이라고 하고 소켓을 어떻게 배정하냐고 하면, 63240과 63241이 다르기 때문에 소켓을 배정 할때 구분 할 수 있는 것이다.

하지만, 이러한 문제를 차치하고서라도, 프로그래밍 하는 입장에서는 소켓 디스크립터만 보면 되기 때문에(나머지, 문제는 운영체제가 알아서 도와준다.) 문제가 없다. 그리고, 늘 새로운 소켓을 생성해서 배정하기 때문에 문제가 없기도 하다.

출처

https://stackoverflow.com/questions/2439472/how-the-clients-client-sockets-are-identified
https://umbum.dev/98

profile
개발자

0개의 댓글