본문 바로가기

Study/TCP/IP

Port란,

일반적으로 하나의 컴퓨터 안에서, 여러 개의 어플리케이션이 동시에 네트워크를 통해서 다른 컴퓨터와 데이터를 주고 받는다. 그러나 개인이 사용하는 컴퓨터는 하나의 물리적 연결 장치(네트워크 카드)를 통해서 네트워크에 연결되어 있다.

따라서 하나의 IP 주소를 가지게 된다. 즉, 인터넷을 통해서 데이터를 주고 받는 프로그램이 현재 여러 개 실행 되고 있더라도 데이터를 송, 수신하는 통로는 하나밖에 존재 하지 않는 것이다.

IP 주소는 인터넷에 연결되어 있는 컴퓨터들을 구분하여 줄 수는 있어도 컴퓨터 안에서 실행 되고 있는 프로그램까지 구분하여 주지는 못한다. 이를 위해 필요한 것이 바로 Port이다.

32비트 IP 주소로는 네트워크상에 존재하는 호스트를 구분하게 되고, 16비트 Port정보로는 호스트 내에서 실행되고 있는 프로그램을 구분하게 된다. 이것은 물리적인 개념의 할당이 아니라, 동일 호스트 내에서의 논리적인 할당일 뿐이다.

Port는 2바이트로 표현 되므로 가질 수 있는 값의 범위가 0에서 6535까지다. 그러나 0부터 1023번 까지는 '잘 알려진 Port(well-known ports)' 라고 해서, 예약되어 있는 Port이므로 사용이 제한된다. 사용할 수 없는 것은 아니나 사용되는 용도를 약속해 놓았다는 의미이다. 또한 Port는 중복될 수 없으나, TCP소켓과 UDP소켓은 서로 공유하지 않으므로 중복되어도 상관 없다.

즉, TCP 소켓을 생성할 때 9190 Port를 사용했다면, 다른 TCP 소켓은 9190 Port를 사용할 수 없지만, UDP소켓은 9190 Port를 사용할 수 있다.

결론적으로 데이터 전송의 최종 목적지는 호스트가 아니라 메모리상에 올라와 실행 중에 있는 프로그램이다. 그러므로 데이터를 보내기 위해서는 데이터 패킷 내에 IP 주소 정보뿐만 아니라 Port 정보도 함께 포함 시켜야 한다.

'Study > TCP/IP' 카테고리의 다른 글

네트워크 바이트 순서  (0) 2008.02.16
주소 정보의 표현  (0) 2008.02.16
Internet Address  (0) 2008.02.16
소켓의 생성과 프로토콜의 설정  (0) 2008.02.16
파일 조작하기  (0) 2008.02.16