본문 바로가기
개발공부/개념정리

브라우저에서 서버까지의 응답에 대한 흐름 이해하기!

by parkman

인터넷 브라우저(IE, Chrome, Safari 등)에서 URL 입력이 들어왔을 때 서버까지의 흐름에 대해서 알아보도록하자!

 

1. 사용자의 URL 요청

사용자가 브라우저 검색창에 www.google.com과 같은 주소를 요청하는 단계이다.

2. 브라우저의 URL 분석

URL은 인터넷에서 자원의 위치(Uniform Resource Locator)를 나타낸다. URL은 웹에서 정해진 유일한 자원의 주소일 뿐이다. URL의 기본적인 구조는 아래와 같다.

3. HSTS 목록 조회

HSTS(HTTP Strict Transport Security), HTTP 대신 HTTPS만을 사용하여 통신해야한다고 웹사이트가 브라우저에 알리는 보안 기능이다. 만약 HTTP로 요청이 왔다면 HTTP 응답 헤더에 "Strict Transport Security"라는 필드를 포함하여 응답하고 이를 확인한 브라우저는 해당 서버에 요청할 때 HTTPS만을 통해 통신하게 된다. 그리고 자신의 HSTS캐시에 해당 URL을 저장하는데 이를 HSTS 목록이라고 부른다.

4. URL을 IP주소로 변환

URL 요청에서 도메인 이름 대신, IP를 직접 입력했다면 이 과정을 거치지 않는다.


하지만 1번에서 www.google.com과 같이 도메인 이름으로 입력받은 주소로는 컴퓨터끼리 통신할 수 없다.

이를 인터넷 상에서 컴퓨터가 읽을 수 있는 IP주소로 변환해야 서로 통신이 가능하게 된다.


우선 브라우저에서는 자신의 로컬 hosts 파일과 브라우저 캐시에 해당 URL이 존재하는지 확인한다. 존재하지 않는다면 도메인 주소를 IP주소로 변환해주는 DNS(Domain Name System) 서버에 요청하여 해당 URL을 IP주소로 변환한다.

 

5. 라우터를 통해 해당 서버의 게이트웨이까지

DNS서버에게 IP주소를 받았으니 이제 해당 서버로 요청을 보낸다. 요청을 보낼 IP주소를 임시로 10.20.60.5이라고 가정한다. 이 IP주소로 가야하는 것은 알지만 어떻게 가야 할지 경로는 알 수 없다. 이 요청이 네트워크를 타고 어떻게 이동할지는 네트워크 장비인 라우터의 라우팅을 통해 이루어진다.

 

6. ARP를 통해 IP주소를 MAC주소로 변환

주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP주소를 MAC 주소로 대응시키기 위해 사용되는 프로토콜이다.
실질적인 통신을 하기 위해서는 논리 주소인 IP주소를 물리주소인 MAC 주소로 변환해야 한다. 이를 위해 해당 네트워크 내에서 ARP를 브로드 캐스팅한다. 해당 IP주소를 가지고 있는 노드는 자신의 MAC 주소를 응답한다.

 

7. 대상 서버와 TCP 소켓 연결

이제 대상 서버와 통신하기 위해 TCP 소켓 연결을 진행한다. 소켓 연결은 3-way-handshake라는 과정을 통해 이루어진다.

  • 1단계(SYN) : 첫 번째 단계에서 클라이언트는 서버와 연결을 설정하기 원하므로 SYN(동기화 시퀀스 번호)이 포함된 세그먼트를 서버에 전송하여 클라이언트가 통신을 시작할 가능성이 있고 어떤 시퀀스로 통신을 시작할 것인지 서버에 알린다. (세그먼트를 시작하는 번호)
  • 2단계(SYN+ACK) : 서버는 SYN-ACK 신호 비트가 설정된 클라이언트 요청에 응답한다. Acknowledgement(ACK)는 수신한 세그먼트의 응답을 나타내고 SYN은 세그먼트를 시작할 가능성이 있는 시퀀스 번호를 나타낸다.
  • 3단계(ACK) : 마지막 부분에서 클라이언트는 서버의 응답을 확인하고 둘 다 실제 데이터 전송을 시작할 안정적인 연결을 설정한다.

but, 지금 하는 요청은 HTTPS 요청이다. 그렇기 때문에 서로 암호화 통신을 위한 TLS(SSL) 핸드쉐이킹이 추가된다. 이를 통해 서버와 클라이언트는 암호화 통신을 진행할 수 있다.

 

8. 프로토콜로 요청, 응답

연결이 되었고 드디어 해당 페이지 www.google.com를 서버에게 요청한다. 서버에서 해당 요청을 받고, 이 요청을 수락할 수 있는지 검사한다. 그리고 서버는 이 요청에 대한 응답을 생성하여 브라우저에게 전달한다.

 

9. 브라우저에서 응답을 해석

서버에서 응답한 내용들은 HTML, CSS, Javascript 등으로 이루어져 있다. 브라우저는 이를 해석하여 화면구성을 한다.

 

 

 

 

 

 

 

남는건 기록뿐...!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://doqtqu.tistory.com/313

728x90
반응형
LIST

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

JAVA 제네릭(Generic)  (0) 2022.06.16
OAuth  (0) 2022.06.16
SOLID - 객체지향적 설계 원칙  (0) 2022.06.14
OOP(Object oriented Programming) 객체지향 프로그래밍  (0) 2022.06.13
Redis (Remote Dictionary Server)  (2) 2022.06.08