컴퓨터를 네트워크 관점에서 세가지 레이어로 나누면 응용계층 커널계층 하드웨어 계층으로 나눌 수 있는데
이때 커널에 있는 TCP는 커널계층에 있고 애플리케이션은 응용계층에 있는것이 일반적입니다. 그럼 이 응용계층에 있는 애플리케이션은 본질은 파일이지만 이 파일과 커널의 프로토콜을 연결할 수 있도록 인터페이스가 제공되는데 이때 추상화 된 파일을 소켓이라고 합니다. 이 소켓을 생성할때 tcp소켓인 경우 소켓에 attech되는 정보가 Port번호라고 합니다.
Port는 최대 16bit -2 까지 만들수 있습니다.
그리고 이 Port는 각 프로세스마다의 고유의 번호가 되기때문에 한개의 프로세스만이 독립적으로 가질 수 있는 번호가 할당되며 그렇기 때문에 개발자의 입장에서 Port가 뭐예요? 하면 process식별자 라는 대답이 나오는 것 입니다.
외부에서 tcp/ip 네트워크 요청이 오면 컴퓨터는 macAddr에서 nic을 따라 driver를 거쳐 4계층까지 도달한후 이 요청을 어느 프로세스에 할당할것인지에 대한 결정을 자기 맘대로 주고싶은 프로세스한테 던지는 것이 아닌 port번호를 보고 식별해 내서 해당 요청이 적확히 해당 port번호를 들고 있는 프로세스한테 전달 되는 것입니다.