네트워크 핵심 프로토콜 이해하기

이 문서에서는 컴퓨터 네트워크의 기본이 되는 핵심 TCP/IP 프로토콜들을 자세히 살펴봅니다. 네트워크의 기본 개념과 OSI 및 TCP/IP 모델의 계층 구조, 그리고 이더넷, IP, TCP 프로토콜에 대한 기본적인 이해가 있다면 내용을 더욱 효과적으로 습득할 수 있습니다.

이 학습을 통해 WHOIS, DNS, HTTP, FTP, SMTP, POP3, IMAP과 같은 주요 프로토콜에 대한 지식을 얻게 될 것입니다. 실습 환경을 준비하려면 AttackBox에서 터미널을 열고 대상 가상 머신(VM)을 시작한 후 약 2-3분간 배포가 완료되기를 기다립니다.

DNS: 주소 기억하기

가장 자주 방문하는 웹사이트의 IP 주소를 기억하시나요? 아마 아닐 것입니다. 로컬 기기의 개인 IP 주소가 아니라면, 대개의 경우 특정 IP 주소를 외울 필요가 없습니다. 이는 도메인 이름 시스템(DNS - Domain Name System) 덕분인데, DNS는 사람이 읽기 쉬운 도메인 이름을 해당 IP 주소로 정확하게 매핑하는 역할을 합니다.

DNS는 ISO OSI 모델의 7계층인 애플리케이션 계층에서 작동하며, 기본적으로 UDP 포트 53을 사용하고 TCP 포트 53을 백업으로 활용합니다. DNS 레코드에는 여러 유형이 있지만, 여기서는 다음 네 가지에 중점을 둡니다:

  • A 레코드 (Address Record): 호스트 이름을 하나 이상의 IPv4 주소에 매핑합니다. 예를 들어, example.com172.17.2.172로 해석되도록 설정할 수 있습니다.
  • AAAA 레코드: A 레코드와 유사하지만 IPv6 주소에 사용됩니다. AAAA는 "네 개의 A"를 의미하며, 이는 IPv4 주소 매핑을 위한 A 레코드와의 구분을 명확히 합니다.
  • CNAME 레코드 (Canonical Name Record): 한 도메인 이름을 다른 도메인 이름에 매핑합니다. 예를 들어, www.example.comexample.com 또는 example.org로 매핑할 수 있습니다.
  • MX 레코드 (Mail Exchange Record): 특정 도메인의 이메일 처리를 담당하는 메일 서버를 지정합니다.

다시 말해, 브라우저에 example.com을 입력하면 브라우저는 DNS 서버의 A 레코드를 질의하여 이 도메인을 해석하려고 시도합니다. 반면, test@example.com으로 이메일을 보내려고 하면 메일 서버는 DNS 서버에 MX 레코드를 질의하여 메일 서버 주소를 찾습니다.

명령줄 인터페이스에서 도메인의 IP 주소를 찾으려면 nslookup과 같은 도구를 사용할 수 있습니다. 다음 터미널 예시는 www.example.com에 대한 질의를 보여줍니다.

user@TryHackMe$ nslookup www.example.com
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   www.example.com
Address: 93.184.215.14
Name:   www.example.com
Address: 2606:2800:21f:cb07:6820:80da:af6b:8b2c

위 질의는 여러 개의 데이터 패킷을 생성했습니다. 아래 터미널 예시에서 첫 번째와 세 번째 패킷은 각각 A 및 AAAA 레코드에 대한 DNS 질의를 나타내며, 두 번째와 네 번째 패킷은 해당 DNS 질의에 대한 응답을 보여줍니다.

