HTTP/네트워크 기초(2)

워뇽쿤·2022년 8월 18일
0

네트워크

목록 보기
2/2
post-thumbnail

1. HTTP Messages

1.1. HTTP messages

  • HTTP는 HyperText Transfer Protocol의 줄임말로, HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜이다.
  • HTTP는 웹 브라우저와 웹 서버의 소통을 위해 디자인 되었다.
  • 클라이언트가 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP message 양식에 맞춰 응답함.
  • HTTP는 특정 상태를 유지하지 않는 특징이 있음. (무상태성)
  • 요청(Requests), 응답(Responses)이 있다.

1.2. 요청(Requests)

1.2.1. Start line

  • HTTP 요청은 클라이언트가 서버에 보내는 메세지 입니다.
  • 3가지 요소가 있다
    • 수행할 작업(GET, PUT, POST)이나 방식(HEAD or OPTIONS)을 설명하는 HTTP method는 데이터를 서버로 전송
    • 요청 대상(URL이나 URI) 또는 프로토콜, 포트, 도메인의 절대 경로는 요청 컨텍스트에 작성되고 형식은 HTTP method마다 다름
    • HTTP 버전은 메세지의 다른 구조를 결정함, 이를위해 HTTP 버전을 함께 입력함

1.2.2. Headers

  • 응답에 들어가는 HTTP headers는 요청 헤더와 동일한 구조를 가지고 있다. 대소문자 구분 없는 문자열과 콜론(:), 값을 입력한다.
    • General Headers : 메시지 전체에 적용
    • Request headers : User-Agent, Accept-Type, Accept-Language과 같은 헤더는 요청을 보다 구체화 합니다.
    • Entity headers : Content-Length와 같은 헤더는 body에 적용, body가 비어있는 경우 entity headers는 전송되지 않음

1.2.3. Body

  • 요청의 본문은 HTTP messages 구조의 마지막에 위치하고, 모든 요청에 body가 필요하지는 않음
  • Single-resource bodies(단일-리소스 본문) : 헤더 두개로 정의된 단일 파일로 구성
  • Multiple-resource bodies(다중-리소스 본문) : 여러 파트로 구성된 본문에는 각 파트마다 다른 정보를 지닙니다. 보통 HTLM form과 관련이 있다.

1.3. 응답(Responses)

1.3.1. Status line

  • 응답의 첫 줄은 Status line라고 부르고 다음의 정보를 포함
    • 현재 프로토콜의 버전(HTTP/1.1)
    • 상태코드 - 요청의 결과를 나타냄. (200, 302, 404 등)
    • 상태 텍스트 - 상태 코드에 대한 설명
  • Status line는 HTTP/1.1 404 Not Found. <- 이런식으로 생김

1.3.2. Headers

  • 응답에 들어가는 HTTP headers는 요청 헤더와 동일한 구조를 가지고 있다. 대소문자 구분 없는 문자열과 콜론(:), 값을 입력한다.
    • General Headers : 메시지 전체에 적용
    • Respones headers : 상태 줄에 넣기에는 공간이 부족했던 추가정보를 제공
    • Entity headers : Content-Length와 같은 헤더는 body에 적용, body가 비어있는 경우 entity headers는 전송되지 않음

1.3.3. Body

  • 응답의 본문은 HTTP messages 구조의 마지막에 위치하며 요청과 마찬가지로 모든 응답에 body가 필요하진 않음
    • Single-resource bodiles(단일-리소스 본문)
      • 길이가 알려진 단일-리소스 본문은 두개의 헤더(Content-Type, Content-Length)로 정의함
      • 길이를 모르는 단일 파일로 구성된 단일-리소스 본문은 Transfer-Encoding이 chunked로 설정되어 있으며 파일은 chunk로 나누어 인코딩 되어있습니다.
      • chunk : HTTP Body로 오는 메시지들이 덩어리된 형태로 오는것을 의미한다, 메세지의 크기가 클경우는 chunk로 나누어서 메세지를 보냄
    • Multiple-resource bodiles(다중-리소스 본문) : 서로 다른 정보를 담고 있는 body 입니다.

1.4. Stateless

  • 상태를 가지지 않는다는 뜻 (무상태성)
  • 상태를 가지지 않기 때문에 필요에 따라 다른 방법(쿠키/세션/API 등) 상태를 확인 할 방법이 필요하다.
profile
취미로 개발하기 @wonyongkoon

0개의 댓글