Bibi's DevLog ๐Ÿค“๐ŸŽ

[TIL-Codesquad] http/https, ๋Œ€์นญํ‚ค/๋น„๋Œ€์นญํ‚ค, TCP, ํฌํŠธ, URL / ์ž๋ฐ” Socket, InetAddress, URL, URLConnection ํด๋ž˜์Šค ๋ณธ๋ฌธ

TIL

[TIL-Codesquad] http/https, ๋Œ€์นญํ‚ค/๋น„๋Œ€์นญํ‚ค, TCP, ํฌํŠธ, URL / ์ž๋ฐ” Socket, InetAddress, URL, URLConnection ํด๋ž˜์Šค

๋น„๋น„ bibi 2021. 2. 1. 22:19

[210201]

9๋ฒˆ์งธ CS๋ฏธ์…˜!

๋„คํŠธ์›Œํฌ ๊ณต๋ถ€๋Š” ์ฒ˜์Œ์ด๋ผ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ฐพ์•„๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค.

HTTPS๊ฐ€ ๋ญ๊ณ  ์™œ ์“ฐ๋‚˜์š”? ๋Œ€์นญํ‚ค, ๋น„๋Œ€์นญํ‚ค

HTTP/HTTPS๋ž€?

https://www.google.com ์ฒ˜๋Ÿผ ๋„๋ฉ”์ธ ์ฃผ์†Œ ์•ž์— ๋ถ™๋Š”๋‹ค.

์˜ˆ์ „์—๋Š” http๊ฐ€ ๋งŽ์•˜์ง€๋งŒ, ์š”์ฆ˜์€ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ https๋ฅผ ์“ด๋‹ค.

HTTP : Hyper-Text Transfer Protocol
HTTPS : Hyper-Text Transfer Protocol Secure (HTTP๋ณด๋‹ค ์•ˆ์ „)

์™œ HTTPS๊ฐ€ ๋” ์•ˆ์ „ํ•œ๊ฐ€?

  1. ๋‚ด๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ๋ณด๋‚ด๋Š” ์ •๋ณด๋“ค๋ฅผ ์ œ 3์ž๊ฐ€ ํ›”์ณ๋ณด์ง€ ๋ชปํ•˜๊ฒŒ ํ•จ.

    ์˜ˆ๋ฅผ ๋“ค์–ด ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ์„ ํ•  ๋•Œ..
    HTTP๋กœ ๋ณด๋‚ด๋ฉด ID/PW๊ฐ€ ์ž…๋ ฅํ•œ ํ˜•ํƒœ ๊ทธ๋Œ€๋กœ (๋ˆ„๊ตฌ๋“  ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ) ์ „์†ก๋˜์–ด ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค.
    HTTPS๋กœ ๋ณด๋‚ด๋ฉด ์ž…๋ ฅ ์ •๋ณด๋ฅผ ๋„ค์ด๋ฒ„๋งŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™”๋œ ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•ด ์‹ค์–ด ๋ณด๋‚ธ๋‹ค. (๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์€ ๋ด๋„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋Š” ํ˜•ํƒœ)

  2. ๋‚ด๊ฐ€ ์ ‘์†ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ์ธ์ง€ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ.

    ๊ธฐ๊ด€์œผ๋กœ ๊ฒ€์ฆ๋œ ์‚ฌ์ดํŠธ๋งŒ HTTPS์ฃผ์†Œ ์‚ฌ์šฉ์ด ํ—ˆ๊ฐ€๋˜๊ณ ,
    ์ผ๋ฐ˜ HTTP ์‚ฌ์ดํŠธ๋Š” '์•ˆ์ „ํ•˜์ง€ ์•Š์Œ' ๊ฒฝ๊ณ  ํ‘œ์‹œ๊ฐ€ ๋œจ๊ฒŒ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ.

    ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฒ”์ฃ„์— ์ด์šฉ๋˜๋Š” ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ์ธ์ง€ / ์ง„์งœ ์‚ฌ์ดํŠธ์ธ์ง€ ๊ตฌ๋ณ„ ๊ฐ€๋Šฅ.

HTTP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์šฐ๋ฆฌ๊ฐ€ ์ปดํ“จํ„ฐ์—์„œ ๋„ค์ด๋ฒ„๋ผ๋Š” ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด,
๋‚ด ์ปดํ“จํ„ฐ์™€ ๋„ค์ด๋ฒ„ ์„œ๋ฒ„์ปดํ“จํ„ฐ๊ฐ€ ์„œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ์ปดํ“จํ„ฐ๋Š” ์ฃผ๊ณ ๋ฐ›์€ ๋ฉ”์‹œ์ง€์˜ ์˜๋ฏธ๋ฅผ ์•Œ์ง€ ๋ชปํ•œ๋‹ค.
์™œ? ๋ฉ”์‹œ์ง€๊ฐ€ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ.

์˜ˆ๋ฅผ ๋“ค์–ด
0์ด 0์ธ์ง€, O์ธ์ง€, ใ…‡์ธ์ง€ ์•Œ๋ ค๋ฉด ์ด ๋ฌธ์ž๊ฐ€ ์ˆซ์ž์ธ์ง€/์˜์–ด์ธ์ง€/ํ•œ๊ธ€์ธ์ง€ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

HTTP๋Š” ์ธํ„ฐ๋„ท์ƒ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹๋“ค ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์‚ฌ๋žŒ์€ 010-1234-5678์„ ๋ณด๊ณ  ๋ฐ”๋กœ ์ „ํ™”๋ฒˆํ˜ธ ํ˜•์‹์ž„์„ ์•Œ์ง€๋งŒ, ์ปดํ“จํ„ฐ๋Š” ํ˜•์‹๊นŒ์ง€ ์•Œ๋ ค์ฃผ์–ด์•ผ ์ •๋ณด๋ฅผ ์ดํ•ดํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์ ‘์†ํ•˜๋ ค๋Š” ์„œ๋ฒ„์— ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ๋งˆ๋‹ค, ์ฃผ์†Œ(www.google.com ๋“ฑ)์•ž์— http:// ๋˜๋Š” https://๋ฅผ ๋ถ™์—ฌ ์š”์ฒญ ๋ฉ”์‹œ์ง€๊ฐ€ ์–ด๋–ค ํ˜•์‹์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ž˜์•ผ ๊ตฌ๊ธ€ ์„œ๋ฒ„์ปดํ“จํ„ฐ๋„ http(s) ํ˜•์‹์œผ๋กœ ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ , ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์ธ์ง€ ์ดํ•ดํ•œ ๋‹ค์Œ ๊ทธ์— ๋งž๋Š” ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๋‚ด ์ปดํ“จํ„ฐ๋Š” ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ http(s)ํ˜•์‹์— ๋”ฐ๋ผ ํ•ด๋…ํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ์š”์ฒญํ•œ ํŽ˜์ด์ง€๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค€๋‹ค.

