IT/네트워크

[Application layer - DNS, DHCP, SMTP, IMAP, POP3, FTP, HTTP] in TCP/IP 4 layer

kykyky 2024. 1. 2. 16:23

Application layer의 다양한 프로토콜들을 알아보겠습니다!

 


Name System

 

DNS

 

Domain을 IP address로 전환해줍니다.

사용자가 www.example.com이라는 Domain의 IP address를 DNS에게 물으면, DNS는 이에 대한 답을 해줍니다.

 

 

사진 출처: Domain Name System Security and Privacy: A Contemporary Survey

 
사용자가 www.example.com이라는 Domain에 접속하려 할 때, 다음과 같은 과정이 이루어집니다.   

 

(그림의 "recursive"라 표현된 위치는 DNS resolver입니다.)

 

1. 사용자의 요청은 DNS resolver로 라우팅됨
     - DNS resolver는 ISP가 관리함

     - 사실, 이렇게 DNS resolver가 요청을 받은 뒤, 
       DNS resolver의 Cache에 "www.example.com"에 대한 IP address가 존재한다면 
       이것을 바로 사용자에게 전달하고,
       이후 과정은 진행되지 않습니다.
 
2. DNS resolver는 사용자의 요청을 root name server에 전달
3. .com의 TLD(Top Level Domain) name server로 가라는 답을 받음

4. DNS resolver는 사용자의 요청을 TLD name server에 전달
5. example.com Domain의 authoritative server로 가라는 답을 받음

6. DNS resolver는 사용자의 요청을 authorative server에 전달
7. 원하는 IP 주소를 받음

8. DNS resolverIP 주소를 사용자의 웹 브라우저에 전달 

 


Host Config

 

 

DHCP

 

DHCP는 IP 주소와 같은 통신 매개변수들을 네트워크에 연결된 장치들에 자동으로 할당해줍니다.

(그래서 이것 없이는 IP 주소를 수동으로 할당해야 하는 번거로움이 생기죠.)

 

사진 출처: https://www.linux.co.kr/bbs/board.php?bo_table=lecture&wr_id=2089

 

가정에서는 보통 라우터가 DHCP 서버의 역할을 합니다.

 

DHCP 시스템은 서버와 클라이언트 두 요소가 통신합니다.

(여기서 서버는 IP 주소를 할당하는 것, 클라이언트는 이 서버에 연결된 모든 장치들입니다.)

 

네트워크에 클라이언트가 연결될 때, IP 주소를 요청합니다.
이 요청은 서버로 전달됩니다.
서버는 클라이언트에게 IP 주소를 할당해줍니다.
클라이언트는 이 IP 주소를 이용해 내부 / 공용 네트워크와 통신 가능합니다.
서버는 이 주소의 이용을 모니터링하다가,
클라이언트의 연결이 해제되면, 이것의 IP 주소를 다시 가져옵니다.

 

 


Email

 

SMTP, IMAP, POP3

 

 

 


File Transfer

 

FTP(File Transfer Protocol)

 

FTP는 말 그대로 파일 전송에 쓰이는 프로토콜입니다.

 

사진 출처: https://www.easymedia.net/Culture/EasyStory/index.asp?no=172&mode=view&IDX=1170&p=1

 

그리고 서버와 클라이언트가 통신하는 구조입니다.

 

예를 들어, 집이 아닌 카페에서 집 PC와 파일을 공유하고 싶을 때 아래와 같이 이용할 수 있습니다.

집에서는 FTP 서버를 사용하고, 
집 밖의 카페에 와서는 노트북이나 스마트폰으로 FTP 클라이언트 프로그램을 통해 FTP 서버에 접속할 수 있는 것입니다.
그러면 FTP 서버 내 집 PC의 파일을 가져올 수 있고 (즉, 집 PC의 파일을 옮겨오는 USB가 필요없어지는 것이죠.),
반대로 FTP 서버에 파일을 올려놓을 수도 있습니다.

 

 

 


Web

 

HTTP

 

HTTP는 HTML 문서 등을 fetch하기 위한 프로토콜입니다.

어떤 웹페이지의 텍스트, 이미지, 비디오 등은 따로따로 fetch되고, 이들이 재구성되어 완전한 문서, 즉 웹페이지를 이룹니다.

 

사진 출처: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview

 

Client-server 프로토콜

HTTP는 Client-server 프로토콜입니다.

client가 보낸 메시지는 request, server가 보낸 메시지는 response라 불립니다.

이러한 소통을 시작하는 것은 언제나 server가 아니라 client 쪽입니다. 

 

Proxy

Client와 Server 사이에는, Proxy라 불리는 다양한 요소들도 함께 request를 핸들링하고 있는데,

이들은 현재 우리가 다루는 Application layer가 아닌 다른 layer에 속해있으니 지금은 언급하지 않겠습니다.

 

TCP 사용

HTTP는 그 아래 transport layer의 protocol이 "reliable"해야 하기에 TCP connection을 이용합니다.

    - reliable: 데이터 손실이 없음 (↔ UDP: unreliable)

 

stateful - Cookie, Session

요즘의 HTTP는 stateful한 방식이 선호되는데, 이는 Client의 상태 정보가 어딘가에 보존됨을 의미합니다.

Client와 Server가 단계별로 송수신을 진행하는 과정에서, Client가 제공한 값을 버리지 않고 저장해두는 것입니다.

예를 들어 어떤 웹사이트에서 한번 로그인을 완료하면, 다른 페이지로 이동해도 로그인 상태가 유지됩니다.

이러한 상태 정보는 Client의 브라우저의 Cookie나, 혹은 Server의 Session에 저장될 수 있습니다.