클라이언트 서버 구조 클라이언트가 서버에 요청을 보내면, 서버가 요청에 대한 응답을 보내는 클라이언트-서버 구조로 이루어져있습니다
Connectionless(비 연결지향) 실제로 요청을 주고 받을 때만 요청을 유지합니다 - 클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 하고나면 TCP/IP 연결을 끊습니다 : 이를 통해 최소한의 자원으로 서버를 유지할 수 있으나 자원을 보낼 때마다 연결을 끊고 다시 연결하고를 반복하는 과정은 비효율적이라는 단점이 있습니다
Stateless(무상태 프로토콜) 서버가 클라이언트의 상태를 보존하지 않습니다 - 장점은 서버의 확장성이 높다는 점 단점은 클라이언트가 추가 데이터를 전송해야한다는 점입니다 - 로그인과 같이 유저의 상태를 유지하는 서비스에선, 쿠키,세션,토큰등을 이용해 상태를 유지해야합니다
HTTP 메시지의 구조
요청 라인,헤더, 빈 줄, 본문으로 구성
요청 라인 클라이언트가 무엇을,어떤 방식을 통해,어떻게 처리하고자 한다는 정보 - 요청메서드(How) : 클라이언트가 서버에 요청하는 데이터가 어떻게 처리되면 좋을지 - 경로 (What) : 주로 가져오려는자원의 경로를 표시
요청 헤더 HTTP 메시지에 대한 추가 정보를 제공하기 위해 사용 - 호스트 정보 -접속하고 있는 사용자의 정보 -지원할 수 있는 데이터의 유형 확인 가능
빈라인 헤더와 본문을 구별하기 위해 사용
본문 응답을 받기위한 별도의 데이터
요청 메서드의 종류
공식적인 요청 메서드는 총 9가지 하지만 가장 많이 사용되는 건5가지입니다
HTTP 헤더의 특징
클라이언트와 서버가 메서지를 주고 받을 때 본문뿐만 아니라 부가적인 정보를 전송하기 위해 사용합니다
클라이언트와 서버가 필요한 만큼 헤더를 작성 할 수 있습니다
헤더는 "헤더명: 헤더값"의 형식으로 작성하고 대소문자를 구분하지 않습니다
HTTP헤더의 종류
공통 헤더(general header) 요청 메시지와 응답 메시지 모두 적용되는 헤더 Date : 메시지가 발생한 날짜와 시각을 표현 Cache-Control : 기존에 받은 데이터를 저장할지 여부를 정합니다
요청 헤더(request header) 요청메시지에 작성하며 클라이언트에 대한 정보 또는 변경될 데이터에 관한 내용을 포함하는 헤더 Host : 데이터를 요청하는 서버의 호스트 이름 User-Agent : 클라이언트 정보
응답 헤더(response header) 응답 메시지에 대한 정보를 포함 Server : 웹 서버의 종류등 서버에 대한 정보가 내재
엔티티 헤더(entity header) 메시지 본문에 대한 정보를 포함하는 헤더 Content-Type : 자원의 미디어타입 Content-Language : 본문의 언어