user@TryHackMe$ tshark -r dns-query.pcapng -Nn
    1 0.000000000 192.168.66.89 → 192.168.66.1 DNS 86 Standard query 0x2e0f A www.example.com OPT
    2 0.059049584 192.168.66.1 → 192.168.66.89 DNS 102 Standard query response 0x2e0f A www.example.com A 93.184.215.14 OPT
    3 0.059721705 192.168.66.89 → 192.168.66.1 DNS 86 Standard query 0x96e1 AAAA www.example.com OPT
    4 0.101568276 192.168.66.1 → 192.168.66.89 DNS 114 Standard query response 0x96e1 AAAA www.example.com AAAA 2606:2800:21f:cb07:6820:80da:af6b:8b2c OPT

질의 응답:

IPv6 주소를 참조하는 DNS 레코드 유형은 무엇입니까?

AAAA

관련 이메일 서버를 참조하는 DNS 레코드 유형은 무엇입니까?

MX

WHOIS

앞서 도메인 이름을 IP 주소로 해석하는 방법을 살펴보았습니다. 이러한 작업을 가능하게 하려면 누군가 도메인의 A, AAAA, MX 레코드 및 기타 DNS 레코드를 설정할 권한을 가지고 있어야 합니다. 이 권한은 도메인을 등록한 사람에게 부여됩니다. 따라서 example.com 도메인을 등록하면 해당 도메인에 대한 유효한 DNS 레코드를 자유롭게 설정할 수 있습니다.

사용 가능한 모든 도메인은 1년 또는 여러 년 단위로 등록할 수 있습니다. 도메인 소유자는 연간 요금을 지불해야 하며, 등록 시 정확한 연락처 정보를 제공해야 합니다. 이 정보는 WHOIS 기록에 포함되며 공개적으로 접근 가능합니다. (WHOIS는 약어가 아니며, "who is"로 발음됩니다.) 연락처 정보를 공개하고 싶지 않다면, WHOIS 기록에 정보가 포함되지 않도록 개인 정보 보호 서비스를 이용할 수 있습니다.

등록된 도메인의 WHOIS 기록을 찾으려면 온라인 질의 서비스나 리눅스 시스템에서 사용 가능한 명령줄 도구인 whois를 사용할 수 있습니다. 예상대로 WHOIS 기록은 등록된 도메인과 관련된 개체에 대한 정보(이름, 전화번호, 이메일, 주소 등)를 제공합니다. 아래 터미널 출력 예시에서 기록이 처음 생성된 시간과 마지막으로 업데이트된 시간을 확인할 수 있습니다. 또한, 등록자의 이름, 주소, 전화번호 및 이메일 등의 정보도 찾을 수 있습니다.

다음 예시에서는 whois 명령을 사용하여 개인 정보 보호 기능이 적용된 도메인의 WHOIS 기록을 조회했습니다.

user@TryHackMe$ whois [REDACTED].com
[...]
Domain Name: [REDACTED].COM
Registry Domain ID: [REDACTED]
Registrar WHOIS Server: whois.godaddy.com
Registrar URL: https://www.godaddy.com
Updated Date: 2017-07-05T16:02:43Z
Creation Date: 1993-04-02T00:00:00Z
Registrar Registration Expiration Date: 2026-10-20T14:56:17Z
Registrar: GoDaddy.com, LLC
Registrar IANA ID: 146
Registrar Abuse Contact Email: abuse@godaddy.com
Registrar Abuse Contact Phone: +1.4806242505
[...]
Registrant Name: Registration Private
Registrant Organization: Domains By Proxy, LLC
Registrant Street: DomainsByProxy.com
[...]

질의 응답:

x.com 기록은 언제 생성되었습니까? YYYY-MM-DD 형식으로 답변을 제공하십시오.

1993-04-02

twitter.com 기록은 언제 생성되었습니까? YYYY-MM-DD 형식으로 답변을 제공하십시오.

2000-01-21

HTTP(S): 웹 접근

웹 브라우저를 실행할 때 주로 사용되는 프로토콜은 HTTP와 HTTPS입니다. HTTP는 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)의 약자이며, HTTPS의 'S'는 보안(Secure)을 의미합니다. 이 프로토콜은 TCP에 기반하며, 웹 브라우저가 웹 서버와 통신하는 방식을 정의합니다.

