์ ๋ฌด๋ฅผ ํ๋ฉด์ ์๋ฒ๊ฐ ์๋ถ์ด์ ์๊ฐ์ ๋ ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๊ต์ฅํ ๋ง์๋ค ..
์ธ์ ๊ฐ ํ๋ฒ์ฏค์ ๊ผญ ๊ณต๋ถํด์ผ์ง ํ๋ ๋ด์ฉ์ด๋ผ ๊ธฐ์ตํ๊ธฐ ์ํด ์์ฑํด๋ณธ๋ค
CURL ๋ช
๋ น์ด๋ก ์๋ฒ์ ํต์ ์ ํ ๋, -v ์ต์
์ ์ฌ์ฉํ๋ฉด ์์ฒญ๊ณผ ์๋ต์ ์ ๊ณผ์ ์ ์์ธํ๊ฒ ํ์ธํ ์ ์๋ค.
-v ์ต์
์ ๋๋ฒ๊น
์ต์
์ผ๋ก, ์ด๋ฅผ ํตํด TCP ์ฐ๊ฒฐ → SSL ํธ๋์
ฐ์ดํฌ → HTTP ์์ฒญ/์๋ต๊น์ง ํต์ ์ ์ ๊ณผ์ ์ ํ์ธํ ์ ์๋ค.
์ค์ ๋ก ํต์ ์ด ๋ฌธ์ ์์ด ๋๋ ์๋ฒ์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ CURL ๋ช ๋ น์ด๋ฅผ ๋ ๋ฆฌ๋ฉด ์๋ต์ด ํ๋จ์ ์ฌ์ง์ฒ๋ผ ๋ฌ๋ค.
curl -v https://google.com
๊ทธ๋ฌ๋ ํญ์ ์ด๋ ๊ฒ ์ฑ๊ณต์ ์ผ๋ก ๋จ๋๊ฑด ์๋๋ค...
์๋ฌด ip๋ก ๋ ๋ ค๋ดค์ ๋๋ ์ด๋ ๊ฒ ์๋์ ๊ฐ์ด ๋จ๊ธฐ๋ ํ๊ณ
์ด๋ ๊ฒ ๋จ๊ธฐ๋ ํ๋ค.
๋ญ๊ฐ ๋ค๋ฅธ๊ฑฐ๊ณ ๋ญ ์ค์ ํด์ค์ผ ์ฐ๊ฒฐ์ด ๋๋๊ฑธ๊น?
์ฐ๊ฒฐ ๋ก๊ทธ๋ฅผ ํ๋ํ๋ ์ดํด๋ณด์!
1. TCP ์ฐ๊ฒฐ
* Trying 142.250.207.14:443... *
Connected to google.com (142.250.207.14) port 443
ํด๋ผ์ด์ธํธ(curl)๊ฐ google ๋๋ฉ์ธ์ IP๋ก ๋ณํํด์ ํด๋น ์ฃผ์์ 443 ํฌํธ์ ์ ์์ ์๋ํ๋ค.
https://๋ก url์ ์์ฒญํ๊ธฐ ๋๋ฌธ์ 443 ํฌํธ๋ก ์ฐ๊ฒฐ๋จ
Connected to ~~~๊ฐ ๋จ๋ฉด TCP ์ฐ๊ฒฐ ์ฑ๊ณต์ด๋ผ๋ ๋ป์ด๋ค.
์ค์ ๋ก google์ ip๋ฅผ nslookup์ผ๋ก ๊ฒ์ํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋์จ๋ค.
2. TLS/SSL ํธ๋์ ฐ์ดํฌ
(1) ํด๋ผ์ด์ธํธ๊ฐ ์ํธํ ๋ฐฉ์, ์ง์ ๋ฒ์ , server name ๋ฑ์ ํฌํจํ Hello ๋ฉ์์ง๋ฅผ ์๋ฒ์ ๋ณด๋ธ๋ค.
(2) ์๋ฒ๋ ์๋ตํ๋ฉฐ ์ธ์ฆ์๋ฅผ ์ ์กํ๊ณ ํค๋ฅผ ๊ตํํ๋ค.
(3) ์ธ์
ํค ๊ตํ์ด ์๋ฃ๋๊ณ , ์ํธํ ํต์ ์ด ์์ ๊ฐ๋ฅํ ์ํ๊ฐ ๋๋ค.
์ฌ๊ธฐ์ OUT์ ํด๋ผ์ด์ธํธ -> ๊ตฌ๊ธ ์๋ฒ์ด๊ณ IN์ ๊ตฌ๊ธ ์๋ฒ -> ๋ด ์ปดํจํฐ์ curl๋ก ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋งํ๋ค.
handshake Finished๊ฐ ๋จ๋ฉด, ์๋ฒ ์ธ์ฆ์ ๊ฒ์ฆ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์ฌ๊ธฐ์ issue์ ์ด ์ธ์ฆ์๋ฅผ ๋๊ฐ ๋ฐ๊ธํ๋๊ฐ๋ฅผ ๋ํ๋ด๊ณ , ์๋์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ์ธ์ฆ์๊ฐ Google ์์ฒด CA์ ์ํด ๋ฐ๊ธ๋์์์ ๋ปํ๋ค.
* Server certificate:
* subject: CN=google.com
* start date: ...
* issuer: C=US; O=Google Trust Services
* SSL certificate verify ok.
3. HTTP ์์ฒญ/์๋ต
> GET / HTTP/1.1
> Host: google.com
> User-Agent: curl/8.4.0
> Accept: */*
ํด๋ผ์ด์ธํธ๊ฐ / ๊ฒฝ๋ก๋ก GET ์์ฒญ์ ๋ณด๋ด๊ณ
< HTTP/1.1 301 Moved Permanently
< Location: https://www.google.com/
์๋ฒ๊ฐ ์๋ตํ๋ค. https://google.com์ด์๋๋ ์์ฒญ์ https://www.google.com์ผ๋ก๋ก ๋ฆฌ๋๋ ์
ํด์ค๋ค.
๋ธ๋ผ์ฐ์ ์๋ค๋ฉด ์๋์ผ๋ก ๋ฆฌ๋๋ ์
๋๊ฒ ์ง๋ง curl์ ์๋์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ๊น์ง ์ถ๋ ฅ๋๊ณ ์ข
๋ฃ๋๋ค.
* Connection #0 to host google.com left intact
์ปค๋ฅ์ ์ ๋์ง ์๊ณ keep-alive ์ํ๋ก ์ ์งํ๋ค๋ ๋ป ..
4. ๋ค์๋ณด๋ ์คํจ ์์ธ
์๊น ๋ฌด์์๋ก ip ์
๋ ฅํด์ ์ฐ๊ฒฐํ ๊ฑธ ๋ค์ ๋ด๋ณด์!
Connection timed out์ด ๋ด๊ธฐ ๋๋ฌธ์ TCP ์ฐ๊ฒฐ ์์ฒด๊ฐ ๋์ง ์์๋ค๋ ๋ป์ด๋ค.
TCP ์ฐ๊ฒฐ์ด ์๋๋ ์ด์ ๋... ์๋ฒ๊ฐ ๊บผ์ ธ์๊ฑฐ๋, ๋ฐฉํ๋ฒฝ์ด ๋งํ์๊ฑฐ๋, NAT ๋ผ์ฐํ
๋ฌธ์ ๊ฑฐ๋ ๋ฑ๋ฑ ๋ค์ํ๊ธฐ ๋๋ฌธ์ ์ดํ์ ๋จ๊ณ๋ ๋ ์ฐพ์๋ด์ผ ํ๋ค.
๋ ๋ฒ์งธ curl ์๋๋ TCP ์ฐ๊ฒฐ์ ์ฑ๊ณตํ์ง๋ง HTTP ์์ฒญ์์ ์คํจ๊ฐ ๋์๋ค.
HTTP ์์ฒญ์ ๋ณด๋์ง๋ง ์๋ฒ๊ฐ ์๋ต์ ๋ณด๋ด์ง ์์์ Empty reply from server๊ฐ ๋ฌ ๊ฒ์ด๋ค.
ํฌํธ ํฌ์๋ฉ์ด ์๋๊ฑฐ๋.. ๋ฐฑ์๋๊ฐ ์ฐ๊ฒฐ๋์ด์์ง ์๋ค๊ฑฐ๋.. ์ด๊ฑฐ ์ญ์ ์ดํ์ ๋จ๊ณ๋ ๋ ์ฐพ์๋ด์ผ ํ๋ค ใ
์ด๋ฒ ๊ธฐํ์ ๊ทธ๋์ ๋๊ฒจ์ง๋ ์ฐ๊ฒฐ ํ๋ฆ์ ๊ณต๋ถํด๋ณผ ์ ์์๋ค.
๊ทธ๋ฌ๋... ์์ง๋ ๋๋ฌด ๊ธฐ๋ณธ์ ์ธ ๋คํธ์ํฌ ์ง์์ด ๋ถ์กฑํ๋ค๊ณ ์๊ฐ๋์ด์ SSL/TLS ํธ๋์
ฐ์ดํฌ ๊ตฌ์กฐ๋ ํค ๊ตํ ๋ฐฉ์, TCP ํต์ ๊ณ์ธต ๋ฑ๋ฑ.. ๋ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค. ๋ถ๋ช
ํ๊ต๋ค๋๋ ๋ค ๋ฐฐ์ด๊ฑด๋ฐ....ใ
'Infra & DevOps > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] traceroute๋? (1) | 2024.10.09 |
---|---|
[Network] ์๋ฒ์ค DEV ์๋ฒ์ ๋ ธํธ๋ถ ์ฐ๊ฒฐํ๊ธฐ (0) | 2024.09.24 |
[Network] IPv4 ์ฃผ์ ์ฒด๊ณ์ ์๋ธ๋คํ (0) | 2024.09.18 |
[Network] VirtualBox OS์ ๋ก์ปฌ ์ปดํจํฐ ์ฐ๊ฒฐ ๋ฌธ์ : IP ๋์ญ๊ณผ ๋คํธ์ํฌ ์ค์ (0) | 2024.03.08 |