인기있는 TCP 사용 서비스가 왜 / etc / services에 TCP뿐만 아니라 UDP를 가지고 있습니까?


22

Go로 네트워크 프로그래밍에 관한 책을 읽고 있습니다. 이 장 중 하나는 / etc / services 파일을 다루고 있습니다. 이 파일을 탐색하는 동안 내가 주목 한 것은 전송 레이어에서 TCP를 사용하는 HTTP 및 SSH와 같은 인기있는 항목에는 UDP에 대한 두 번째 항목이 있다는 것입니다. 예를 들어 Ubuntu 14.04에서 :

ubuntu@vm1:~$ grep ssh /etc/services  
ssh             22/tcp         # SSH Remote Login Protocol 
ssh             22/udp

ubuntu@vm1:~$ grep http /etc/services  
http            80/tcp          www             # WorldWideWeb HTTP            
http            80/udp                          # HyperText Transfer Protocol

왜 이것에 두 개의 항목이 있는지 아는 사람이 있습니까? SSH 또는 HTTP가 UDP를 사용한다고 생각하지 않습니다 (SSH에 대해이 질문으로 확인 ).


7
22/udp2016 년에 데비안에서 제거 IANA는 여전히 22 / UDP 나와 있습니다 만 일반적으로 그들 중 하나에서 구현되는 대부분의 프로토콜 및 목록 모두 UDP와 TCP를. 누군가가 언젠가 udp를 통해 ssh를 구현하려는 경우 22가 ssh를 위해 예약되어 있음을 의미 할 수 있습니까?
Stéphane Chazelas

답변:


29

기본적으로 포트 번호가 할당되기 시작한 시점부터 2011 년까지의 전통이 있었기 때문입니다. 예를 들어 RFC 6335§7.1“과거 원칙” 을 참조하십시오 .

요청시 TCP 및 UDP 포트가 동시에 할당되었습니다.

물론 포트 1023 이하는 "시스템 포트"이며 대부분의 운영 체제에서 특별히 처리되며 해당 범위의 대부분이 현재 할당되어 있기 때문에 언젠가 할당이 해제 될 수 있습니다.

그리고 HTTP / 3는 UDP를 통해 실행됩니다. 80/443뿐만 아니라 모든 UDP 포트를 사용할 수 있습니다. 실제로는 여전히 사용되지 않습니다.

지금까지 데비안에 관한 한, 자신이 /etc/services이미 가지고 22 / UDP 1.0 (버즈 1996) 중 .

그러나 2016 년 커밋 에서 제거되었으며 netbase패키지 버전 5.4에서 처음 릴리스되었습니다 .

글을 쓰는 현재 데비안 (버스터)의 최신 안정 버전 은 5.6 입니다. 그리고 최신 Ubuntu LTS (18.04, bionic) netbase 패키지 는 데비안 netbase 5.4를 기반으로 하며 변경 로그에 udp / 22 제거가 언급되어 있습니다.


4
@SergiyKolodyazhnyy이 연습이 방화벽보다 우선하기 때문에 생각하지 않습니다.
derobert

3
@TobySpeight 그것은 단순한 Linux가 아니라 관련 표준의 일부입니다. 예를 들어 해당 RFC의 §6을 참조하십시오. IANA는 더 높은 포트도 등록하지만, 다른 분류입니다 (실제로는 Linux뿐만 아니라 OS가 포트를 처리하는 방식 때문에 중요합니다). 나는 그것을 명확히 할 것이다. 또한 0은 유효한 포트가 아닙니다. 소켓 API에서 와일드 카드 (커널이 포트를 선택하도록 지시하기 위해)로 사용됩니다.
derobert

2
"0은 유효한 포트가 아닙니다"는 의문입니다. 확실히 OS 에서 사용할 수있는 포트가 아니기 때문에 (특히 포트를 호출 한 이유와 현재 예약되어 있으며 다른 것에 할당되지 않는 이유) 프로토콜 수준에서는 특별하지 않습니다.
Toby Speight

1
@derobert : 포트 0은 "사용 가능한 포트 선택"을 의미 하므로 Unix 시스템에서 포트 0을 사용할 수 없다는 주장입니다 . 나는 그 주장이 잘못되었다고 말하고있다. 결론은 전제에서 논리적으로 따르지 않습니다.
MSalters

3
80/443뿐만 아니라 모든 UDP 포트를 사용할 수 있지만 기본적으로 모든 프로토콜 TCP / UDP 프로토콜에 해당하지만 각 포트와 관련된 기본 포트입니다. TCP 및 UDP를 사용하는 대부분의 응용 프로그램은 기본이 아닌 포트를 지정하는 방법을 제공하지 않지만 HTTP를 사용하면 URL에서 포트를 지정할 수 있으므로 포트를 다양하게 변경할 수 있습니다.
Barmar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.