TCP와 UDP 소켓이 동일한 포트를 사용할 수 있습니까?


104

우선 동일한 서버에서 UDP와 TCP를 모두 사용하는 데 문제가 있습니까?

둘째, 동일한 포트 번호를 사용할 수 있습니까?

답변:


110

예, TCP와 UDP 모두에 동일한 포트 번호를 사용할 수 있습니다. 많은 프로토콜이 이미이를 수행합니다. 예를 들어 DNS는 udp / 53 tcp / 53에서 작동합니다.

기술적으로 각 프로토콜의 포트 풀은 완전히 독립적이지만 TCP 또는 UDP를 사용할 수있는 상위 수준 프로토콜의 경우 기본적으로 동일한 포트 번호 를 사용하는 것이 관례입니다. .

서버를 작성할 때 TCP 소켓의 이벤트 시퀀스는 UDP 소켓보다 훨씬 어렵다는 점을 명심하십시오. 일반 socketbind호출 뿐만 아니라 listenaccept.

또한 것을 accept호출은 새로운 소켓을 반환하고 그건 당신이 다음 이벤트를 받기위한 조사도해야한다는 소켓. 서버는 accept원래 소켓에서 연결 을 계속 하는 동시에 각각 자체 소켓에서 수신 이벤트를 트리거 할 여러 클라이언트를 동시에 서비스 할 준비가되어 있어야합니다 .


2
@Eric Fortis RFC 1700은 예제로 가득 차 있습니다. 모두 나열하지 않겠습니다. ;-)
론의 후작

2
@Eric Fortist NetBIOS 포트 번호에 대해 정확히 '모두가 알아야하는'이유는 무엇입니까?
Marquis of Lorne 2011 년

4
질문으로 게시 해 주시면 답변을받을 수 있습니다
Eric Fortis 2011-06-25

6
이 답변이 설명하지 않는 것 : '포트'의미 체계는 전송 수준 (OSI 모델 수준 4)의 각 프로토콜에 따라 다릅니다 (일부는이 의미 체계가 없을 수 있음). 따라서 TCP에는 TCP 스택에 의해 해석되는 자체 포트가 있습니다. UDP에는 UDP 스택에 의해 해석되는 자체 포트가 있습니다. 즉, 포트는 UDP와 TCP간에 공유되지 않습니다. 두 프로토콜 모두 "포트"의 동일한 정의를 가지며 단순화하기 위해 동일한 서비스에 대한 서로 다른 유형의 여러 연결에 대해 동일한 포트 값을 사용합니다.
moala

2
@EricFortis 그러한 질문은 흥미 롭다고 생각하는 이유와 마찬가지로 저나 다른 누구에게도 관심이 없을 것이기 때문입니다. 그리고 우리가 논의하는 목적을 위해 여기에 있는 하나의 RFC 를 인용하는 것에 대한 귀하의 반대도 마찬가지입니다 .
Marquis of Lorne

8

첫째, 서버에서 tcp와 udp를 모두 사용하는 데 문제가 없습니다.

둘째, 동일한 포트에서 UDP 및 TCP 요청을 모두 가질 수 있습니다. 각 요청은 소스 IP, 대상 IP, 소스 포트, 대상 포트, PROTOCOL (프로토콜은 TCP 또는 UDP 일 수 있음)에 포함 된 5 배로 식별되기 때문입니다.


3
당신이 말하는 이유는 종종 주어 지지만 정말 의미가 없습니다. UDP 연결과 같은 것은 없으며 연결된 프로토콜에 관계없이 연결이 고려되는 컨텍스트가 없습니다. 사실 포트는 TCP와 UDP의 아티팩트이므로 혼동 될 가능성이 없습니다.
Marquis of Lorne

제 잘못을 지적 해주셔서 감사합니다. UDP를 이용한 연결이없는 것이 맞습니다.
aMooly
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.