게으른개발너D
네트워크 기초 본문
브라우저에 URL을 입력하면 무슨 일이 발생할까?
브라우저 주소창에 tistory를 입력하면, 잠깐의 로딩 후에 tistory 사이트가 보이게 된다.
잠깐의 로딩 사이에 도대체 어떤 일이 발생하길래 웹사이트가 이동하게 되는걸까?!
Step 1. URL을 해석한다.
- schema://<user>:<password>@<host>:<port>/<url-path>
- 예시
- http://example.com:8761/members
- ftp://admin:1q2w3e4r@example.com/image.png
- mailto:kciter@naver.com
- http:programmers.co.kr
url은 스키마, 계정정보, 호스트, 포트, 패스 정보로 이루어져 있다.
여기서 스키마는 프로토콜이 들어가는 영역이다.
계정정보는 ftp를 이용한 사람이라면 잘 알 것이다.
말 그대로 인증이 요구되는 경우, id와 password를 입력하면 접속 허가를 받을 수 있다.
참고로 이 url은 //를 생략해도 괜찮다.
Step 2. DNS를 조회한다.
- Domain Name System
- DNS는 도메인과 IP주소를 서로 변환해준다.
- DNS로 요청을 보내기 전에 브라우저 캐시와 hosts 파일을 참조한다.
- DNS는 보통 통신사(ISP)에서 제공하는 것을 사용한다.
- DNS를 운영하는 서버를 보통 Name Server라고 부른다.
- present.do, www.present.do, gateway.dev.present.do 전부 도메인은 present.do
브라우저는 이 DNS로 요청을 보내기 전에 몇 가지 체크를 한다.
먼저 이미 해당 도메인을 알고 있는지 찾아보고, 없다면 localhost의 hosts 파일을 참조한다.
만약 정의가 되어있지만 내부적으로 IP를 반환한다.
둘 다 해당이 안된다면 DNS를 호출한다.
이 DNS는 Root Server, TLD Server, Authoritative Server 순으로 탐색하게 된다.
참고로 도메인과 호스트를 착각할 때가 많은데, 도메인은 present.do에 해당한다.
그리고 나머지 서브 도메인이 붙는 경우는 전부 호스트라고 부른다.
Step 3. 해당 IP가 존재하는 서버로 이동한다.
- 네트워크 장비 라우터를 통해 이동한다.
- 동적 라우팅을 통해 이동한다.
찾은 IP가 존재하는 서버로 이동하는데, 정확히는 해당 IP가 할당된 서버가 존재하는 대역으로 이동한다.
예를들어 한국에서 미국에 있는 서버로 요청을 했다면 네트워크 장비인 라우터를 통해 여러번 거친 후, 해당 서버가 존재하는 대역으로 접근하게 된다.
Step 4. ARP를 이용하여 MAC 주소 변환을 한다.
- Address Resolution Protocol
- 논리 주소인 IP 주소를 물리 주소인 MAC 주소로 변환하는 프로토콜
- 실제 통신을 위해 변하지 않는 고유한 MAC 주소가 필요하다.
- 네트워크 내에 Broadcasting하면 해당 IP 주소를 가지고 있는 기기가 자신의 MAC 주소를 반환한다.
이때 MAC 주소가 필요한 이유가 무엇일까?
IP 주소와 MAC 주소
- IP는 논리적인 주소
- MAC은 물리적인 주소
- 기계의 실제 위치를 알기 위해선 MAC 주소가 필요하다.
왜 논리적 주소와 물리적 주소로 나눈걸까?
그건 사용 용도가 다르기 때문이다. 예를 들어보자.
경복궁의 주소는?
- 서울 종로구 사직로 161
- 서울 종로구 세종로 1-91
이것만 보고 어디있는지 알 수 있을까?
만약 저 주소 체계가 바뀐다면 어떻게 될까?
정답은 실제 위치를 알 수 없음 이다.
따라서 실제 위치를 알기 위해선 정확한 GPS 좌표가 필요하다.
북위 37, 34, 43 동경 126, 58, 38 (37.578611, 126.977222)
비유하자면 도로주소나 지번주소는 논리주소인 IP주소
GPS 주소는 물리적 주소인 MAC 주소에 비유할 수 있다.
경복궁으로 택배를 보낸다면?
우리가 배달을 한다고 생각하면, 먼저 논리적 주소를 보고 범위를 좁혀나갈 것이다.
탐색 순서는 서울의 진짜 위치를 찾게되고, 순서대로 종로구, 세종로의 진짜 위치를 찾게 될 것이다.
마치 ARP를 이용했던 것과 비슷하다.
이처럼 IP는 대역을 통해 범위를 좁혀나가는 용도로 사용이 된다.
따라서 경복궁으로 택배를 보낸다면 중간 지점을 거칠 수 있다.
옥천 Hub나 군포 Hub를 Router로 비유하자면, 비슷하게 옥천 Hub의 진짜 위치를 알아낸 후에 이동한 다음에 다시 군포 Hub의 진짜 위치를 알아내고 이동한다. 그리고 마지막으로 도착지에 배달을 하게된다.
Step 5. TCP 통신을 통해 서버의 Socket을 열어야 한다.
- 네트워크를 통해 해당 기기로 패킷을 전달한다.
- 3 way handshake로 연결을 요청한다.
- 요청이 수락되면 기기는 패킷을 받아 처리한다.
실제 Socket을 열어서 허락을 받아야지만 데이터를 전달할 수 있다.
이때 TCP 연결을 허락받기 위해 3 way handshake가 실행된다.
다시 택배에 비유하자면, 우리가 물건을 전달하기 위해 초인종을 눌러 허락을 받는 것이라 보면 된다. 만약 거절당한다면 물건을 전달할 수 없을 것이다.ㅠㅠ
여기서 요청이 수락되면 데이터를 서버로 전달하게 된다.
Step 6. 데이터를 받은 서버는 데이터를 읽고 요청에 따라 처리하게 된다.
- HTTP 프로토콜로 들어온 패킷을 읽고 처리한다.
- 요청에 따른 적절한 응답 값을 반환한다.
보통 URL을 브라우저에 입력했다면 HTML이 응답될 것이다.
Step 7. 브라우저 렌더링
- 받은 HTML을 읽어 DOM Tree를 구축한다.
- 만들어진 DOM Tree를 이용하여 화면에 그린다.
- 스크립트를 실행한다.
여기까지 진행했다면 최종적으로 페이지를 볼 수 있게 된다.
실제로는 이 과정을 이해하기 위해서 알아야할 것들이 더 많다.
OSI 7 계층
Routing Table
Subnet mask
TCP Socket Stream
...
하지만 위의 내용은 기본 상식이니 누군가 물어본다면 바로 말할 수 있도록 외워두자!
Step 1. URL을 해석한다. Step 2. DNS를 조회한다. Step 3. 해당 IP가 존재하는 서버로 이동한다. Step 4. ARP를 이용하여 MAC 주소 변환을 한다. Step 5. TCP 통신을 통해 서버의 Socket을 열어야 한다. Step 6. 데이터를 받은 서버는 데이터를 읽고 요청에 따라 처리하게 된다. Step 7. 브라우저 렌더링 |
'CS' 카테고리의 다른 글
RESTful API (0) | 2024.01.21 |
---|---|
HTTP 상태 코드 (0) | 2024.01.18 |
[Design Pattern] Flux 패턴 (1) | 2023.09.02 |
[Design Pattern] Atomic 패턴 (0) | 2023.09.02 |
컴퓨터 시간 (0) | 2023.08.04 |