본문 바로가기
개발/웹 개발 공부

웹 프로그래밍 기초(1) - HTTP 프로토콜 이해

by E-nan 2020. 4. 12.
728x90
반응형

사람과 사람이 전화 통화를 하기 위해서도 몇가지 규약이 필요합니다.

서로 알아들을 수 있는 말을 사용해야 하며, 한쪽이 말할 때 다른 쪽에서는 들어야 합니다.

또한, 전화 연결이 끊어진다면 더 대화를 할 수가 없습니다.

이와 마찬가지로 웹 브라우저와 웹 서버 간에도 서로 통신하기 위해서는 규약(HTTP)이 필요합니다.

지금부터 간단하게 HTTP에 대해서 알아보겠습니다.

 

 

보통 인터넷이라고 하면 WWW(World Wide Web) 이라고 생각하기 쉽습니다.

그만큼 많은 사람들이 웹 브라우저를 이용하기 때문인데요,

그렇다고 해서 WWW가 인터넷의 전부는 아닙니다.

 

물리적인 하나의 컴퓨터에는 여러개의 서버가 동작할 수 있습니다.

각각의 서버들은 포트라는 값으로 구분돼서 동작합니다.

ex)웹 포트: 80번, 이메일 포트 : 25번, FTP 포트 : 21번 등등..

 

인터넷은 한마디로 네트워크들의 네트워크라고 할 수 있습니다.

수많은 인터넷의 결합체인 셈이죠.

 

이러한 인터넷은 보통 TCP/IP라는 약속으로 연결되어 있습니다.

인터넷 중 "웹"에서는 서로 통신하기 위해 HTTP(HyperText Transfer Protocol)를 사용합니다.

 

 

1) HTTP 란?

서버와 클라이언트가 인터넷상에서 데이터를 주고 받기위한 프로토콜을 이야기합니다.

어떠한 종류의 데이터도 전송할 수 있도록 설계되어있습니다.

ex)이미지, 동영상, 텍스트파일 등등..

 

 

2) HTTP 작동방식

HTTP는 서버/클라이언트 모델입니다.

작동방식을 간단하게 설명하자면 요청과 응답으로 이루어져 있습니다.

 

- 클라이언트가 먼저 서버에 요청을 보낸다.

- 요청받은 서버가 클라이언트에게 응답을 보낸다.

 

 

무상태 프로토콜 이라고 부르기도 합니다.

 

- 요청과 응답의 과정이 끝나면 연결을 끊는다.

->클라이언트가 바로 다음 요청을 해도 아까 요청한 클라이언트인지 알 수 없음.

 

 

이러한 특징을 가지고 있는 HTTP는 장단점도 존재합니다.

장점

단점

불특정 다수 대상 서비스에 적합하다.

연결을 끊기때문에 클라이언트가 이전에 뭘 했는지 알 수 없다.

 

해결방안)

연결을 끊으면 정보도 사라지기 때문에

정보를 유지할 수 있는 쿠키(Cookie)같은 기술이 등장했습니다.

 

 

3) URL

Uniform Resource Locator 의 약자입니다.

URL은 웹상에서 문서와 다른 자원들의 위치를 나타내기 위해 사용하며, 크게 세가지 부분으로 나눠집니다.

 

1. 프로토콜 종류

2. 자원이 있는 서버의 IP주소, 도메인주소, 포트번호

3. 자원위치

 

물리적인 서버찾기위해 IP나 도메인가 필요합니다.

물리적인 서버를 찾고 나면 해당 서버안에 있는 소프트웨어 서버를 찾기 위해 포트값이 필요합니다.

 

간단하게 예를 들어보겠습니다.

 

컴퓨터

주소 (하나만 존재)

IP

집 주소

방 (여러개 존재)

포트

집에는 주소가 하나만 존재하고, 집안에 방이 여러개가 존재합니다.

컴퓨터도 마찬가지로 하나의 IP가 존재하고, 여러개의 포트가 존재합니다.

 

또한, 각 서버는 각 하나의 포트만 차지하고 있습니다.

즉, 포트번호가 서버마다 각각 달라야 합니다.

 

결론

하나의 물리서버에는 여러개의 소프트웨어 서버가 동작할 수 있는데,

포트값(0보다 큰 숫자) 이 각각 다르게 동작해야 합니다.

 

http 서버는 기본포트값 : 80번

 

 

4) 웹 동작

1. 클라이언트가 원하는 서버에 접속

2. 클라이언트가 서버에 요청

3. 서버가 요청에 따른 응답 결과를 클라이언트한테 응답

4. 응답이 끝나고 나면 서버와 클라이언트의 연결이 끊김

 

요청 데이터 포맷

클라이언트가 서버에 요청할때 정해진 규칙이 있습니다.

웹 브라우저는 요청 메시지라는 것을 갖습니다.

요청 메시지는 요청 헤더, 빈줄, 요청 바디 이렇게 세부분으로 나뉩니다.

 

1.요청헤더

요청 메서드 : GET, POST 등등..

요청 URI : 요청하는 자원의 위치 명시

HTTP 프로토콜 버전 : 웹브라우저가 사용한는 프로토콜 버전 명시

 

2.요청바디

GET방식은 요청 바디가 없다.(자원 등 가져가야 할 부분을 URI에 붙인다.)

POST나 PUT사용시 들어온다.

 

 

응답 데이터 포맷

1. 응답헤더

응답 HTTP 프로토콜 버전 / 응답 코드 / 응답 메시지

날짜

웹 서버 이름 버전

콘텐츠 타입

등등..

 

2.응답바디

응답 리소스 데이터

 

 

요청 메소드 종류

GET : 정보를 요청하기 위해서 사용한다. (SELECT)

POST : 정보를 밀어넣기 위해서 사용한다. (INSERT)

PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)

DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)

HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.

OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.

TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.

 

HTTPS의 용도와 HTTP와의 차이점

HTTPS(HyperText Transfer Protocol Secure)는 기존 HTTP에서 Secure(보안)이 추가된 방식입니다.

 

네트워크 프로토콜 암호화 방식을 사용하여

클라이언트가 웹 서버에 데이터 전달시 암호화를하여

제 3자가 정보를 훔치지 못하도록 방지할 수 있습니다.

 

 

질문이나 오타, 잘못된 내용 등은 댓글로 남겨주시면 감사하겠습니다 :)

 

 

출처 : 네이버 부스트코스 웹프로그래밍 강좌

https://www.edwith.org/boostcourse-web/lecture/16661/

728x90
반응형

'개발 > 웹 개발 공부' 카테고리의 다른 글

웹 프로그래밍 공부 시작!  (4) 2020.04.12

댓글