웹 브라우저가 웹 서버에 보낼 수 있는 주요 명령(또는 메서드)은 다음과 같습니다:

  • GET: HTML 파일이나 이미지와 같은 데이터를 서버로부터 검색합니다.
  • POST: 양식 제출이나 파일 업로드와 같이 서버에 새로운 데이터를 제출할 수 있도록 합니다.
  • PUT: 서버에 새로운 리소스를 생성하거나 기존 정보를 업데이트하고 덮어쓰는 데 사용됩니다.
  • DELETE: 이름에서 알 수 있듯이, 서버의 지정된 파일 또는 리소스를 삭제하는 데 사용됩니다.

HTTP와 HTTPS는 일반적으로 각각 TCP 포트 80과 443을 사용하며, 드물게 8080 및 8443과 같은 다른 포트도 사용될 수 있습니다.

다음 예시에서는 Firefox 브라우저를 사용하여 MACHINE_IP에 있는 웹 서버에 접속하는 상황을 가정합니다. 브라우저는 관련 웹 페이지를 가져와 완벽하게 표시하지만, 우리는 일반적으로 대상 웹사이트의 이면에 일어나는 일에 더 관심이 있습니다.

Wireshark를 사용하면 Firefox 브라우저와 웹 서버 간의 데이터 교환을 더 면밀하게 검토할 수 있습니다. 아래 Wireshark 스크린샷은 브라우저가 보낸 텍스트(빨간색)와 웹 서버의 응답(파란색)을 보여줍니다. 웹 서버 버전 및 페이지의 마지막 수정 시간과 같이 사용자에게는 표시되지 않는 수많은 정보가 클라이언트와 서버 간에 교환됩니다.

이전 학습에서 언급했듯이, telnet 클라이언트를 사용하여 MACHINE_IP의 포트 80에서 실행 중인 대상 웹 서버에 연결할 수 있습니다. 원하는 페이지를 얻으려면 GET / HTTP/1.1Host: anything 명령을 몇 줄 보내야 합니다 (일부 서버에서는 Host: anything을 보내지 않아도 파일을 얻을 수 있습니다). 이 방법을 사용하면 기본 페이지인 /뿐만 아니라 어떤 웹사이트 페이지도 접근할 수 있습니다.

예를 들어, file.html 페이지를 얻고 싶다면 GET /file.html HTTP/1.1을 보낼 수 있습니다 (GET /file.html이 유효한지는 대상 웹 서버에 따라 다릅니다). 이 방법은 서버와 "HTTP 대화"를 직접 수행하므로 문제 해결에 매우 효과적입니다.

질의 응답:

telnet을 사용하여 MACHINE_IP에 있는 flag.html 파일에 접근하십시오. 발견된 숨겨진 플래그는 무엇입니까?

root@ip-10-10-187-1:~# telnet 10.10.0.29 80
Trying 10.10.0.29...
Connected to 10.10.0.29.
Escape character is '^]'.
GET /flag.html HTTP/1.1
Host: 10.10.0.29

# (서버 응답 내용이 여기에 표시됩니다)

THM{TELNET-HTTP}

FTP: 파일 전송

웹 페이지 검색을 목적으로 하는 HTTP 프로토콜과 달리, 파일 전송 프로토콜(FTP - File Transfer Protocol)은 파일 전송에 특화되어 있습니다. 따라서 FTP는 파일 전송 시 매우 효율적이며, 동일한 조건에서 HTTP보다 더 빠른 데이터 전송 속도를 달성할 수 있습니다.

FTP 프로토콜이 정의하는 명령어 예시는 다음과 같습니다:

  • USER: 사용자 이름을 입력하는 데 사용됩니다.
  • PASS: 비밀번호를 입력하는 데 사용됩니다.
  • RETR (retrieve): FTP 서버에서 클라이언트로 파일을 다운로드하는 데 사용됩니다.
  • STOR (store): 클라이언트에서 FTP 서버로 파일을 업로드하는 데 사용됩니다.

