๐Ÿ“– Protocol

SOAP์„ ์•Œ์•„๋ณด์ž

bell22 2021. 6. 10. 14:50

์˜ค๋Š˜์€ ๊ทธ๋ƒฅ ์ง€๊ธˆ๊นŒ์ง€ ์˜ํ˜ผ์ด ํ˜๋Ÿฌ๊ฐ€๋Š” ๋Œ€๋กœ ์‚ฌ์šฉํ–ˆ๋˜

SOAP์„ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค

์‚ฌ์šฉ์€ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๋ž˜์„œ ๊ทธ๊ฒŒ ๋ญ”๋ฐ? ๋ผ๊ณ  ํ•˜๋ฉด ์„ค๋ช…ํ•  ์ˆ˜ ์—†๋‹ฌ๊นŒ....

๋ฐ˜์„ฑํ•˜๋ฉฐ ์ด ๊ธ€์„ ์”๋‹ˆ๋‹ค

 

 

์ฉ

 

 


 

1. SOAP (Simple Object Access Protocol)

 

SOAP(Simple Object Access Protocol)์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ง„ HTTPHTTPSSMTP ๋“ฑ์„ ํ†ตํ•ด XML ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๊ตํ™˜ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 
(์œ„ํ‚ค๋ฐฑ๊ณผ)

 

SOAP์€ ๋ง ๊ทธ๋Œ€๋กœ ํ•ด์„ํ•ด๋ณด๋ฉด ๊ฐ„๋‹จํ•œ ๊ฐ์ฒด ์ ‘๊ทผ ํ”„๋กœํ† ์ฝœ์ด๋‹ค

์ด๊ฒŒ ๋จธ์„ ๋ง์ธ๊ฐ€๋ฅผ ๋ณด๊ธฐ ์ „์—,

HTTP์™€ XML์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์–ธ๊ธ‰์„ ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์งง๊ฒŒ ๋‹ค๋ฃจ๊ฒ ๋‹ค

 

(1) HTTP (HyperText Transfer Protocol)

 

๋ณดํ†ต ์›น ์„œ๋น„์Šค์—์„œ SOAP์ด ์‚ฌ์šฉ ๋˜๋Š”๋ฐ

์›น์˜ ๊ธฐ๋ณธ์€ HTTP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ „ ์ง€์‹์œผ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค

 

HTTP๋Š” ์ด์ „์— Chunked Msg ๋‹ค๋ฃฐ ๋•Œ ์ž ๊น ์–˜๊ธฐํ–ˆ์—ˆ๋Š”๋ฐ

์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ํ…์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์ „์†ก ๋˜๋Š” ๋ณด์—ฌ์ค„ ๊ฑด๋ฐ ~~ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค

 

HTTP๋Š” Request์™€ Response๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ˜•ํƒœ์ด๊ณ 

์š” ๋‘ ๊ฐœ๋Š” Header์™€ Body๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค 

( ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์— ์ฒจ๋ถ€ ๋งํฌ๋กœ ๋‚จ๊ฒจ๋‘๊ฒ ๋‹ค )

 

๊ทผ๋ฐ, Header๋Š” ๋„์–ด์“ฐ๊ธฐ๋Š” ๋ช‡ ์นธ, ๋ช‡ ์ค„ ๊ณต๋ฐฑ์„ ๋‘๋ฉด Header๊ฐ€ ๋์ด์•ผ!๋ผ๋Š”

์š”๋Ÿฐ HTTP ๊ทœ๊ฒฉ์— ์ •์˜๊ฐ€ ๋˜์–ด ์žˆ์ง€๋งŒ

Body์˜ ๋‚ด์šฉ๋„ ์ด๋Ÿฐ ๊ทœ๊ฒฉ์ด ์ •ํ•ด์ ธ ์žˆ์–ด์•ผ ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ, ๋ฐ›๋Š” ์‚ฌ๋žŒ์ด

๊ทœ๊ฒฉ์— ๋งž๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?

 

