TIL | HTTP 요청과 응답 - 이론

김윤희·2022년 8월 1일
0

HTTP 요청과 응답 - 이론

프로토콜이란?


  • 서로 간에 통신을 위한 약속 규칙
    주고 받을 데이터에 대한 형식을 정의한 것
    ( 약속하지 않으면 데이터를 받아도 뭘 의미하는지 해석할 수 없게 된다 )
    ex) 야구에서 감독과 타자의 사인 주고 받기, 편지에 받는 사람, 주소 등...

HTTP(Hyper Text Transfer Protocal)란?


  • 단순하고 읽기 쉽다 - 텍스트 기반의 프로토콜
  • 상태를 유지하지 않는다(stateless) - 클라이언트 정보를 저장하지 않늗다
    • 상태를 저장하지 않기 때문에 같은 클라이언트가 두 번 요청해도 같은 사람인지 모른다
      ( 이걸 보안하기 위해서 사용하는게 쿠키와 세션 ❗ )
  • 확장 가능하다 - 커스텀 헤더(header) 추가 가능
    • ex)
      HTTP/1.1 200 OK
      Content-Length: 1024
      Content-Type: test/html
      Date:Sat, 20 Oct 2018 19:03:38 GMT
      • 한 줄씩 헤더이다 ex) Content-Length(헤더이름): 1024()
      • 대소문자 구분하지 않는다
      • 공백 무시된다

HTTP 메세지


HTTP 응답 메세지는 편지와 비슷하다
아래는 HTTP 응답 메세지의 예시

HTTP/1.1 200 OK

  • 헤더
    Content-Length: 1024
    Content-Type: test/html
    Date:Sat, 20 Oct 2018 19:03:38 GMT
  • 바디
<html>
<head>
	<title>Two Dice</title>
</head>
<body>
	<img src='resources/img/dice1.jpg'>
</body>
</html>

HTTP 메세지 - 응답 메세지


서버가 클라이언트에게 응답해주는 HTTP 메세지 형식은 아래를 예시로 들 수 있다
(이렇게 줘야 클라이언트가 응답을 이해할 수 있다)

HTTP/1.1 200 OK // 상태라인(state line) (200 - 상태코드 / OK - 설명)
Content-Length: 1024 //헤더(n줄)
Content-Type: test/html
Date:Sat, 20 Oct 2018 19:03:38 GMT
// (빈줄 - 헤더 바디 구분줄)   
<html> // 바디 실제 응답내용
<head>
	<title>Two Dice</title>
</head>
<body>
	Hello
</body>
</html>

✔ 상태코드
1xx : Informational
2xx : Success
3xx : Redirect(다른 url로 요청해라)
4xx : Client Error(요청 에러)
5xx : Server Error(서버 처리 중 에러)


HTTP 메세지 - 요청 메세지


GET / POST - 요청 메서드(방법)

  • HTTP 요청 메세지 - GET
GET/ch2/getYoil?year=2021&month=10&day=1HTTP/1.1 // 요청라인
Host: 1111.222.33.44:8080
User-Agent: Mozilla/5.0(Windows NT 10.0)
Accept: text/html
Connection:kepp-alive
// (빈줄 - 헤더 바디 구분줄)   
// 바디 없음
  • HTTP 요청 메세지 - POST
POST/ch2/getYoil HTTP/1.1 // 요청라인
Host: 1111.222.33.44:8080
User-Agent: Mozilla/5.0(Windows NT 10.0)
Accept: text/html
Connection:kepp-alive
// (빈줄 - 헤더 바디 구분줄)   
year=2021&month=10&day=1 // 바디

HTTP 메서드 - GET / POST


  • GET
    • 서버의 리소스를 가져오기 위해 설계
    • QUERY STRING을 통해 데이터 전달(소용량)
    • URL에 데이터 노출되므로 보안에 취약
    • 데이터 공유에 유리

ex) 검색엔진에서 검색단어 전송에 이용

  • POST
    • 서버에 데이터를 올리기 위해 설계됨
    • 전송 데이터 크기의 제한이 없음(대용량)
    • 데이터를 요청 메세지의 body에 담아 전송
    • 보안에 유리( HTTP+TLS - 암호화해서 보안 유리 )
    • 데이터 공유에는 불리

ex) 게시판에 글쓰기, 로그인, 회원가입

0개의 댓글