ν”„λ‘œκ·Έλž˜λ°/CS

[λ„€νŠΈμ›Œν¬] HTTPλž€ λ¬΄μ—‡μΌκΉŒμš”?

μš©λ‡½ 2023. 11. 20. 18:15
λ°˜μ‘ν˜•

[λ„€νŠΈμ›Œν¬] HTTPλž€ λ¬΄μ—‡μΌκΉŒμš”?

μ •μ˜

HTTPλž€ Hyper Text Transfer Protocol의 μ•½μžλ‘œ μ›Ήμƒμ—μ„œ 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

μž‘λ™μ›λ¦¬

HTTPλŠ” ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ λͺ¨λΈμ— κΈ°λ°˜μ„ 두고 μžˆμŠ΅λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— μš”μ²­(request)λ₯Ό 보내고,

μ„œλ²„λŠ” 이에 λŒ€ν•œ 응닡(response)을 λ³΄λƒ…λ‹ˆλ‹€.

HTTP λ©”μ†Œλ“œ

HTTP λ©”μ†Œλ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μˆ˜ν–‰ν•˜λŠ” λ™μž‘μ„ μ„œλ²„μ—κ²Œ μ•Œλ €μ€λ‹ˆλ‹€.

즉, ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­(request)의 λͺ©μ μ— 따라 μ μ ˆν•œ HTTP λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

 

HTTP λ©”μ†Œλ“œ μ„€λͺ… μ‚¬μš© μ˜ˆμ‹œ
GET 데이터 쑰회λ₯Ό μš”μ²­ νŠΉμ • νŽ˜μ΄μ§€ 접속, 정보 검색
POST 데이터 생성 μš”μ²­ νšŒμ›κ°€μž…, κΈ€μ“°κΈ°
PUT 데이터 μˆ˜μ • μš”μ²­ νšŒμ› 정보 μˆ˜μ •, κΈ€ μˆ˜μ •
DELETE 데이터 μ‚­μ œ μš”μ²­ νšŒμ› 정보 μ‚­μ œ, κΈ€ μ‚­μ œ

 


ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ ν”„λ‘œν† μ½œμ„ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ™„μ „νžˆ λ”°λ₯΄μ§€ μ•Šλ”λΌλ„ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ—μ„œ λ™μΌν•œ ν˜•μ‹μ„ 따라도 λ™μž‘ν•˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, 데이터 μ‚­μ œ μš”μ²­μ—μ„œ DELETE λ©”μ†Œλ“œκ°€ μ•„λ‹Œ POST λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ„œλ²„κ°€ κ°œλ°œλ˜μ–΄ μžˆλ‹€λ©΄ μ΄λ•Œ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ μ ˆν•œ 양식을 μ§€μΌœ μ£Όν‚€λ§Œ ν•œλ‹€λ©΄ μ„œλ²„ μž…μž₯μ—μ„œλŠ” μ΄λŸ¬ν•œ 정보λ₯Ό λͺ©μ μ— 맞게 μ²˜λ¦¬ν•  μˆ˜λ„ μžˆκ² μ§€λ§Œ, 기본적인 κ·œκ²©μ€ μœ„μ˜ ν‘œμ™€ 같은 λ©”μ†Œλ“œλ“€μ„ λ”°λ₯΄λ„둝 μ œμ‹œλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

HTTP μƒνƒœ μ½”λ“œ

HTTP μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•œ κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ„Έ 자리 μˆ«μžμž…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μƒνƒœ μ½”λ“œλ₯Ό ν†΅ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆλŠ”μ§€, μ•„λ‹ˆλ©΄ μ–΄λ–€ λ¬Έμ œκ°€ λ°œμƒν–ˆλŠ”μ§€λ₯Ό μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

HTTP μƒνƒœ μ½”λ“œλŠ” μ•„λž˜μ™€ 같이 λΆ„λ₯˜λ©λ‹ˆλ‹€.

  • 1xx (정보): μš”μ²­μ„ λ°›μ•˜μœΌλ©° ν”„λ‘œμ„ΈμŠ€λ₯Ό 계속 진행
  • 2xx (성곡): μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰
  • 3xx (λ¦¬λ‹€μ΄λ ‰μ…˜): ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μΆ”κ°€ μž‘μ—…μ„ 진행해야 함
  • 4xx (ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜): ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­ 문법이 잘λͺ»λ˜μ—ˆκ±°λ‚˜ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†μŒ
  • 5xx (μ„œλ²„ 였λ₯˜): μ„œλ²„κ°€ μš”μ²­μ— λŒ€ν•΄ μ²˜λ¦¬ν•  수 μ—†μŒ

μ‚¬μš©μ˜ˆμ‹œ

νŠΉμ •ν•œ μ›Ή μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜λ©΄, 기본적으둜 GET λ°©μ‹μœΌλ‘œ ν˜ΈμΆœμ„ μ§„ν–‰ν•©λ‹ˆλ‹€.

개발자 도ꡬ -> λ„€νŠΈμ›Œν¬ 탭을 확인해 보면 μ–΄λ–€ μš”μ²­μ„ 보내고 μ–΄λ–€ 응닡을 λ°›μ•˜λŠ”μ§€μ— λŒ€ν•œ κ²°κ³Όλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

νŠΉμ§•