๊ทธ๋ž˜์„œ ์–ด๋–ค ํ˜•์‹์— ๋งž์ถฐ์„œ ๋ณด๋‚ด๋„๋ก ํ•ด! ํ•˜๋Š” ๊ฑฐ๊ฐ€ ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ

๊ทธ๊ฒŒ ๋งŽ์ด ๋“ค์–ด๋ดค์„ XML์ด๋‚˜ JSON, Text ๋“ฑ์˜ ํ˜•์‹์ด๋‹ค

์š” ํ˜•์‹์€ HTTP Header์˜ Content-Type ํ—ค๋”์— ๋ช…์‹œํ•ด์ฃผ๋ฉด ๋œ๋‹ค

 

๊ทธ์ค‘ XML ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ๋ž˜! ๊ฐ€  → SOAP

JSON ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ๋ž˜!๊ฐ€ → REST

 

์š”๋ ‡๊ฒŒ ๋˜์‹œ๊ฒ ๋‹ค

(JSON์€ REST๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋‹ค์‹œ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ๋‹ค)

 

(2) XML (Extensible Markup Language)

๊ทธ๋Ÿฌ๋ฉด SOAP์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋Š” XML์€ ๋ฌด์—‡์ธ์ง€๋„ ๋ณด๊ฒ ๋‹ค

XML์€ ๋ง ๊ทธ๋Œ€๋กœ ํ™•์žฅ ๋งˆํฌ์—… ์–ธ์–ด์ด๋‹ค

 

์ฐธ๊ณ ) Markup (๋งˆํฌ์—…)

<></> ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์–ธ์–ด

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒ‰๊น”์„ ์ •์˜ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž

 

์ƒ‰๊น”
์ฒซ๋ฒˆ ์งธ๋Š” ๋นจ๊ฐ„์ƒ‰
๋‘๋ฒˆ ์งธ๋Š” ํŒŒ๋ž€์ƒ‰
์„ธ๋ฒˆ ์งธ๋Š” ์ดˆ๋ก์ƒ‰

 

์š”๊ฑธ ๋งˆํฌ์—… ํ˜•์‹(<></> ํƒœ๊ทธ ์‚ฌ์šฉ)์„ ๋”ํ•ด์„œ XML ํ˜•์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด

์–ด๋””์„œ ๋งŽ์ด ๋ณธ๋“ฏํ•œ ํ˜•์‹์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

XML์˜ ์žฅ์ ๊ณผ ๋‹จ์ ๋งŒ ์ •๋ฆฌ ํ›„, ๋„˜์–ด๊ฐ€๋„๋ก ํ•˜๊ฒ ๋‹ค

์ž์„ธํ•œ XML ๊ตฌ์กฐ๋Š” ์•„๋ž˜ ์ฒจ๋ถ€๋งํฌ์— ๋‹ฌ์•„ ๋†“๊ฒ ๋‹ค

 

์žฅ์ 

- HTML ๋ฌธ์„œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ XML๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค

- ํ˜ธํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์„ ์ •์˜ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฐ ์ „์†ก์ด ๋‹จ์ˆœํ•ด์ง„๋‹ค

- ํ™•์žฅ์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ์ด ์ข‹๋‹ค

- tag๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Data์™€ MetaData์˜ ๊ตฌ๋ถ„์ด ์‰ฝ๋‹ค

 

๋‹จ์ 

- ์‚ฌ์šฉ์•ˆํ•ด๋„ ๋  ๊ฒฝ์›จ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์–ด๋ ต๊ณ  ๋ณต์žกํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค

- ํ…์ŠคํŠธ ํŒŒ์ผ์ด๋ผ์„œ ์šฉ๋Ÿ‰ ↑ ์†๋„ ↓

(๊ทผ๋ฐ ์š”์ฆ˜์—” ํ†ต์‹  ์†๋„๊ฐ€ ์›Œ๋‚™ ๋นจ๋ผ์„œ ๊ตณ์ด ๋‹จ์ ์ธ๊ฐ€ ์‹ถ๋‹ค)

 

 

(3) XML๊ณผ SOAP

