티스토리 뷰

사용자가 쓸 수 있는 포트번호에는 종류가 있다.

1~1023 : 잘 알려진 포트번호 (well-known port number)

1024~49151 : 등록된 포트번호

49152~65535 : 동적 포트번호


잘 알려진 포트번호의 같은 경우에는 루트권한이 필요하며 

시스템에 필요한 포트번호 이기 때문에 사용자가 응용프로그램에서 필요하다고 해서 이 범위 내에 있는 포트번호를 사용하면 안된다. 

이 범위의 번호들은 IANA(Internet Assigned Number Authority)에서 지정한것이며 이러이러한 일을 하는 시스템 프로그램은 이 포트번호를 써야 한다고 권장하는 내용을 담고 있다.


등록된 포트번호 : 사용자가 소켓프로그래밍을 할 때 개인적으로 사용하고 싶은 포트번호가 있을때 사용해도 되는 포트번호이다.

위에 나와있듯이 HTTP를 사용할때 IANA에서 포트번호를 80번을 사용하라고 권장하고 있다. 그렇기 때문에 우리가 HTTP 통신을 할때 80번 포트를 사용하는것이다. 


이것처럼 daytime프로토콜을 사용할때는 13번 포트를 사용하라고 되어있지만 잘 알려진 포트번호를 사용하기 위해서는 루트권한이 필요하므로 그 시스템의 루트권한을 얻지 못한다면 13번포트가 아닌 다른 포트를 뚫어서 사용해야한다.


TCP/IP 네트웍에서 포트 번호는, 들어오는 트래픽을 컴퓨터 내에서 실행되고 있는 적절한 프로그램에 분배시키기 위해 할당되는 숫자를 말한다. 이것은 물리적인 플러그나 소켓이 아니며, 다만 논리적인 할당일 뿐이다


# 프로그래밍에서, 포트는 "논리적인 접속장소"이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트웍 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다. 웹 프로토콜인 HTTP와 같이, TCP/IP의 상위 프로토콜을 사용하는 응용프로그램에서는 미리 지정된 포트번호 들을 가지고 있다. 이런 것들은 IANA에 의해 지정되었으며, "잘 알려진 포트들"이라고 불린다. 다른 응용프로그램 프로세스들은 매번 접속할 때마다 포트번호가 동적으로 부여된다. 서버 프로그램이 처음 시작되면, 지정된 포트번호로 바인드된다. 그 서버를 사용하려는 모든 클라이언트 프로그램들은 지정된 포트번호에 바인드해야만 한다.

바인드가 되면  두개의 컴퓨터간 네트워크를 이용한 통신시 발신지 컴퓨터에서 출발한 사용자 데이터(패킷)는 TCP/IP의 각 계층을 거치면서 최종적으로 목적지 주소(IP)를 가지고 있는 컴퓨터에 도착하게 됩니다. 패킷을 수신한 컴퓨터는 전송시에 사용되었던 주소필드를 제거하고, 패킷 안에 있는 데이터만을 응용프로그램에 넘겨줍니다. 

결국 데이터를 넘겨줄 컴퓨터에는 FTP, Mail, Telnet, SSH, Web 등 다양한 종류의 응용프로그램이 기동하고 있을 것입니다. 수신측 컴퓨터가 인터넷 계층에서 패킷을 수신한 후 응용층으로 데이터를 전달하려고 할 때, 컴퓨터내에 기동중인 많은 응용프로그램들 중 누구에게 데이터를 전달해야 하는지 어떻게 구분할까요? 이러한 문제를 해결하기 위해서 운영체제는 응용프로그램의 논리적인 주소인 Port 번호라는 것을 이용합니다. 즉 각각의 응용프로그램 (서비스)에 유일한 논리적 주소인 Port 번호를 할당하여서, 전송계층에서 응용프로그램을 구분할 수 있도록 하고 있습니다.  


포트번호는 0부터 65536 이다. 포트번호 0부터 1024까지는 어떤 특권을 가진 서비스에 의해 사용될 수 있도록 예약되어 있다. HTTP 서비스를 위해서는 대개 80번 포트가 지정되는데, URL에 이를 적을 필요는 없다.



댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함