임시 포트(Ephemeral Port): 이것이 무엇이며 어떤 역할을 합니까?

임시 포트(Ephemeral Port): 이것이 무엇이며 어떤 역할을 합니까?

Linux 기사를 읽다가 갑자기 "임시 포트"라는 용어를 보았는데, 저자는 그것이 무엇인지 언급하지 않았습니다.

UNIX의 임시 포트란 무엇입니까?

답변1

본질적으로임시 포트알려진 서버 포트와 통신하는 데 사용되는 임의의 상위 포트입니다. 예를 들어, 내 컴퓨터에서 서버로 SSH를 통해 연결하면 다음과 같이 연결됩니다.

192.168.1.102:37852 ---> 192.168.1.105:22

22는 원격 시스템에서 연결하는 표준 SSH 포트입니다. 37852는 로컬 시스템에서 사용하는 임시 포트입니다.

답변2

오늘은 일반적으로 다음과 같이 말합니다.

번호가 매겨진 포트를 0-1023시스템 또는유명한포트 번호가 매겨진 포트를 1024-49151사용자 또는등기포트, 숫자가 있는 포트를 49152-65535동적 포트, 개인 포트 또는단명포트.
등록 포트 번호는 현재 IANA...에 의해 할당되었으며 2001년 3월 21일 이전에는...ICANN...에 의해, 1998년 이전에는...USC/ISI...에 의해 할당되었습니다.

원천:https://en.wikipedia.org/wiki/Registered_port[수정됨]

...잘 알려진 포트 또는 시스템 포트입니다. 널리 사용되는 유형의 네트워크 서비스를 제공하는 시스템 프로세스에서 사용됩니다. Unix 계열 운영 체제에서는 잘 알려진 포트 중 하나를 사용하여 네트워크 소켓을 IP 주소에 바인딩하려면 수퍼유저 권한으로 프로세스를 실행해야 합니다.

원천:https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

잘 알려져 있고 등록된 포트 번호가 서버 프로세스에 사용되는 것처럼 임시 포트 번호는 클라이언트 프로세스에만 사용됩니다.

원천:https://books.google.si/books?id=Pm4RgYV2w4YC&pg=PA705

이러한 임시/임시 포트가 할당되지 않으면 IP(인터넷 프로토콜)/네트워크 통신 충돌이나 중단이 발생할 수 있습니다. 예를 들어 두 개의 웹 서버가 있고 둘 다 포트 80에서 수신 대기합니다. 이 두 서버는 어떻게 통신합니까? half-duplex단일 80 포트에서 일종의 " " 통신(듣기, 전송, 듣기, 전송...)을 구현 하시겠습니까 ? 이 경우 통신 속도는 최소한 느려집니다. 80 포트(클라이언트에 응답을 보내는 데 사용됨)를 일시적으로 사용할 수 없기 때문에 다른 클라이언트가 다른 클라이언트에 대한 서버의 응답을 기다려야 한다는 것은 말할 것도 없습니다.

임시 포트가 여기에 표시됩니다. 이 경우 서버는 포트 80에서 계속 수신 대기하면서 동시에 다른 포트(일종의 " full-duplex")에서 통신할 수 있습니다. 예를 들어 이것이 TCP/IP 포트라고 가정해 보겠습니다.

무리

TCP/IP 또는 UDP를 사용하는 클라이언트-서버 프로세스에서 클라이언트는 잘 알려진 여러 포트 중 하나를 통해 서버와의 통신을 시작합니다. 그러나 서버는 통신을 시작하지 않으므로 해당 클라이언트 장치에서 서버 유형 응용 프로그램이 실행 중인 경우 잘 알려진 포트를 사용하여 클라이언트에 응답을 보내서는 안 됩니다. 대신 클라이언트 서버는 클라이언트가 소스 포트로 제공한 임시 할당된 새 포트를 사용합니다.
통신이 종료되면 해당 포트는 다른 세션에서 사용할 수 있습니다. 그러나 일반적으로 전체 포트 범위를 모두 사용한 후에만 재사용됩니다.
서로 다른 운영 체제는 임시 포트에 대해 서로 다른 포트 범위를 사용합니다. 기본적으로 많은 Linux 버전은 포트 범위 32768-61000을 사용하는 반면 Windows 버전(XP 이전)은 1025-5000을 사용합니다. Vista, Windows 7 및 Server 2008을 포함한 최신 Windows 버전에서는...IANA...권장 범위 49152-65535를 사용합니다.

원천:https://www.techopedia.com/definition/19157/ephemeral-port

구성이 올바르지 않은 경우 TCP 자체 연결 문제를 언급할 가치가 있습니다.

while true
do
     telnet 127.0.0.1 50000
done  

...
127.0.0.1 시도 중...
텔넷: 주소 127.0.0.1에 연결 중: 연결이 거부되었습니다.
127.0.0.1 시도 중...
127.0.0.1에 연결되었습니다.
...
무슨 일이에요? 즉, 클라이언트는 자체적으로 연결됩니다... 흥미롭게도 Linux는 임시 포트를 무작위가 아닌 순차적으로 선택합니다...
이 문서에 설명된 자체 연결 시나리오는 매우 구체적이며 특정 전제 조건이 필요합니다. 먼저 클라이언트가 임시 포트에 연결을 시도하도록 서버가 수신 대기할 임시 포트를 (ab) 사용해야 합니다.

원천:http://sgros.blogspot.com/2013/08/tcp-client-self-connect.html


관련된:
-https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/default-dynamic-port-range-tcpip-chang(Windows Vista 및 Windows 이후 TCP/IP의 기본 동적 포트 범위가 변경되었습니다....)
-https://en.wikipedia.org/wiki/Duplex_(통신)
-https://jazzy.id.au/2012/08/23/why_does_chrome_consider_some_ports_unsafe.html
-https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc(차단된 포트의 일반 목록...)

답변3

포트 49152-65535 ephemeral ports의 다른 이름은 입니다 private ports. 이 범위의 포트를 등록할 수 없기 때문에 그렇게 불립니다.인터넷 할당 번호 기관. 클라이언트가 서버와 통신해야 하는 경우 클라이언트에는 임시 포트가 할당되고 서버는 1024~49151 범위의 등록된 포트에서 수신 대기합니다.

답변4

에서 인용위키피디아:

임시 포트는 미리 정의된 범위에서 TCP/IP 소프트웨어에 의해 자동으로 할당되는 인터넷 프로토콜(IP) 통신에 사용되는 단기 전송 프로토콜 포트입니다. 이는 클라이언트-서버 통신을 위해 TCP(전송 제어 프로토콜), UDP(사용자 데이터그램 프로토콜) 또는 SCTP(스트림 제어 전송 프로토콜)에서 서버의 알려진 포트에 대한 클라이언트-서버 포트 할당으로 사용됩니다.

제가 아는 가장 좋은 예는 FTP입니다. 그리고 그것은 유닉스에 국한된 개념이 아닙니다.

관련 정보