[네트워크] HTTP

FE 개발자 신상오·2022년 7월 13일
0

네트워크

목록 보기
6/7

HTTP 특징

클라이언트 - 서버 구조

클라이언트가 서버로 요청을 보내면 서버에서 응답을보내는 구조로 이루어져있다

무상태 프로토콜 - 무상태성

서버가 클라이언트의 상태를 보존하지 않는다
클라이언트가 요청할 때 필요한 데이터를 다 담아서 보내기 때문에
같은 기능을 하는 아무서버나 호출해도 상관 없다
서버 1에 장애가 생기더라도 다른 서버에서 응답을 전달하면 되기 때문에 클라이언트는
요청을 다시할 필요가 없다 즉, 응답 서버를 쉽게 바꿀 수 있기 때문에 무한한 서버 증설이 가능하다

단점

로그인이 필요 없는 단순한 서비스라면 무상태로 설계 가능
로그인이 필요한 서비스라면 유저의 상태를 유지해야 하기 때문에 브라우저 쿠키, 서버 세션, 토큰 등을
이용해 상태를 유지

비연결성

연결을 유지하는 모델

TCP / IP의 경우 기본적으로 연결을 유지, 연결을 유지하는 모델에서는 클라이언트가 요청을 보내지 않더라도 계속 연결을 유지해야함 때문에 연결을 유지하는 서버의 자원이 계속 소모된다

연결을 유지하지 않는 모델 - HTTP

실제로 요청을 주고받을 때만 연결을 유지 응답을 주고 나면 TCP / IP 연결을 끊는다
이를 통해 최소한의 자원으로 서버 유지를 가능하게 함

비연결성의 한계

웹 브라우저로 사이트를 요청하면 HTML, CSS, 이미지, JS 등 수많은 자원이 함께 다운로드 되는데
해당 자원들을 각각 보낼 때마다 연결을 끊고 다시 연결하고를 반복하는 것은 비효율적이다
HTTP 초기에는 각각의 HTML, CSS, JS 자원을 다운로드하기 위해 자원마다 연결과 종료를 반복
지금은 비연결성의 한계를 HTTP 지속 연결로 문제 해결
연결이 이뤄지고 난 뒤 각각의 자원인 HTML, CSS, JS 요청하고 모든 자원에 대한 응답이 돌아오면
연결을 종료

HTTP 메세지

HTTP 메세지는 헤더와 바디로 구분
바디에서는 데이터 본문을 통해 표현 데이터를 전달하는데 여기서 데이터를 실어 나르는 부분을 페이로드라고 함

HTTP 헤더


헤더 형식 -<field-name> : <field-value>
HTTP 전송에 필요한 모든 부가정보를 담기 위해 사용한다
ex) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 캐시 관리 정보 등등


표현 데이터의 형식, 압축 방식, 자연 언어, 길이 등을 설명하는 헤더
요청과 응답 둘다 사용되는 헤더

요청에서 사용되는 헤더

  • From : 유저 에이전트의 이메일 정보
  • Referer : 이전 웹 페이지 주소
  • User-Agent : 유저 에이전트 애플리케이션 정보
  • Host : 요청한 호스트 정보(도메인)
  • Origin : 서버로 POST 요청을 보낼 때, 요청을 시작한 주소를 나타냄
  • Authorization : 인증 토큰을 서버로 보낼 때 사용하는 헤더

응답에 사용되는 헤더

  • Server : 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
  • Date : 메시지가 발생한 날짜와 시간
  • Location : 페이지 리디렉션
  • Allow : 허용 가능한 HTTP 메서드
  • Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간

콘텐츠 협상 헤서 (요청 시에만 사용)

클라이언트가 선호하는 표현 요청

  • Accept : 미디어 타입 전달
  • Accept-Charset : 문자 인코딩
  • Accept-Encoding : 압축 인코딩
  • Accept-Language : 자연 언어

Ex) Accept-Language 적용 전후
전 - 요청 : Get /event ↔️ 응답 : Content-Language: en, Hello
후 - 요청 : Get /event, Accept-Language:ko ↔️ 응답 : Content-Language: ko 안녕하세요

물론 한국어를 지원하지 않을 경우도 있기때문에 원하는 콘텐츠에 대한 우선순위를 지정할 수도 있다
ex) Get / event, Accept-Language:ko-KR,ko;q=0.9,en-Us;q=0.8,en;q=0.7
우선순위는 0 ~ 1 클수록 높은 우선순위를 가진다

profile
주간 회고용 블로그입니다 (개발일지와 정보글은 티스토리에 작성합니다.)

0개의 댓글