비전공 개발자의 컴공 공부

[네트워크] 1. HTTP는 무엇인가

김알리 2022. 9. 17. 23:30
728x90
반응형

 

 

개발자가 아니더라도 HTTP는 대부분의 사람들이 들어봤을 것이고, URL 맨 앞에 붙는 것을 항상 봐왔을 것이다. 그러나 기술적으로 HTTP가 정확히 무엇인지, 어떤 방식으로 작동하는 것인지를 알고 사용하지는 않는다. 그래서 HTTP가 애초에 왜 필요한지부터 살펴보려고 한다.

 

 

HTTP는 무엇인가

HTTP는 Hypertext Transfer Protocol의 약자이다. 인터넷으로 컴퓨터들을 연결해 소통하도록하는 '프로토콜'이다. 즉, 컴퓨터들끼리 메세지를 잘 주고받을 수 있도록 양식과 절차를 정해놓은 규칙이라고 생각하면 된다. HTTP가 택배 시스템과 상당히 유사한 부분이 많기 때문에 이 둘을 비교하면서 생각하면 이해하기가 쉽다.

 

다른 사람에게 우편물 보내기

 친구에게 택배를 보내는 과정을 생각해보자. 물건을 박스에 담아 포장하고 운송장 스티커를 붙인다. 운송장 스티커에는 수신자, 발신자의 주소와 주의사항 등이 적혀있다. 택배 회사에서 박스를 가져가서 여러 터미널을 거쳐서 친구 집에 배송이 완료된다.

 HTTP도 이와 상당히 유사한 방법으로 작동한다. 다른 컴퓨터에 보낼 정보는 배송할 박스에 해당하는 HTTP 메세지이다. HTTP 메세지에는 시작줄(start-line)과 헤더(header)라는 운송장 스티커에 수신자의 주소에 해당하는 IP 주소와 이름에 해당하는 Port, 그리고 주의사항 혹은 기타 정보 등이 적혀있다. 그렇게 HTTP 메세지는 TCP/IP라는 택배 회사를 통해 수신자의 주소로 배송된다.

 

 

반응형

 

HTTP에 대한 최소한의 지식

위에서 우편물에 빗대어 HTTP를 설명하면서 여러가지 용어를 언급했다. 그 용어들을 이해하기 위해 최소한으로 설명하자면 다음과 같다.

 

IP 주소, 포트번호

IP 주소는 수신자의 주소, 포트번호(Port)는 수신자의 이름이라고 생각하면 된다. 하나의 주소를 특정하더라도 정확한 수신자의 이름을 적어주는 것처럼, 컴퓨터(서버)의 주소인 IP를 적어주고 그 컴퓨터에 살고있는(실행중인) 프로그램 별로 다르게 사용하는 번호인 포트번호를 적어주는 것이다. 그러면 정확한 컴퓨터의 정확한 프로그램에게 메세지를 보낼 수 있다.

 

Domain Name System

 바로 위에서 IP 주소를 건물까지의 주소라고 했는데, IP 주소는 생긴 것만 봐도 외우기 싫게 생겼다. 일례로, 네이버의 IP 주소는 '223.130.200.104'이다. 주소라기 보다는 경도, 위도로 위치를 표시한 느낌이다. DNS는 그 경도, 위도(IP) 대신 사람이 사용하기 쉽게 만든 도로명 주소(URL)를 사용할 수 있게 해주는 시스템이다. 그래서 URL을 입력하면 브라우저가 알아서 IP 주소로 바꿔서 쓴다. 그래서 외우기 쉬운 'www.naver.com'만 입력해도 네이버의 IP 주소를 찾아갈 수 있는 것이다.

 

TCP/IP

 각각 Transmission Control Protocol(전송 제어 프로토콜), Internet Protocol(인터넷 프로토콜)을 뜻한다. 

 TCP/IP는 DNS를 통해 얻은 IP주소와 포트번호를 이용해서 발신자와 수신자를 연결하는 택배 회사의 역할을 해준다. 하지만 택배회사와 다르게 TCP/IP는 한 발신자와 한 수신자를 1:1로 직접 연결해준다.

 

HTTP 메세지

 HTTP 메세지는 크게 요청 메세지와 응답 메세지로 나눌 수 있다. 비유가 찰떡같이 들어맞지는 않지만, 내가 친구에게 편지를 보내고(요청) 친구도 답장을 나에게 보내주는 것(응답)과 비슷하다.

 

HTTP 메세지의 대략적인 구조는 다음과 같다.

  • 시작줄(start-line): 이 메세지의 유형을 설명해준다. 요청 메세지인 경우, 서버가 해줘야하는 작업이 써있다. 응답 메세지인 경우, 서버에 요청한 작업이 처리된 결과가 써있다.
  • 헤더(header): 헤더는 메세지에 대한 추가정보를 담고있다. 종류도 다양하며 새롭게 헤더를 창조해서 보낼 수도 있다.
  • 본문(body): 택배의 내용물에 해당한다. 다만 HTTP 메세지는 시작줄과 헤더만으로도 충분한 내용을 전달하는 경우도 많아서, 본문이 없는 경우도 많다.

 

 

출처: <HTTP 완벽 가이드>, CS50 Tracks 2019 - Web - HTTP

728x90
반응형