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

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

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



답변

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

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

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

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


답변

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

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


답변