โ† Articles

๐Ÿ” HTTPS๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ?

์ง„์งœ ๋ฐ์ดํ„ฐ๋ฅผ ๋œฏ์–ด๋ณด์•˜๋‹ค

Table of Contents

์ด๋ฏธ HTTPS์˜ ์ค‘์š”์„ฑ์€ ๋„๋ฆฌ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ํฌ๋กฌ, ํŒŒ์ด์–ดํญ์Šค์™€ ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €๋Š” HTTP ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ๋„์šฐ๋‹ˆ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์œ„ํ•ด์„œ๋ผ๋„ HTTPS๋Š” ํ•„์ˆ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฐœ๋–ก๊ฐ™์€ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ํ•œ ํ•˜๋ฃจ ๋ฆฌ๋‰ด์–ผ ์ด์•ผ๊ธฐ์—์„œ ๊ทธ๋ ‡๊ฒŒ ์‚ฝ์งˆํ•œ ์ด์œ ์ด๊ธฐ๋„ ํ•˜๋‹ค.

HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์•”ํ˜ธํ™”๋˜๊ณ , ๋ณด์•ˆ์— ์ข‹๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•˜์ง€๋งŒ, HTTP ์ ‘์†๊ณผ ๋น„๊ตํ•˜๋ฉฐ ์‹ค์ œ๋กœ ์˜ค๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด๋ณด๋‹ˆ ๊ทธ ์‚ฌ์‹ค์ด ๋”์šฑ ๊ฐ€๊น๊ฒŒ ๋‹ค๊ฐ€์™”๋‹ค. ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ ์ง€์‹์€ Top-Down์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ์ฐธ๊ณ .

๐Ÿฆˆ Wireshark ์‚ฌ์šฉํ•˜๊ธฐ

Wireshark๋Š” ์˜คํ”ˆ์†Œ์Šค ํŒจํ‚ท ๋ถ„์„ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. (ํŒจํ‚ท์€ ๋„คํŠธ์›Œํฌ์—์„œ ์˜ค๊ฐ€๋Š” ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์„ ๋งํ•œ๋‹ค.) Wireshark๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ด๋™ํ•˜๋Š” ํŒจํ‚ท์„ ์บก์ณํ•ด ๊ทธ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. PCAP์€ ํŠธ๋ž˜ํ”ฝ์„ ์บก์ณํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— Wireshark๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๊ผญ ๊ฐ™์ด ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

์ฒซ ํ™”๋ฉด์— ๋‹ค์–‘ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ณด์ด๋Š”๋ฐ, ์™€์ดํŒŒ์ด์— ์—ฐ๊ฒฐ๋œ ๋…ธํŠธ๋ถ๊ณผ ๋„คํŠธ์›Œํฌ ์‚ฌ์ด์— ์˜ค๊ฐ€๋Š” ํŒจํ‚ท์„ ์บก์ฒ˜ํ•˜๊ณ  ์‹ถ์œผ๋‹ˆ๊นŒ Wi-Fi๋ฅผ ์„ ํƒํ–ˆ๋‹ค.

ํ•„ํ„ฐ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ๋“  ํŒจํ‚ท์ด ์žกํžŒ๋‹ค. ๊ทธ ์–‘์ด ์ƒ์ƒ ์ด์ƒ์œผ๋กœ ๋งŽ๊ณ , ์†๋„๋„ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ•„ํ„ฐ๋ฅผ ์ž˜ ์„ค์ •ํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ณจ๋ผ์„œ ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ƒ๋‹จ 'Apply a display filterโ€™์— ํ•„ํ„ฐ ์กฐ๊ฑด์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์กฐ๊ฑด์— ๋งž๋Š” ํŒจํ‚ท๋งŒ ๊ณจ๋ผ์„œ ๋ณด์—ฌ์ค€๋‹ค.

๐Ÿ”Œ HTTP ์ ‘์†

์ดํ›„ HTTP ์ ‘์†๊ณผ HTTPS ์ ‘์†์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ HTTP ์ฃผ์†Œ์— ์ ‘์†ํ•ด๋„ HTTPS๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋˜์ง€ ์•Š๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๋จผ์ € ์ฐพ์•„์•ผ ํ–ˆ๋‹ค. ์˜ˆ์ƒ๋Œ€๋กœ(?) ํ•™๊ต ํ™ˆํŽ˜์ด์ง€๋Š” http://www.ajou.ac.kr๋„ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๊ณ , https://www.ajou.ac.kr๋„ ์ ‘์†์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค.

Wireshark๋ฅผ ์ผœ๋‘” ์ฑ„ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด http://www.ajou.ac.kr์— ์ ‘์†ํ•˜๋ฉด Wireshark์— ์บก์ฒ˜๋œ๋‹ค. ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ ์†์— ํŒŒ๋ฌปํ˜€ ๋ฒ„๋ฆฌ์ง€ ์•Š๋„๋ก ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค:

