HTTP
- Hypertext Transfer Protocol 의 약자
- 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
- 클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 프로토콜
- 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용
- 다만, 전송되는 요청/응답 정보가 기본적으로 암호화 되지않아서 보안정보 도난의 위험
- 단방향성 - 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있다. (2버전 이전)
- 비연결성(connectionless) - 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료한다.
HTTP 메소드
- HTTP 메소드는 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단
- 주요 메소드 5가지
- GET : 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달한다. 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않음.
- POST : 주로 리소스를 새롭게 생성할 때 사용하며, 서버에 전달하고 싶은 데이터는 메시지 바디를 통해 전달.
- PUT : 리소스가 있으면 대체하고 리소스가 없으면 생성. 즉, 데이터를 덮어쓰기.
- PATCH : PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 리소스를 일부분만 변경할 때 사용.
- DELETE : 리소스를 제거할때 사용.
- 메소드 속성
- 안전(Safe Methods) - 계속 호출해도 리소스를 변경하지 않는 특성
- 멱등(Idempotent Methods) - 동일한 요청을 여러 번 보내도 한 번 보내는 것과 똑같은 결과를 갖는 것. GET, PUT, DELETE는 멱등하다고 볼 수 있지만, POST나 PATCH는 멱등하다고 볼 수 없음.
- 캐시가능(Cacheable Methods) - 응답 결과를 서버에 캐시 해서 사용해도 되는 메소드 GET, HEAD, POST, PATCH가 캐시가 가능하지만 구현이 어려워 실제로는 GET과 HEAD만 주로 캐싱이 쓰임
HTTP 상태코드
- 클라이언트가 보낸 요청의 처리 상태 또는 결과를 응답에서 알려주기 위한 정보
- 1xx (Informational): 요청이 수신되어 처리중
- 2xx (Successful): 요청 정상 처리
- 200 OK : 요청 성공
- 201 Created : 요청 성공해서 새로운 리소스가 생성됨
- 202 Accepted : 요청이 접수되었으나 처리가 완료되지 않았음
- 204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
- 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 : 보통 리다이렉션(넘기기) 처리
- 301 Moved Permanently : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
- 302 Found : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
- 303 See Other : 리다이렉트시 요청 메서드가 GET으로 변경
- 304 Not Modified : 캐시를 목적으로 사용
- 307 Temporary Redirect : 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다.)
- 308 Permanent Redirect : 리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)
- 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
- 400 Bad Request : 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
- 401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요
- 403 Forbidden : 서버가 요청을 이해했지만 승인을 거부
- 404 Not Found : 요청 리소스를 찾을 수 없음
- 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함
- 500 Internal Server Error : 서버 문제로 오류 발생, 애매하면 500 오류
- 501 Not Implemented : 서버에 해당 기능이 없음
- 502 Bad Gateway: 게이트웨이(서로 다른 프로토콜을 연결해주는 장치)가 잘못된 프로토콜을 연결하거나, 어느쪽 프로토콜에 문제가 있어 통신이 제대로 되지 않은 상황
- 503 Service Unavailable : 서비스 이용 불가 (서버가 다운되었을때)
HTTPS
- Hypertext Transfer Protocol Secure 의 약자
- HTTP 는 전송되는 요청/응답 정보가 기본적으로 암호화 되지않아서 보안정보 도난의 위험이 있음
- 이걸 해결하기 위해 SSL(보안 소켓 계층)을 사용
- SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 보안정보를 주고받을때 해당 정보가 도난당하는 것을 막아줌
- SSL인증방식
- 서버의 공개키를 통해 클라이언트가 대칭키를 암호화 할 수 있도록 하고
- 서버는 암호화된 대칭키를 개인키로 복호화하면서
- 암호문으로 통신하는 방법
- TLS: 전송 계층 보안(Transport Layer Security) - TLS은 SSL의 향상된, 더욱 안전한 버전
'메모 > ETC' 카테고리의 다른 글
입사 전 키워드 모음 (0) | 2024.03.30 |
---|---|
취득해야할 자격증 목록 (0) | 2024.03.25 |
CS - TCP/IP (0) | 2024.03.04 |
CS - 네트워크, OSI 7계층 (0) | 2024.03.02 |
CS - 자료구조(Stack, Queue, Hash Table, Set) (0) | 2024.03.01 |