본문 바로가기
개념/Study

HTTP 통신 과정

by Hwanii_ 2023. 11. 15.
728x90

HTTP 통신 과정을 요약 하면 아래의 7개 흐름으로 정리 할 수 있다.

 

1) 주소창에 URL을 입력 하고, 엔터를 누르면 해당 URL 을 해석.

 

2) DNS (Domain Name System) 를 조회 하여 IP 탐색.

 

3) IP를 찾고, 해당 IP가 존재 하는 서버로 이동.

 

4) ARP (Address Resolution Protocol) 을 사용 해서 MAC 주소로 변환.

 

5) 웹 서버와 TCP (Transmission Control Protocol / 전송 제어 프로토콜) 연결 시도.

 

6) 서버로 보낸 Request를 통해, 서버로 부터 Response 받기.

 

7) 연결 종료.

 

 

 

위의 7개 흐름을 아래에서 세부적으로 확인 해보자.

 

1) 주소창에 URL 을 입력 하기.

 

주소창에 https://comic.naver.com/webtoon 주소를 입력 한다고 가정.

 

주소창에 사용자가 원하는 주소를 입력 하고 엔터를 누르면 동시에 바로 통신이 시작 된다.

 

위에서 작성했듯이, URL을 해석 하게 된다.

 

URL의 구조는 아래와 같다.

 


https:// : 통신에 사용된 프로토콜 이다. 즉, 통신을 어떻게 할건지에 대한 규칙 이다.

 

HTTPS 는 웹 브라우저와 웹 서버 간의 통신에 사용 되는 규칙으로, 보안을 위해 HTTP에 암호화 계층이 추가 되었다.


comic.naver.com : 서버의 도메인 이다.

 

해당 웹페이지가 호스팅 되고 있는 서버의 도메인 이다.


comic : 서버의 서브 도메인 이다.

 

도메인을 메인 도메인과 서브 도메인으로 나누는 이유는 서비스 / 지역 / 등등 을 쉽게 구분 하기 위함 이다.

 

이러한 구분을 통해 네트워크 웹 내부 에서 효과적인 관리 및 유지 보수가 가능해진다.

 

예를들어,

 

comic.naver.com 이 있고,

map.naver.com 이 있으면,

 

위의 주소만 보더라도, 해당 주소가 무슨 서비스 또는 기능을 나타내는지를 알 수 있다.


 

webtoon : 요청 경로를 의미 한다.

 

요청 경로는 해당 서버의 특정 리소스 (자원) 또는 서비스 (기능) 을 의미 한다.

 

예를들어,

 

comic.naver.com/webtoon 이 있고,

comic.naver.com/index 가 있으면,

 

webtoon 경로는 요일 별로 웹툰을 상세 하게 볼 수 있는 메뉴 이고,

 

index 경로는 webtoon 서비스 기능을 이용 하기 위한 메인 메뉴 라고 볼 수 있다.


 

 

 

2) DNS (Domain Name System) 를 조회 해서 IP 를 탐색 하기.

 

주소창에 URL 을 입력 하면, 가장 먼저 URL 과 연결된 DNS 서버로 이동 한다.

그리고, URL 에 할당된 IP 주소를 찾게 된다.

 

DNS 는 인터넷에서 사용 되는 주소를 유의미한 도메인 이름으로 변환 하거나,

반대로 유의미한 도메인 이름을 IP 주소로 변환 하는 시스템 이다.

 

유의미한 도메인 이름을 사용함으로써, 사용자가 기억 하기 쉽게 되고, 웹사이트 접근성이 향상 된다. 

 

DNS는 계층적인 구조로 되어 있다.

최상위 TOP-Level 인 도메인 서버 부터, 하위 도메인 서버로 이동 하면서 도메인 이름을 해석 한다.

 

이러한 방식으로 DNS는 전 세계적으로 수많은 도메인을 효과적으로 관리할 수 있게 된다.

 

아래는 DNS 의 주요 구성 요소와 작동 방식 이다.

 

- 도메인 이름 (Domain Name)

도메인 이름은 사용자가 인터넷 에서 쉽게 식별 할 수 있는 주소 이다.

www.naver.com  이 도메인 이름 이다.

 

- IP 주소 (Internet Protocol Address)

IP 주소는 컴퓨터 또는 네트워크 장치를 식별 하는 숫자를 의미 한다.

