-
HTTP(Hyper Text Transfer Protocol) : 서버-클라이언트 메시지 교환 프로토콜
- 프로토콜 : 서로 다른 하드웨어 기기 간 데이터 통신 규약
-
TCP(Transmission Control Protocol)
- 트랜스포트 계층 프로토콜
- 서버와 클라이언트 사이 통신 연결 제어
- 바이트 스트림 방식 제공(큰 데이터를 잘개 쪼개 전송)
-
IP(Internet Protocol)
- 분할된 데이터 패킷을 서버에 보냄
- IP주소와 MAP 주소 활용
-
ARP(Address Resolution Protocol): 주소를 찾아가는 프로토콜
- 수신자의 IP주소로 수소문, 도착한 후 맥주소 조사하여 루트를 찾아냄
- 중간 경유하는 네트워크 기기들은 전체 배송지 루트를 알 수 없음
- 데이터를 전송할 다음 기기 위치만 알고 있음
-
DNS (Domain Name System) : 도메인 이름 및 ip주소 확인
- URL : 웹페이지 상 표시 주소
- URI : 리소스 식별자 (URL 상위 개념)
-
Request/Response
- Request : 메서드, URI, 프로토콜 버전, 헤더, 바디
- Response : 프로토콜 버전, 상태코드, 상태코드 설명, 헤더, 바디
-
HTTP 프로토콜 특성
-
Stateless 특성을 가짐
- 과거 정보를 남기지 않고 새로운 리퀘스트를 보낼 때마다 새로운 리스폰스를 보냄
- 상태와 무관하니 확장이 쉬움
- 상태 유지가 필요할 시 쿠키와 세션 등 활용
ex) 장바구니
-
URI로 리소스 식별
-
지속 연결
- 초기 : 매번 TCP연결 필요
- 지속연결로 서버의 부하를 줄임
- HTTP 프로토콜 파이프라이닝도 가능해짐(응답을 기다리지 않고 다음 요청을 먼저 보냄)
- 성능 향상 미미, 프록시 버그가 많아 모던 브라우저에서는 기본적으로 활성화가 되어있지 않음
-
HTTP 멱등성 : 여러번 요청한 결과 서버의 상태가 항상 동일할 때를 뜻함
- GET : 특정 리소스 가져오도록 요청(데이터를 가져올때만)
- 여러번 실행해도 특정 리소스를 보내주기만 하는 것이라 멱등성 보장
- body를 담는 것이 바람직(담을 순 있지만 서버에서 거부할 수도 있음)
- POST : 대상 리소스에게 Request 본문을 해당 리소스의 sementic에 따라 처리하도록 요청하는 메서드
- 댓글 보내기, 서버의 새로운 리소스 생성
- 리소스가 생성되니 멱등성 보장 x(서버의 상태가 변하기 때문)
- PUT은 대상 리소스 없으면 생성, 있으면 리퀘스트 본문대로 교체
(멱등상태 유지)
- PATCH는 리소스 일부 수정하는데 사용
(멱등하거나 아닐수도, 예전엔 보장 x(rfc2616 스팩상)
--> 복수의 패치 요청이 부작용을 일으키지 않도록 막는 목적으로 멱등하게 처리 가능(rfc5789에 추가 기술)
- DELETE : 멱등성 보장해야 함(마지막 게시글 삭제 도배 -> x)
-
HTTP 상태 코드
- 100번대 : 요청을 받았고 진행 중
- 200번대 : 처리 성공
- 200 : OK(요청을 처리했다)
- 201 : Created(요청을 처리했고 리소스 저장됨)
- 204 : No Content(서버 요청 처리, 요청에 따른 Content 제공x)
- 300번대 : 요청에 대한 추가적 처리, 동작이 필요하다는 응답
- 3xx : redirection
- 304 : redirect 되지 않음
- 400번대 : (에러) 잘못된 요청
- 400 : Bad Request(서버가 요청구문을 인식하지 못함)
- 401 : Unauthorized(인증이 필요하다)
- 로그인이 필요할때 해당 코드를 보여줌
- 인증 정보를 줬는데도 401인 이유?
- 403 : Forbidden(클라이언트가 리소스에 대한 필요 권한을 갖고있지 않음)
- 401은 인증 자체 실패
- 403은 권한이 없음
- ex) 요청 받은 정보가 민감한 정보가 관리자만 접근 가능, 일반 유저 불가능 할 때 사용
- 404 : Not Found(페이지 찾을 수 없을때 / 요청을 거부하고 싶을때(이유 비밀))
- 500번대 : (에러) 서버 이상함
- 500 : Internal Server Error(서버에 오류가 발생하여 요청 수행 불가)
- 501 : Not Implemented(서버에 요청을 수행할 수 있는 기능이 없을 때 사용)
- GET, POST 등 요청 메소드를 인식하지 못할 때 코드 표시
- 503 : Service Unavailable(서버의 유지보수로 작동 중단 또는 과부하가 걸렸을 때)