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

[๋„คํŠธ์›Œํฌ] HTTP/1.0

1eehyunji 2023. 8. 19. 00:42

๊ธฐ๋ณธ์ ์œผ๋กœ HTTP๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์œผ๋กœ์„œ ์›น ์„œ๋น„์Šค ํ†ต์‹ ์— ์‚ฌ์šฉ๋œ๋‹ค. HTTP/1.0์—์„œ HTTP/3๊นŒ์ง€ ๋ฐœ์ „ํ–ˆ๋Š”๋ฐ, HTTP/1.0๋ถ€ํ„ฐ HTTP/3๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

HTTP / 1.0

HTTP/1.0์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ์—ฐ๊ฒฐ๋‹น ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค๊ณ„ ๋•Œ๋ฌธ์— RTT์˜ ์ฆ๊ฐ€๋ฅผ ๋ถˆ๋Ÿฌ์™”๋‹ค.

* RTT : ํŒจํ‚ท์ด ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ์ถœ๋ฐœ์ง€๋กœ ๋Œ์•„์˜ค๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„. ์ฆ‰, ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์‹  ํ™•์ธ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ๋”ํ•œ ๊ฐ’์ด๋‹ค.

์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค TCP์˜ 3-way handshake๋ฅผ ๊ณ„์†ํ•ด์„œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— RTT๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

RTT์˜ ์ฆ๊ฐ€๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

๋งค๋ฒˆ ์—ฐ๊ฒฐํ•  ๋•Œ๋งˆ๋‹ค RTT๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์„œ๋ฒ„์— ๋ถ€๋‹ด์ด ๋งŽ์ด ๊ฐ€๊ณ , ์‚ฌ์šฉ์ž ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์กŒ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

  • ์ด๋ฏธ์ง€ ์Šคํ”Œ๋ฆฌํŒ…
    • ๋งŽ์€ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ฒŒ ๋˜๋ฉด ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์ด๋ฏธ์ง€๊ฐ€ ํ•ฉ์ณ์ ธ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ background-image์˜ position ์†์„ฑ์„ ์ด์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

icons.png

#icons>li>a {
	background-image: url("icons.png");
    	width: 25px;
    	display: inline-block;
    	height: 25px;
    	repeat: no-repeat;
}

#icons>li:nth-child(1)>a {
	background-position: 2px -8px;
}

#icons>li:nth-child(2)>a {
	background-position: -29px -8px;
}

์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ˆ˜๋งŽ์€ ์•„์ด์ฝ˜๋“ค์„ ๋ชจ๋‘ ๊ฐ๊ฐ์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ์— ์ €์žฅ๋œ ์•„์ด์ฝ˜๋“ค์„ background-position ์†์„ฑ์„ ์ด์šฉํ•ด์„œ ๋ฐฐ๊ฒฝ์˜ ์œ„์น˜๋ฅผ ์กฐ์ ˆํ•ด์ฃผ๋ฉด์„œ ์•„์ด์ฝ˜์„ ํ•˜๋‚˜์”ฉ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด a ํƒœ๊ทธ์— ์„ค์ •๋œ 25px * 25px ์‚ฌ์ด์ฆˆ ์•ˆ์—์„œ icons.png์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉด์„œ ์›ํ•˜๋Š” ์•„์ด์ฝ˜์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

  • ์ฝ”๋“œ ์••์ถ•
    • ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•ด์„œ ๊ฐœํ–‰ ๋ฌธ์ž, ๋นˆ์นธ์„ ์—†์•ฐ์œผ๋กœ์จ ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
const express=require('express')
const app=express()
const port=3000

app.get('/', (req, res) => {
	res.send('Hello Wordl!')
})

app.listen(port, ()=>{
	console.log(`Example app listening on port ${port}`)
})

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐœํ–‰ ๋ฌธ์ž์™€ ๋นˆ์นธ์„ ์—†์• ์„œ ์••์ถ•ํ•œ๋‹ค.

const express=require('express'),app=express(),port=3e3;app.
get('/',(e,p)=>{p.send('Hello Wordl!')}),app.listen(3e3,()=>{console.
log('Example app listening on port 3000')});

์ด์™€ ๊ฐ™์ด ๊ฐœํ–‰ ๋ฌธ์ž, ๋„์–ด์“ฐ๊ธฐ ๋“ฑ์ด ์‚ฌ๋ผ์ ธ์„œ ์ฝ”๋“œ๊ฐ€ ์••์ถ•๋˜๋ฉด ์ฝ”๋“œ ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ ๋‹ค.

 

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