ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP의 특징과 메시지 주고 받는 방법(헤더와 바디)
    컴퓨터 기초/네트워크 2020. 11. 25. 00:53

    HTTP란?

    Hyper Text Transfer Protocol의 약자로 HTML 문서를 교환, 전송하기 위한 통신 규약이다.

     

    클라이언트가 서버에 요청(Request)하면 서버가 응답(Response)하는 방식으로 통신이 이뤄진다.

     

    WEB에서 가장 기초적인 데이터 교환 방법이며 가장 널리 쓰인다.

     

    HTTP의 특징

    1. HTTP는 Stateless다.

     

    간단히 풀어쓰면 HTTP 프로토콜은 현재 상태를 저장하지 않는다는 뜻이다.

     

    즉 클라이언트가 한 개의 요청을 하면 한 개의 응답을 할 뿐이다.

     

    한 개의 클라이언트가 여러 요청을 해도 그걸 저장한 후 모아서 한 개로 응답한다 이런 개념이 없다.

     

    다만 사용자의 상태를 저장할 수 있게 도와주는 쿠키, 세션등을 이용하면 이러한 Stateless 상태를 극복할 수 있다.

     

    2. HTTP는 확장이 가능하다.

     

    위에서는 간략하게 HTTP의 기능에 대해서 이야기했다.

     

    하지만 실제로 HTTP는 헤더라는 부분을 추가함으로써 더욱 다양한 정보를

     

    클라이언트와 서버 사이에 주고 받을 수 있다.

     

    HTTP의 메시지 교환법

    앞서 말했듯 HTTP 프로토콜은 클라이언트의 요청(Request)과 응답(Response)으로 통신이 이뤄진다.

     

    이것을 조금 더 파고 들어가자면 이러한 요청과 응답을 HTTP 메시지( Messages)라고 한다.

     

    HTTP가 서로 주고 받는 메시지는 ASCII로 인코딩된 텍스트로 정보로 구성되어있다.

     

    HTTP 메시지의 구성

    메시지의 구성은 기본적으로 출발선/헤더/바디 이렇게 나뉜다.

     

    그리고 클라이언트 요청(Request)이냐, 서버의 응답(Request)이냐에 따라 그 내용이 달라진다.

     

    다만 요청이나 응답 모두 메시지의 구성은 출발선/헤더/바디로 기본적으로 같다.

     

    Request 측 메시지의 구성

     

     

    1. 출발선(Start Line)

     

    메시지의 최상단 첫 번째 줄을 의미한다.

     

    해당 출발선에는 (GET, POST, PUT 등과 같은) HTTP메서드, URI, HTTP 버전 등이 써있다.

     

    2. 헤더(Headers)

     

    요청에 대한 추가적인 내용을 담고 있다.

     

    사실 헤더도 크게 3가지 (general / requenst / entity)로 나뉘지만 결국 다 요청에 대한 추가적인 내용이다.

     

    HOST는 클라이언트가 요청하는 호스트에 대한 정보, User-Agent는 클라이언트에 대한 각종 정보가 있다.

     

    Accept 부분은 클라이언트 측에서 원하는 데이터 타입을 나타낸다.

     

    위 헤더는 내용이 간단하지만 상황에 따라 더 복잡하게도 가능하고 필요한 내용을 수정해서 전달가능하다.

     

    3. 본문(body)

     

    본문의 경우 사실 요청의 경우 있을 수도 있고 없을 수도 있다.

     

    응답(Response)의 경우 요청(Request)에 대한 응답 데이터를 보내야해서 본문(body)에 대부분 내용이 있다.

     

    하지만 요청(Request)의 경우 본문이 존재하지 않는 경우도 있다.

     

    Response 측 메시지 구성

     

     

    1. 출발선(Strat Line)

     

    요청과 마찬가지로 반응측 메시지의 출발선도 메시지 최상단 첫 째줄을 의미한다.

     

    다만 여기는 이상한 숫자 200이 있는데 이것은 요청(Request)에 대한 응답(Response)의 응답코드다.

     

    참고로 200은 응답이 잘되었다는 뜻이고 의외 다양한 응답 코드를 반환한다.

     

    200이외에 유명한 응답 코드들은 404, 500 등이 존재한다.

     

    2. 헤더(Headers)

     

    요청(Request)측 헤더와 동일한 기능을 한다.

     

    요청에 따른 응답에 대한 다양한 정보가 실려있다.

     

    Content-Type은 클라이언트에게 전송된 자료의 종류, 인코딩 방식 등을 말한다.

     

    Date는 해당 메시지가 만들어진 날짜를 말한다.

     

    3. 본문(body)

     

    앞서 말했듯 클라이언트는 요청할 때 body 부분이 없는 경우도 많다.

     

    하지만 서버측이 응답할 땐 body가 거의 있다고 봐야 한다.

     

    그래야 컴퓨터 사용자가 요청한 요청이 제대로 수행되서 결과물이 나온 것을 확인할 수 있기 때문이다.

     

     

    위 화면은 톰캣을 이용해 서버를 구축하고 로컬 서버에 접속했을 때 가장 기본으로 나오는 화면이다.

     

    로컬 서버에 접속하면 지금까지 썼던 헤더에 대한 정보가 오가고 그 결과물로 위와 같은 화면이 나온다.

     

    그리고 이 화면은 응답(Reponse)측의 본문(body)의 결과물의 결과물이기도 한다.

     

     

    '컴퓨터 기초 > 네트워크' 카테고리의 다른 글

    HTTP란? WWW란?  (0) 2020.10.26
    WEB과 WAS  (0) 2020.10.22
Designed by Tistory.