itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 점주
  • AppleDevloperAcademy
  • nosql
  • SwiftUI
  • SWIFT
  • binding
  • ios
  • POSTECH
  • mongodb
  • 어플
  • CS
  • 생활코딩
  • 연결리스트
  • 세그멘테이션
  • 개발자
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • 독립서점
  • 킨디
  • CoreData
  • crud

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[CS - 네트워크] HTTP (개념, 구조, method, status code 등)
CS/네트워크

[CS - 네트워크] HTTP (개념, 구조, method, status code 등)

2023. 2. 20. 17:48

HTTP

HTTP가 뭘까? 광범위한 질문일 수도 있다. 우선 단어의 뜻부터 찬찬히 살펴보자.

 

뜻

HTTP는 Hyper Text Transport Protocol, 텍스트 전송 프로토콜이다. HTTP를 통해 컴퓨터끼리 텍스트 데이터를 전송한다.

구체적으로 어떻게 HTTP로 데이터를 전송하는 걸까?

 

구조

클라이언트는 서버에게 HTTP Request를 보내고, 서버는 클라이언트에게 HTTP Response를 보낸다.

HTTP Request는 start line, header, body로 이루어져 있고, start line은 method, path, HTTP version으로 구성되어 있다.

HTTP Response는 status line, header, body로 이루어져 있고, status line은 HTTP version, status code, status messsage로 구성되어 있다.

 

예시

 

특징

  • Connectionless

‘연결 없음’보다 ‘연결 끊음’으로 이해하는 게 더 좋을 것 같다. HTTP는 전송이 완료되면 곧바로 연결을 끊는다. 사용하지 않으면 빨리 자리를 비켜주기 때문에, 다른 컴퓨터들도 신속하고 효율적으로 서버를 이용할 수 있다. like 남을 배려하는 문화

  • Stateless

‘상태 없음’보다 ‘상태 모름 …’ 으로 이해하는 게 더 좋을 것 같다. HTTP의 Connectionless 특징으로 이전 정보를 모른다. 매번 새롭게 연결하기 때문에 상태에 대한 정보를 모른다.

  • cookie, session 등

상태의 정보를 모르는 점을 보완하기 위해 cookie, session을 쓸 수 있다.

  • HTTPS

HTTP는 Hyper Text를 전송하는 프로토콜이기 때문에, 도중에 누군가 이 글자를 탈취하여 악용할 수도 있다. 그래서 HTTP에 암호화를 추가한 것이 HTTPS다.

 

 

GET과 POST 비교

HTTP Request의 method 중 대표적인 것으로 GET과 POST가 있다. 이 둘은 어떤 게 같고, 어떻게 다를까?

 

GET

GET은 말 그대로 ‘가져온다’는 뜻이다. 즉 서버 컴퓨터에게 데이터 달라고 요청하는 것이다. CRUD의 Read라고 이해하면 된다.

URL에 String query문을 붙여서 원하는 정보를 특정한다. (내가 원하는 건 이거야. 이거 내놔)

URL로 특정하기 때문에 브라우저 히스토리에 남는다. 그래서 캐시를 사용하여 이전에 불렀던 값은 곧바로 불러낼 수 있다.

 

q와 get이 key와 value 쌍이다.

 

POST

POST는 서버 컴퓨터에게 데이터 처리를 요청하는 것이다. CRUD의 Create, Update, Delete라고 이해하면 된다.

POST에서는 메세지를 body에 담기 때문에 브라우저 히스토리도 남지 않고 아무것도 남지 않는다. 그래서 캐시를 활용하지 못한다.

 

표 정리

 

PUT과 PATCH

PUT과 PATCH는 둘 다 데이터를 수정한다는 공통점이 있다. 그렇다면, 어떤 점이 다를까?

// Server resource
// Before 
user/10
{
	name: Noname,
	language: C++
}

// Request
PUT user/10 
{
	name: Nossi,
}

// After
user/10 
{
	name: Nossi,
}
// Server resource
// Before 
user/10
{
	name: Noname,
	language: C++
}

// Request
PATCH user/10 
{
	name: Nossi
}

// After
PATCH user/10 
{
	name: Nossi,
	language: C++
}

PUT은 전체 데이터를 수정하고, PATCH는 데이터의 일부를 수정한다.

위의 코드를 보면, 수정한다고 적은 코드는 똑같지만, 결과는 다르다.

PUT은 전체 데이터를 바꾸는 것이기 때문에 Nossi가 들어간 내용만 남는다.

PATCH는 데이터의 일부를 수정하는 것이기 때문에 name만 수정되고, language는 그대로 남아있다.

 

 

HTTP Response의 status code

status code는 서버의 HTTP Response에서 status line에 포함된 code이다. 이는 서버의 응담에 관한 간단한 설명이다. 어떤 것들이 있는지 알아보자.

 

종류

  • 1xx : 정보 → 요청을 받았고, 작업 계속 처리중임을 알림
  • 2xx : 성공 → 요청을 성공적으로 처리
  • 3xx : 리다이렉션 → 요청을 완료하기 위해 필요한 추가적인 정보 요구
  • 4xx : 클라이언트 오류 → 클라이언트 쪽 오류로 처리 실패
  • 5xx : 서버 오류 → 서버 쪽 오류로 처리 실패

 

대표적인 것

저작자표시 (새창열림)

'CS > 네트워크' 카테고리의 다른 글

[CS - 네트워크] HTTP와 HTTPS  (0) 2023.02.21
[CS - 네트워크] 검색창에 “www.google.com”을 검색하면 네트워크에서 벌어지는 일 (네트워크 관점)  (0) 2023.02.20
[CS - 네트워크] 쿠키와 세션 (Cookie, Session)  (0) 2023.02.19
[CS - 네트워크] 3-way handshaking, 4-way handshaking  (0) 2023.02.14
[CS - 네트워크] TCP와 UDP  (0) 2023.02.14
    'CS/네트워크' 카테고리의 다른 글
    • [CS - 네트워크] HTTP와 HTTPS
    • [CS - 네트워크] 검색창에 “www.google.com”을 검색하면 네트워크에서 벌어지는 일 (네트워크 관점)
    • [CS - 네트워크] 쿠키와 세션 (Cookie, Session)
    • [CS - 네트워크] 3-way handshaking, 4-way handshaking
    itisjustK
    itisjustK

    티스토리툴바