λ¬΄μƒνƒœμ„±(Stateless)

HTTPλŠ” μƒνƒœλ₯Ό μ €μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

즉, ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­μ„ 보내면 μ„œλ²„μ—μ„œ 응닡을 μ€€ 후에 연결을 λŠμ–΄λ²„λ¦¬λ©°, 이 κ³Όμ •μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ μ–΄λ– ν•œ 정보도 가지고 μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

μ΄λŸ¬ν•œ νŠΉμ„±μ€ μ„œλ²„μ˜ μ²˜λ¦¬λŸ‰μ„ 쀄여 μ„œλ²„μ˜ λΆ€ν•˜λ₯Ό κ°μ†Œμ‹œν‚€λŠ” νš¨κ³Όκ°€ μžˆμ§€λ§Œ,

ν΄λΌμ΄μ–ΈνŠΈμ˜ 이전 μƒνƒœλ₯Ό μ•Œ 수 μ—†λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€.

 

μ˜ˆμ‹œλ‘œ μƒν’ˆ 확인 -> μž₯λ°”κ΅¬λ‹ˆ -> 결제의 과정이 μ‹œμŠ€ν…œμ μœΌλ‘œ μƒνƒœ μ •λ³΄λ‘œ κΈ°λ‘λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄μ„œ μΏ ν‚€, μ„Έμ…˜, 토큰 λ“±κ³Ό 같은 기술이 μ‚¬μš©λ©λ‹ˆλ‹€.

λΉ„μ—°κ²°μ„±(Connectionless)

μ„œλ²„κ°€ ν•˜λ‚˜μ˜ μš”μ²­μ„ μ²˜λ¦¬ν•œ 후에 연결을 λŠμ–΄λ²„λ¦½λ‹ˆλ‹€.

즉, ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ μš”μ²­μ„ 보내고 μ„œλ²„μ—μ„œ κ·Έ μš”μ²­μ— λŒ€ν•œ 응닡을 보낸 ν›„μ—λŠ” λ°”λ‘œ 연결을 μ’…λ£Œν•©λ‹ˆλ‹€.

 

이 νŠΉμ„±μ€ μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 있게 λ˜μ§€λ§Œ, 맀번 μƒˆλ‘œμš΄ 연결을 μƒμ„±ν•˜κ³  μ’…λ£Œν•˜λŠ”λ° λ“œλŠ” λΉ„μš©μ΄ ν¬λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€.

 

μ΄λŸ¬ν•œ 단점을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄ HTTP1.1λΆ€ν„° Keep-Alive λ©”μ»€λ‹ˆμ¦˜μ΄ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


Keep-AliveλŠ” ν•œ 번의 TCP 연결을 톡해 μ—¬λŸ¬ 개의 HTTP μš”μ²­κ³Ό 응닡을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ λ°©λ²•μž…λ‹ˆλ‹€.

즉, HTTP μš”μ²­κ³Ό 응닡이 λλ‚˜λ„ 연결을 λ°”λ‘œ λŠμ§€ μ•Šκ³ , 일정 μ‹œκ°„ λ™μ•ˆ 연결을 μœ μ§€ν•¨μœΌλ‘œμ¨, 좔가적인 μš”μ²­μ΄ λ“€μ–΄μ˜¬ 경우 λΉ λ₯΄κ²Œ 응닡할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ ν•˜λ‚˜μ˜ μ›Ή μ‚¬μ΄νŠΈμ— λ°©λ¬Έν•˜λ©΄, ν•΄λ‹Ή μ‚¬μ΄νŠΈλŠ” 보톡 μˆ˜μ‹­ 개의 파일(HTML, CSS, JavaScript λ“±)을 μ œκ³΅ν•˜κ²Œ λ©λ‹ˆλ‹€.

이럴 λ•Œ 맀번 μƒˆλ‘œμš΄ 연결을 μƒμ„±ν•˜κ³  μ’…λ£Œν•˜λŠ” 것은 λΉ„νš¨μœ¨μ μ΄κΈ° λ•Œλ¬Έμ— Keep-Aliveλ₯Ό μ‚¬μš©ν•˜λ©΄ λΉ„ 효율적인 λΉ„μš©μ„ 쀄이고, λ„€νŠΈμ›Œν¬μ˜ νš¨μœ¨μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

HTTP와 HTTPS의 차이점

HTTPSλŠ” HTTP에 λ³΄μ•ˆ κΈ°λŠ₯을 μΆ”κ°€ν•œ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

SSL(Secure Sockets Layer) λ˜λŠ” TLS(Transport Layer Security) ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄ 데이터λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ λ°μ΄ν„°μ˜ κΈ°λ°€μ„±κ³Ό 무결성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

즉, HTTP와 HTTPS의 κ°€μž₯ 큰 차이점은 λ³΄μ•ˆμ„±μž…λ‹ˆλ‹€.HTTPλŠ” ν…μŠ€νŠΈ 데이터λ₯Ό κ·ΈλŒ€λ‘œ μ „μ†‘ν•˜λŠ” 반면, HTTPSλŠ” 데이터λ₯Ό μ•”ν˜Έν™” ν•˜μ—¬ μ „μ†‘ν•©λ‹ˆλ‹€.

 

λ°˜μ‘ν˜•