해결된 질문
작성
·
267
·
수정됨
0
프로토콜이란 것이 참 추상적이어서 감이 잘 잡히지 않는데요,
HTTP, FTP, SMTP, POP3
--------------------------
TCP, UDP
TCP와 UDP의 차이는 어떻게 구현하는 것이며,
HTTP, FTP, SMTP, POP3 프로토콜과 TCP, UDP의 관계에서 비롯된 차이가 궁금합니다.
예를 들어, HTTP 프로토콜을 TCP로 구성한다고 했을 때, 또는 HTTP 프로토콜을 UDP로 구성한다고 했을 때
TCP 프로그래밍은 3 Hand - Shake 구조만 갖추면 TCP 프로토콜이라 할 수 있을지요? 또는 UDP 구조만 갖추면 UDP 프로토콜이라고 할 수 있을지요?
HTTP, FTP, SMTP, POP3 프로토콜의 차이는 Client / Server 소켓 프로그래밍으로 프로그래밍을 달리 구성하는것에서 차이가 오는지요? 또 그것을 구현 중에 TCP 구조 UDP 구조를 택하는 것에서 차이가 발생하는지요?
TCP/IP프로토콜이라는 말은 IP프로토콜 기반 TCP 프로토콜을 말하는 것이라 알고 있는데, HTTP/UDP 또는 HTTP/TCP 이렇게도 표기하는지요?
고맙습니다.
답변 1
1
프로토콜은 추상적인 것이 아니라 매우 구체적은 규약입니다. 다만, 개념이라는 것은 아무래도 모호할 수 밖에 없습니다. 프로그램 코드 수준으로 프로토콜을 직접 구현해보면 그 의미가 매우 명확해질 수 있습니다만 그렇다고 네트워크 공부할 사람 모두 개발자가 될 수는 없으니까요.
TCP와 UDP의 차이는 너무나 많아서 그 차이를 어떻게 구현하는 것인지 말하는 것은 어렵겠습니다. 그저 가장 큰 특징으로 논리적 연결이 TCP에는 있고 UDP에는 없다는 정도로 요약은 가능하겠습니다. 그리고 가장 중요한 개념은 계층입니다. 가령 HTTP나 FTP같은 통신 프로토콜은 TCP/IP 프로토콜을 기반 프로토콜로 사용합니다. 그러니 관계서 비롯된 가장 큰 차이로는 기반이 되어주는 것인지 아닌지 정도의 차이가 있겠습니다.
3 way handshake은 TCP 연결의 절차입니다. 그런 구조 하나를 갖췄다고 TCP 프로토콜이라 할 수는 없습니다. TCP와 관련된 표준을 모두 준수해야 합니다. 비슷한 설명으로 UDP 프로토콜 스펙을 모두 갖춘다면 UDP 프로토콜을 지원한다고 할 수 있겠습니다. 그런데 TCP나 UDP 같은 L4 수준 프로토콜은 대부분 운영체제 수준에서 이미 구현되어 있습니다. 따라서 OS를 개발하지 않는 이상 직접 구현 할 일은 잘 없겠습니다.
통상 5계층 이상 프로토콜은 Socket 수준에서 구현됩니다. 이는 TCP, UDP와는 별개 입니다. 단, 하위 기반 프로토콜로 TCP를 사용하고 있는 HTTP프로토콜의 경우 TCP 통신이 가능해야 통신이 가능하다고 할 수 있겠습니다.
IP는 3계층 프로토콜이고 TCP는 4계층이며 IP 프로토콜을 기반으로 성립합니다. 그런데 4계층은 3계층에 대한 의존도가 매우 높은 데다 따로 떼서 TCP만 성립하지 못합니다. 이 때문에 TCP는 TCP/IP로 붙여 쓰는 것이 보통입니다. 그런데 HTTP/TCP 같은 형식으로 표현하지 않는 이유는 HTTP는 7계층 프로토콜이다 보니 중간 6~5를 생략해 표현하지는 않습니다. SSL같은 것은 5계층 프로토콜인데 이를 HTTP와 조합할 경우 HTTPS라고 부릅니다. HTTP/SSL이라 표기하지는 않습니다. 이론상 그런 표기가 틀렸다고 하기는 어렵겠지만 표기라는 것은 결국 사용자들간의 합의에 의해 결정되는 것이며 관련 전문가 협의와 논의로 정한 표준에 따라 최종 확정됩니다. 참고하시기 바랍니다. 😄