FrontEnd
Javascript
Diary
ML
CS
Django
Algorithm
AWS
Co-Work
HTML
CSS
Python
React
ReactNative

Http

๐Ÿ”ŒNetwork - HTTP

๊ฐœ์š”

๋ธŒ๋ผ์šฐ์ €์— URL ์„ ์ž…๋ ฅํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” URL์˜ ์˜๋ฏธ์— ๋”ฐ๋ผ request massage๋ฅผ ๋งŒ๋“ ๋‹ค ๊ทธ๋ฆฌ๊ณ  ์ด massage๋ฅผ web server์— ๋ณด๋‚ด์ฃผ๊ฒŒ ๋˜๋Š”๋ฐ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š”๊ฒƒ์€ ๋””์ง€ํ„ธ ๋ฐ์ดํ„ฐ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š” ๊ตฌ์กฐ์ธ OS์— ๋‚ด์žฅ๋œ ๋„คํŠธ์›Œํฌ ์ œ์–ด์šฉ ์†Œํ”„ํŠธ ์›จ์–ด์— ์˜๋ขฐํ•˜์—ฌ massage๋ฅผ server๊นŒ์ง€ ์ „๋‹ฌํ•œ๋‹ค

๐Ÿ’ก www.blogger.com ์—์„œ www๋Š” ์›น์„œ๋ฒ„์— ๋ถ™์ธ ์ด๋ฆ„์ด๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” worlde wide web ์€ ํ”„๋กœํ† ์ฝœ์„ ๋‚˜ํƒ€๋‚ด๋Š”๊ฒŒ ์•„๋‹Œ ์›น์„ ์„ค๊ณ„ํ•œ ์‚ฌ๋žŒ์ด ์ตœ์ดˆ๋กœ ๋งŒ๋“  browser๊ฒธ html editor์— ๋ถ™์ธ ์ด๋ฆ„

๐Ÿ’ก๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋น„๋กฏํ•œ ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ œ์–ดํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ OS์— ์˜๋ขฐ ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ์ œ์–ดํ•œ๋‹ค

URL

URL์ž…๋ ฅ

URL( uniform Resource Locator ) ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋ณด๋Š” http:// ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ https:// . file: ,mailto: ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณตํ•ฉ์ ์ธ ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด๋กœ URL์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ FTP (ํŒŒ์ผ์„ ์—…๋กœ๋“œ ๋‹ค์šด๋กœ๋“œ ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” Protocol<ํ†ต์‹ ๊ทœ์น™>) ์„œ๋ฒ„์— ์—‘์„ธ์Šค, ์›น์„œ๋ฒ„์— ์—‘์„ธ์Šค ๋“ฑ๊ณผ ๊ฐ™์€๊ฒƒ์„ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

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

URLํ•ด๋…

http: // www.webserver.co.kr / dirc / file.html
์•ก์„ธ์Šค๋ฐฉ๋ฒ• ๋‹ค์Œ์ด์„œ๋ฒ„๋ž€๊ฑธ์•Œ๋ ค์คŒ ์›น์„œ๋ฒ„ ์ด๋ฆ„ ๋ฐ์ดํ„ฐ์˜ ์ถœ์ฒ˜ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ

์›น์„œ๋ฒ„์— ์ €์žฅ๋œ dirc ์ด๋ผ๋Š” directory์•„๋ž˜์— ์žˆ๋Š” file.html์„ ์ฐพ์•„๊ฐ„๋‹ค

ํŒŒ์ผ์˜ ๊ฒฝ๋กœ ๋ถ€๋ถ„์ด ์ƒ๋žต๋  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ์„œ๋ฒ„์ธก์—์„œ๋Š” default ๊ฐ’์„ ์„ค์ •ํ•ด๋‘๋Š”๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ์“ฐ๋Š” index.html์ด ์ด์™€๊ฐ™์€ ๋ฐฉ๋ฒ•์ด๋‹ค

http://server.com/direc http://server.com/ http://server.com
direc ๋ฐ‘์— index์ฐพ์Œ root direc ๋ฐ‘์— index์ฐพ์Œ

http://server.com/random ๊ณผ ๊ฐ™์€๊ฒฝ์šฐ /๊ฐ€ ์•ˆ ๋ถ™์–ด์„œ file๋กœ ๋ณด์•„์•ผํ•˜์ง€๋งŒ file๊ณผ directory ์ด๋ฆ„์€ ์ค‘๋ณต๋ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ file์ผ ๊ฒฝ์šฐ file์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  directory์ผ ๊ฒฝ์šฐ directory๋‚ด default๊ฐ’

