<h1><center> HTTP </center></h1> ###### tags: `๐Ÿ’ป TIL`, `Computer Science`, `Network`, `HTTP` ###### date: `2024-02-01T15:12:33.284Z` > [color=#724cd1][name=๋ฐ๋ฆญ] > [HTTP - ์œ„ํ‚ค๋ฐฑ๊ณผ](https://ko.wikipedia.org/wiki/HTTP) > [HTTP](https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/) ## HTTP ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ์€ ์›”๋“œ ์™€์ด๋“œ ์›น์˜ ํ† ๋Œ€์ด๋ฉฐ ํ•˜์ดํ…์ŠคํŠธ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. HTTP๋Š” ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ๊ฐ„์— ์ •๋ณด๋ฅผ ์ „์†กํ•˜๋„๋ก ์„ค๊ณ„๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ ์Šคํƒ์˜ ๋‹ค๋ฅธ ๊ณ„์ธต ์œ„์—์„œ ์‹คํ–‰๋œ๋‹ค. HTTP๋ฅผ ํ†ตํ•œ ์ผ๋ฐ˜์ ์ธ ํ๋ฆ„์—๋Š” ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์—์„œ ์„œ๋ฒ„์— ์š”์ฒญํ•œ ๋‹ค์Œ ์„œ๋ฒ„์—์„œ ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์ž‘์—…์ด ํฌํ•จ๋œ๋‹ค. ### HTTP Method HTTP Method๋Š” HTTP Request๊ฐ€ ์ฟผ๋ฆฌ๋œ ์„œ๋ฒ„์—์„œ ๊ธฐ๋Œ€ํ•˜๋Š” ์ž‘์—…์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋‘ ๋ฉ”์„œ๋“œ๋Š” GET,POST๊ฐ€ ์žˆ๋‹ค. GET์€ ์‘๋‹ต์œผ๋กœ ์ •๋ณด๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ฐ˜๋ฉด, POST์š”์ฒญ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์ œ์ถœํ•˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ### HTTP Header ![image](https://hackmd.io/_uploads/Syjp4gq5a.png) > Google Chrome์˜ ๋„คํŠธ์›Œํฌ ํƒญ์— ์žˆ๋Š” HTTP Request Header ์˜ˆ์‹œ HTTP Header์—๋Š” ํ‚ค์™€ ๊ฐ’์— ์ €์žฅ๋œ ํ…์ŠคํŠธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ—ค๋”๋Š” ๋ชจ๋“  HTTP Request(or Response)์— ํฌํ•จ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ฐ ์š”์ฒญ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ํ•ต์‹ฌ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ### HTTP Request์—๋Š” ๋ฌด์—‡์ด ๋“ค์–ด์žˆ๋‚˜? HTTP Request๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์€ ์ธํ„ฐ๋„ท ํ†ต์‹  ํ”Œ๋žซํผ์—์„œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ Requestํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„ ๊ฐ HTTP์š”์ฒญ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ผ๋ จ์˜ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ HTTP์š”์ฒญ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋œ๋‹ค. 1. HTTP ๋ฒ„์ „ ์œ ํ˜• 2. URL 3. HTTP Method 4. HTTP Request Header 5. (Optional) HTTP Body ### HTTP Request Body์—๋Š” ๋ฌด์—‡์ด ์žˆ์„๊นŒ? Request์˜ Body๋Š” Request์—์„œ ์ „์†ก๋˜๋Š” ์ •๋ณด์˜ Body๋ฅผ ํฌํ•จํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. HTTP Request์˜ ๋ณธ๋ฌธ์—๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋˜๋Š” ์–‘์‹์— ์ž…๋ ฅ๋œ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์ด ์›น ์„œ๋ฒ„์— ์ œ์ถœ๋˜๋Š” ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ๋‹ค. ### HTTP Response์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜? HTTP Response๋Š” ์›น ํด๋ผ์ด์–ธํŠธ(์ข…์ข… ๋ธŒ๋ผ์šฐ์ €)์—์„œ HTTP Request์— ๋Œ€ํ•œ Response๋กœ ์ธํ„ฐ๋„ท ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ํ•˜๋Š” Response์ด๋‹ค. HTTP Response์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋œ๋‹ค. - HTTP Status code - HTTP Response Header - (Optional) HTTP Body ### HTTP Response Header HTTP Request์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ HTTP Response์—๋Š” ์‘๋‹ต ๋ณธ๋ฌธ์—์„œ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–ธ์–ด ๋ฐ ํ˜•์‹๊ณผ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ—ค๋”๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋œ๋‹ค. ![image](https://hackmd.io/_uploads/BJrc5g55a.png) > Google Chrome ๋„คํŠธ์›Œํฌ ํƒญ์— ์žˆ๋Š” HTTP Response Header์˜ ์˜ˆ์‹œ ### HTTP Response Body์—๋Š” ๋ฌด์—‡์ด ์žˆ์„๊นŒ? GET ์š”์ฒญ์— ๋Œ€ํ•œ ์„ฑ๊ณต์ ์ธ HTTP Response์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์š”์ฒญ๋œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ Body๊ฐ€ ์žˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์›น ์š”์ฒญ์˜ ๊ฒฝ์šฐ ์ด๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ํŽ˜์ด์ง€๋กœ ๋ณ€ํ™˜๋˜๋Š” HTML ๋ฐ์ดํ„ฐ๋‹ค. ### HTTP Status Code HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” HTTP Request๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” 3์ž๋ฆฌ ์ฝ”๋“œ์ด๋‹ค. ์ƒํƒœ ์ฝ”๋“œ๋Š” 5๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋‰œ๋‹ค. - 1xx informational - 2xx Success - 3xx Redirection - 4xx Client Error - 5xx Server Error `xx`๋Š” 00~99 ์‚ฌ์ด์˜ ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ### HTTPS > HyperText Transfer Protocol Secure๋Š” HTTP์˜ ์•ˆ์ „ํ•œ ๋ฒ„์ „์ด๋‹ค. SSL(Secure Socket Layer) ๋˜๋Š” TLS(Transport Layer Security)๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ํ•œ๋‹ค. - ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„์— ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ๋ณ€์กฐ๋  ์œ„ํ—˜์„ ์ค„์—ฌ์ค€๋‹ค. ๋˜ํ•œ, ๋ฐ์ดํ„ฐ๊ฐ€ ์•”ํ˜ธํ™”๋˜๊ธฐ ๋–„๋ฌธ์— ๋„์ฒญ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์œ ์ถœ์˜ ์œ„ํ—˜๋„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค. - ๋””์ง€ํ„ธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ์‹ ์›์„ ์ธ์ฆํ•œ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์˜๋„ํ•œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์žฅํ•œ๋‹ค. - ๋Œ€๋ถ€๋ถ„์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” HTTPS๋กœ ๋ณดํ˜ธ๋˜๋Š” ์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ•  ๋•Œ ์ž๋ฌผ์‡  ์•„์ด์ฝ˜์„ ํ‘œ์‹œํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์•ˆ ์—ฐ๊ฒฐ์ž„์„ ์•Œ๋ฆฐ๋‹ค. ### HTTP vs HTTPS - ๋ณด์•ˆ: HTTPS๋Š” SSL/TLS๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ ๋ฐ˜๋ฉด, HTTP๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ…์ŠคํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค. - ํฌํŠธ ๋ฒˆํ˜ธ: ๊ธฐ๋ณธ์ ์œผ๋กœ HTTP๋Š” 80๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , HTTPS๋Š” 443๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. - ์„ฑ๋Šฅ: HTTPS๋Š” ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๊ณผ์ •์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— HTTP์— ๋น„ํ•ด ์•ฝ๊ฐ„์˜ ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋”ฐ. ๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ ๊ธฐ์ˆ ์˜ ๋ฐœ๋‹ฌ๋กœ ์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ์ฐจ์ด๋Š” ํฌ๊ฒŒ ์ค„์–ด๋“ค์—ˆ๋‹ค. - ์ธ์ฆ์„œ: HTTPS๋Š” SSL/TLS ์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด๋Š” ์›น ์„œ๋ฒ„์˜ ์‹ ๋ขฐ๋„๋ฅผ ์ฆ๋ช…ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”์— ํ•„์š”ํ•œ ํ‚ค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.