지난번 URL을 입력 후 엔터를 쳤을 때 키를 인식하고 URL에서 필요한 정보를 해석하는 과정까지 이야기했는데요!
오늘은 목적지 IP주소를 알아오는 과정을 알아보고자 합니다.
1. HTTP와 HTTPS
먼저 지난번 URL 주소에서 http 프로토콜에 대해서 설명을 했었는데
이때 http 와 https 를 간단하게 설명했었습니다.
http 는 HTML 같은 문서를 웹 브라우저가 웹 서버에 요청하는 프로토콜인데
https 는 통신 내용을 암호화 한다는 것에서 차이점이 있었죠.
이때 클라이언트에게 HTTPS 를 강제 하도록 하는 것이 권장되는데 이것이
"HSTS" 입니다.
2. HSTS(Http Strict Transport Security)
HSTS (HTTP Strict Transport Security) 란?
- 웹 브라우저가 HTTPS 프로토콜만을 사용해서 서버와 통신하도록 하는 기능
- 일정시간 (max-age) 동안 HSTS 응답을 받은 웹사이트에 대해서 https 접속을 강제화
- HTTPS 접속이 실패하는 경우 사이트 접근에 실패하게 됨
HTTP 를 이용한 연결 자체가 최초부터 시도되지 않으며 클라이언트 측에서 차단되는 장점이 있습니다.
브라우져는 이 HSTS에서 리스트를 점검합니다. 리스트에는 HTTPS로만 연결되도록 요청한 웹사이트의 목록이 존재합니다.
웹사이트가 목록에 있다면 브라우저는 요청을 HTTP 대신 HTTPS로 보내게 됩니다.
그렇지 않다면 첫 요청은 HTTP로 보내집니다.
3. DNS 서버에서 IP 주소 받아오기.
http://wangin9.tistory.com → 211.231.99.250
사람이 읽을 수 있는 도메인 이름을 컴퓨터가 읽을 수 있는 IP 주소로 변환해주어야 합니다.
* IP : 인터넷 상에서 컴퓨터 간 통신할 수 있도록 하는 주소.
숫자로 이루어진 IP 주소를 기억하는 것은 어렵기 때문에
DNS(Domain Name System)이 나왔습니다.
* DNS Server : IP 주소와 도메인이 저장되어 있는 서버.
브라우저는 도메인이 캐시에 들어있는지 확인합니다.
(크롬에서 DNS 캐시를 보려면 chrome://net-internals/#dns 확인 가능)
찾지 못하면 브라우저는 검색을 하기 위해 gethostbyname 라이브러리 함수를 호출합니다.
gethostbyname 은 DNS 통한 호스트명 확인을 시도하기 전 호스트명이 로컬의 hosts 파일에서 참조될 수 있는지 확인합니다.
gethostbyname 이 캐시와 hosts 파일 모두에서 호스트명을 찾지 못하면 네트워크 스택에 정의된 DNS 서버에 요청을 보냅니다.
일반적으로 로컬 라우터나 인터넷 공급자의 캐시 DNS 서버로 보내집니다.
만약 DNS 서버가 같은 서브넷에 존재한다면 이 네트워크 라이브러리는 DNS 서버에 대해 APR 프로세스를 거칩니다.
만약 DNS 서버가 다른 서브넷에 존재한다면 네트워크 라이브러리는 기본 게이트웨이 IP 에 대해 ARP 프로세스를 거칩니다.
* 서브넷 :
IP 주소가 부족하기 때문에 나온 개념으로, 대규모 네트워크를 구성하는 개별 네트워크를 뜻합니다.
IP 주소를 잘게 쪼개서 사용하기 위한 것입니다.
일반적으로 하나의 서브넷은 하나의 지역, 한 빌딩 또는 같은 근거리통신망 내에 있는 모든 컴퓨터들을 나타낼 수 있는데 IP 를 나눠 쓰는 것입니다.
그래서 여러 개의 서브넷으로 나뉘어진 어떤 조직의 네트웍은 인터넷에 하나의 공유된 네트웍 주소로 접속할 수 있게 되는 것이죠.
서브넷을 나누는 이유는 브로드캐스트 영역을 나눠야 하기 때문입니다.
브로드캐스트 도메인이 커지면 트래픽이 올라가 부하가 걸릴 수 있기 때문에 적절히 나눠주는 것이 필요합니다.
서브넷을 나누기 위해 서브넷 마스크를 이용합니다.
패킷이 도착하면, 그 패킷은 서브넷 번호를 이용하여 조직 내부의 게이트웨이에서 다시 라우팅 될 수 있습니다. 이때 그 라우터는 서브넷 마스크를 봄으로써 어떤 비트를 참조해야하는지 또는 참조할 필요가 없는지를 알게됩니다. 마스크는 단순히 라우터가 참조해야할 비트가 어느 것인지를 말해주는 일종의 필터입니다.
URL 입력 후 IP 주소를 가져오는 과정을 알아보았습니다.
다음에는 ARP 프로세스를 통해 컴퓨터의 물리주소인 MAC 주소를 확인하는 과정에 대해서 설명하겠습니다. :)
참고 :
https://github.com/SantonyChoi/what-happens-when-KR
http://wiki.gurubee.net/display/SWDEV/HSTS+%28HTTP+Strict+Transport+Security%29
'네트워크' 카테고리의 다른 글
[브라우저에 URL 입력 후 일어나는 일들] 5_TLS/SSL Handshake (2) | 2019.01.22 |
---|---|
[브라우저에 URL 입력 후 일어나는 일들] 4_TCP 소켓 통신 (0) | 2019.01.15 |
[브라우저에 URL 입력 후 일어나는 일들] 3_ARP 프로세스 (2) | 2019.01.12 |
[브라우저에 URL 입력 후 일어나는 일들] 1_URL을 해석한다. (0) | 2019.01.04 |
[브라우저에 url 입력 후 일어나는 일들] intro (0) | 2018.12.26 |