SOAP์€ HTTP ๊ธฐ๋ฐ˜์˜ XML์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ทœ๊ฒฉ์ด๋‹ค

์ฆ‰, HTTP์˜ Header + Body ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Body์— ์“ฐ๋Š” ํ˜•์‹์€ XML์ด๋‹ค

 

๋ˆ„๊ฐ€ ์ƒ‰์„ ์น ํ•œ๊ฑธ๊นŒ

 

๊ตฌ์„ฑ ์š”์†Œ๋Š” SOAP Envelope, SOAP Header, SOAP Body, SOAP Fault ์ •๋„๊ฐ€ ์žˆ๋‹ค

 

SOAP Envelope

HTML์—์„œ ๋ณด์…จ๋˜ <Envelope> ๋งž์Šต๋‹ˆ๋‹ค

SOAP  ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ํฌํ•จํ•˜๋Š” root ์š”์†Œ

 

SOAP Header (์˜ต์…˜)

HTTP Header๊ฐ€ HTTP Body๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ

SOAP Body๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด SOAP Header์ด๋‹ค

 

SOAP Body (ํ•„์ˆ˜)

์œ„์—์„œ ์˜ˆ์‹œ๋กœ ๋“ค์—ˆ๋˜ <Example> ๊ฐ™์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ์š”์†Œ

๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ๋Œ€์ƒ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ๋„ ํ•จ

 

SOAP Fault (์˜ค๋ฅ˜ ๋ณด๊ณ  ์šฉ)

๋ณดํ†ต ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ, ์š”์ฒญ์ด ์‹คํŒจํ•œ ์ด์œ  ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ์‚ฌ์šฉ๋จ

 

 

SOAP ๊ตฌ์กฐ ์˜ˆ์‹œ

 

์š”๋Ÿฐ ์‹์œผ๋กœ XML ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ SOAP์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

ํ•„์ž๋Š”.. Onvif ๋ผ๋Š” ๊ทœ๊ฒฉ์„ ๊ณต๋ถ€ ์ค‘์ธ๋ฐ, ์—ฌ๊ธฐ์„œ ๊ธฐ๋ณธ์œผ๋กœ SOAP ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์„œ

๋งŽ์ด ๋ˆˆ์— ์ต์ˆ™ํ•˜์ง€๋งŒ, ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ํ˜•์‹์ด ์กฐ๊ธˆ๋งŒ ์•ˆ ๋งž์•„๋„

์‘๋‹ต์ด ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ๋งค์šฐ ์‹ซ์Šต๋‹ˆ๋‹ค

 

๊ทธ๋ž˜์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์จ์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ฐ€์žฅ ์œ ๋ช…ํ•œ๊ฑด gSOAP์ด ์žˆ๋‹ค

์š”๊ฑด ๋”ฐ๋กœ ํ™œ์šฉ๋ฒ• ๋“ฑ์„ ๋‹ค๋ค„๋ณผ๊นŒ ํ•œ๋‹ค

 

 

2. Web Service

SOAP ํ˜•์‹์ด ๊ทธ๋Ÿฌ๋ฉด ์–ด๋””์„œ ๋งŽ์ด ์“ฐ์ด๋Š๋ƒ ~

ํ•˜๋ฉด Web Service ์„ค๋ช…์„ ๋นผ ๋†“์„ ์ˆ˜๊ฐ€ ์—†๋‹ค

 

๊ทผ๋ฐ ์›น์„œ๋น„์Šค๋„ ๋‹ค๋ฃฐ ๋‚ด์šฉ์ด ์ฐธ ๋งŽ์€ ์นœ๊ตฌ๋ผ์„œ

๊ทธ๋ƒฅ ์š”๋Ÿฐ๊ฒŒ ์žˆ๋‹ค ์ •๋„๋งŒ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•œ๋‹ค

 

๋งค์šฐ ํด๋ž˜์‹ํ•œ ๊ทธ๋ฆผ

 

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์›น์€ ๊ฐ์ž ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ์žˆ์ง€ ์•Š๋Š”๊ฐ€?

๊ทธ๋Ÿฐ ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋“ค์ด ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์›น ์„œ๋น„์Šค๋‹ค

 