ip.addr == 202.39.0.19 && http

์ด์ œ source๋‚˜ destination์˜ ์•„์ดํ”ผ๊ฐ€ 202.39.0.19์ด๊ณ , ํ”„๋กœํ† ์ฝœ์ด HTTP์ธ ํŒจํ‚ท๋งŒ ๋ณด์—ฌ์ค€๋‹ค. ์„œ๋ฒ„ ์•„์ดํ”ผ๋Š” cmd์—์„œ ping www.ajou.ac.kr์„ ์‹คํ–‰ํ•ด ํ™•์ธํ–ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์—์„œ http://www.ajou.ac.kr์„ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋‹ˆ ํŒจํ‚ท์ด ์ญ‰ ๋‚˜์™”๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ๋‚ด์šฉ์„ ์‚ดํŽด๋ดค๋‹ค.

HTTP Request Message

http://www.ajou.ac.kr์—๊ฒŒ /_resources/new/img/index/btn_pop_close.gif๋ฅผ ์š”์ฒญํ•˜๋Š” HTTP ๋ฉ”์‹œ์ง€์ด๋‹ค. HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋Š” ํฌ๊ฒŒ Request line, Header lines, Entity body๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. Request line์—๋Š” GET /_resources/new/img/index/btn_pop_close.gif HTTP/1.1\r\n์ด ์žˆ๊ณ , ๊ทธ ์•„๋ž˜ Header lines์—๋Š” Host, User-Agent, Accept-Langueage ๋“ฑ ์—ฌ๋Ÿฌ ํ—ค๋”๋“ค์ด ๋”ฐ๋ผ์˜จ๋‹ค.

User-Agent ํ—ค๋”๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ์ด์–ดํญ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ์•Œ ์ˆ˜ ์žˆ๊ณ , Referer๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ http://www.ajou.ac.kr/main/index.jsp์—์„œ ๋„˜์–ด์™”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. Referer๋ฅผ ๋ณด๋ฉด ๋ธ”๋กœ๊ทธ์˜ ๋ฐฉ๋ฌธ์ž ์œ ์ž… ๊ฒฝ๋กœ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฟ ํ‚ค๋„ ๋ณด์ด๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” PHAROS_VISITOR์™€ JSESSIONID๋ผ๋Š” ์ฟ ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. JSESSIONID๋Š” ํ†ฐ์บฃ ์„œ๋ฒ„์—์„œ JSP๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์„ธ์…˜ID๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ฟ ํ‚ค๋‹ค. PHAROS_VISITOR๋Š” ์–ด๋–ค ๋ชฉ์ ์œผ๋กœ ์“ฐ์ด๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์—ˆ๋‹ค.

HTTP Response Message

์•ž์„  ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ ์‘๋‹ต ๋ฉ”์‹œ์ง€๋‹ค. HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€๋Š” Status line, Header lines, Entity body๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉฐ, Status line์— ์š”์ฒญ์ด ์ž˜ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ์ธ 200 OK๊ฐ€ ๋‹ด๊ธด ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ•œํŽธ Last-Modified ํ—ค๋”๋ฅผ ํ†ตํ•ด ์บ์‹œ๋œ ํŒŒ์ผ์ด 2017๋…„ 2์›” 23์ผ ๋ชฉ์š”์ผ์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ๊ณผ Content-Type ํ—ค๋”๋ฅผ ํ†ตํ•ด GIF ์ด๋ฏธ์ง€์ด๋ผ๋Š” ๊ฒƒ๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. (์‚ฌ์ง„ ์บก์ฒ˜ํ•œ๊ฒŒ 10์›” 11์ผ ์˜คํ›„ 11์‹œ์ฏค์ธ๋ฐ Date๊ฐ€ ์™œ ์˜คํ›„ 1์‹œ๋กœ ๋‚˜์˜จ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.)

๋งˆ์ง€๋ง‰์œผ๋กœ Body์—๋Š” GIF ํŒŒ์ผ์ด ๋‹ด๊ฒจ์žˆ๋‹ค.

Conditional GET

์‚ฌ์‹ค ํด๋ผ์ด์–ธํŠธ๋Š” ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ”๋กœ ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ , ์ค‘๊ฐ„์— ์žˆ๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ์š”์ฒญํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์บ์‹œ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ด๋•Œ, ํ”„๋ก์‹œ ์„œ๋ฒ„๋กœ ํ•˜์—ฌ๊ธˆ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์—๊ฒŒ ์บ์‹œ๋œ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋๋Š”์ง€ ํ™•์ธํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด conditional GET์ด๋‹ค.

conditional GET์˜ ๋™์ž‘์„ ๋ณด๊ธฐ ์œ„ํ•ด ๋˜ ๋‹ค๋ฅธ ํŒจํ‚ท์„ ์‚ดํŽด๋ดค๋‹ค. HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€์— If-Modified-Since ํ—ค๋”๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด ์บ์‹œ๋œ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์œ„ ๋ฉ”์‹œ์ง€์—๋Š” If-Modified-Since ํ—ค๋”๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒˆ์„ ๊ฒƒ์ด๋‹ค.