도메인 이름과 IP 주소는 1 : 1 대응 관계 이다.

 

- DNS 서버 (DNS Server)

DNS 서버는 도메인 이름과 IP 주소 간의 매핑 정보를 저장 하고 관리 한다.

 

- DNS 쿼리 (DNS Query)

사용자가 웹 브라우저에 도메인 이름을 입력 하면, 해당 도메인 이름에 대한 IP 주소를 찾기 위해서 DNS 쿼리를 수행 한다.

 

- DNS 리졸버 (DNS Resolver)

사용자에 요청에 따라 DNS 서버에게 도메인 이름을 해석하도록 요청 한다.

 

DNS 캐시 (DNS Cache)

DNS 서버는 이미 해석 했던 도메인 이름과 IP 주소의 매핑 정보를 캐시에 저장 한다.

따라서, 동일한 요청에 대해 빠르게 응답 할 수 있게 된다.

 

 

 

3) IP (Internet Protocol Address) 를 찾아 해당 IP가 존재 하는 서버로 이동 하기.

 

위에서 정리했듯이, 사용자가 도메인 이름을 입력 하면, DNS 를 통해 해당 도메인의 IP 주소를 찾는다.

 

유효한 IP 이면 전송 계층 에서 사용 되어, 목적지의 호스트를 찾기 위해 데이터 링크 계층에서 MAC 주소를 사용 한다.

 

MAC (Media Access Control Address) 주소는 주로 로컬 네트워크 (이더넷 / 와이파이) 에서 사용 된다.

네트워크 에서는 이 주소를 이용 하여 데이터를 정확하게 전달 될 수 있도록 한다.

 

데이터 통신을 할 때, IP 주소가 아닌 MAC 주소를 사용 하는 이유는 다음과 같다.

 

IP 주소는 컴퓨터 네트워크 에서 장치들이 서로를 인식 하고 통신 하기 위해서 사용 되는 특수 번호 이다.

그래서 언제든지 이 주소는 변할 수 있는 값을 의미 한다.

 

반면에 MAC 주소는 데이터 링크 계층 에서 통신을 위해서 인터페이스에 할당된 고유 식별자 이다.

 

그래서 논리적인 주소인 IP 와 달리,

물리적인 고유 주소 이기 때문에, 어떤 특정 장치의 실제 위치를 알기 위해 MAC 주소가 사용 된다.

 

이때, IP 주소를 MAC 주소로 변환 하기 위해 ARP 프로토콜을 사용 한다.

 

 

 

4) ARP (Address Resolution Protocol) 을 사용 하여 IP 주소를 MAC 주소로 변환 하기.

 

네트워크 내에서 ARP를 사용 하면, 어떤 IP를 가진 기기가 MAC 주소를 반환 하게 된다.

 

 

 

5) 웹 서버와 TCP (Transmission Control Protocol / 전송 제어 프로토콜) 연결 시도 하기.

 

TCP 는 데이터 통신을 위한 규약 이다.

 

클라이언트와 서버가 TCP 연결을 시도 해서 연결에 성공 하면, 통신 준비는 끝나게 된다.

즉, 통신이 되어있음을 보장한다.

 

이때, TCP 통신 절차는 3-way handshake 과정을 거친다.

왜 이런 과정을 거치냐면, 클라이언트와 서버간의 신뢰성 있는 연결을 하기 위함 이다.

 

>> SYN (Synchronize Sequence Number) : 클라이언트가 서버에게 임의의 시퀀스 번호를 전달

 

>> SYN-ACK : 서버는 클라이언트가 서버로 전달한 시퀀스에 1을 더하고 다시 클라이언트에게 전달

 

>> ACK (Acknowledgement) : 클라이언트는 서버에서 전달 해준 + 1이 된 시퀀스에 다시 한번 + 1 을 해서 서버로 전달

 

 

 

6) 서버로 보낸 Request를 통해, 서버로 부터 Response 받기.

 

클라이언트는 GET / POST / PUT / DELETE 요청을 서버로 보내면,

서버는 그에 맞는 데이터와 상태를 클라이언트에게 응답 한다.

 

 

 

7) 연결 (통신) 종료

 

TCP 통신을 종료 하기 위해서 4-way handshake 절차를 거친다.

 

 

 

이후에는 웹 브라우저가 웹 문서를 출력 하게 된다. (브라우저 렌더링 과정)

반응형