본문 바로가기
[개발] Info/용어

[Network] HTTP 통신

by Devsong26 2021. 5. 31.

가장 기초적인 HTTP method인 get, post에 대해서도 제대로 알고 있지 못했었다.

그래서 대략적인 HTTP 통신을 정리하려고 한다.

 

 

HTTP란?

  • HyperText Transfer Protocol의 약자로 W3 상에서 정보를 주고받을 수 있는 프로토콜이며, 주로 HTML 문서를 주고받는 데에 쓰임
  • 80번 포트를 사용
  • 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜

 

HTTP 통신 방식

  • 클라이언트와 서버 사이의 통신은 평문(ASCII) 메시지로 이루어진다.
  • 클라이언트는 서버에게 요청메시지를 서버는 클라이언트에게 응답메시지를 보낸다.

 

HTTP method

GET, POST, DELETE, UPDATE를 많이 사용하며 그 외의 Method도 많이 존재한다.

 

GET

  • 반드시 서버의 리소스를 요청할 때만 사용
  • 요청 파라미터가 header에 추가됨 
    • 파라미터는 URL에 뒤에 querystring으로 붙음
    • ASCII code가 아닌 파라미터일 경우에는 URLEncoding을 해야 함
    • URL에 붙는 파라미터는 길이 제한이 있음
    • 파라미터가 URL에 노출되므로 중요한 데이터를 보내지 않음(ex, 아이디, 비밀번호)
  • 요청이 캐쉬됨
  • 브라우저 히스토리에 남음
  • 요청이 북마크가 될 수 있음
  • 결코 민감한 데이터를 다룰 때는 사용되면 안 됨

POST

  • 서버의 리소스를 생성하거나 수정할 때 사용되는 요청(POST가 수정일 때, UPDATE는 생성)
  • 파라미터는 body에 담겨 요청
    • 길이의 제한이 없음
    • 민감한 데이터를 보낼 때 사용
    • 파라미터를 URLEncoding 하지 않아도 됨
    • 파일이나 바이너리 파일도 파라미터로 보낼 수 있음
  • 요청이 캐쉬되지 않음
  • 브라우저 히스토리로 남지 않음
  • 요청이 북마크될 수 없음

DELETE

  • 서버의 리소스를 삭제할 때 사용하는 요청 메소드

UPDATE

  • 서버의 리소스를 수정할 때 사용되는 요청(POST가 수정으로 쓰이면 UPDATE 생성)

HTTP 상태 코드

코드 메시지 설명 예시
200 Success 성공적으로 요청에 대한 응답을 받음  
302 Redirect 요청을 처리하는 서버가 다른 uri로 요청을 넘김 - 로그인하고 메인 페이지 이동
- 인증없는 요청일 경우 로그인 페이지로 이동
400 Bad request 요청에 필요한 파라미터가 누락 서버 개발할 때 자주 나타남
403 Forbidden 금지, 권한없이 서버 요청을 할 경우 일반 사용자가 관리자 리소스 요청 시
404 Not found 서버에 요청 리소스가 없을 경우  
429 Too many request 서버 리소스를 너무 많이 요청할 경우 설정하지 않을 경우는 발생하지 않으며 특히 인스타그램의 게시글을 빠른 시간에 자주 요청하면 자주 볼 수 있는 에러 코드
500 Internal server error 서버에서 요청을 처리하다 에러가 발생한 경우 런타임 에러 등
502 Bad gateway 게이트웨이 상태 나쁨,
서버가 게이트웨이 서버에 요청을 할 때 업스트림으로 불명확한 응답을 받게 되는 경우
 
503 Service Unavailable 외부 서비스가 죽었거나 현재 멈춘 상태 또는 이용할 수 없는 서비스 요청을 했는데 서버 리소스가 404인 경우 발생
504 Gateway timeout 프록시나 게이트웨이의 역할을 하는 서버에서 볼 수 있음. 초기 서버가 원격 서버로부터 응답을 받을 수 없음. (HTTP 1.1에서 새로 등장) Nginx가 리버스 프록시하는 서비스가 재기동할 경우나 죽은 경우

 

HTTP 메시지 구성

header와 body로 구성

 

참고

ko.wikipedia.org/wiki/HTTP

www.w3schools.com/tags/ref_httpmethods.asp

www.diffen.com/difference/GET-vs-POST-HTTP-Requests

'[개발] Info > 용어' 카테고리의 다른 글

gRPC  (0) 2023.10.22
유니코드(Unicode)  (0) 2022.03.24
Locale  (0) 2018.03.25
Character Set과 인코딩  (0) 2018.02.05
Appium  (0) 2018.01.28