Requset & Response

request : ์„œ๋ฒ„์— ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ณด๋‚ด๋Š” ๋ฉ”์„ธ์ง€

๋ฌด์—‡ = URI (uniform Resource identifier) = ์•ก์„ธ์Šค ๋Œ€์ƒ์„ ํ†ต์นญ

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ด๋‚˜ CGI(common gateway interface ์›น ์„œ๋ฒ„์—์„œ ํ”„๋กœ๊ทธ๋žจ ํ˜ธ์ถœํ• ๋•Œ ๊ทœ์น™) ํ”„๋กœ๊ทธ๋žจ์˜ ํŒŒ์ผ๋ช… ๋ฟ๋งŒ์•„๋‹ˆ๋ผ http๋กœ ์‹œ์ž‘ํ•˜๋Š” URL์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค

์–ด๋–ป๊ฒŒ = Method

  • GET : URI๋กœ ์ง€์ •ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.(ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„, ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์ถœ๋ ฅ๋ฐ์ดํ„ฐ)

    request ๋ฉ”์„ธ์ง€์— method์— GET์ด๋ผ ์“ฐ๊ณ  URI๋ถ€๋ถ„์— ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๊ณ  ์›น์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜์—ฌ responseํ•ด์ฃผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด ํ™”๋ฉด์— ํ‘œ์‹œ

  • POST : ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์†ก์‹  (form์— ์ž…๋ ฅํ•œ data์†ก์‹ )

     ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์›น์„œ๋ฒ„์— ์†ก์‹ ํ•˜๋Š”๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค
     URI๋ถ€๋ถ„์— ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ๋ช…์ด ๋“ค์–ด๊ฐ€๋Š”๋ฐ index.cgi / index.php ๋“ฑ ์ฒ˜๋ฆฌํ”„๋กœ๊ทธ๋žจ์ด ๋“ค์–ด๊ฐ€๊ฒŒ๋˜๊ณ 
     request๋ฉ”์„ธ์ง€ ์•ˆ์— ์†ก์‹  data๋ฅผ ํฌํ•จ์‹œ์ผœ ์›น์„œ๋ฒ„๋Š” ํ•ด๋‹น data๋ฅผ ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•ด์ฃผ๊ณ 
     ๊ทธ์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๊ฐ’์„ responseํ•ด์ค€๋‹ค
  • PUT : URI๋กœ ์ง€์ •ํ•œ ์„œ๋ฒ„์˜ ํŒŒ์ผ์„ ์น˜ํ™˜(ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์ƒˆํŒŒ์ผ ์ƒ์„ฑ)
  • DELETE : URI๋กœ ์ง€์ •ํ•œ ํŒŒ์ผ ์‚ญ์ œ

response : ๋ฆฌํ€˜์ŠคํŠธ์˜ ์š”๊ตฌ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ

(์‹คํ–‰ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ) status code + header file + pagedata

ํด๋ผ์ด์–ธํŠธ๊ฐ€ response ๋ฉ”์„ธ์ง€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ํ‘œ์‹œ

HTTP(Hyper Text Transfer protocol)ํ”„๋กœํ† ์ฝœ์˜ ๊ฐœ๋…

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฉ”์„ธ์ง€์˜ ๋‚ด์šฉ์ด๋‚˜ ์ˆœ์„œ๋ฅผ ์ •ํ•œ๊ฒƒ

Requset massage

<method><๊ณต๋ฐฑ><URI><๊ณต๋ฐฑ><HTTPversion>     -- request line
<ํ•„๋“œ๋ช…>:<ํ•„๋“œ๊ฐ’>
 -                                                            -- massage header (request์˜ ๋ถ€๊ฐ€์ •๋ณด)
 -                                                               ํ•œํ–‰์— ํ•œ๊ฐœ์˜ headerํ•„๋“œ

 

 -                                                               ์—ฌ๊ธฐ๊นŒ์ง€ header
<๊ณต๋ฐฑ ํ–‰>                                               
<๋ฉ”์„ธ์ง€ ๋ณธ๋ฌธ>(post๋งŒ ์žˆ์Œ)                        -- ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„๋กœ ์†ก์‹ ํ•˜๋Š” data

request ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฒ•

  1. URL ์ž…๋ ฅ์ƒ์ž์—์„œ URL์ž…๋ ฅ - GET
  2. ํผ ๋ฐ์ดํ„ฐ์˜ submit (get ์˜ ๊ฒฝ์šฐ URI?querystring ํ˜•ํƒœ, ์งง์€๋‚ด์šฉ) GET & POST ๊ฐ€๋Šฅ
  3. ํ•˜์ดํผ๋งํฌ ํด๋ฆญ - GET

Response massage

<HTTPversion> <๊ณต๋ฐฑ> <status code> <๊ณต๋ฐฑ> <status massage>
<ํ•„๋“œ๋ช…> : <ํ•„๋“œ๊ฐ’>
-
-
-
<๊ณต๋ฐฑํ–‰>
<๋ฉ”์„ธ์ง€๋ณธ๋ฌธ>

Response Status Code

1xx : ์ฒ˜๋ฆฌ์˜ ๊ฒฐ๊ณผ ์ƒํ™ฉ ๋“ฑ์„ ํ†ต์ง€

2xx : ์ •์ƒ ์ข…๋ฃŒ

3xx : ๋ฌด์–ธ๊ฐ€ ๋‹ค๋ฅธ ์กฐ์น˜๊ฐ€ ํ•„์š”

4xx : ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ์˜ค๋ฅ˜

5xx : ์„œ๋ฒ„์ธก์˜ ์˜ค๋ฅ˜

๐Ÿ’ก media๋Š” ์–ด๋–ป๊ฒŒ responseํ• ๊นŒ?
๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น ๋ฉ”์„ธ์ง€๋ฅผ ๋ถ„์„ํ•ด ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด์ฃผ๊ฒŒ ๋˜๋Š”๋ฐ ์˜์ƒ, ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ณต๋ฐฑ์ฒ˜๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ„ ๋’ค ํ•ด๋‹น ํƒœ๊ทธ์˜ URI๋ฅผ web server์— ์š”์ฒญํ•ด response๋ฅผ ๋ฐ›๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค
๋”ฐ๋ผ์„œ 4๊ฐœ์˜ media tag๋ฅผ ๊ฐ€์ง„ html ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ์œ„ํ•ด์„œ ์ด 5๋ฒˆ์˜ request๋ฅผ ํ•ด์•ผํ•œ๋‹ค( ๋ฌธ์žฅ 1๋ฒˆ, ๋ฏธ๋””์–ด 4๋ฒˆ(binaryํ˜•ํƒœ์˜ response ๋ฉ”์„ธ์ง€๋ณธ๋ฌธ ์ˆ˜์‹ ) )
web server๋Š” 1๋ฒˆ์˜ request ์— ๋Œ€ํ•ด 1๋ฒˆ์˜ response๋งŒ ํ•ด์ค„๋ฟ์ด๋‹ค.

๐Ÿ’ญheader field type

common

           DATE   :   ๋ฉ”์„ธ์ง€๊ฐ€ ์ž‘์„ฑ๋œ ๋‚ ์งœ

           Transfer - Encoding : ๋ฉ”์„ธ์ง€ ๋ณธ๋ฌธ์˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹

request

           User-Agent   :     ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ ์›จ์–ด ์ •๋ณด

           Accept    :   ํด๋ผ์ด์–ธํŠธ์ธก์ด content-Type์œผ๋กœ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜

           Host     :    ๋ฆฌํ€˜์ŠคํŠธ ๋ฐ›๋Š” ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฒˆํ˜ธ

response

           Server    :    ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ •๋ณด

Entity header

           Allow : ์ง€์ •ํ•œ URI ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

           Content-length  :  ๋ฉ”์„ธ์ง€ ๋ณธ๋ฌธ์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

           Content-type    :   ๋ฉ”์„ธ์ง€ ๋ณธ๋ฌธ์˜ ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜

           Last - Modified   : ์ •๋ณด๋ฅผ ์ตœ์ข… ๋ณ€๊ฒฝํ•œ ์ผ์‹œ

           Content- Location : ๋ฉ”์„ธ์ง€ ๋ณธ๋ฌธ์ด ์„œ๋ฒ„์˜ ์–ด๋””์— ์žˆ๋Š”์ง€ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ„

์ถœ์ฒ˜ : ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” !%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