인터넷을 사용하면서 HTTP를 많이 봤지만, HTTP가 무엇이고, 하는 역할에 대해서는 간과하고 있던 것 같다.
웹 개발을 막 시작하면서 서버로 데이터를 전송하는 일들이 많아지면서 웹 개발자라면 HTTP프로토콜에 대해
반드시 집고 넘어가야겠다는 생각을 했다.
그럼 먼저 HTTP란 무엇인가?
HTTP는 Hyper Text Transfer Protocol의 두문자어로, 인터넷에서 문서와 같은 데이터를 주고받을 수 있는 프로토콜이다.
여기서 프로토콜은 웹 서버와 클라이언트 간의 통신을 하기 위한 통신 규약이다.
예를 들자면 우리가 어떠한 정보를 알아내기 위해 검색하는 행위라고 할 수 있다.
(이때 내가 검색을 하기위해 쓰는 하드웨어가 클라이언트, 요청한 데이터가 저장된 곳이 서버이다.)
◎ 요청 : 클라이언트 => 서버 ◎ 응답 : 서버 => 클라이언트 |
이러한 통신규약을 눈으로 확인할 수 있는 방법이 있는데, DevTools(개발자도구)를 이용하면 확인할 수 있다. (F12)
아래 이미지는 인터넷에 티스토리에 접속할 때 발생하는 요청과 응답에 대한 이미지다.
(https를 http로 바꿔서 실행하면 더 자세히 볼 수 있음)
Name 영역에 보이는 것들이 내가 현재 페이지에서 서버에 요청한 리소스 목록이고,
요청한 리소스 중에 www.tistory.com 클릭하면 좌측에 사이트에 대한 요청과 응답을 확인할 수 있다.
요청 (클라이언트 => 서버)
첫 줄은 "시작줄"로 메서드 구조 버전으로 구성되어 있다.
GET : Request Method(요청의 종류)
HTTP/1.1 : HTTP 버전
◎요청의 종류 GET : URL형식의 웹 서버측 리소르(데이터)를 요청 (파라미터를 넘겨서 해당하는 본문형식을 받는다.) POST : 내용 전송(파일 전송 가능) (클라이언트에서 서버로 전달하고자하는 정보를 서버로 보낸다.) |
두 번째 줄부터 "헤더"로 요청에 대한 정보를 나타낸다.
응답 (서버 => 클라이언트)
응답도 요청과 마찬가지로 첫 줄은 "시작줄"로 구성되어 있다.
HTTP/1.1 : HTTP 버전
302 : 요청의 성공여부를 나타내는 상태코드(200,302,404,500...)
◎요청에 대한 상태코드 -1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다. -2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다. -3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다. -4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다. -5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다. |
두 번째 줄부터 응답과 마찬가지로 "헤더" 정보를 나타낸다.
응답에서는 헤더보다 더 많은 정보가 있는 곳이 있는데,
그 부분이 "본문"이다.
요청 시에 데이터를 요청하면 응답 메시지에는 요청한 데이터를
담아서 보내주는데, 이때 응답메시지에는 HTML이 담겨져 있다.
이 HTML을 받아 브라우저가 화면에 렌더링되는 것이다.
DevTools(개발자 모드)에서 Elements를 보면 요청받아 응답한 HTML을 볼 수 있다.
이번 포스팅에서는 시작줄과 헤더를 간략하게 포스팅하였다.
공부를 하다보니 요청헤더, 응답헤더 각 헤더들의 항목들이 다양하게 있었다.
다음에 시간이 되면 각 헤더의 항목들을 살펴봐야겠다.
'개발 지식' 카테고리의 다른 글
[개발 지식] HTTP 에러 코드 정리 (35) | 2023.01.20 |
---|---|
[개발 지식] window 방화벽(Firewall) - 인바운드(Inbound), 아웃바운드(Outbound) 개념 정리 (2) | 2022.12.17 |
[개발지식] 윈도우(Window)10 cmd 언어 설정 변경 (0) | 2022.12.15 |
[개발지식] CMD 핑(Ping) 테스트 - 인터넷 연결 진단 (인터넷 접속 테스트) (6) | 2022.12.13 |
[개발지식]인터넷이란? - 인터넷 작동 방법 (2) | 2021.05.18 |