HTTPS์˜ ๋ณด์•ˆ ๊ธฐ๋Šฅ์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”๊ฐ€?

์•ž์„œ HTTPS๋Š” ๋‘ ๊ฐ€์ง€ ๋ฉด์—์„œ HTTP๋ณด๋‹ค ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ–ˆ๋‹ค.

  1. ๋‚ด๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ๋ณด๋‚ด๋Š” ์ •๋ณด๋“ค๋ฅผ ์ œ 3์ž๊ฐ€ ํ›”์ณ๋ณด์ง€ ๋ชปํ•˜๊ฒŒ ํ•จ.
  2. ๋‚ด๊ฐ€ ์ ‘์†ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ์ธ์ง€ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ.

๊ทธ๋ ‡๋‹ค๋ฉด ์œ„์˜ ๋‘ ๋ณด์•ˆ ๊ธฐ๋Šฅ์€ ์–ด๋–ค ์›๋ฆฌ๋กœ ๊ตฌํ˜„๋˜๋Š”๊ฐ€?

๋Œ€์นญํ‚ค, ๋น„๋Œ€์นญํ‚ค (์ปดํ“จํ„ฐ๊ณตํ•™ - ๋ณด์•ˆ/์•”ํ˜ธํ•™)

์ „์Ÿ์—์„œ ์•„๊ตฐ์—๊ฒŒ ํŽธ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ, ์ค‘๊ฐ„์— ์ ๊ตฐ์ด ์ด ํŽธ์ง€๋ฅผ ๋นผ์•—์•„ ๊ฐ€๋„ ๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๊ฒŒ ํ•˜๋ ค๋ฉด ํŽธ์ง€์˜ ๋‚ด์šฉ์„ ์•”ํ˜ธํ™”ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.
์•”ํ˜ธํ™”๋œ ๋ฉ”์‹œ์ง€๋Š” ์•„๊ตฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ , ์ ๊ตฐ์€ ์ฝ์„ ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค.