FTP 서버는 기본적으로 TCP 포트 21을 수신하며, 데이터 전송은 클라이언트에서 서버로의 별도 연결을 통해 이루어집니다.

아래 터미널 예시에서는 ftp MACHINE_IP 명령을 실행하여 로컬 ftp 클라이언트로 원격 FTP 서버에 연결한 후 다음 단계를 수행했습니다:

  • anonymous 사용자 이름으로 로그인 시도.
  • anonymous 사용자 이름에는 비밀번호를 제공할 필요 없음.
  • ls 명령으로 다운로드 가능한 파일 목록 확인.
  • 텍스트 파일이므로 type ascii 입력하여 ASCII 모드로 전환.
  • get coffee.txt 입력하여 원하는 파일 검색.

위의 FTP 클라이언트를 통한 명령 교환은 다음 터미널 예시 인터페이스에 표시됩니다:

user@TryHackMe$ ftp MACHINE_IP
Connected to MACHINE_IP (MACHINE_IP).
220 (vsFTPd 3.0.5)
Name (MACHINE_IP:strategos): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,10,41,192,134,10).
150 Here comes the directory listing.
-rw-r--r--    1 0        0            1480 Jun 27 08:03 coffee.txt
-rw-r--r--    1 0        0              14 Jun 27 08:04 flag.txt
-rw-r--r--    1 0        0            1595 Jun 27 08:05 tea.txt
226 Directory send OK.
ftp> type ascii
200 Switching to ASCII mode.
ftp> get coffee.txt
local: coffee.txt remote: coffee.txt
227 Entering Passive Mode (10,10,41,192,57,100).
150 Opening BINARY mode data connection for coffee.txt (1480 bytes).
WARNING! 47 bare linefeeds received in ASCII mode
File may not have transferred correctly.
226 Transfer complete.
1480 bytes received in 8e-05 secs (18500.00 Kbytes/sec)
ftp> quit
221 Goodbye.

Wireshark를 사용하여 교환된 메시지를 더 자세히 확인할 수 있습니다. 아래 스크린샷을 보면 클라이언트의 메시지는 빨간색으로, 서버의 응답은 파란색으로 표시됩니다. 클라이언트와 서버 간의 다양한 명령어가 어떻게 다른지 주목하십시오. 예를 들어, 클라이언트에서 ls를 입력하면 클라이언트는 실제로는 서버에 LIST를 보냅니다. 마지막으로, 디렉터리 목록과 다운로드한 파일은 각각 별도의 연결을 통해 전송됩니다.

질의 응답:

AttackBox의 FTP 클라이언트 ftp를 사용하여 MACHINE_IP에 있는 FTP 서버에 접속하고 flag.txt를 검색하십시오. 발견할 수 있는 플래그 내용은 무엇입니까?

ftp 10.10.0.29

Name (MACHINE_IP:root): anonymous
Password:
ftp> ls
ftp> type ascii
ftp> get flag.txt
ftp> quit

cat flag.txt

THM{FAST-FTP}

SMTP: 이메일 전송

웹 페이지 탐색이나 파일 다운로드와 마찬가지로, 이메일을 보내는 것 또한 고유한 프로토콜을 필요로 합니다. 간단한 메일 전송 프로토콜(SMTP - Simple Mail Transfer Protocol)은 메일 클라이언트가 메일 서버와 통신하는 방식과 한 메일 서버가 다른 메일 서버와 통신하는 방식을 정의합니다.

SMTP 프로토콜은 우체국에 가서 소포를 보내는 상황에 비유할 수 있습니다. 먼저 직원에게 인사하고 소포를 보낼 곳을 알려준 다음, 소포를 건네기 전에 발신자 정보를 제공합니다. 국가에 따라 신분증 제시를 요구받을 수도 있습니다. 이 과정은 SMTP 세션과 개념적으로 크게 다르지 않습니다.

