ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP에 대해 설명해주세요.
    CS지식 모음 2023. 3. 30. 13:45

    HTTP(Hyper Text Transfer Protocol)

    • 인터넷에서 클라이언트와 서버가 데이터를 주고받을 수 있는 프로토콜(규칙)입니다.
    • 클라이언트는 데이터를 서버로 요청하는 요청자이며, 흔히 웹브라우저가 그 역할을 하고 응용프로그램에서는 HTTP요청을 위해 사용하는 라이브러리가 클라이언트 역할을 합니다.
    • 서버는 클라이언트가 요청한 데이터를 제공하는 제공자이며, 이미지,HTML파일처럼 파일을 제공하는 서버,API서버 등 다양하게 있습니다.
    • HTTP통신에서는 서버가 제공하는 결과를 응답(Response)라고 합니다.
    • 80번 port를 이용합니다.
    • HTTP 통신을 위해 저는 Axios  라이브러리를 사용해본적이 있습니다. 

    HTTP 메세지 구조

    HTTP Request 구조

    HTTP Request 메세지는 크게 3부분으로 구성됩니다.

    RequestLine / Header / Body

    • Request Line : GET/HTTP/1.1 (HTTP request의 첫 라인으로 이 부분도 3부분으로 구성되어 있습니다.)
      • HTTP Method : GET / POST / PUT / DELETE (해당 Request가 의도한 action을 정의하는 부분)
      • Request target(요청 URL) : ex)/login
      • HTTP 버전
    • Header
      • 해당 request에 대한 추가 정보를 담고있는 부분
      • Key:Value 값으로 되어있다. ex)HOST:google.com
      • 자주 사용되는 header 정보
        • Host : 요청이 전송되는 targer의 host url => ex)google.com
        • User-Agent : 요청을 보내는 클라이언트의 대한 정보 => ex)웹브라우저에 대한 정보
        • Accept: 해당 요청일 받을 수 있는 응답(response) 타입
        • Connection : 해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지할 것인지 끊을지에 대해 지시하는 부분
        • Content-Type : 해당 요청이 보내는 메세지 body의 타입 ex) json을 보내면 application/json
        • Content-Length : 메세지 body의 길이
    • Body
      • 해당 request의 실제 메세지/내용
      • body가 없는 request도 많습니다. ex) GET Request들은 대부분 body가 없는 경우가 많습니다.

     

    HTTP Response 구조

    Response도 request와 마찬가지로 크게 3부분으로 구성되어 있습니다.

    Status(Response) Line / Header / Body

    • Status(Response) Line : HTTP/1.1 404 Not Found
      • Response의 상태를 간략하게 나타내주는 부분으로 3부분으로 구성되어 있습니다.
      • HTTP 버전
      • status code : 응답 상태를 나타내는 코드. 숫자로 되어 있는 코드. 404
      • status text: 응답 상태를 간략하게 설명해주는 부분. Not Found
    • Header
      • Response의 header와 동일합니다.
      • 다만 response에서만 사용되는 header값들이 있습니다. ex User-Agent대신 Server헤더가 사용됩니다.
    • Body
      • Response의 body와 일반적으로 동일합니다.
      • Request와 마찬가지로 모든 response가 body가 있지는 않습니다.
      • 데이터를 전송할 필요가 없을 경우 body가 비어있게 됩니다.

     

    자주 쓰이는 HTTP Methods

    GET

    • 이름 그대로 어떠한 데이터를 서버로부터 받아(GET)올때 주로 사용하는 Method
    • 데이터 생성/수정/삭제 없이 받아오기만 할때 사용됨
    • 가장 간단하고 많이 사용되는 HTTP Method
    • 언급한대로 주로 데이터를 받아올때 사용되기 때문에 request에 body를 안 보내는 경우가 많다.

    POST

    • 데이터를 생성/수정/삭제 할때 주로 사용되는 Method
    • 데이터를 생성 및 수정 할때 많이 사용하기 때문에 대부분의 경우 request body가 포함되서 보내진다.

     

     

    여기까지 구글링을 참고하여 정리해봤는데요. 이걸 풀어서 얘기하려면 좀 복잡할 것 같아요.

    만약 면접에서 이 주제에 대해 질문이 들어온다면 전 이렇게 대답할 것 같습니다.

     

    HTTP에 대해 설명해주세요.

    HTTP는 인터넷에서 클라이언트와 서버가 데이터를 주고받을 수 있는 프로토콜 입니다.
    클라이언트는 흔히 웹브라우저가 그 역할을 하고 응용프로그램에서는 HTTP요청을 위해 사용하는 라이브러리가 클라이언트 역할을 합니다.
    이 라이브러리 중에서 저는 Axios를 사용하여 보다 쉽게 HTTP 통신을 한 경험이 있습니다.

     

    HTTP 메세지구조에 대해 설명해주세요.
    HTTP 메세지는 크게 두부분으로 나뉩니다.
    HTTP Request 메세지, HTTP Response 메세지가 있는데요.Request 메세지는 클라이언트가 서버에게 보내는 요청 메세지입니다.
    Request 메세지는 또 크게 세부분으로 나뉘는데요.
    첫번째 요청메서드,URI,HTTP 버전 정보가 포함된 Start Line과
    두번째 키,벨류 형식으로 클라이언트가 서버에 전달하는 추가정보를 담고있는 Header,
    세번째 클라이언트가 서버에게 전달하는 데이터를 포함할 수 있는 Body가 있습니다. Body는 필수적이지 않고 대부분의 GET Request들은 Body가 없습니다.Response 메세지는 서버가 클라이언트에게 보내는 응답 메세지입니다.
    Response메시지도 크게 세부분으로 나뉘는데요.
    첫번째 상태코드, 상태메세지, HTTP버전정보가 포함된 Start Line 과
    두번째 키,벨류 형식으로 서버가 클라이언트에게 전달하는 추가정보를 담고있는 Header,
    세번째 서버가 클라이언트에게 전달하는 데이터를 포함할 수 있는 Body가 있습니다.
    마찬가지로 Body는 필수적이지 않고 데이터를 전송할 필요가 없을 경우 Body는 비어있게 됩니다.

     

     

    전체적인 흐름을 파악하고, 저 답변의 키워드들을 외우면 답변하는데는 큰 무리 없을 것 같습니다.

Designed by Tistory.