본문 바로가기
Progamming/BoostCourse

웹의 동작 (HTTP 프로토콜 이해)

by 동그란 혜주 2019. 1. 14.
  • 들어가기 전에
사람과 사람이 전화 통화를 하기 위해서도 몇가지 규약이 필요하다. 서로 알아들을 수 있는 말을 사용해야 하며, 한쪽이 말할때 다른 쪽에서는 들어야한다. 또한, 전화 연결이 끊어지면 더이상 대화를 할 수가 없다. 웹 브라우저와 웹 서버 간에도 서로 통신하기 위해서는 규약이 필요하다. 이때 필요한 규약이 HTTP이다. 



  • 학습 목표
1. HTTP 프로토콜의 작동 방식에 대해 알아보자.
2. HTTP 프로토콜의 요청/응답 데이터 포맷에 대해 알아보자.




  • 핵심 개념
- HTTP
- Request 형식
- Request Method
- Response 형식
- 응답 코드




  • 인터넷(네트워크 통신)의 이해
- 인터넷 != WWW(World Wide Web)
· WWW가 인터넷의 전부는 아님
· 인터넷 기반의 대표 서비스 중 하나
· WWW이 사용하는 프로토콜은 HTTP고, 포트번호 80
- 인터넷(Internet)
· TCP/IP 기반의 네트워크가 전세계적으로 확대되어 하나로 연결된 네트워크들의 네트워크(=네트워크의 결합체)



  • HTTP(Hypertext Transfer Protocol)란?
· 인터넷 중 웹에서는 서로 통신하기 위해 HTTP를 사용한다.
- 팀 버너스리와 그가 속한 팀은 CERN(유럽 입자 물리학 연구소)에서 HTML 뿐 아니라 웹 브라우저 및 웹 브라우저 관련 기술과 HTTP를 발명했다. 문서화된 최초의 HTTP 버전은 HTTP v0.9(1991년)이다.
- HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜
· 아마 가장 성공적인 프로토콜이지 않을까..
· HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계 되어있음. 이미지, 동영상, 오디오, 텍스트 문서 등 종류를 가리지 않고 전송 가능
- HTTP는 계속 발전하여 HTTP/2 까지 버전이 등장한 상태
· 현재 가장 많이 사용되고있는 버전은 HTTP v1.1



  • HTTP 작동방식
· 보통 네트워크 통신 방법에는 유상태/무상태 방식 존재
· 유상태(Stateful) 경우는 점속이 계속 유지된 상태를 가지기 때문에 클라이언트와 서버 간에 지속적으로 데이터를 주고받을 수 있음. 이러한 방식은 채팅이나 온라인 게임에 적합한 방법
- HTTP는 서버/클라이언트 모델을 따른다.
· 클라이언트가 서버에게 요청을 보내면 서버는 클라이언트에게 응답을 보내게 된다.
- 장점
· 불특정 다수를 대상으로 하는 서비스에 적합하다. 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버간의 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있다
· 서버가 동시에 접속을 유지할 수 있는 수는 정해져있기 때문에 클라이언트가 많아진다면 서버의 수도 많아져야 한다. HTTP 프로토콜은 무상태(Stateless) 방식으로, 계속 연결을 맺는 것이 아니라 필요한 경우에만 연결을 맺고, 보통 빠르게 요청을 보내고 응답을 받은 후에 연결을 끊게 된다. 즉 클라이언트가 계속 연결을 맺고있지 않아도 된다.
- 단점
· 연결을 끊어버리기 때문에, 클라이언트의 이전 상황을 알 수 없다. 이러한 특징을 무상태(Stateless)라고 말한다. 이러한 특징 때문에 정보를 유지하기 위해 Cookie와 같은 기술이 등장하게 되었다.



  • URL
