<공부했던 내용을 정리한 글인데,틀린 내용이 있다면 댓글로 정정해주시면 감사하겠습니다.>
인터넷 브라우저에
www.naver.com
을 입력해보고 어떤 일이 일어나는지 설명해드리겠습니다.
먼저, 브라우저가 URL을 파싱하기 시작합니다.
즉 브라우저 측에서 URL의 구조를 확인하고
*어떤 프로토콜을 통해 어느 URL 및 포트에 요청할 것인지 *
해석을 하는거죠...!
이런 겁니다.
https://www.naver.com:443
https는 프로토콜
www.naver.com
은 도메인 이름을
443은 포트 번호입니다.
만약 이때 포트번호를 주지 않았다면
(이렇게요 https://www.naver.com))
앞의 프로토콜을 확인하고
HTTP라면 80번 포트를 주고,
HTTPS라면 443번 포트를 주게 됩니다!
HTTP와 HTTPS의 차이를 간단히 설명하자면
http는 HTML과 같은 문서를 웹 브라우저가 웹 서버에 요청하는 프로토콜로,
https는 통신내용을 암호화한다는 차이가 있습니다.
(HTTP와 HTTPS의 차이에 대한 글은 추후에 자세하게 작성할 예정입니다)
그런데 여기서 https프로토콜을 사용하여 접근해야하는 주소에 http로 접근을 하게 되는 경우
서버측에서 Redirect시킬 수 있지만, 이는 어찌됐든간에 http프로토콜로 연결이 되므로
쿠키 정보를 탈취할 수 있는 등 보안에 허점이 있습니다.
이때 클라이언트에게 HTTPS를 강제하도록 하는 것이 권장이 되는데
이걸 HSTS라고 합니다!
HSTS란 웹 브라우저가 HTTPS프로토콜만을 사용해서 서버와 통신하도록 하는 기능으로
일정시간동안 HSTS응답을 받은 웹 사이트에 대해 https접속을 강제화시킵니다.
HTTPS접속이 실패하는 경우에는 사이트 접근이 불가능하게 됩니다.
즉, HTTPS 접속이 처음부터 실패하는 경우 클라이언트 측에서 차단이 되는 것입니다!
브라우저는 이 HSTS(HTTP Strict transport security)목록을 조회하게 됩니다.
이 목록에는 HTTPS로만 연결되도록 요청한 웹 사이트의 목록이 존재합니다.
만약 요청한 웹사이트가 목록에 있다면 브라우저는 요청을 HTTP대신 HTTPS로 보내게 되는 거죠!
웹사이트가 목록에 없으면 HTTP로 요청하게 되는 거고요.
그 다음으론
인터넷 상에서 컴퓨터가 읽을 수 있는 IP주소로 변환해야 서로 통신이 가능하기 때문에, URL주소를 IP주소로 변환하는 작업을 거치게 됩니다.
먼저 브라우저에서는 자신의 로컬 호스트파일과 캐시에 해당 url이 존재하는지 먼저 확인한 뒤에,
존재하지 않는다면- 도메인 주소를 IP주소로 변환해주는 DNS서버에 요청하여 요청받은 URL을 IP주소로 변환하게 됩니다.
이와 관련하여 DNS서버로 요청하는 과정을 설명하면 다음과 같습니다.
PC브라우저에서 'www.naver.com'을 입력합니다. 그렇다면 PC에 미리 설정되어 있는 로컬 DNS에게 'www.naver.com'이라는 hostname에 대한 ip주소를 물어보게 되지요.
(로컬 dns서버 주소를 확인하고 싶으시면 cmd창 여시고 ipconfig /all 명령어를 쳐보세요
저 같은 경우에는
이렇게 두가지 주소로 나오더군요. 첫번째 DNS서버가 죽었을때 두번째 서버에 물어보기 위해서 이렇게 2가지를 준다고 합니다.)
이 로컬 DNS에는 'www.naver.com'의 IP주소가 있을 수도 있고 없을 수도 있는데요. (대개 없다고 합니다)
만약 있으면 Local DNS 가 PC에 IP주소를 주고 끝난다고 합니다.
그러나 해당 IP주소가 없다면, 로컬 DNS는 'www.naver.com'에 대한 IP주소를 찾기 위해 다른 DNS서버들과 메시징을 시작합니다. 먼저 ROOT DNS서버에게 "www.naver.com"의 IP주소의 유무를 요청하게 됩니다. 참고로 ROOT DNS 서버에 ip주소를 질의하기 위해 각 LOCAL DNS서버에 ROOT DNS서버의 정보가 미리 설정이 되어있어야 한다고 합니다.
이때 ROOT DNS서버는 로컬 DNS서버에게 www.naver.com에 대응되는 ip주소가 없으면, com도메인을 담담하는 DNS서버에 질의를 하라고 응답해줍니다.
이제 LOCAL DNS서버는 com도메인(Top-level Domain Name)을 관리하는 dns서버에게 'www.naver.com'에 대응되는 ip주소가 있는지 요청을 하게 되죠.
그러나 com dns서버에도 해당 정보가 없으니, naver.com에 해당되는 도메인을 관리하는 dns서버에 요청을 하라고 응답을 줍니다.
다시 요청을 한 결과 naver.com도메인(Second-level Domain Name)을 관리하는 dns서버에 www.naver.com 호스트네임에 대한 IP주소가 있습니다.
해당 DNS서버는 '125.209.222.141'이라는 www.naver.com에 대응하는 ip주소를 응답해주고, 이를 받은 LOCAL DNS는 해당 ip주소를 캐싱해주고 그 ip주소를 PC에 넘겨줍니다.
DNS서버에 IP주소를 받았으니 이제 해당 서버의 게이트웨이까지 이동해야겠죠?
125.209.222.141까지 네트워크를 타고 접속해야 합니다.
이는 네트워크 장비인 라우터의 라우팅을 통해 이루어집니다.
이 과정을 거쳐 요청이 125.209.222.141를 찾아가야 합니다.
자 이제 받아온 IP주소를 가지고 요청한 서버 PC에 이동을 해야합니다.
다만, 문제가 있습니다.
해당 IP서버가 로컬 네트워크가 아닌 경우에 그 지역 라우터까지 패킷이 전달되는데 이때 라우터에서는 IP주소에 해당하는 컴퓨터가 어디에 있는 지 알아내기 위해 MAC주소가 필요합니다.
실질적으로 컴퓨터는 물리적인 랜카드를 사용해서 네트워크에 연결이 되어있기 때문에 MAC주소를 필요로 하는데요, 이를 찾아내기 위해 ARP프로토콜이 사용됩니다.
이제 논리주소인 IP주소를 물리 주소인 MAC주소로 변환하기 위해, 라우터는 해당 네트워크에서 ARP를 브로드 캐스팅(한 노드로부터 불특정 다수에게 요구하는 것)합니다.
MAC이란?
MAC이란 네트워크 통신에서 통신기기 하드웨어에 부여된 고유한 식별번호를 의미합니다.
단 하나밖에 없는 유일한 값을 지니며 변경될 수 없는 특징을 가집니다.
ARP란?
Adress Resolution Protocol(주소 결정 프로토콜)
으로, TCP/IP 3계층(네트워크계층)의 IP ADDRESS를 2계층(데이터링크계층)의 MAC ADDRESS로 변환할때 사용하는 IP 프로토콜입니다.
이렇게 브로드캐스팅한 결과 동일한 IP주소를 가지고 있는 노드는 자신의 MAC주소를 응답합니다.
----2편에서 이어서 작성하겠습니다.
'CS > Computer Network' 카테고리의 다른 글
OSI 7계층과 TCP/IP 4계층 (0) | 2021.06.22 |
---|---|
브라우저에 www.naver.com을 입력하면 일어나는 일 - 2 (0) | 2021.05.01 |
HTTP 완벽 가이드 - 웹은 어떻게 동작하는가 서적 구입 (0) | 2021.03.20 |
헤더 (0) | 2021.02.26 |
HTTP 상태코드 - 1XX, 2XX, 3XX, 4XX, 5XX (0) | 2021.02.25 |