HTTP(Hyper Text Transfer Protocol)**๋?
๐ ์ธํฐ๋ท์์ HTML ๋ฌธ์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํด์ฃผ๋ ํ๋กํ ์ฝ.
์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ผ๋ก,ย ์น ์๋น์ค ํต์ ์ ์ฌ์ฉ.
- ์ฆ, ์น์์์ ๋คํธ์ํฌ๋ก ์๋ฒ๋ผ๋ฆฌ ํต์ ์ ํ ๋ ์ด๋ ํ ํ์์ผ๋ก ์๋ก ํต์ ์ ํ์๊ณ ๊ท์ ํด ๋์ โํต์ ํ์โ ํน์ โํต์ ๊ตฌ์กฐโ ๋ผ๊ณ ๋ณด๋ฉด ๋จ
- TCP/IP ๊ธฐ๋ฐ์ผ๋ก ๋์ด์์
- HTTP ๊ธฐ๋ณธ์ ์ผ๋ก request(์์ฒญ)/response(์๋ต) ๊ตฌ์กฐ๋ก ๋์ด์์
ํด๋ผ์ด์ธํธ๊ฐ HTTP request๋ฅผ ์๋ฒ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ HTTP response๋ฅผ ๋ณด๋ด๋ ๊ตฌ์กฐ
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋๋ถ๋ถ์ ํต์ ์ด ์์ฒญ๊ณผ ์๋ต์ผ๋ก ์ด๋ฃจ์ด ์ง.
HTTP Response, Request ๋ฉ์์ง์ ๊ตฌ์กฐ(Start Line, Status Line, Header, Content)
- HTTP ๋ฉ์์ง๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๊ตํ๋๋ ๋ฐฉ์
- ์์ฒญ(โrequestโ)์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์ ๋ฌํด์ ์๋ฒ์ ์ก์ ์ด ์ผ์ด๋๊ฒ๋ ํ๋ ๋ฉ์์ง
- ์๋ต(โresponseโ)์ ์์ฒญ์ ๋ํ ์๋ฒ์ ๋ต๋ณ
- HTTP ์์ฒญ๊ณผ ์๋ต์ ๊ตฌ์กฐ
- ์์ ์ค(โstart-lineโ)์๋ ์คํ๋์ด์ผ ํ ์์ฒญ, ๋์ ์์ฒญ ์ํ์ ๋ํ ์ฑ๊ณต ๋๋ ์คํจ๊ฐ ๊ธฐ๋ก๋์ด ์์.
- ์ด ์ค์ ํญ์ ํ ์ค๋ก ๋๋จ
- ์ต์
์ผ๋ก โHTTP ํค๋โ ์ธํธ๊ฐ ๋ค์ด๊ฐ.
- ์์ฒญ์ ๋ํ ์ค๋ช , ํน์ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ํ ์ค๋ช
- ์์ฒญ์ ๋ํ ๋ชจ๋ ๋ฉํ ์ ๋ณด๊ฐ ์ ์ก๋์์์ ์๋ฆฌ๋ ๋น ์ค(โblank lineโ) ์ฝ์
- ์์ฒญ๊ณผ ๊ด๋ จ๋ ๋ด์ฉ(HTML ํผ ์ฝํ
์ธ ๋ฑ)์ด ์ต์
์ผ๋ก ๋ค์ด๊ฐ๊ฑฐ๋, ์๋ต๊ณผ ๊ด๋ จ๋ ๋ฌธ์๊ฐ ๋ค์ด๊ฐ.
- ๋ณธ๋ฌธ์ ์กด์ฌ ์ ๋ฌด ๋ฐ ํฌ๊ธฐ๋ ์ฒซ ์ค๊ณผ HTTP ํค๋์ ๋ช ์
- ์์ ์ค(โstart-lineโ)์๋ ์คํ๋์ด์ผ ํ ์์ฒญ, ๋์ ์์ฒญ ์ํ์ ๋ํ ์ฑ๊ณต ๋๋ ์คํจ๊ฐ ๊ธฐ๋ก๋์ด ์์.
HTTP Request Message
HTTP Request Message ๊ตฌ์กฐ
HTTP Request Message๋ ๊ณต๋ฐฑ(blank line)์ ์ ์ธํ๊ณ 3๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๋๋์ด์ง
Start Line
- HTTP method
- Request target
- HTTP Request๊ฐ ์ ์ก๋๋ ๋ชฉํ ์ฃผ์
- HTTP version
- HTTP version ๋ช ์(version์ ๋ฐ๋ผ Request ๋ฉ์์ง ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ)
Headers
- request์ ๋ํ ์ถ๊ฐ ์ ๋ณด(addtional information)๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ
- ํฌ๊ฒ 3๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๋๋จ(general headers, request headers, entity headers)
Host
: ์์ฒญํ๋ ค๋ ์๋ฒ ํธ์คํธ ์ด๋ฆ๊ณผ ํฌํธ๋ฒํธUser-agent
: ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ ์ ๋ณด. ์ด ์ ๋ณด๋ฅผ ํตํด ์๋ฒ๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ(๋ธ๋ผ์ฐ์ )์ ๋ง๋ ์ต์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค ์ ์๋ค.Referer
ย : ๋ฐ๋ก ์ง์ ์ ๋จธ๋ฌผ๋ ๋ ์น ๋งํฌ ์ฃผ์Accept
ย : ํด๋ผ์ด์ธํธ๊ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๋ฏธ๋์ด ํ์ ์ข ๋ฅ ๋์ดIf-Modified-Since
ย : ์ฌ๊ธฐ์ ์ฐ์ฌ์ง ์๊ฐ ์ดํ๋ก ๋ณ๊ฒฝ๋ ๋ฆฌ์์ค ์ทจ๋. ํ์ด์ง๊ฐ ์์ ๋์์ผ๋ฉด ์ต์ ํ์ด์ง๋ก ๊ต์ฒดํ๋ค.Authorization
ย : ์ธ์ฆ ํ ํฐ์ ์๋ฒ๋ก ๋ณด๋ผ ๋ ์ฐ์ด๋ HeaderOrigin
ย : ์๋ฒ๋ก Post ์์ฒญ์ ๋ณด๋ผ ๋ ์์ฒญ์ด ์ด๋ ์ฃผ์์ ์์๋์๋์ง ๋ํ๋ด๋ ๊ฐ. ์ด ๊ฐ์ผ๋ก ์์ฒญ์ ๋ณด๋ธ ์ฃผ์์ ๋ฐ๋ ์ฃผ์๊ฐ ๋ค๋ฅด๋ฉด CORS(Cross-Origin Resource Sharing) ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.Cookie
: ย ์ฟ ํค ๊ฐ์ด key-value๋ก ํํ
Body
- HTTP Request๊ฐ ์ ์กํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ
- ์ ์กํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด body ๋ถ๋ถ์ ๋น์ด์์
- post ์์ฒญ์ผ ๊ฒฝ์ฐ, HTML ํผ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์
POST /test HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: google.com
User-Agent: HTTPie/0.9.3
{
"test_id": "tmp_1234567",
"order_id": "8237352"
}
HTTP Response Message
HTTP Response Message ๊ตฌ์กฐ
- HTTP Response Message๋ request์ ๋์ผํ๊ฒ ๊ณต๋ฐฑ(blank line)์ ์ ์ธํ๊ณ 3๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๋๋์ด์ง
Status Line
- HTTP Response์ ์ํ๋ฅผ ๊ฐ๋ตํ๊ฒ ๋ํ๋
- HTTP version
- HTTP version๋ช ์(๋ฒ์ ์ ๋ฐ๋ฅธ ๋ฉ์์ง ํ์์ด ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ)
- Status Code
- HTTP status code๋ฅผ ๋ช ์(200, 404, 503.,)
- Status Text
- HTTP status Text๋ฅผ ๋ช ์(OK, NOT FOUND, bad gateway)
Headers
- Request์ headers์ ๋์ผ
- response์์๋ง ์ฌ์ฉ๋๋ header ๊ฐ๋ค์ด ์์
- cf) User-Agent -> Server ํค๋
Body
- Response์ body์ ์ผ๋ฐ์ ์ผ๋ก ๋์ผ
- Request์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ response๊ฐ body๊ฐ ์์ง๋ ์์
- ์ ์กํ ํ์๊ฐ ์์๊ฒฝ์ฐ body๊ฐ ๋น์ด์์
1. HTTP/1.0
- ํ ์ฐ๊ฒฐ๋น ํ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋จ -> RTT์ฆ๊ฐ
์๋ฒ๋ก๋ถํฐ ํ์ผ์ ๊ฐ์ ธ์ฌ ๋ ๋ง๋คย TCP์ 3-์จ์ด ํธ๋์ ฐ์ดํฌ๋ฅผ ๊ณ์ํด์ ์ด์ด์ผ ํ๊ธฐ ๋๋ฌธ.
- RTT : Round Trip Time, ์๋ณต ์๊ฐ
- ํจํท์ด ๋ชฉ์ ์ง์ ๋๋ฌํ๊ณ ๋์ ๋ค์ ์ถ๋ฐ์ง๋ก ๋์์ค๊ธฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ
RTT์ย ์ฆ๊ฐ๋ฅผย ํด๊ฒฐํ๊ธฐย ์ํย ๋ฐฉ๋ฒ
-ย RTT๊ฐ ์ฆ๊ฐ -> ์๋ฒ์ ๋ถ๋ด์ด ๋ง์ด ๊ฐ๊ณ ์ฌ์ฉ์ ์๋ต ์๊ฐ์ด ๊ธธ์ด์ง.
์ด๋ฏธ์ง ์คํ๋ฆฌํ
, ์ฝ๋ ์์ถ, ์ด๋ฏธ์ง Base64 ์ธ์ฝ๋ฉ ์ฌ์ฉ.
์ด๋ฏธ์งย ์คํ๋ฆฌํ
-ย ๋ง์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋๋ฐ๊ฒ ๋๋ฉด ๊ณผ๋ถํ ๋ฐ์.
- ๋ง์ ์ด๋ฏธ์ง๊ฐ ํฉ์ณ ์๋ ํ๋์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋๋ฐ๊ณ ,
- ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก background-image์ position์ ์ด์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ํ๊ธฐ.
//ํ๋์ ์ด๋ฏธ์ง background-image: url("icons.png");, background-position ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ค์
#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;
}
์ฝ๋ ์์ถ
-ย ์ฝ๋๋ฅผ ์์ถํด์ ๊ฐํ ๋ฌธ์, ๋น์นธ์ ์์ ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ์ต์ํํ๋ ๋ฐฉ๋ฒ.
//์ฝ๋ ์์ถ ์
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
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 World!")}),app.listen(3e3,()=>{console.log("Example app listening on port 3000")});
์ด๋ฏธ์งย Base64ย ์ธ์ฝ๋ฉ
-ย ์ด๋ฏธ์ง ํ์ผ์ 64์ง๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉ.
- ์ฅ์ :ย ์๋ฒ์์ ์ฐ๊ฒฐ์ ์ด๊ณ ์ด๋ฏธ์ง์ ๋ํด ์๋ฒ์ HTTP ์์ฒญ์ ํ ํ์๊ฐ ์์.
- ๋จ์ :ย Base64 ๋ฌธ์์ด๋ก ๋ณํํ ๊ฒฝ์ฐ 37% ์ ๋ ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง ์ ์์.
2. HTTP/1.1
-ย HTTP/1.0์์ ๋ฐ์ ํ ํ๋กํ ์ฝ.
-ย ํ ๋ฒ TCP ์ด๊ธฐํ๋ฅผ ํ ์ดํ์ keep-alive๋ผ๋ ์ต์
์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ์ก์์ ํ ์ ์์.
cf) HTTP/1.0 ์ฒ๋ผย ๋งค๋ฒ TCP ์ฐ๊ฒฐ์ ํ๋ ๊ฒ์ด ์๋.
HTTP/1.0์๋ย keep-alive์กด์ฌ. but ํ์คํ๊ฐ ๋์ด ์์ง ์์์์.
HTTP/1.1๋ถํฐ ํ์คํ๊ฐ ๋์ด ๊ธฐ๋ณธ ์ต์
์ผ๋ก ์ค์ ๋จ.
- ๋จ์ :ย ๋ฌธ์ ์์ ํฌํจ๋ ๋ค์์ ๋ฆฌ์์ค(์ด๋ฏธ์ง, css ํ์ผ, script ํ์ผ)๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ์์ฒญํ ๋ฆฌ์์ค ๊ฐ์์ ๋น๋กํ์ฌ ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง
HOL Blocking(Head Of Line Blocking)
-ย ๋คํธ์ํฌ์์ ๊ฐ์ ํ์ ์๋ ํจํท์ด ๊ทธ ์ฒซ ๋ฒ์งธ ํจํท์ ์ํด ์ง์ฐ๋ ๋ ๋ฐ์ํ๋ ์ฑ๋ฅ ์ ํ ํ์.
๋ฌด๊ฑฐ์ดย ํค๋ย ๊ตฌ์กฐ
-ย HTTP/1.1์ ๋จ์ : ํค๋์๋ ์ฟ ํค ๋ฑ ๋ง์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ค์ด ์๊ณ ์์ถ์ด ๋์ง ์์ ๋ฌด๊ฑฐ์.
3. HTTP/2
-ย SPDY ํ๋กํ ์ฝ์์ ํ์.
- SPDY ํ๋กํ ์ฝ : ์น ์ฝํ
์ธ ๋ฅผ ์ ์กํ ๋ชฉ์ ์ผ๋ก ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ ๋นํ์ค ๊ฐ๋ฐฉํ ๋คํธ์ํฌ ํ๋กํ ์ฝ.
-ย HTTP/1.x๋ณด๋ค ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ์๋ต ์๊ฐ์ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์์.
-ย ๋ฉํฐํ๋ ์ฑ, ํค๋ ์์ถ, ์๋ฒ ํธ์, ์์ฒญ์ ์ฐ์ ์์ ์ฒ๋ฆฌ๋ฅผ ์ง์.
๋ฉํฐํ๋ ์ฑ
-ย ์ฌ๋ฌ ๊ฐ์ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ์ก์์ ํ๋ ๊ฒ.
- ์คํธ๋ฆผ : ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ, ํจํท, ๋นํธ ๋ฑ์ ์ผ๋ จ์ ์ฐ์์ฑ์ ๊ฐ๋ ํ๋ฆ์ ์๋ฏธ.
-ย ย ํน์ ์คํธ๋ฆผ์ ํจํท์ด ์์ค๋์๋ค๊ณ ํ๋๋ผ๋ ํด๋น ์คํธ๋ฆผ์๋ง ์ํฅ์ ๋ฏธ์น๊ณ ๋๋จธ์ง ์คํธ๋ฆผ์ ์ํฅ๋ฐ์ง ์์.
ํค๋ย ์์ถ
-ย HTTP/1.x์ ๋จ์ ์ธ ํฐ ํค๋๋ฅผ ๋ณด์ํ๊ธฐ ์ํจ.
- ํํ๋ง ์ฝ๋ฉ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ HPACK ์์ถ ํ์์ ํตํด ํค๋๋ฅผ ์์ถํจ.
ํํ๋งย ์ฝ๋ฉ(huffmanย coding)
-ย ๋ฌธ์์ด์ ๋ฌธ์ ๋จ์๋ก ์ชผ๊ฐ ๋น๋์๋ฅผ ์ธ์ด ๋น๋๊ฐ ๋์ ์ ๋ณด๋ ์ ์ ๋นํธ ์๋ฅผ ์ฌ์ฉํ์ฌ ํํ.
-ย ๋น๋๊ฐ ๋ฎ์ ์ ๋ณด๋ ๋นํธ ์๋ฅผ ๋ง์ด ์ฌ์ฉํ์ฌ ํํํด์ ์ ์ฒด ๋ฐ์ดํฐ์ ํํ์ ํ์ํ ๋นํธ์์ ์ค์.
์๋ฒย ํธ์
-ย HTTP/1.1 : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํด์ผ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์์.
-ย HTTP/2 :ย ํด๋ผ์ด์ธํธ ์์ฒญ ์์ด ์๋ฒ๊ฐ ๋ฐ๋ก ๋ฆฌ์์ค๋ฅผ ํธ์ ๊ฐ๋ฅ.
html์ ์ฝ์ผ๋ฉด์ ๊ทธ ์์ ๋ค์ด ์๋ css ํ์ผ์ ์๋ฒ์์ ํธ์ํ์ฌ ํด๋ผ์ด์ธํธ์ ๋จผ์ ์ค.
4. HTTPS
-ย HTTP/2๋ HTTPS ์์์ ๋์ํจ.
- ํต์ ์ํธํ ๋ ํ๋กํ ์ฝ, ์ฆย ์ ๋ขฐํ ์ ์๋ HTTP ์์ฒญ์ ๋งํจ.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต๊ณผ ์ ์ก ๊ณ์ธต ์ฌ์ด์ ์ ๋ขฐ ๊ณ์ธต์ธ SSL/TLS ๊ณ์ธต์ ๋ฃ์๊ธฐ ๋๋ฌธ.
SSL(Secure Socket Layer)/TLS(Transport Layer Security Protocol)
- SSL 1.0-> SSL 2.0-> SSL 3.0-> TLS 1.0-> TLS 1.3.
- ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋ฉฐ ๋ง์ง๋ง์ผ๋ก TLS๋ก ๋ช
์นญ์ด ๋ณ๊ฒฝ๋์์ผ๋, ๋ณดํต ์ด๋ฅผ ํฉ์ณ SSL/TLS๋ก ๋ง์ด ๋ถ๋ฆ.
-ย ์ ์ก ๊ณ์ธต์์ ๋ณด์์ ์ ๊ณตํ๋ ํ๋กํ ์ฝ.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ํ ๋ SSL/TLS๋ฅผ ํตํด ์ 3์๊ฐ ๋ฉ์์ง๋ฅผ ๋์ฒญํ๊ฑฐ๋ ๋ณ์กฐํ์ง ๋ชปํ๊ฒ ๋ง์.
-ย ๋ณด์ ์ธ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ํธํ.
๋ณด์ ์ธ์ ์ด ๋ง๋ค์ด์ง ๋ ์ธ์ฆ ๋ฉ์ปค๋์ฆ, ํค ๊ตํ ์ํธํ ์๊ณ ๋ฆฌ์ฆ, ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋จ.
๋ณด์ ์ธ์
-ย ๋ณด์์ด ์์๋๊ณ ๋๋๋ ๋์ ์ ์ง๋๋ ์ธ์ .
- ์ธ์
ย : ์ด์์ฒด์ ๊ฐ ์ด๋ ํ ์ฌ์ฉ์๋ก๋ถํฐ ์์ ์ ์์ฐ ์ด์ฉ์ ํ๋ฝํ๋ ์ผ์ ํ ๊ธฐ๊ฐ.
์ฆ, ์ฌ์ฉ์๋ ์ผ์ ์๊ฐ ๋์ ์์ฉ ํ๋ก๊ทธ๋จ, ์์ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
-ย SSL/TLS๋ ํธ๋์ ฐ์ดํฌ๋ฅผ ํตํด ๋ณด์ ์ธ์ ์ ์์ฑํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํ ์ ๋ณด ๋ฑ์ ๊ณต์ ํจ.
-ย ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ํค๋ฅผ ๊ณต์ ,ย ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ฆ, ์ธ์ฆ ํ์ธ ๋ฑ์ ์์ ์ด ์ผ์ด๋๋ ๋จ ํ ๋ฒ์ 1-RTT๊ฐ ์๊ธด ํ ๋ฐ์ดํฐ๋ฅผ ์ก์์ .
-ย ํด๋ผ์ด์ธํธ์์ ์ฌ์ดํผ ์ํธ(cypher suites)๋ฅผ ์๋ฒ์ ์ ๋ฌ
CF)ย ย 0-RTT :ย TLS 1.3์ ์ฌ์ฉ์๊ฐ ์ด์ ์ ๋ฐฉ๋ฌธํ ์ฌ์ดํธ๋ก ๋ค์ ๋ฐฉ๋ฌธํ๋ค๋ฉด SSL/TLS์์ ๋ณด์ ์ธ์ ์ ๋ง๋ค ๋ ๊ฑธ๋ฆฌ๋ ํต์ ์ ํ์ง ์์๋ ๋๋๊ฒ์ ์ด๋ฆ.
์ฌ์ดํผ ์ํธ(cypher suites) : ์ํธํ ์ค์ํธ
์ํธํ ์ค์ํธ์ ๊ตฌ์กฐ
->ย ์๋ฒ๋ ๋ฐ์ ์ฌ์ดํผ ์ํธ์ ์ํธํ ์๊ณ ๋ฆฌ์ฆ ๋ฆฌ์คํธ๋ฅผ ์ ๊ณตํ ์ ์๋์ง ํ์ธ
->ย ์ ๊ณตํ ์ ์๋ค๋ฉด ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ธ์ฆ์๋ฅผ ๋ณด๋ด๋ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ด ์์
->ย ์ดํ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ผ๋ก ์ํธํ๋ ๋ฐ์ดํฐ์ ์ก์์ ์ด ์์.
AEAD(Authenticated Encryption with Associated Data)ย ์ฌ์ดํผ ๋ชจ๋
-ย ย AES_128_GCM ๋ฑย ๋ฐ์ดํฐ ์ํธํ ์๊ณ ๋ฆฌ์ฆ.
์ธ์ฆย ๋ฉ์ปค๋์ฆ
-ย ย Comodo, GoDaddy, GlobalSign, ์๋ง์กด๋ฑ์ย CA(Certificate Authorities)์์ ๋ฐ๊ธํ ์ธ์ฆ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฃจ์ด์ง.
์ธ์ฆ์(ย ์๋น์ค ์ ๋ณด, ๊ณต๊ฐํค, ์ง๋ฌธ, ๋์งํธ ์๋ช
๋ฑ์ผ๋ก ์ด๋ฃจ์ด์ง)๋ ์์ ํ ์ฐ๊ฒฐ์ย ํ์ํ โ๊ณต๊ฐํคโ๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๊ณต
->ย ์ฌ์ฉ์๊ฐ ์ ์ํ โ์๋ฒ๊ฐ ์ ๋ขฐโํ ์ ์๋ ์๋ฒ์์ ๋ณด์ฅ
CAย ๋ฐ๊ธย ๊ณผ์
1)ย ์์ ์ ์ฌ์ดํธ ์ ๋ณด์ ๊ณต๊ฐํค๋ฅผ CA์ ์ ์ถ
2)ย ๊ณต๊ฐํค๋ฅผ ํด์ํ ๊ฐ์ธ ์ง๋ฌธ(finger print)์ ์ฌ์ฉํ๋ CA์ ๋น๋ฐํค ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก CA ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ
์ํธํ ์๊ณ ๋ฆฌ์ฆ(ํค ๊ตํ ์ํธํ ์๊ณ ๋ฆฌ์ฆ)
-ย ๋์๊ณก์ ๊ธฐ๋ฐ์ ECDHE(Elliptic Curve Diffie-Hellman Ephermeral) ๋๋ ๋ชจ๋์ ๊ธฐ๋ฐ์ DHE(Diffie-Hellman Ephermeral)๋ฅผ ์ฌ์ฉ.
๋ ์๊ณ ๋ฆฌ์ฆ ๋ชจ๋ย ๋ํผ-ํฌ๋ง(Diffie-Hellman) ๋ฐฉ์์ ๊ทผ๊ฐ์ผ๋ก ํจ.
๋ํผ-ํฌ๋งย ํคย ๊ตํย ์ํธํย ์๊ณ ๋ฆฌ์ฆ(Diffie-Hellman key exchange) :
ํด์ฑ ์๊ณ ๋ฆฌ์ฆ
-ย ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ๊ธฐ ํ๋ ๋ ์๊ณ , ์์ฌ ์๋ ์กฐ๊ฐ์ผ๋ก ๋ง๋๋ ์๊ณ ๋ฆฌ์ฆ
-ย SSL/TLS๋ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก SHA-256(๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ) ์๊ณ ๋ฆฌ์ฆ๊ณผ SHA-384 ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ.
SHA-256ย ์๊ณ ๋ฆฌ์ฆ
-ย ํด์ ํจ์์ ๊ฒฐ๊ด๊ฐ์ด 256๋นํธ์ธ ์๊ณ ๋ฆฌ์ฆ
-ย ๋นํธ ์ฝ์ธ์ ๋น๋กฏํ ๋ง์ ๋ธ๋ก์ฒด์ธ ์์คํ
์์๋ ์ฐ์.
-ย ํด์ฑ์ ํด์ผ ํ ๋ฉ์์ง์ 1์ ์ถ๊ฐํ๋ ๋ฑ ์ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์ ์ฒ๋ฆฌ๋ ๋ฉ์์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด์๋ฅผ ๋ฐํ.
- ํด์ย :ย ๋ค์ํ ๊ธธ์ด๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ๋ ๊ธธ์ด๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ก ๋งคํ(mapping)ํ ๊ฐ
SEO(Search Engine Optimization)
- **** HTTPS๋ SEO์๋ ๋์์ด ๋จ.(๊ตฌ๊ธ(Google)์ SSL ์ธ์ฆ์๋ฅผ ๊ฐ์กฐํด์๊ณ ์ฌ์ดํธ ๋ด ๋ชจ๋ ์์๊ฐ ๋์ผํ๋ค๋ฉด HTTPS ์๋น์ค๋ฅผ ํ๋ ์ฌ์ดํธ๊ฐ ๊ทธ๋ ์ง ์์ ์ฌ์ดํธ๋ณด๋ค SEO ์์๊ฐ ๋์ ๊ฒ์ด๋ผ๊ณ ๊ณต์์ ์ผ๋ก ๋ฐํ)
SEO(Search Engine Optimization) : ๊ฒ์์์ง ์ต์ ํ.
- SEO์ ๋ฐฉ๋ฒ์ผ๋ก ย ์บ๋ ธ๋์ปฌ ์ค์ , ๋ฉํ ์ค์ , ํ์ด์ง ์๋ ๊ฐ์ , ์ฌ์ดํธ๋งต ๊ด๋ฆฌ ๋ฑ์ ๋ฐฉ๋ฒ์ด ์์.
์บ๋ ธ๋์ปฌย ์ค์
-ย ์ฌ์ดํธ link์ ์บ๋ ธ๋์ปฌ์ ์ค์
<link rel="canonical" href="<https://example.com/page2.php>" />
๋ฉํ ์ค์
-ย html ํ์ผ์ ๊ฐ์ฅ ์๋ถ๋ถ์ธ ๋ฉํ๋ฅผ ์ ์ค์ ํด์ผ ํจ.
ํด๋น ๋ธ๋ก๊ทธ๋ ๊ตฌ๊ธ ๊ฒ์์์ง์ ๋ฑ๋กํ๊ธฐ ์ํด ๋ฉํ๋ฅผ ๋ณ๋๋ก ์ค์ ํด ๋์๋ค.
ํ์ด์งย ์๋ย ๊ฐ์
-ย https://developers.google.com/speed/pagespeed/insights/ย ๋ฑ ํ์ด์ง์ ์๋๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฆฌํฌํ ๋ฐ์ผ๋ฉฐ ๊ด๋ฆฌํด์ผ ํจ.
์ฌ์ดํธ๋งต ๊ด๋ฆฌ
-ย ์ฌ์ดํธ๋งต์ ๋ค์๊ณผ ๊ฐ์ ํ์์ xml ํ์ผ์ ๋งํจ.
ํด๋น ๋ธ๋ก๋๋ ๊ตฌ๊ธ ๊ฒ์์์ง ๋
ธ์ถ์ ๋์ด๊ธฐ ์ํด ์ฌ์ดํธ๋งต์ ๋ฑ๋กํด๋์.
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="<http://www.sitemaps.org/schemas/sitemap/0.9>">
<url>
<loc><http://kundol.co.kr/></loc>
<lastmod>์์ ๋ ์ง</lastmod>
<changefreq>daily</changefreq>
<priority>1.1</priority>
</url>
</urlset>
HTTPSย ๊ตฌ์ถย ๋ฐฉ๋ฒ
1)ย CA์์ ๊ตฌ๋งคํ ์ธ์ฆํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTTPS ์๋น์ค๋ฅผ ๊ตฌ์ถ.
2)ย ์๋ฒ ์๋จ์ HTTPS๋ฅผ ์ ๊ณตํ๋ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ๋์ด ๊ตฌ์ถ.
3)ย ์๋ฒ ์๋จ์ HTTPS๋ฅผ ์ ๊ณตํ๋ CDN์ ๋์ด ๊ตฌ์ถ. ๋ฑ
5. HTTP/3
-ย HTTP/1.1 ๋ฐ HTTP/2์ ํจ๊ป World Wide Web์์ ์ ๋ณด๋ฅผ ๊ตํํ๋ ๋ฐ ์ฌ์ฉ๋๋ HTTP์ ์ธ ๋ฒ์งธ ๋ฒ์ .
-ย HTTP/3์ QUIC์ด๋ผ๋ ๊ณ์ธต ์์์ ๋์๊ฐ๋ฉฐ, TCP ๊ธฐ๋ฐ์ด ์๋ UDP ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ.
CF)ย ย HTTP/2 :ย TCP ์์์ ๋์๊ฐ.
- ์ฅ์ :ย HTTP/2์์ ์ฅ์ ์ด์๋ ๋ฉํฐํ๋ ์ฑ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๊ธฐ ์ฐ๊ฒฐ ์ค์ ์ ์ง์ฐ ์๊ฐ ๊ฐ์๋จ.
QUIC : ์ด๊ธฐย ์ฐ๊ฒฐย ์ค์ ย ์ย ์ง์ฐย ์๊ฐย ๊ฐ์
-ย QUIC์ TCP๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ํต์ ์ ์์ํ ๋ 3-์จ์ด ํธ๋์ ฐ์ดํฌ ๊ณผ์ ์ ๊ฑฐ์น์ง ์์๋ ๋จ.
- QUIC์ ์๋ฐฉํฅ ์ค๋ฅ ์์ ๋ฉ์ปค๋์ฆ(FEC, Forword Error Correction)์ด ์ ์ฉ๋จ.
๋ฐ๋ผ์, ์ ์กํ ํจํท์ด ์์ค๋์๋ค๋ฉด ์์ ์ธก์์ ์๋ฌ๋ฅผ ๊ฒ์ถํ๊ณ ์์ ํ๋ ๋ฐฉ์์ด๋ฉฐ ์ด์ ํ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ๋ฎ์ ํจํท ์์ค๋ฅ ์ ๋ณด์.
-ย ์ฒซ ์ฐ๊ฒฐ ์ค์ ์ 1-RTT๋ง ์์๋จ.
์ฆ,ย ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ด๋ค ์ ํธ๋ฅผ ํ ๋ฒ ์ฃผ๊ณ , ์๋ฒ๋ ๊ฑฐ๊ธฐ์ ์๋ตํ๊ธฐ๋ง ํ๋ฉด ๋ฐ๋ก ๋ณธ ํต์ ์ ์์.
'CS > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] ์ฃ์ง ์ผ์ด์ค์ ์ฝ๋ ์ผ์ด์ค๋ ๋ญ๊น?(feat.. ์กฐ๊ธ ๋ ์์ ์ฑ ์๋ ์๋น์ค๋ฅผ ํฅํ์ฌ..) (0) | 2024.01.16 |
---|---|
www.google.com์ ์ฃผ์์ฐฝ์ ์ณค์ ๋ ํ๋ฉด์ด ๋์ค๊ธฐ๊น์ง์ ๊ณผ์ (0) | 2024.01.01 |
[CS, WEB, HTTP] RESTful API๋?(API, REST API, RESTful API) (0) | 2023.06.13 |
[JAVA] Static (0) | 2023.06.13 |
[TIL] 3 way handshake, 4 way handshake (0) | 2023.06.08 |
์ผ๋์ ์ฝ๋ฉ ์ผ๊ธฐ์ฅ :) #์ฝ๋ฉ๋ธ๋ก๊ทธ #๊ธฐ์ ๋ธ๋ก๊ทธ #์ฝ๋ฉ #์กฐ๊ธ์ฉ,๊พธ์คํ
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!