메일 클라이언트가 이메일을 SMTP 서버로 전송할 때 사용하는 몇 가지 명령어를 소개합니다:

  • HELO 또는 EHLO: SMTP 세션을 시작합니다.
  • MAIL FROM: 발신자의 이메일 주소를 지정합니다.
  • RCPT TO: 수신자의 이메일 주소를 지정합니다.
  • DATA: 클라이언트가 이메일 메시지 내용을 보내기 시작할 것임을 나타냅니다.
  • .: 단독으로 한 줄을 보내 이메일 메시지의 끝을 알립니다.

다음 터미널 예시는 telnet을 통해 이메일을 보내는 방법을 보여줍니다. SMTP 서버는 기본적으로 TCP 포트 25를 수신합니다.

user@TryHackMe$ telnet MACHINE_IP 25
Trying MACHINE_IP...
Connected to MACHINE_IP.
Escape character is '^]'.
220 example.thm ESMTP Exim 4.95 Ubuntu Thu, 27 Jun 2024 16:18:09 +0000
HELO client.thm
250 example.thm Hello client.thm [10.11.81.126]
MAIL FROM: <user@client.thm>
250 OK
RCPT TO: <strategos@server.thm>
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
From: user@client.thm
To: strategos@server.thm
Subject: Telnet email

Hello. I am using telnet to send you an email!
.
250 OK id=1sMrpq-0001Ah-UT
QUIT
221 example.thm closing connection
Connection closed by foreign host.

telnet을 사용하여 이메일을 보내는 것은 분명 번거로운 작업이지만, 이메일 클라이언트가 백그라운드에서 어떤 명령을 발행하는지 이해하는 데 도움이 됩니다. 아래 스크린샷과 같이 Wireshark로 캡처된 데이터 패킷은 데이터 교환 과정을 다른 색상으로 보여줍니다. 클라이언트 메시지는 빨간색으로, 서버 응답은 파란색으로 표시됩니다.

이제 HTTP, FTP, SMTP의 기본적인 명령을 학습했으므로, 프로토콜이 어떻게 설계되고 사용되는지에 대한 더 깊은 이해를 얻으셨을 것입니다. 이 시점에서 POP3와 IMAP 같은 다른 텍스트 기반 프로토콜의 작동 원리를 학습하는 것이 더욱 쉬울 것입니다.

질의 응답:

클라이언트가 이메일 메시지 내용을 보내기 시작할 것임을 나타내는 SMTP 명령어는 무엇입니까?

DATA

이메일 메시지가 완전히 입력되었음을 나타내기 위해 이메일 클라이언트가 보내는 것은 무엇입습니까?

.

POP3: 이메일 수신

이메일을 수신하여 로컬 메일 클라이언트로 다운로드하고 싶을 때, 우편국 프로토콜 버전 3(POP3 - Post Office Protocol version 3)은 클라이언트가 메일 서버와 통신하고 이메일을 검색할 수 있도록 설계되었습니다.

이 섹션에서 기술적인 세부 사항에 깊이 들어갈 필요 없이, 이메일 클라이언트가 메시지 전송에는 SMTP를 사용하고 메시지 검색에는 POP3를 사용한다는 것을 아는 것으로 충분합니다. SMTP는 우체국에 봉투나 소포를 건네는 것과 유사하며, POP3는 로컬 우편함에 새로운 편지나 소포가 있는지 확인하는 것과 비슷합니다.

몇 가지 일반적인 POP3 명령어는 다음과 같습니다:

  • USER <username>: 사용자를 식별합니다.
  • PASS <password>: 사용자의 비밀번호를 제공합니다.
  • STAT: 메시지 수와 총 크기를 요청합니다.
  • LIST: 모든 메시지와 그 크기를 나열합니다.
  • RETR <message_number>: 지정된 메시지를 검색합니다.
  • DELE <message_number>: 메시지를 삭제 대상으로 표시합니다.
  • QUIT: POP3 세션을 종료하고 변경 사항(예: 삭제)을 적용합니다.

