해결된 질문
작성
·
67
0
강의에서 언급된 이야기는 아니지만 DNS 캐시서버는 UDP로 통신하기 때문에 여러 요청이 왔을 때 요청을 구별하기 위해 트랜잭션 ID를 붙혀서 클라이언트를 구별한다고 공부했습니다.
그런데 트랜잭션 ID가 없어도 요청받은 IP주소와 port번호를 보고 응답을 해주면 되는게 아닌가 생각이 들었습니다.
트랜잭션 ID가 필요한 이유를 잘 모르겠습니다.
추가적으로 만약 DNS 통신을 TCP라고 가정했을 때 TCP도 결국엔 IP 주소와 port번호를 보고 데이터를 응답해 줄텐데 TCP는 연결 지향형이기 때문에 괜찮다고 하더라구요.
UDP, TCP 모두 IP주소와 Port보고 응답할텐데 UDP는 트랙잭션 ID가 필요하고 TCP는 괜찮은 이유가 궁금합니다.
답변 1
0
응용 프로그램 수준에서 그렇게 프로토콜이 정의됐기 때문입니다. 무엇보다 IP주소와 Port번호로 원격지 정보를 DNS 서버가 식별 할 수 있으나 같은 리모트 호스트라 하더라도 여러 프로세스가 작동중일 수 있고 그 중 DNS 질의를 유발한 원인 프로세스는 다를 수도 있습니다. 또한 공유기가 사용되는 경우 DNS 서버 입장에서 질의를 요청한 호스트 정보는 같지만 실제로는 공유기 뒤에 여러 호스트들이 동시에 질의를 요청했을 수도 있습니다.
4계층 프로토콜은 전송을 위한 것입니다. '무엇'을 전송하는지 그 내용에는 관심이 없으며 전송을 잘하고 못하고 혹은 빠르게 하려는 것에만 관심이 있습니다. 택배 기사님의 질문자님의 택배 물건 자체가 무엇인지 관심이 없는 것과 같은 이치라 하겠습니다. (단, 무게나 크기 등 배송 그 자체에 관련한 부분에는 관심이 많으시겠지요.) 참고하시기 바랍니다. 😄
네, 다른 번호를 갖습니다. 다만 연결(혹은 먼저 전송)을 하는 쪽에서 포트 번호는 무엇이 되건 상관 없습니다. 우선은 전송 계층과 응용 프로그램 계층을 구별해 생각하라고 조언하고 싶습니다. 😃
답변 감사합니다.
각 프로세스마다 다른 포트번호를 갖는게 아닌가요?? 여러 프로세스가 작동중이어도 각 포트번호로 프로세스를 구별하면 될 것 같은데 무엇을 놓치고 있는지 헷갈리네요..ㅠ