์ฐธ๊ณ ) ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ์ปดํ“จํ„ฐ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์„

๋ถ„์‚ฐํ˜• ์ปดํ“จํŒ… ๊ธฐ์ˆ ์ด๋ผ๊ณ  ํ•œ๋‹ค

 

์›น ์„œ๋น„์Šค(web service)๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ปดํ“จํ„ฐ๋“ค ๊ฐ„์— ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์ด๋‹ค. ์›น ์„œ๋น„์Šค๋Š” ์„œ๋น„์Šค ์ง€ํ–ฅ์  ๋ถ„์‚ฐ ์ปดํ“จํŒ… ๊ธฐ์ˆ ์˜ ์ผ์ข…์ด๋‹ค. ์›น ์„œ๋น„์Šค ํ”„๋กœํ† ์ฝœ ์Šคํƒ์€ SOAP, WSDL, UDDI ๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๋ชจ๋“  ๋ฉ”์‹œ์ง•์— XML์ด ์‚ฌ์šฉ๋˜์–ด ์ƒํ˜ธ์šด์šฉ์„ฑ์ด ๋†’๋‹ค.
- ์œ„ํ‚ค๋ฐฑ๊ณผ -

 

์›น์„œ๋น„์Šค์— ์ด์šฉ๋˜๋Š” ํ‘œ์ค€์€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ, 

๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์˜ค๋Š˜ ๋‹ค๋ฃฌ SOAP์ด๋‹ค

 

 

์™ผ์ชฝ ์ปดํ“จํ„ฐ๋ฅผ ์ฒ ์ˆ˜๋„ค ์žˆ๋Š” ์ปดํ“จํ„ฐ๋ผ๊ณ  ํ•˜๊ณ 

์˜ค๋ฅธ์ชฝ ์ปดํ“จํ„ฐ๋ฅผ ์œ ๋ฆฌ๋„ค ์žˆ๋Š” ์ปดํ“จํ„ฐ๋ผ๊ณ  ํ•˜๋ฉด

 

์ฒ ์ˆ˜์™€ ์œ ๋ฆฌ๊ฐ€ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด

๋ฐ”๋กœ ์›น์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

 

์›น ์„œ๋น„์Šค์—์„œ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— SOAP์ด ์‚ฌ์šฉ๋œ๋‹ค

 


 

https://ko.wikipedia.org/wiki/SOAP

 

SOAP - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. SOAP(Simple Object Access Protocol)์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ง„ HTTP, HTTPS, SMTP ๋“ฑ์„ ํ†ตํ•ด XML ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๊ตํ™˜ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. SOAP์€ ์›น

ko.wikipedia.org

 

https://mutpp.tistory.com/10?category=932836

 

HTTP Chunked Message๋ฅผ ์•Œ์•„๋ณด์ž

# if 0 ๋‘๋‹ฌ๊ฐ„์˜ ๋…ธ์˜ˆ ์ผ์ƒ์„ ์ด์ œ์•ผ ๋๋‚˜๊ณ ,, ๋„ˆ๋ฌด ์˜ค๋žœ๋งŒ์— ๋“ค์—ฌ๋‹ค๋ณธ ๋ธ”๋กœ๊ทธ,, ๊ฐœ๋ฐœ์ž๋กœ ์ง€๋‚ด๊ณ  ์žˆ์ง€๋งŒ,, ์ผํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์€ ๊ทธ๋Ÿฐ ์‚ถ,, ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•ด์•ผํ•  ์ผ์ด ์ƒ๊ฒจ์„œ, ๊ทœ๊ฒฉ

mutpp.tistory.com

 

http://tcpschool.com/xml/xml_basic_structure

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com

 

'๐Ÿ“– Protocol' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

UDP๋ฅผ ์•Œ์•„๋ณด์ž  (0) 2021.07.08
HTTP Chunked Message๋ฅผ ์•Œ์•„๋ณด์ž  (0) 2021.03.09
SMTP๋ฅผ ์•Œ์•„๋ณด์ž  (0) 2020.12.16