아래 터미널 예시에서는 telnet 연결을 통한 POP3 세션을 볼 수 있습니다. POP3 서버는 기본적으로 TCP 포트 110을 수신하므로, 텔넷 포트에 연결하는 명령어는 telnet MACHINE_IP 110입니다. 아래 POP3 명령어는 이전 섹션에서 보낸 이메일을 검색합니다.

user@TryHackMe$ telnet MACHINE_IP 110
Trying MACHINE_IP...
Connected to MACHINE_IP.
Escape character is '^]'.
+OK [XCLIENT] Dovecot (Ubuntu) ready.
AUTH
+OK
PLAIN
.
USER strategos
+OK
PASS 
+OK Logged in.
STAT
+OK 3 1264
LIST
+OK 3 messages:
1 407
2 412
3 445
.
RETR 3
+OK 445 octets
Return-path: <user@client.thm>
Envelope-to: strategos@server.thm
Delivery-date: Thu, 27 Jun 2024 16:19:35 +0000
Received: from [10.11.81.126] (helo=client.thm)
        by example.thm with smtp (Exim 4.95)
        (envelope-from <user@client.thm>)
        id 1sMrpq-0001Ah-UT
        for strategos@server.thm;
        Thu, 27 Jun 2024 16:19:35 +0000
From: user@client.thm
To: strategos@server.thm
Subject: Telnet email

Hello. I am using telnet to send you an email!
.
QUIT
+OK Logging out.
Connection closed by foreign host.

네트워크 패킷을 캡처하는 사람은 교환된 트래픽을 가로챌 수 있습니다. 이전 Wireshark 캡처와 마찬가지로, 빨간색으로 표시된 명령은 클라이언트가 보낸 것이고, 파란색으로 표시된 줄은 서버가 보낸 것입니다. 이 트래픽을 캡처하는 사람이 비밀번호를 읽을 수 있다는 점도 분명합니다.

POP3 서버에 연결하려면 인증이 필요하며, 실습 예시에서는 다음 로그인 자격 증명을 사용합니다:

  • 사용자 이름: linda
  • 비밀번호: Pa$$123

질의 응답:

트래픽 교환을 살펴보면, 원격 서버에서 실행 중인 POP3 서버의 이름은 무엇입니까?

Dovecot

telnet을 사용하여 MACHINE_IP의 POP3 서버에 연결하고 네 번째 메시지에 포함된 플래그 내용을 확인하십시오.

telnet 10.10.0.29 110

USER linda

PASS Pa$$123

STAT

LIST

RETR 4

QUIT

THM{TELNET_RETR_EMAIL}

IMAP: 이메일 동기화

만약 하나의 기기(예: 데스크톱 컴퓨터의 이메일 클라이언트)만 사용하여 작업한다면 POP3로도 충분할 수 있습니다. 하지만 사무실의 데스크톱 컴퓨터와 노트북 또는 스마트폰에서 동시에 이메일을 확인하고 싶다면 어떻게 해야 할까요? 이 경우, 메시지를 검색한 후 삭제하는 대신 메일 메시지 동기화를 허용하는 프로토콜이 필요합니다. 여러 기기에서 동기화된 사서함을 유지하는 한 가지 해결책은 인터넷 메시지 접근 프로토콜(IMAP - Internet Message Access Protocol)을 사용하는 것입니다.

IMAP은 읽음, 이동, 삭제된 메일의 동기화를 허용합니다. 여러 클라이언트를 사용하여 이메일을 확인할 때 IMAP은 매우 편리합니다. 원격 서버에서 이메일을 다운로드하고 삭제함으로써 서버 저장 공간 사용을 최소화하려는 경향이 있는 POP3와 달리, IMAP은 이메일이 서버에 보관되고 여러 이메일 클라이언트 간에 동기화되어야 하므로 더 많은 저장 공간을 사용하려는 경향이 있습니다.

