일단 정확히는 몰라서, 더 구체적인 정보를 원하시면
구글링 하시는 게 나을 겁니다.

네트워크상에서 다른 컴퓨터와 통신하기 위해서는
정보를 어떻게 보낼 것인가에 대한 규칙이 필요합니다.
이 규칙을 프로그램마다 정하는 것은 상당히 비효율적이죠.

대략 생각되는 이유만 해도.

1. 네트워크 통신을 사용하는 프로그램을 짜려면, 네트워크를 구성하는 하드웨어의 정보처리 방식을 모두 알아야 하는가?
2. 비슷한 기능(상호확인, Data 검증)이라는 부분은 공통적으로 만들면 안되나?
...

모 이런 여러 가지 이유가 있을 거라 생각합니다.

어여튼 결국 이러한 점을 해결하기 네트워크상 정보를 전해줄 때
데이터를 다른 데이터로 감싸는 식으로 정보를 추가하고
이렇게 겹겹이 감싸면서, 첫 번째로 추가된 정보는 Session 관련,
두 번째로 추가된 정보는 하드웨어 관련... 처럼 어느 정도 규칙성을
만듭니다. (서로 간의 역할분담)

이렇게 정해진 규칙이

OSI 7 Layer하고 TCP/IP 구조입니다.




일단 두 구조 모두,
Transport Layer 가 있는데 직렬화된 Data를 Segment로 나누면서 동시에 다시 조립할 수 있는 정보를 추가합니다.
추가로 어떤 프로그램에 전달할 Segment 인지 알려줄 정보를 추가합니다. 그리고 이때 추가되는게 Port 번호입니다.

IP를 Network 안에서 컴퓨터 주소라고 생각하면, Port는 컴퓨터 안에서 프로그램 주소입니다.

혹시 게임 서버를 열 때 포트번호를 적어본 적이 있나요? 그리고 게임 서버를 실행하면,
해당 프로그램은 그 포트 번호를 주소로 사용하겠다는 뜻입니다.

Http처럼 자주 사용하는 프로토콜은 여러 편의성을 위해 미리 몇번 포트를 통해 정보를
전달받을지 미리 정해둡니다. (그리고 운영체제가 관리할 겁니다.)구체적으로 어떤 점이
편리한지는 모르겠네요.