Back

웹 기초 정리(2) - HTTP/HTTPS

HTTP/HTTPS

HTTP란?

  • HTTP란 Hyper Text Transfer Protocol의 약자로 말 그대로 하이퍼 텍스트를 전송
  • HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜

특징

  • 무상태(Stateless): HTTP는 상태를 저장하지 않는다. 즉, 통신간의 연결 상태 처리나, 정보를 저장할 필요가 없기 때문에 서버 디자인이 간단해진다는 장점이 있다. 만약 저장이 필요한 경우에는 쿠키나 세션을 활용해 정보를 저장할 수 있다.
  • 비연결성(Connectionless): HTTP는 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트의 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어버리는 성질을 말한다. 이러한 특징의 장점은 컴퓨터마다 매번 연결을 유지할 필요가 없기 때문에 리소스를 줄일 수 있어 더 많은 연결을 그때그때 수행할 수 있다는 장점이 있다. 하지만 연결 해제를 매번 해주어야 때문에 이에 대한 오버헤드가 일어난다는 단점또한 가지고 있다.

흐름

  1. TCP 연결을 Open
  2. HTTP 메시지를 전송
  3. 서버에 의해 전송된 응답
  4. 연결을 닫거나 다른 요청들을 위해 재사용합니다.

HTTP Method

HTTP Method 전송 형태 설명
GET GET [request-uri]?query_string - 요청받은 URI의 정보를 검색하여 응답한다. - GET을 사용하는 요청은 오직 데이터를 받기만 한다.
HEAD HEAD [request-uri] - HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않는다. - 웹서버 정보확인, 헬스체크, 버젼확인, 최종 수정일자 확인등의 용도로 사용된다.
POST POST [request-uri] Content-Type:[Content Type] [데이터] - 요청된 자원을 생성/수정한다. - 새로 작성된 리소스인 경우 HTTP헤더 항목 Location : URI주소를 포함하여 응답한다.
PUT PUT [request-uri] Content-Type:[Content Type] [데이터] - 요청된 자원을 수정(UPDATE)한다. - 내용 갱신을 위주로 Location : URI를 보내지 않아도 된다. - 클라이언트측은 요청된 URI를 그대로 사용하는 것으로 간주한다.
PATCH PATCH [request-uri] Content-Type:[Content Type] [데이터] - PUT과 유사하게 요청된 자원을 수정(UPDATE)할 때 사용한다. - PUT의 경우 자원 전체를 갱신하는 의미지만, PATCH는 해당 자원의 일부를 교체하는 의미로 사용한다.
DELETE DELETE [request-uri] - 요청된 자원을 삭제할 것을 요청함. - 안전성 문제로 대부분의 서버에서 비활성한다.
CONNECT CONNECT [request-uri] 동적으로 터널 모드를 교환, 프락시 기능을 요청시 사용한다.
TRACE TRACE [request-uri] 원격지 서버에 루프백 메시지 호출하기 위해 테스트용으로 사용한다.
OPTIONS OPTIONS [request-uri] 웹서버에서 지원되는 메소드의 종류를 확인할 경우 사용한다.

HTTP 응답 코드

  1. 조건부 응답
응답코드 설명
100 Continue (클라이언트로 부터 일부 요청을 받았으며 나머지 정보를 계속 요청함)
101 Switching protocols
102 처리
  1. 성공
응답코드 설명
200 OK(요청이 성공적으로 수행되었음)
201 Created (PUT 메소드에 의해 원격지 서버에 파일 생성됨)
202 서버가 요청을 접수했지만 아직 처리하지 않았다.
203 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있다.
204 No content, (사용자 요구 처리하였으나 전송할 데이터가 없음)
205 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는다. 204 응답과 달리 이 응답은 요청자가 문서 보기를 재설정할 것을 요구한다(예: 새 입력을 위한 양식 비우기).
206 서버가 GET 요청의 일부만 성공적으로 처리했다.
  1. 리다이렉션 완료