IMAP 프로토콜의 명령은 POP3 프로토콜 관련 명령보다 더 복잡합니다. 몇 가지 예를 아래에 나열했습니다:

  • LOGIN <username> <password>: 사용자를 인증합니다.
  • SELECT <mailbox>: 사용할 사서함 폴더를 선택합니다.
  • FETCH <mail_number> <data_item_name>: 예: fetch 3 body[]는 메시지 번호 3의 헤더와 본문을 가져옵니다.
  • MOVE <sequence_set> <mailbox>: 지정된 메일을 다른 사서함으로 이동합니다.
  • COPY <sequence_set> <data_item_name>: 지정된 메일을 다른 사서함으로 복사합니다.
  • LOGOUT: 로그아웃합니다.

IMAP 서버는 기본적으로 TCP 포트 143을 수신하며, 우리는 telnet을 사용하여 MACHINE_IP의 포트 143에 연결하고 이전 예시에서 보낸 메시지를 가져옵니다.

user@TryHackMe$ telnet 10.10.41.192 143
Trying 10.10.41.192...
Connected to 10.10.41.192.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN] Dovecot (Ubuntu) ready.
A LOGIN strategos ##################
A OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE] Logged in
B SELECT inbox ##################
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 4 EXISTS
* 0 RECENT
* OK [UNSEEN 2] First unseen.
* OK [UIDVALIDITY 1719824692] UIDs valid
* OK [UIDNEXT 5] Predicted next UID
B OK [READ-WRITE] Select completed (0.001 + 0.000 secs).
C FETCH 3 body[] ###################
* 3 FETCH (BODY[] {445}
Return-path: <user@client.thm>
Envelope-to: strategos@server.thm
Delivery-date: Thu, 27 Jun 2024 16:19:35 +0000
Received: from [10.11.81.126] (helo=client.thm)
        by example.thm with smtp (Exim 4.95)
        (envelope-from <user@client.thm>)
        id 1sMrpq-0001Ah-UT
        for strategos@server.thm;
        Thu, 27 Jun 2024 16:19:35 +0000
From: user@client.thm
To: strategos@server.thm
Subject: Telnet email

Hello. I am using telnet to send you an email!
)
C OK Fetch completed (0.001 + 0.000 secs).
D LOGOUT #################
* BYE Logging out
D OK Logout completed (0.001 + 0.000 secs).
Connection closed by foreign host.

아래 스크린샷은 Wireshark에서 본 이메일 클라이언트와 이메일 서버 간에 교환된 메시지를 보여줍니다. 클라이언트는 네 가지 명령(아래 그림의 빨간색 부분)만 보내면 되지만, "긴" 서버 응답은 파란색으로 표시됩니다.

질의 응답:

네 번째 이메일을 검색하는 데 사용할 수 있는 IMAP 명령어는 무엇입니까?

FETCH 4 body[]

프로토콜 요약

이 문서를 통해 DNS, HTTP, FTP, SMTP, POP3, IMAP과 같은 핵심 프로토콜의 작동 원리를 탐구했습니다. 이러한 프로토콜에 대한 논의는 도메인 이름이 어떻게 해석되고, 웹 페이지가 어떻게 제공되며, 이메일이 어떻게 송수신되는지에 대한 이해를 심화시킵니다. 또한, 그래픽 인터페이스 뒤에서 프로토콜이 어떻게 기능하는지에 대한 통찰력을 얻는 것이 주된 목적 중 하나였습니다.

다음 표는 지금까지 논의된 프로토콜들이 사용하는 기본 포트 번호를 요약합니다.

프로토콜 전송 프로토콜 기본 포트 번호
TELNET TCP 23
DNS UDP 또는 TCP 53
HTTP TCP 80
HTTPS TCP 443
FTP TCP 21
SMTP TCP 25
POP3 TCP 110
IMAP TCP 143

태그: DNS WHOIS HTTP HTTPS FTP

5월 28일 13:58에 게시됨