- URL(Uniform Resource Locator)
· 인터넷(web) 상의 문서와 다른 자원들(이미지, 동영상 등)의 위치를 나타내기 위해 사용
· 특정 웹 서버의 특정 파일에 접근하기 위한 경로 혹은 주소
· (1)http://(2)www.sunnyvale.co.kr/(3)docs/(4)index.html
· (1) : 접근 프로토콜의 종류 / (2) : IP 주소 또는 도메인 이름, 포트 번호 / (3) : 문서의 경로 / (4) : 문서이름
· 물리적인 서버를 찾기 위해 반드시 필요한 것은 IP 주소나 도메인 주소
· 물리적인 컴퓨터를 찾은 후에 해당 컴퓨터 안에 등장하는 소프트웨어 서버를 찾기 위해서는 포트값이 필요하다.
· IP : 집 주소 - 하나의 컴퓨터에는 하나의 IP가 존재
· 포트 : 각각의 방 - 집 안에는 여러개의 방들이 존재
· 실제로는 한 방에 여러명이 생활할 수 있지만, 서버에서는 여러명이 같이 생활할 수 없음. 각 서버는 하나의 방을 각각 하나씩만 차지해야 됨. 하나의 방에 여러 개의 서버가 존재할 수는 없고, 포트번호가 각각 달라져야 된다.
· 하나의 물리적 컴퓨터에는 여러 개의 소프트웨어 서버가 동작할 수 있는데, 이 서버는 포트 값이 다르게 동작해야 된다. 이런 포트 값은 0보다 큰 숫자이다.
· HTTP 서버는 기본 포트 값이 80



  • HTTP
- 실제로 웹이 어떻게 동작하는지 나타내는 그림
(1) 웹이 동작하기 위해서는 반드시 클라이언트에서 먼저 원하는 서버에 접속해야 한다.
(2) 다시 클라이언트가 이 서버에게 요청해야 한다.
· 요청 데이터 포맷 : 요청되는 데이터들은 정해진 규칙에 따라 전송
· 요청 메시지 : 헤더 부분 / 빈 줄 부분 / 요청 바디 부분
· 헤더 부분 : 요청 메서드(서버에게 요청의 종류를 알려주기 위해) / 요청 URI(요청하는 자원의 위치를 명시) / 사용하는 HTTP 프로토콜의 버전
· 요청 메서드의 종류 : GET, PUT, POST, PUSH, OPTIONS 등
· GET 방식 : 요청 바디가 존재X / POST, PUT 방식 : 요청 바디 존재O
(3) 서버에서 그 요청에 맞는 응답 결과를 다시 클라이언트에게 응답한다.
· 응답 데이터 포맷 : 헤더 부분 / 빈 줄 부분 / 응답 바디 부분
· 헤더 첫 줄에는 응답 HTTP 프로토콜 버전 / 응답 코드 / 응답 메세지
· 헤더 나머지 부분에는 날짜, 웹 서버 이름과 버전, 컨텐츠 타입, 캐시 제어 방식, 컨텐츠 길이 등
· 빈 줄 다음에 나오는 부분은 실제 응답 리소스 데이터가 나오는 부분
(4) 응답이 끝나고 나면 서버와 클라이언트의 연결이 끊기는 stateless 상태로 유지된다.




  • 생각해보기
Q1. HTTP에 S가 붙은 HTTPS는 어떤 용도로 사용되는 건가요? HTTP와 무엇이 다른가요?
A1. S는 secure로 보안성이 강화된 프로토콜이다.. 개인정보나 보안성을 강화되어야 할때 사용된다. 왠지 보안성이 강화되어야 하니까 GET방식은 불가능하지 않을까? → GET 방식이 불가능하다는 이야기는 없는걸로 보아 사용가능 한 듯..


'Progamming > BoostCourse' 카테고리의 다른 글

웹 서버  (0) 2019.01.15
browser에서의 웹 개발  (0) 2019.01.15
browser의 동작  (0) 2019.01.15
웹 Front-End와 웹 Back-End  (0) 2019.01.14
웹 프로그래밍을 위한 프로그램 언어들  (0) 2019.01.14

댓글