응답코드 설명
300 서요청한 페이지를 새 위치로 영구적으로 이동했다. GET 또는 HEAD 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달된다.
301 Moved permanently (요구한 데이터를 변경된 타 URL에 요청함)
302 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다.
303 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시한다. HEAD 요청 이외의 모든 요청을 다른 위치로 자동으로 전달한다.
304 마지막 요청 이후 요청한 페이지는 수정되지 않았다. 서버가 이 응답을 표시하면 페이지의 콘텐츠를 표시하지 않는다. 요청자가 마지막으로 페이지를 요청한 후 페이지가 변경되지 않으면 이 응답(If-Modified-Since HTTP 헤더라고 함)을 표시하도록 서버를 구성해야 한다.
305 요청자는 프록시를 사용하여 요청한 페이지만 액세스할 수 있다. 서버가 이 응답을 표시하면 요청자가 사용할 프록시를 가리키는 것이기도 하다.
307 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다.
  1. 요청 오류
응답코드 설명
400 Bad request (사용자의 잘못된 요청을 처리할 수 없음)
401 Unauthorized (인증이 필요한 페이지를 요청한 경우)
402 Payment required(예약됨)
403 Forbidden (접근 금지, 디렉터리 리스팅 요청 및 관리자 페이지 접근 등을 차단)
404 Not found, (요청한 페이지 없음)
405 Method not allowed (혀용되지 않는 http method 사용함)
407 Proxy authentication required (프락시 인증 요구됨)
408 Request timeout (요청 시간 초과)
409 서버가 요청을 수행하는 중에 충돌이 발생했다. 서버는 응답할 때 충돌에 대한 정보를 포함해야 한다. 서버는 PUT 요청과 충돌하는 PUT 요청에 대한 응답으로 이 코드를 요청 간 차이점 목록과 함께 표시해야 한다.
410 Gone (영구적으로 사용 금지)
412 Precondition failed (전체 조건 실패)
414 Request-URI too long (요청 URL 길이가 긴 경우임)
  1. 서버오류
응답코드 설명
500 Internal server error (내부 서버 오류)
501 Not implemented (웹 서버가 처리할 수 없음)
503 Service unnailable (서비스 제공 불가)
504 Gateway timeout (게이트웨이 시간 초과)
505 HTTP version not supported (해당 http 버전 지원되지 않음)

HTTP란?

  • HTTPS는 기본 골격이나 사용 목적 등은 HTTP와 거의 동일하지만, 데이터를 주고 받는 과정에 ‘보안’ 요소가 추가됨
  • HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화된다.
  • HTTPS는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작

SSL / TLS

  • SSL은 넷스케이프에 의해 작성된 프로토콜
  • 1995년 version1은 출시되지 않았고, version2는 넷스케이프 1.1 브라우저로 시작
  • 버전 2에 몇가지 주요 보안 문제가 있어서, version3을 출시
  • 이후 1999년이 끝나기 전에 IETF는 TLS1.0을 발표
  • TLS1.1버전이 2006년에 릴리즈 되었고, 2008년에 TLS1.2버전이 몇가지 결함과 악용을 해결하기 위해 릴리즈
  • 혼란 야기 방지차원에서 SSL 3.0은 2015년 공식적으로 사용 종료
  • 이후 TLS 1.3 버전은 보안 2018년 3월에 승인됨
  • TLS 1.3버전은 보안 기능을 크게 향상시키고 이전의 약한 기능을 제거

출처 및 참고

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://hanamon.kr/네트워크-http-http란-특징-무상태-비연결성/
https://kyun2da.dev/CS/http란/
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods https://ko.wikipedia.org/wiki/HTTP_상태_코드 https://incheol-jung.gitbook.io/docs/q-and-a/computer-science/http-method https://rachel-kwak.github.io/2021/03/08/HTTPS.html https://bumday.tistory.com/43

comments powered by Disqus