-
HTTP 프로토콜의 이해Programming/BackEnd 2020. 4. 25. 18:23
HTTP(Hyper Text Transfer Protocol)의 이해
사람과 사람이 전화 통화를 하기 위해서도 몇 가지 규약이 필요합니다.
서로 알아들을 수 있는 말을 사용해야 하며, 한쪽이 말할 때 다른 쪽에서는 들어야 합니다.
또한, 전화 연결이 끊어지면 더 대화를 할 수가 없습니다.
웹 브라우저(클라이언트)와 웹 서버(서버) 간에도 서로 통신하기 위해서는 규약이 필요합니다.
이때 필요한 규약이 HTTP입니다.
- HTTP : 웹 브라우저와 웹 서버 간에 서로 통신을 하기 위한 규약.
서버와 클라이언트(웹브라우저)가 데이터를 주고받기 위한 프로토콜
무상태(Stateless) 프로토콜
연결 -> 요청 -> 응답 -> 연결해제
응답을 한 후에는 연결을 끊어버리기 때문에, 클라이언트의 이전 상황을 알 수가 없다.
- 이러한 특징을 무상태(Stateless)라고 말한다.
- 이러한 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하게 되었다.
IP주소=>집주소 하나의 컴퓨터에는 하나의 IP주소(공유기주소)
PORT=>방 하나(공유기)의 집에는 여러 개의 방(여러 대의 컴퓨터)이 있는데, 이를 포트번호라고 생각해도됨.
서버(각 컴퓨터)는 각각의 방(포트번호)을 하나씩 차지 해야 함.
하나의 방에 여러개의 서버가 존재할 수 없다. = 하나의 포트를 여러 대의 컴퓨터가 사용할 수 없다.
하나의 물리적 컴퓨터에는 여러개의 서버가 동작할 수 있는데, 각각의 서버는 포트값이 서로 다르게 동작해야한다.
HTTP의 기본 포트값 80
1. 클라이언트와 서버를 연결
2. 클라이언트가 서버에 요청
3. 서버가 응답
4. 연결해제 stateless
단, 데이터를 요청하고 응답받을 때 정해진 규약이 존재한다.
요청 데이터 포맷과 응답데이터 포맷을 따라야함
HTTP (Hypertext Transfer Protocol)
요청 메서드 : GET, PUT, POST, PUSH, OPTIONS 등의 요청 방식이 온다.
요청 URI : 요청하는 자원의 위치를 명시한다.
HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전이다.
첫번째 줄의 요청메소드는 서버에게 요청의 종류를 알려주기 위해서 사용됩니다.
각각의 메소드 이름은 다음과 같은 의미를 가집니다.
참고로 최초의 웹 서버는 GET방식만 지원해줬습니다.
GET : 정보를 요청하기 위해서 사용한다. (SELECT)
POST : 정보를 밀어넣기 위해서 사용한다. (INSERT)
PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)
DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)
HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.
Web browser 웹브라우저
• 웹 정보를 검색하기 위한 프로그램
• 하이퍼텍스트의 구조뿐만 아니라 각종 언어의 문서들을 검색할 수 있음
• 브라우저의 종류 : 마이크로소프트사의 익스플로러, 구글 사의 크롬, 모질라 사의 파이어 폭스, 애플 사의 사파리, 유럽의 오페라 등
웹 서버의 포트번호 : 80
URL : Urniform Resource Locator <-= 웹서버를 지칭
프로토콜://호스트:port/경로
"https://blog.naver.com:80/g_sftdvp?Redirect=Write"
프로토콜: https
blog.naver.com : 도메인 이름. 어떤 웹 서버가 요구되는 것인 지. IP주소 입력가능
:80 : 포트번호
/g_sftdvp: 웹서버에서 자원에 대한 경로
?Redirect=Write : 웹서버에 제공하는 추가 파라미터입니다.
?key1=value1&key2=value2 는 웹서버에 제공하는 추가 파라미터입니다. 이 파라미터들은 & 기호로 구분된 키/값으로 짝을 이룬 리스트입니다. 웹 서버는 자원을 반환하기 전에 추가적인 작업을 위해 이런 파라미터들을 사용할 수 있습니다. 각각의 웹서버는 파라미터들을 언급하는 자신의 규칙을 갖고 있습니다. 그리고, 특정한 웹서버가 파라미터를 다루는 지 알기 위한 유일한 방법은 웹서버 소유자에게 묻는 것입니다
웹 서비스의 동작 원리
① 웹 브라우저에 URL 주소를 입력
② 클라이언트는 서버 호스트 이름을 DNS 서버에 전송, 웹 서버의 IP 주소 얻음
③ IP 주소와 Well-known 포트 80번을 사용하여 웹 서버와 TCP 연결을 시도
④ TCP 연결이 설정되고 클라이언트가 서버에 GET 명령을 전송
⑤ 서버가 요청한 웹 문서를 웹 브라우저에 회신
⑥ 둘 사이의 TCP 연결을 해제
⑦ 웹 브라우저는 해당 파일의 내용을 사용자가 볼 수 있게 화면에 표시
웹 브라우저의 구조
• 구성요소 : 제어기(controller), 클라이언트 프로토콜, 해석기(interpreter)로 구분
– 제어기 : 입력장치부터 입력을 받아 클라이언트 프로그램을 사용하여 웹 문서에 접근
– 클라이언트 프로토콜 : FTP, TELNET, HTTP 등이 있음
– 해석기 : HTML, 자바(java), 혹은 자바스크립트 등이 사용됨
• 제작한 홈페이지를 다른 사용자가 검색하기 위해서는 웹 서비스 제공이 가능한 웹 서버가 필요
• 웹 브라우저를 이용해 검색하고자 하는 웹 사이트를 지정하면 웹 서버의 정보가 다시 웹 브라우저로 전송
‘하이퍼텍스트’ : 인터넷 사용자(클라이언트)가 필요한 정보의 자유로운 검색을 가능하도록 해주는 텍스트의 전개방식
‘HTTP’ : 하이퍼텍스트 방식의 정보를 교환하기 위한 하나의 규칙
• 웹 서버와 클라이언트가 상호 데이터통신을 하기 위해 사용하는 하이퍼텍스트 전송 규약
HTTP 처리과정 : ‘요구(request)’ 메시지와 ‘응답(response)’ 메시지로 이루어짐
• 웹 클라이언트가 요구 메시지를 보내면 HTTP 처리과정이 개시되고, 이에 대한 응답으로 서버가 응답 메시지를 보냄
'Programming > BackEnd' 카테고리의 다른 글
AWS EC2 / WinSCP / Putty / nginx,PHP,MySQL (0) 2020.04.26 포트포워딩(PortFowarding)이란? (0) 2020.04.25 1. 클라이언트 - 서버 구조의 이해 (0) 2020.04.25 서버 개발 프레임워크 (0) 2020.04.22 AWS 개념 (0) 2020.04.22