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


104

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

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

답변:


110

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

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

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

또한 것을 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.