HTTP Protocol
1.정의
인터넷에서 하이퍼텍스트 문서를 교환하기 위하여 사용되는 통신규약이다. 하이퍼텍스트는 문서 중간중간에 특정 키워드를 두고 문자나 그림을 상호 유기적으로 결합하여 연결시킴으로써, 서로 다른 문서라 할지라도 하나의 문서인 것처럼 보이면서 참조하기 쉽도록 하는 방식을 의미한다.[1]
2.정리
인터넷에서 WWW 네트워크의 프로토콜로 사용되는것은 무엇일까요? 바로 HTTP입니다. HTTP 프로토콜은 클라이언트/서버 모델에서 지배적으로 사용되고있고 무상태(Stateless)방식을 사용해요 www 네트워크는 단순히 데이터를 주고받는 네트워크인데 HTTP프로토콜이 존재함으로써 지금처럼 문자/이미지/동영상 등등 어떤 종류의 데이터라도 전송이 가능하게 되었어요. 이러한 HTTP 프로토콜에 대해서 자세히 알아볼까요?
2.1 URL
URL(Uniform Resource Locator)약자만 봐도 무슨 뜻인지 알것 같죠? 자원의 위치를 나타내는 방법 즉 특정서버의 특정 서비스를 받기 위한 방법이라고 할 수 있어요 예를들어서 우리가 친구 집에 놀러갈때 한국 서울특별시 무슨로 몇번지 1000동 101호 이렇게 주소를 찾아 가듯이 www 네트워크에서도 이러한 작업이 필요해요. 그럼 URL 형식에 대해서 볼까요
http://www.naver.com:80
[1] http : 사용하고 있는 프로토콜을 이야기해요 인터넷에서 대화를 어떤 방식으로 할것인지 명시해주는 거에요~
[2] www : 어떤 네트워크를 사용하고 있는지에 대한 것으로 볼 수 있죠
[3] naver.com : 여기엔 도메인 주소 or IP주소 한마디로 네트워크상에서 집주소라고 말할 수 있어요
[4] 생략 및 :80 : 웹 브라우저에서는 당연히 WWW 네트워크를 사용하기 때문에 포트번호를 생략해주고 있어요 하지만 저희가 사용하는 왠만한 서
비스들은 80포트를 통해서 이용할 수 있답니다.
2.2 HTTP 흐름
[1]클라이언트가 서버로 부터 요청을해요 마치 저희가 네이버, 유튜브, 카카오에 접근하듯이요 ( 연결 요청과 데이터 요청을 한번에 한답니다.)
[2]그럼 서버는 연결이 되었다는 신호와 데이터 요청에 따른 응답값을 클라이언트에 보내줘요.
[3]그럼 클라이언트는 서버에서 응답해준 결과에따라 사용자에게 결과를 보여주고 서버에게 연결종료 신호를 보냅니다.
HTTP는 이러한 흐름으로 데이터를 주고 받아요 여기서 데이터를 주고 받을때 HTTP 프로토콜을 사용한다고 했죠? 사실 HTTP 흐름은 TCP/IP 동작이고 중요한건 주고 받는 요청/응답 데이터가 HTTP 핵심입니다.
2.3 요청/응답 형식
클라이언트가 서버에 어떻게 요청할까요? HTTP에서 정한 요청 포맷을 사용해요, 서버가 클라이언트에게 어떻게 응답할까요? HTTP가 정한 응답 포맷을 사용한답니다. 요청 포맷, 응답 포맷, 무엇일까요? 다들 육하원칙이라던가 A+학점 받는 레포트양식 등등 사람들이 주고받는 문서에는 모두 양식이 있어요, HTTP또한 이러한 양식이 있답니다.
먼저 요청문(Request)의 양식은 요청문 / 헤더 / 공백한줄/ 바디로 구분되요 요청문은 어떻게 구성되어있을까요? <요청 메서드><URI><HTTP버전>으로 구성되어있고 이것이 의미하는 바는 내가 어떤 방식으로 데이터를 요청하고 요청한 주소와 HTTP프로토콜 버전으로 구성되어 있어요 이 요청문을 통해서 서버가 어떤 방식으로 데이터를 요청했는지 확인하고 해당 리소스를 알맞게 가공하여 클라이언트에게 전달해 줄 수 있게 되는거죠
*요청 메서드는 GET, POST, PUT, DELETE, OPTION, 등이 존재해요!
헤더는 기타 사용자는 몰라도 되지만 프로그램끼리 주고받을 수 있는 의미있는 데이터를 의미하구요 바디는 실제 데이터가 들어가는 건데 GET방식은 URL에 모든 데이터를 담아서 전송하기 때문에 비어있는게 보통입니다! POST, PUT 등의 메서드는 역할 자체가 데이터 송신이기 때문에 바디에 데이터들이 들어가게 됩니다.
응답문(Response)의 양식은 상태문 / 헤더 / 공백한줄/ 바디로 구분되는데요 상태문은 <HTTP버전><상태코드><상태 이름>으로 구성되요 한마디로 응답을 잘받았는지 못받았는지 못받았다면 무슨 이유로 못받았는지 클라이언트에게 알려주는게 상태문이에요 <200><OK> 라던가 <400><Bad request> 등의 에러들이 존재해요!
응답문의 헤더와 바디는 요청문과 동일한 용도로 사용됩니다~
3.후기
강의를 듣고 정리한 것과 이해되지 않았던 점을 집중적으로 공부 및 정리했어요. 틀린게 있다면 지적해주시면 감사하겠습니다.
4.참고
[1] 위키백과: HTTP
[2] 네이버 지식백과 : 요청과응답
'웹' 카테고리의 다른 글
[WEB BASIC] WAS(Web Application Server) (0) | 2019.02.12 |
---|---|
[WEB BASIC] 브라우저 (0) | 2019.02.04 |
[WEB BASIC] 프로토콜 연결 방식 (0) | 2019.02.02 |
[WEB BASIC] 클라이언트/서버 모델(구조) (0) | 2019.02.02 |
[WEB BASIC]WWW(World Wide Web) (0) | 2019.02.01 |