๋Œ€์นญํ‚ค ๋ฐฉ์‹ Symmetric Cryptography / One key Cryptography
: ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์ชฝ์€ ๋ฉ”์‹œ์ง€๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ , ๋ฐ›๋Š” ์ชฝ์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณตํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ์‹.
์•”ํ˜ธํ™”&๋ณตํ˜ธํ™”์— ๊ฐ™์€ ๋ฐฉ์‹์„ ๊ณต์œ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์ชฝ, ๋ฐ›๋Š” ์ชฝ ๋ชจ๋‘ A=27, B=9, C=51 .. ๋ผ๋Š” ํ‘œ๋กœ ํ•ด๋…ํ•œ๋‹ค๊ณ  ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์œ„์˜ ํ‘œ (A=27, B=9, C=51 .. ) ๊ฐ€ '๋Œ€์นญํ‚ค Symmetric Key' ๋ฐฉ์‹์— ํ•ด๋‹นํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ž„์˜์˜ ๋ฌธ์ž์—ด a084#l%^q3_97 ๋ฅผ 'ํ‚ค'๋ผ๊ณ  ๋ถ€๋ฅด๊ณ ,
๋ณด๋‚ด๊ณ ์ž ํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์œ„์˜ 'ํ‚ค'์™€ ํ•จ๊ป˜ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋„ฃ๊ณ  ์•”ํ˜ธํ™”ํ•˜๋ฉด ์•„๋ฌด๋‚˜ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋Š” ์•”ํ˜ธ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. (์•”ํ˜ธํ™”)
๋ฐ›์€ ์‚ฌ๋žŒ์€ ๊ฐ™์€ ํ‚ค(a084#l%^q3_97)๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฑฐ๊พธ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์•”ํ˜ธ๋ฌธ์„ ํ•ด๋…ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ณตํ˜ธํ™”)

๋‹จ์  : ์•”ํ˜ธํ™”&๋ณตํ˜ธํ™” ๋ฐฉ์‹(ํ‚ค)์ด ๋…ธ์ถœ๋˜๋ฉด ๋ฉ”์‹œ์ง€๋„ ๋…ธ์ถœ๋œ๋‹ค.

โ†’ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์˜ ํ•œ๊ณ„.

ํ‚ค ๊ฐ’์ด ์—†๋‹ค๋ฉด ์•”ํ˜ธ๋ฅผ ์ ˆ๋Œ€ ํ’€ ์ˆ˜ ์—†๋‹ค. == ํ‚ค ๊ฐ’๋งŒ ์žˆ๋‹ค๋ฉด ์•”ํ˜ธ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.
์• ์ดˆ์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์ชฝ๊ณผ ๋ฐ›๋Š” ์ชฝ์ด ํ•ด๋‹น 'ํ‚ค'๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š”๋ฐ,
์ตœ์†Œ ํ•œ ๋ฒˆ์€ ํ•ด๋‹น 'ํ‚ค'๋ฅผ ๋ฐ˜๋“œ์‹œ ์ „์†กํ•ด์•ผ ํ•  ๊ฒƒ์ด๊ณ , ์ด 'ํ‚ค'๋ฅผ ์ œ3์ž๊ฐ€ ํ›”์ณ๋ณธ๋‹ค๋ฉด ์•”ํ˜ธํ™”์˜ ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง„๋‹ค.

๋น„๋Œ€์นญํ‚ค(๊ณต๊ฐœํ‚ค) ๋ฐฉ์‹ Asymmetric Cryptography / Two key Cryptography

๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ๋ณด์™„ํ•œ ์ƒˆ ์•”ํ˜ธํ™” ๋ฐฉ์‹ (1970๋…„๋Œ€ ์ˆ˜ํ•™์ž๋“ค์ด ๊ฐœ๋ฐœ)

๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹์—๋Š” ๋‘ ๊ฐœ์˜ ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค - 'A'ํ‚ค์™€ 'B'ํ‚ค๋ผ๊ณ  ํ•˜์ž.
์ด ๋‘˜์€ ํ•œ ์Œ์ด๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค์ด๋‹ค. (์„œ๋กœ ๋‹ค๋ฅด๊ธฐ ๋–„๋ฌธ์— ๋น„๋Œ€์นญํ‚ค์ด๋‹ค)

๋Œ€์นญํ‚ค ๋ฐฉ์‹ : ์–ด๋–ค ํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋ฉด, ๊ฐ™์€ ํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋น„๋Œ€์นญํ‚ค(๊ณต๊ฐœํ‚ค) ๋ฐฉ์‹ : Aํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋ฉด, Bํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ Bํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋ฉด, Aํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋„ค์ด๋ฒ„ ์„œ๋ฒ„๋Š” Aํ‚ค์™€ Bํ‚ค ์ค‘ ํ•˜๋‚˜์˜ ํ‚ค๋ฅผ ๋น„๋ฐ€๋กœ ๋ณด๊ด€ํ•˜๊ณ  (== ๊ฐœ์ธํ‚ค Private Key ),
๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœํ•œ๋‹ค - ๋ˆ„๊ตฌ๋‚˜ ๋ณผ ์ˆ˜ ์žˆ๋‹ค (== ๊ณต๊ฐœํ‚ค Public Key)

์‚ฌ์šฉ์ž๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ , ์‚ฌ์šฉ์ž์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•ด ๋„ค์ด๋ฒ„์— ๋ณด๋‚ธ๋‹ค.
๋„ค์ด๋ฒ„ ์„œ๋ฒ„๋Š” ๊ฐœ์ธํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์ •๋ณด๋ฅผ ๋ณตํ˜ธํ™”ํ•œ๋‹ค.
์ œ3์ž๊ฐ€ ์‚ฌ์šฉ์ž์ •๋ณด๊ฐ€ ์ „์†ก๋  ๋–„ ๊ฐ€๋กœ์ฑ„๋”๋ผ๋„, ๊ฐœ์ธํ‚ค๊ฐ€ ์—†๊ธฐ ๋–„๋ฌธ์— ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์—†๋‹ค.

โ†’ 1. ๋‚ด๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ๋ณด๋‚ด๋Š” ์ •๋ณด๋“ค๋ฅผ ์ œ 3์ž๊ฐ€ ํ›”์ณ๋ณด์ง€ ๋ชปํ•˜๊ฒŒ ํ•จ. ์ด๋ผ๋Š” ๋ชฉํ‘œ ๋‹ฌ์„ฑ.

๋„ค์ด๋ฒ„ ์„œ๋ฒ„์—์„œ ์šฐ๋ฆฌ์—๊ฒŒ ๋ณด๋‚ด๋Š” ์ •๋ณด์˜ ์ผ๋ถ€๋Š” ๋„ค์ด๋ฒ„์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๊ฐ€ ๋˜์–ด ์žˆ๋‹ค.
'๋„ค์ด๋ฒ„์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์ •๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์—' ์šฐ๋ฆฌ๊ฐ€ ๋„ค์ด๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์ •๋ณด๋ฅผ ํ•ด๋…ํ•ด ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.
( ๋„ค์ด๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ํ•ด๋…ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋Š” ๋„ค์ด๋ฒ„์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์ •๋ณด๋“ค ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ! )

๋”ฐ๋ผ์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ด€์—์„œ '์ด ๊ณต๊ฐœํ‚ค๊ฐ€ ๋„ค์ด๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋งž๋‹ค'๋ผ๊ณ  ๊ฒ€์ฆํ•ด ์ค€๋‹ค๋ฉด, ๊ทธ๊ฑธ ๊ธฐ์ค€์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋„ค์ด๋ฒ„๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

โ†’ 2. ๋‚ด๊ฐ€ ์ ‘์†ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ์ธ์ง€ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ.

HTTPS์˜ ์‹ค์ œ ๊ตฌํ˜„๊ณผ์ •

๋จผ์ € ๋Œ€์ค‘์—๊ฒŒ ๋ฟŒ๋ฆฐ ๊ณต๊ฐœํ‚ค๊ฐ€ ์ง„์งœ '๋„ค์ด๋ฒ„์˜ ๊ณต๊ฐœํ‚ค'๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

CA (Certificate Authority)๋ผ๋Š” ๊ณต์ธ ๋ฏผ๊ฐ„๊ธฐ์—…์ด ์ด๋Ÿฌํ•œ ๊ณต๊ฐœํ‚ค ๊ฒ€์ฆ์ž‘์—…์„ ๋‹ด๋‹นํ•œ๋‹ค.

ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ, ์ต์Šคํ”„๋กœ๋Ÿฌ ๋“ฑ์˜ ์›น๋ธŒ๋ผ์šฐ์ €์—๋Š” ์ด CA๋“ค์˜ ๋ชฉ๋ก์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Œ.

  1. ๋‚ด ์ปดํ“จํ„ฐ์˜ ๋ธŒ๋ผ์šฐ์ € = ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ชฝ์ด๋ผ๊ณ  ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ client๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
    *client : server ์™€ ์ƒ๋Œ€๋˜๋Š” ๊ฐœ๋…. '์‚ฌ์šฉ์ž'๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

    ํด๋ผ์ด์–ธํŠธ๋Š” ์•„์ง ์„œ๋ฒ„ ์ปดํ“จํ„ฐ๊ฐ€ ๋„ค์ด๋ฒ„ ์„œ๋ฒ„์ปดํ“จํ„ฐ๊ฐ€ ๋งž๋Š”์ง€ ์‹ ๋ขฐํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋–„๋ฌธ์—, ์„œ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค. ์ด ํƒ์ƒ‰๊ณผ์ •์„ Handshake(์•…์ˆ˜)๋ผ๊ณ  ํ•œ๋‹ค.

    Handshake์˜ ๊ณผ์ •

    1. ํด๋ผ์ด์–ธํŠธ๋Š” ๋žœ๋ค ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด ์„œ๋ฒ„์— ๋ณด๋ƒ„

    2. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ๋žœ๋ค๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ ,
      ์„œ๋ฒ„์—์„œ์˜ ์ƒ์„ฑํ•œ ๋žœ๋ค๋ฐ์ดํ„ฐ & ํ•ด๋‹น ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋ƒ„.

      โ†’ ํด๋ผ์ด์–ธํŠธ๋Š” ๋žœ๋ค๋ฐ์ดํ„ฐ1(ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งŒ๋“ ), ๋žœ๋ค๋ฐ์ดํ„ฐ2(์„œ๋ฒ„๊ฐ€ ๋งŒ๋“ ), ์„œ๋ฒ„ ์ธ์ฆ์„œ ๋ฅผ ๊ฐ–๊ฒŒ ๋จ.
      โ†’ ์„œ๋ฒ„๋Š” ๋žœ๋ค๋ฐ์ดํ„ฐ1(ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งŒ๋“ ), ๋žœ๋ค๋ฐ์ดํ„ฐ2(์„œ๋ฒ„๊ฐ€ ๋งŒ๋“ )๋ฅผ ๊ฐ–๊ฒŒ ๋จ.
      (Handshake ๋)

  2. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์ธ์ฆ์„œ๊ฐ€ ์ง„์งœ์ธ์ง€๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค.
    ์–ด๋–ป๊ฒŒ? ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋œ CA๋“ค์˜ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒ€์ฆํ•จ. (๋น„๋Œ€์นญํ‚ค ์‹œ์Šคํ…œ ํ™œ์šฉ)

    CA์˜ ์ธ์ฆ์„ ๋ฐ›์€ ์ธ์ฆ์„œ๋“ค์€, ํ•ด๋‹น CA์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค.
    ๊ฐ ๋ธŒ๋ผ์šฐ์ €์—๋Š” CA์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค.
    ๋”ฐ๋ผ์„œ ๋งŒ์•ฝ ํ•ด๋‹น ์ธ์ฆ์„œ๊ฐ€ ์ง„์งœ๋ผ๋ฉด, ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋œ CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.
    (์™œ? ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”๋  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑด, ๊ทธ์— ๋Œ€์‘ํ•˜๋Š” ๊ฐœ์ธํ‚ค๋ฅผ ๊ฐ€์ง„ CA๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์—.)

    ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €์˜ CA ๋ฆฌ์ŠคํŠธ ์ค‘์— ํ•ด๋‹น ์ธ์ฆ์„œ๊ฐ€ ํ•ด๋‹น๋˜๋Š” ๊ฒƒ์ด ์—†๋‹ค๋ฉด?
    ์ง„์งœ ์ธ์ฆ์„œ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— '์•ˆ์ „ํ•˜์ง€ ์•Š์Œ Not secure' ํ‘œ์‹œ๊ฐ€ ๋œจ๊ฒŒ ๋œ๋‹ค.

  3. ๋ณตํ˜ธํ™”์— ์„ฑ๊ณตํ•œ ์ธ์ฆ์„œ ๋‚ด์—๋Š” ํ•ด๋‹น ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

    ์ด์ œ ์ด ๊ณต๊ฐœํ‚ค๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์„œ๋ฒ„์™€ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค? (๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹)

    โ†’ ๊ผญ ๊ทธ๋ ‡์ง„ ์•Š๋‹ค. ์‹ค์ œ๋กœ๋Š” ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹ & ๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

    *WHY?? *
    ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹์˜ ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๊ณผ์ •์ด ๋Œ€์นญํ‚ค ๋ฐฉ์‹๋ณด๋‹ค ์ปดํ“จํ„ฐ์— ํ›จ์”ฌ ํฐ ๋ถ€๋‹ด์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ.
    (๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹์˜ ๋‹จ์ )

    ์‚ฌ์ดํŠธ ์ด์šฉ์‹œ ์ฃผ๊ณ ๋ฐ›์•„์•ผ ํ•˜๋Š” ๋‹ค๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋น„๋Œ€์นญํ‚ค๋กœ ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
    ํ•ด๋‹น ๋Œ€์นญํ‚ค๋ฅผ '๊ณต์œ ํ•  ๋•Œ'๋งŒ ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ , ์•ˆ์ „ํ•˜๊ฒŒ ๊ณต์œ ๋œ ๋Œ€์นญํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

    1. 1.์˜ Handshake์—์„œ ๋ฐœ์ƒํ•œ ๋žœ๋ค๋ฐ์ดํ„ฐ1, ๋žœ๋ค๋ฐ์ดํ„ฐ2๋ฅผ ๊ฐ€์ง€๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž„์‹œ ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    2. ์ž„์‹œ ํ‚ค๋ฅผ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ๋‹ค.
    3. ์–‘์ชฝ์—์„œ ์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์ณ ๋™์ผํ•œ ๋Œ€์นญํ‚ค๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.
      โ†’ ํ•ด๋‹น ๋Œ€์นญํ‚ค๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋‘˜๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋–„๋ฌธ์—, ๋Œ€์นญํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋”๋ผ๋„ ์ œ3์ž๊ฐ€ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

๋„คํŠธ์›Œํฌ

*'์ž๋ฐ”์˜ ์‹ ' 2๊ถŒ์„ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํ‚นnetworking ์ด๋ž€?

  • ์‚ฌ์šฉ์ž๊ฐ€ ์žฅ๋น„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ž‘์—….

  • ๋‘ ๋Œ€ ์ด์ƒ์˜ ์ปดํ“จํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ.

๋„คํŠธ์›Œํฌ๋Š” ๋ ˆ์ด์–ดlayer๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. (OSI 7 layer ๋“ฑ)

์ผ๋ฐ˜์ ์ธ ๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด (HTTP, FTP, Telnet, ...)
    • HTTP : HyperText Trantfer Protocol
    • FTP : File Transfer Protocol
  • ํŠธ๋žœ์ŠคํฌํŠธ ๋ ˆ์ด์–ด (TCP, UDP, ...)
    • TCP : Transmission Control Protocol
    • UDP : User Datagram Protocol
  • ๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด (IP, ...)
  • ๋งํฌ ๋ ˆ์ด์–ด (device driver, ...)

TCP ํ†ต์‹ 

: Transmission Control Protocol ์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜ ํ†ต์‹ 

  • ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ํ†ต์‹ ๋ฐฉ๋ฒ•. HTTP, FTP, Telnet ๋ชจ๋‘ TCPํ†ต์‹ ์„ ํ•จ.
  • TCP๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ ๊ฒฝ์šฐ ์ƒ๋Œ€๋ฐฉ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜๋Š”์ง€ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    TCP๋กœ ํ†ต์‹  ์‹œ ์ „์†ก์ด ์„ฑ๊ณตํ–ˆ๋‹ค / ์‹คํŒจํ–ˆ๋‹ค ๋Š” ํ†ต๋ณด๋ฅผ ๋ณด๋‚ด์ฃผ๊ธฐ ๋•Œ๋ฌธ.

UDP

User Datagram Protocol

  • UDP๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ ๊ฒฝ์šฐ ์ƒ๋Œ€๋ฐฉ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜๋Š”์ง€ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

TCP์™€ UDP ๋น„๊ต

  • TCP๋Š” ์ „ํ™”, UDP๋Š” ํƒ๋ฐฐ๋กœ ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • TCP๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๋ณด์žฅ๋ฐ›์ง€๋งŒ, UDP๋ณด๋‹ค ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ์ ˆ์ฐจ๊ฐ€ ๋ณต์žกํ•˜๊ณ  ๋Š๋ฆฌ๊ณ  ๋ฌด๊ฒ๋‹ค.

ํฌํŠธ port

ํฌํŠธ (port, ํ•ญ๊ตฌ)๋Š” ์™ธ๋ถ€ ์žฅ๋น„์™€ ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค.

ํฌํŠธ๋Š” ์šด์˜์ฒด์ œ ํ†ต์‹ ์˜ ์ข…๋‹จ์ ์ด๋‹ค. ์ด ์šฉ์–ด๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์—๋„ ์‚ฌ์šฉ๋˜์ง€๋งŒ,

์†Œํ”„ํŠธ์›จ์–ด์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋‚˜ ํŠน์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋…ผ๋ฆฌ ๋‹จ์œ„์ด๋‹ค.

์‚ฌ์šฉ๋ฒ• : URI ๋ฌธ๋ฒ•์— ์˜ํ•ด์„œ ์‚ฌ์šฉ ๋ฐ ํ‘œ๊ธฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, IP ์ฃผ์†Œ์™€ ํ•จ๊ป˜ ํ‘œ๊ธฐํ•˜๋Š” ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ftp://000.000.000.000:21\

์—ฌ๊ธฐ์„œ 000.000.000.000์€ IP ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ : ๋‹ค์Œ์˜ 21์ด ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. (-์œ„ํ‚ค๋ฐฑ๊ณผ)

*IP์ฃผ์†Œ : ์ปดํ“จํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ํ•„์š”ํ•œ ์ฃผ์†Œ
ํฌํŠธ : ์ปดํ“จํ„ฐ ๋‚ด์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์„ ๋•Œ ํ•„์š”ํ•œ ๋ฒˆํ˜ธ
-> IP์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ์ด์šฉํ•ด ํŠน์ • ์ปดํ“จํ„ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ์ธํ„ฐ๋„ท์ƒ์˜ ์–ด๋–ค ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ,
์›น๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ๊ทธ๋žจ๊ณผ ์›น์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ํฌํŠธ์— ํ•ด๋‹นํ•œ๋‹ค.

์ฆ‰ ํฌํŠธ๋Š” '๋…ผ๋ฆฌ์  ์ ‘์†์žฅ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด์ •ํ‘œ'์— ํ•ด๋‹นํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์—์„œ ํŠน์ • ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” URL์ด๋‚˜ IP์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์›น๋ธŒ๋ผ์šฐ์ €๋Š” URL/IP ์ •๋ณด๋กœ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ํ•ด๋‹น ์„œ๋ฒ„์ปดํ“จํ„ฐ๋กœ ์ฐพ์•„๊ฐ„๋‹ค.

ํ•ด๋‹น ์„œ๋ฒ„์ปดํ“จํ„ฐ์— ์ ‘๊ทผํ•œ ๋’ค, ์„œ๋ฒ„์ปดํ“จํ„ฐ์˜ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด ๋‚ด๊ฐ€ ์ ‘์†ํ•˜๋ ค๋Š” ํ”„๋กœ๊ทธ๋žจ์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด ํฌํŠธ ๋ฒˆํ˜ธ์˜ ์—ญํ• ์ด๋‹ค.

Well-Known Port

ํฌํŠธ๋Š” 16๋น„ํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด 0~65535๋ฒˆ๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • ๋ฒˆํ˜ธ์˜ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ฃผ์†Œ ๋’ค์— :๋ฅผ ๋ถ™์ด๊ณ  ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์ ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
(์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์€, URL์„ ๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ :80์ด ๋ถ™๊ธฐ ๋•Œ๋ฌธ์ž„)

  • 0~1023๋ฒˆ ํฌํŠธ๋Š” well-known port์— ํ•ด๋‹นํ•จ.

    • ํŠน์ • ์“ฐ์ž„์ƒˆ๋ฅผ ์œ„ํ•ด ํ• ๋‹นํ•œ TCP/UDP ํฌํŠธ๋ฒˆํ˜ธ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ.
    • ์ •ํ•ด์ ธ ์žˆ๋Š” ํฌํŠธ๋ฒˆํ˜ธ์ด๋ฏ€๋กœ ๋˜๋„๋ก ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ.

    ์˜ˆ๋ฅผ ๋“ค์–ด..

    22 ๋ฒˆ : SSH ํ”„๋กœํ† ์ฝœ / ํฌํŠธ ํฌ์›Œ๋”ฉ

    23๋ฒˆ : Telnet (์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ…์ŠคํŠธํ†ต์‹ )

    25๋ฒˆ : SMTP (์ด๋ฉ”์ผ ์ „์†ก ํ”„๋กœํ† ์ฝœ)

    53๋ฒˆ : DNS (Domain Name System)

    80๋ฒˆ : HTTP (์›นํŽ˜์ด์ง€ ์ „์†ก ํ”„๋กœํ† ์ฝœ)

    443๋ฒˆ : HTTPS (HyperText Transfer Protocol over Secure Sockets), SSL

  • 1024 ~ 49151 : registered port ๋“ฑ๋ก๋œ ํฌํŠธ

  • 49152 ~ 65535 : dynamic port ๋™์  ํฌํŠธ

์†Œ์ผ“ ํ†ต์‹ ๊ณผ Socket ํด๋ž˜์Šค (์ž๋ฐ”)

*''์ž๋ฐ”์˜ ์‹ '' 2๊ถŒ์„ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค.

Socket ํด๋ž˜์Šค

TCPํ†ต์‹ ์„ ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Socketํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (java.net ํŒจํ‚ค์ง€)

Socketํด๋ž˜์Šค๋Š” ์›๊ฒฉ์— ์žˆ๋Š” ์žฅ๋น„์™€์˜ ์—ฐ๊ฒฐ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ์ชฝ (๋ณดํ†ต ํด๋ผ์ด์–ธํŠธ)์—์„œ Socket๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•จ.
    • ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” Socketํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ด์•ผ ํ•จ.
    • Socket() ์ƒ์„ฑ์ž๋Š” ๋งค์šฐ ๋‹ค์–‘. Socket(String host, int port) ๊ฐ€ ๊ฐ€์žฅ ํŽธํ•จ.
    • close() : ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•จ.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ชฝ (๋ณดํ†ต ์„œ๋ฒ„)์—์„œ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด, ServerSocket์œผ๋กœ ์š”์ฒญ์— ๋Œ€ํ•œ Socket๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•จ.
    • ServerSocket ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์Œ (ServerSocketํด๋ž˜์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ์—์„œ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์ƒ๊ธฐ๋ฉด Socket๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ „๋‹ฌํ•จ)
    • ServerSocket() ์ƒ์„ฑ์ž๋Š” ๋ณ„๋„๋กœ ์—ฐ๊ฒฐ์ž‘์—…์„ ํ•ด์•ผ๋งŒ ๋Œ€๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
      (๋‹ค๋ฅธ ํด๋ž˜์Šค๋“ค์€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์ž๋งˆ์ž ์—ฐ๊ฒฐ ๋Œ€๊ธฐ์ƒํƒœ๊ฐ€ ๋œ๋‹ค)
    • accept() : ServerSocket์ด ์ƒˆ๋กœ์šด ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ๋Œ€๊ธฐํ•˜๊ฒŒ ํ•˜๋Š” ๋ฉ”์†Œ๋“œ. ์—ฐ๊ฒฐ์ด ๋˜๋ฉด Socket๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•จ
    • close() : ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•จ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ชฝ (ServerSocket)์ธ ์„œ๋ฒ„๊ฐ€ ์ผœ์ ธ ์žˆ์–ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ ์ชฝ(Socket)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ์—ญํ• ์˜ ํด๋ž˜์Šค๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•œ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์˜ ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

Socketํด๋ž˜์Šค ์˜ˆ์ œ

import java.io.BufferedOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Date;

// ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” 'ํด๋ผ์ด์–ธํŠธ'์˜ ์†Œ์Šค์ฝ”๋“œ.

public class SocketClientSample {
    public static void main(String[] args) {
        SocketClientSample sample = new SocketClientSample();
        sample.sendSocketSample();
    }

    public void sendSocketSample() {
        for (int i = 0; i < 3; i++) {
            sendSocketData("I liked java at " + new Date());
        }
        sendSocketData("EXIT");
    }

    public void sendSocketData(String data) {
        Socket socket = null;
        try {
            System.out.println("Client : Connecting");
            socket = new Socket("127.0.0.1", 9999);
            // IP๋ฒˆํ˜ธ์™€ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ๊ฐ–๋Š” Socket์ƒ์„ฑ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ๋ฐ ์ ‘์†ํ•จ.
            // 127.0.0.1์ด๋ผ๋Š” IP๋ฒˆํ˜ธ๋Š” '๊ฐ™์€ ์žฅ๋น„'์ž„์„ ์˜๋ฏธํ•จ. ํฌํŠธ๋ฒˆํ˜ธ 9999๋Š” ์„œ๋ฒ„์ชฝ์— ์ง€์ •ํ•œ ํฌํŠธ์™€ ๋™์ผํ•ด์•ผ ํ•จ.
            System.out.println("Client : Connect status = " + socket.isConnected());
            Thread.sleep(1000);
            OutputStream stream = socket.getOutputStream();
            // getOutputStream() : ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ. OutputStream๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•จ.
            // ๋ฆฌํ„ด๊ฐ’์ธ OutputStream์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค.
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(stream);
            byte[] bytes = data.getBytes();
            bufferedOutputStream.write(bytes);
            System.out.println("Client : Sent data");
            bufferedOutputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (socket != null) {
                try {
                    socket.close();
                    // ๋ฐ์ด์ €๋ฅผ ์ „์†กํ•œ ํ›„ close()๋ฅผ ์‚ฌ์šฉํ•ด ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ๋‹ซ๋Š”๋‹ค.
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

ServerSocketํด๋ž˜์Šค ์˜ˆ์ œ

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

// ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” '์„œ๋ฒ„'์˜ ์†Œ์Šค์ฝ”๋“œ.

public class SocketServerSample {
    public static void main(String[] args) {
        SocketServerSample sample = new SocketServerSample();
        sample.startServer();
    }

    public void startServer() {
        ServerSocket server = null;
        Socket client = null;
        // ServerSocket์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ด๋ฉฐ, ์ฃผ๋กœ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•จ
        // Socket์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ด๋ฉฐ, ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•จ

        try {
            server = new ServerSocket(9999);
            // ํฌํŠธ๋ฒˆํ˜ธ 9999๋ฅผ ์ด์šฉํ•ด ServerSocket ๊ฐ์ฒด ์ƒ์„ฑ.
            // ์ด ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋„์šด ์„œ๋ฒ„๋กœ ์ ‘๊ทผํ•˜๋ ค๋ฉด 9999ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ ์˜๋ฏธ.
            while (true) {
                System.out.println("Server : Waiting for request.");
                client = server.accept();
                // accept() : ServerSocket์„ ์ƒˆ๋กœ์šด ์†Œ์ผ“ ์—ฐ๊ฒฐ(๋‹ค๋ฅธ ์›๊ฒฉ ํ˜ธ์ถœ)์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ๋กœ ๋งŒ๋“ฆ.
                // ์—ฐ๊ฒฐ๋˜๋ฉด Socket๊ฐ์ฒด๊ฐ€ ๋ฆฌํ„ด๋จ.
                System.out.println("Server : Accepted.");
                InputStream inputStream = client.getInputStream();
                // ์ ‘์†ํ•œ ์ƒ๋Œ€๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด Socketํด๋ž˜์Šค์˜ getInputStream()์„ ํ˜ธ์ถœ - InputStream๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•จ
                // *๋ฐ˜๋Œ€๋กœ ์ ‘์†ํ•œ ์ƒ๋Œ€์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” getOutputStream()์„ ํ˜ธ์ถœ - OutputStream๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด๋ฐ›์Œ - ์ด ์ŠคํŠธ๋ฆผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•จ.
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String data = null;
                StringBuilder receivedData = new StringBuilder();
                while ((data = bufferedReader.readLine()) != null) {
                    receivedData.append(data);
                }
                System.out.println("Received data : " + receivedData);

                bufferedReader.close();
                inputStream.close();
                client.close();
                // close() : ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ํ›„ Socket์‚ฌ์šฉ์ด ์ข…๋ฃŒ๋จ์„ ์•Œ๋ฆผ 
                if (receivedData != null && "EXIT".equals(receivedData.toString())) {
                    System.out.println("Stop SocketServer");
                    break;
                }
                System.out.println("----------");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (server != null) {
                try {
                    server.close();
                    // ๋” ์ด์ƒ ์†Œ์ผ“์ˆ˜์‹ ์ด ํ•„์š”์—†์„ ๋•Œ ServerSocket์˜ close()๋ฅผ ํ˜ธ์ถœํ•จ
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

[Java] InetAddress ํด๋ž˜์Šค

*์ž๋ฐ”์˜ ์ •์„ 16์žฅ์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

InetAddress

: java.net.InetAddressํด๋ž˜์Šค. ์ž๋ฐ”์—์„œ IP์ฃผ์†Œ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.

InetAddress์˜ ์ฃผ์š” ๋ฉ”์†Œ๋“œ๋“ค

  • static InetAddress getByName(String host)
    : ๋„๋ฉ”์ธ๋ช…(host)์„ ํ†ตํ•ด IP์ฃผ์†Œ๋ฅผ ์–ป๋Š”๋‹ค.
    • UnknownHostException ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ - ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•„์š”.
  • String getHostName()
    : ํ˜ธ์ŠคํŠธ์˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•จ
  • String getHostAddress()
    : ํ˜ธ์ŠคํŠธ์˜ IP์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • byte[] getAddress()
    : IP์ฃผ์†Œ๋ฅผ byte๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•จ
    • ์Œ์ˆ˜๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์—๋Š” 256์„ ๋”ํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” IP์ฃผ์†Œํ˜•์‹์ด ๋จ.
  • static InetAddress getLocalHost()
    : ์ง€์—ญํ˜ธ์ŠคํŠธ์˜ IP์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
    getHostName()์œผ๋กœ ํ˜ธ์ŠคํŠธ๋ช…์„, getHostAddress()๋กœ ํ˜ธ์ŠคํŠธ IP์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Œ
    • UnknownHostException ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ - ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•„์š”.
  • static InetAddress[] getAllByName(String host)
    : ๋„๋ฉ”์ธ๋ช…(host)์— ์ง€์ •๋œ ๋ชจ๋“  ํ˜ธ์ŠคํŠธ์˜ IP์ฃผ์†Œ๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ๋ช…์— ์—ฌ๋Ÿฌ IP์ฃผ์†Œ๊ฐ€ ๋งตํ•‘๋œ ๊ฒฝ์šฐ, ๋ชจ๋“  IP์ฃผ์†Œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ
    • UnknownHostException ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ - ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•„์š”.

URL

*์ž๋ฐ”์˜ ์ •์„ 16์žฅ์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

URL (Uniform Resource Locator)

: ์ธํ„ฐ๋„ท์ƒ์˜ ํŒŒ์ผ ์ฃผ์†Œ.

: ์ธํ„ฐ๋„ท์— ์กด์žฌํ•˜๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋“ค์ด ์ œ๊ณตํ•˜๋Š” ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ.

ํ”„๋กœํ† ์ฝœ://ํ˜ธ์ŠคํŠธ๋ช…:ํฌํŠธ๋ฒˆํ˜ธ/๊ฒฝ๋กœ๋ช…/ํŒŒ์ผ๋ช…?์ฟผ๋ฆฌ์ŠคํŠธ๋ง#์ฐธ์กฐ์˜ ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
*ํฌํŠธ๋ฒˆํ˜ธ, ์ฟผ๋ฆฌ์ŠคํŠธ๋ง, ์ฐธ์กฐ๋Š” ์ƒ๋žต๊ฐ€๋Šฅ

  • ํ”„๋กœํ† ์ฝœ : ์ž์›์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ†ต์‹ ๊ทœ์•ฝ (http/https)
  • ํ˜ธ์ŠคํŠธ๋ช… : ์ž์›์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„์˜ ์ด๋ฆ„ (www.google.co.kr)
  • ํฌํŠธ๋ฒˆํ˜ธ : ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š” ์„œ๋ฒ„์˜ ํฌํŠธ๋ฒˆํ˜ธ
    • HTTPํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋ณธ ํฌํŠธ๋ฒˆํ˜ธ๋Š” 80์ด๋ฉฐ, URL์—์„œ ํฌํŠธ๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ 80๋ฒˆ ํฌํŠธ์ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
    • ๊ฐ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅด๋ฉฐ, ์ƒ๋žตํ•˜๋ฉด ๊ฐ ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋ณธํฌํŠธ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ฒฝ๋กœ๋ช… : ์ ‘๊ทผํ•˜๋ ค๋Š” ์ž์›์ด ์ €์žฅ๋œ ์„œ๋ฒ„์ƒ์˜ ์œ„์น˜
  • ํŒŒ์ผ๋ช… : ์ ‘๊ทผํ•˜๋ ค๋Š” ์ž์›์˜ ์ด๋ฆ„
  • ์ฟผ๋ฆฌ : URL์—์„œ ? ์ดํ›„์˜ ๋ถ€๋ถ„
  • ์ฐธ์กฐ(anchor) : URL์—์„œ # ์ดํ›„์˜ ๋ถ€๋ถ„

[Java] URL ํด๋ž˜์Šค

URL

: ์ž๋ฐ”์—์„œ URL์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค. java.net.URL

URL์˜ ์ƒ์„ฑ์ž๋“ค

  • URL(String spec)
  • URL(String protocol, String host, String file)
  • URL(String protocol, String host, int port, String file)

URL url = new URL("https://www.google.co.kr")์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ด URL๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ.

URL์˜ ์ฃผ์š” ๋ฉ”์†Œ๋“œ๋“ค

URL ํ˜•์‹ : ํ”„๋กœํ† ์ฝœ://ํ˜ธ์ŠคํŠธ๋ช…:ํฌํŠธ๋ฒˆํ˜ธ/๊ฒฝ๋กœ๋ช…/ํŒŒ์ผ๋ช…?์ฟผ๋ฆฌ์ŠคํŠธ๋ง#์ฐธ์กฐ

*URL url = new URL("https://www.google.co.kr:80/search/๊ตฌ๊ธ€?q=๊ตฌ๊ธ€&oq=๊ตฌ๊ธ€#index1")์ผ ๋•Œ.

  • String getAuthority()
    : ํ˜ธ์ŠคํŠธ๋ช…๊ณผ ํฌํŠธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•จ (www.google.co.kr:80)
  • Object getContent()
    : URL์˜ Content๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • int getDefaultPort()
    : URL์˜ ๊ธฐ๋ณธ ํฌํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•จ (http๋Š” 80)
  • int getPort()
    : ํฌํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•จ (80)
  • String getFile()
    : ํŒŒ์ผ๋ช…์„ ๋ฐ˜ํ™˜ํ•จ (search/๊ตฌ๊ธ€?q=๊ตฌ๊ธ€&oq=๊ตฌ๊ธ€)
  • String getHost()
    : ํ˜ธ์ŠคํŠธ๋ช…์„ ๋ฐ˜ํ™˜ํ•จ (www.google.co.kr)
  • String getProtocol()
    : ํ”„๋กœํ† ์ฝœ์„ ๋ฐ˜ํ™˜ํ•จ (https)
  • String getQuery()
    : ์ฟผ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•จ (q=๊ตฌ๊ธ€&oq=๊ตฌ๊ธ€)
  • String getRef()
    : ์ฐธ์กฐ(anchor)๋ฅผ ๋ฐ˜ํ™˜ํ•จ (index1)
  • String getUserInfo()
    : ์‚ฌ์šฉ์ž์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • String toExternalForm()
    : URL์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ (https://www.google.co.kr:80/search/๊ตฌ๊ธ€?q=๊ตฌ๊ธ€&oq=๊ตฌ๊ธ€#index1)
  • URI toURI()
    : URL์„ URI๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ (https://www.google.co.kr:80/search/๊ตฌ๊ธ€?q=๊ตฌ๊ธ€&oq=๊ตฌ๊ธ€#index1)
  • boolean sameFile(URL otherURL)
    : ๋‘ URL์ด ์„œ๋กœ ๊ฐ™์€์ง€ ์•Œ๋ ค์คŒ
  • URLConnection openConnection()
    : URL๊ณผ ์—ฐ๊ฒฐ๋œ URLConnection์„ ๋ฐ˜ํ™˜ํ•จ
  • InputStream openStream()
    : URL์— ์—ฐ๊ฒฐํ•ด์„œ InputStream์„ ๋ฐ˜ํ™˜ํ•จ.
    (openConnection()์„ ํ˜ธ์ถœํ•ด URLConnection์„ ์–ป์€ ๋‹ค์Œ, ๋‹ค์‹œ getInputStream()์„ ํ˜ธ์ถœํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ)

[Java] URLConnection

URLConnection ํด๋ž˜์Šค

: ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ URL๊ฐ„์˜ ํ†ต์‹ ์—ฐ๊ฒฐ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํด๋ž˜์Šค์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค. ์ถ”์ƒํด๋ž˜์Šค์ž„.

์—ฐ๊ฒฐํ•˜๋ ค๋Š” ์ž์›์— ์ ‘๊ทผํ•˜๊ณ , ์ฝ๊ณ , ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ํด๋ž˜์Šค.

  • URLConnection์„ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค
    : HttpURLConnection๊ณผ JarURLConnection์ด ์žˆ์Œ
  • URL์˜ ํ”„๋กœํ† ์ฝœ์ด http๋ผ๋ฉด, URLํด๋ž˜์Šค์˜ openConnection()๋ฉ”์†Œ๋“œ๋Š” HttpURLConnection์„ ๋ฐ˜ํ™˜ํ•จ.

URLConnection์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ

  • boolean getAllowUserInteraction()
    : UserInteraction์˜ ํ—ˆ์šฉ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • int getConnectTimeout()
    : ์—ฐ๊ฒฐ์ข…๋ฃŒ์‹œ๊ฐ„์„ 1/1000์ดˆ๋กœ ๋ฐ˜ํ™˜ํ•จ
  • Object getContent()
    : content๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • String getContentEncoding()
    : content์˜ ์ธ์ฝ”๋”ฉ์„ ๋ฐ˜ํ™˜ํ•จ
  • int getContentLength()
    : content์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • String getContentType()
    : content์˜ type์„ ๋ฐ˜ํ™˜ํ•จ
  • long getDate()
    : header์˜ dateํ•„๋“œ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
  • boolean getDefaultAllowUserInteraction()
    : defaultAllowUserInteraction์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
  • boolean getDefaultUseCaches()
    : useCaches์˜ ๋””ํดํŠธ ๊ฐ’์„ ์–ป๋Š”๋‹ค
  • boolean getDoInput(), boolean getDoOutput()
    : doInput / doOutput์˜ ํ•„๋“œ๊ฐ’์„ ์–ป๋Š”๋‹ค
  • long getExpiration()
    : URL์˜ ๋งŒ๋ฃŒ์ผ์ž๋ฅผ ์–ป๋Š”๋‹ค (1/1000์ดˆ ๋‹จ์œ„)
  • Map getHeaderFields()
    : ํ—ค๋”์˜ ๋ชจ๋“  ํ•„๋“œ์™€ ๊ฐ’์ด ์ €์žฅ๋œ Map์„ ๋ฐ˜ํ™˜ํ•จ
  • long getIfModifiedSince()
    : ifModifiedSince(๋ณ€๊ฒฝ์—ฌ๋ถ€) ํ•„๋“œ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
  • int getReadTimeout()
    : ์ฝ๊ธฐ์ œํ•œ์‹œ๊ฐ„์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ (1/1000์ดˆ ๋‹จ์œ„)
  • URL getURL()
    : URLConnection์˜ URL์„ ๋ฐ˜ํ™˜ํ•จ
  • boolean getUseCaches()
    : ์บ์‰ฌ์˜ ์‚ฌ์šฉ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•จ

2/1 ์˜ค๋Š˜์˜ ์˜๋‹จ์–ด

authority (n) ๊ถŒํ•œ
authorize (v) ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋‹ค. ์ธ๊ฐ€ํ•˜๋‹ค.

cache (n) (์ปดํ“จํ„ฐ)์บ์‹œ / ์€๋‹‰์ฒ˜

uniform (a) ํ†ต์ผ๋œ. ๊ท ์ผํ•œ.

locator (n) ์œ„์น˜ ํƒ์ง€๊ธฐ

certificate (n) ์ž๊ฒฉ(์ฆ) / ์ฆ๋ช…์„œ

encryption (n) ์•”ํ˜ธํ™”

decryption (n) ๋ณตํ˜ธํ™”

cryptography (n) ์•”ํ˜ธํ•™

symmetric (a) ๋Œ€์นญ์˜.
asymmetric (a) ๋น„๋Œ€์นญ์˜.