304 Not Modified ์‘๋‹ต์ด ์™”๋‹ค. ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์˜๋ฏธ๋กœ, ๊ทธ๋ƒฅ ํ”„๋ก์‹œ ์„œ๋ฒ„์— ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

๐Ÿ”Œ HTTPS ์ ‘์†

HTTPS๋Š” HTTP ํ”„๋กœํ† ์ฝœ์— SSL ํ”„๋กœํ† ์ฝœ์„ ๋”ํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹ˆ๋‹ค. ๋” ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด SSL ํ”„๋กœํ† ์ฝœ์€ ๊ณผ๊ฑฐ์— ์‚ฌ์šฉ๋˜์—ˆ๊ณ , ์ง€๊ธˆ์€ SSL์„ ๋ฐœ์ „์‹œํ‚จ TLS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€์ฒด๋กœ SSL๊ณผ TLS๋ฅผ ์„ž์–ด์„œ ๋งํ•œ๋‹ค.

HTTP๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ๋Š” ๋ชจ๋“  ํŒจํ‚ท์˜ ๋‚ด์šฉ์„ ๋œฏ์–ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. HTTPS๋Š” ์–ด๋–จ๊นŒ? ๋จผ์ € Wireshark์˜ ํ•„ํ„ฐ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค:

ip.addr == 202.39.0.19 && ssl

๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ https://www.ajou.ac.kr๋กœ ์ ‘์†ํ•˜๋ฉด ํ”„๋กœํ† ์ฝœ์ด TLS์ธ ํŒจํ‚ท๋งŒ ์บก์ณ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € ์ ‘์† ๊ณผ์ •์—์„œ HTTP์™€ ๋‹ค๋ฅธ ์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. HTTPS๋กœ ์ ‘์†ํ•  ๋•Œ๋Š” TCP Three-way handshake์™€ ๋ณ„๋„๋กœ TSL handshake ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

IBM์˜ An overview of the SSL or TLS handshake์— ๋”ฐ๋ฅด๋ฉด TLS handshake ๊ณผ์ •์—์„œ๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ํ‚ค๋ฅผ ๊ตํ™˜ํ•œ๋‹ค. ์•ž์„œ ์บก์ฒ˜๋œ ํŒจํ‚ท์—์„œ ๋ณด๋“ฏ, ์ด ๊ณผ์ •์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” Client Hello, Server Hello, Certificate, Server Hello Done ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. ์ด ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„์—์•ผ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•œ๋‹ค.

Wireshark์—์„œ TLS handshake ์ดํ›„ ์ฃผ๊ณ ๋ฐ›๋Š” ํŒจํ‚ท ์ค‘ ์•„๋ฌด๊ฑฐ๋‚˜ ์—ด์–ด๋ดค๋‹ค.

ํด๋ผ์ด์–ธํŠธ์™€ https://www.ajou.ac.kr๊ฐ€ ์ฃผ๊ณ ๋ฐ›์€ ํ•ด๋‹น ํŒจํ‚ท์˜ ์ฝ˜ํ…์ธ  ํƒ€์ž…์ด Application Data๋ผ๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค. HTTP๋กœ ์ ‘์†ํ•  ๋•Œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค, ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €, ์œ ์ž… ๊ฒฝ๋กœ ๋“ฑ ํŒจํ‚ท์„ ํ†ตํ•ด ๊ฐ์ข… ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, HTTPS๋กœ ์ ‘์†ํ•  ๋•Œ๋Š” ํŒจํ‚ท์ด ์•”ํ˜ธํ™”๋˜์–ด ๋‚ด์šฉ์„ ์•Œ ์ˆ˜ ์—†๋‹ค.

๋งŒ์•ฝ ์–ด๋–ค ์‚ฌ๋žŒ์ด HTTP ์„œ๋ฒ„์— ์ ‘์†ํ–ˆ๋Š”๋ฐ, ์•…์˜๋ฅผ ๊ฐ€์ง„ ํ•ด์ปค๊ฐ€ ๊ทธ ์‚ฌ๋žŒ์˜ ํŒจํ‚ท์„ ๊ฐ€๋กœ์ฑˆ๋‹ค๋ฉด ๊ทธ ์‚ฌ๋žŒ์ด ์–ด๋Š ํŽ˜์ด์ง€์—์„œ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ๋ชจ๋‘ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

โ†

๐Ÿค– ์ปดํ“จํ„ฐ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์•„์ฃผ ๊ตฌ์ฒด์ ์ธ ์›๋ฆฌ

MIPS ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ›‘์–ด๋ณด๊ธฐ

โ†’

๐ŸŒ Top-Down์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋„คํŠธ์›Œํฌ

Computer Networks and the Internet

โ† Articles