클라이언트가 서버에 접속하기 위해 필요한 것
프로토콜 -> 브라우저가 알아서 http 프로토콜을 지켜준다.
IP
포트 번호 -> 브라우저가 알아서 80으로 잡아준다.
엔드 포인트(식별자) -> 필요하지만 몰라서 적지 않으면 자동으로 index 파일로 간다.
그렇다면 IP는?
DNS라는 게 필요하다.
DNS(Domain Name Syetem) : 서버의 도메인 이름을 서버의 IP 주소로 바꾸거나
그 반대의 변환을 수행할 수 있도록 하기 위해 개발된 시스템
클라이언트가 naver.com의 도메인만 알고 있으니 이를 DNS에 요청한다.
DNS에서 naver.com의 10.1.8.7 주소를 찾아준다.
DNS는 데이터를 공유해주기 때문에 서버이다.
갑인 것이다.
도메인과 주소를 키=값 형태로 들고 있다.
DNS는 가지고 있는 사이트의 정보가 전세계에 너무 많기 때문에
처음부터 끝까지 풀스캔 하는 것은 너무나도 비효율적이다.
이를 방지해 키 값으로 검색하는 랜덤 스캔을 한다.
스캔을 해서 찾은 도메인의 ip주소 데이터를 응답해주는 것일까
그 주소로 redirect 해주는 것일까?
응답해준다.
즉, DNS는 ip응답 서버이다.
클라이언트는 응답받은 주소로 요청을 총 2번 하게 되는 것이다.
우리가 디폴트로 사용하고 있는 DNS는
현재 사용중인 통신사의 DNS를 사용한다.
전 세계 통신사 대기업은 DNS를 다 가지고 있다.
제어판에서 확인과 변경도 가능하다.
DHCP가 할당될 때 DNS 서버도 할당된다.
클라이언트가 naver.com 요청을 했을 때
제일 처음 공유기로 빠져나가는 게 아니라
OS 윈도우가 hosts 파일에 naver.com의 ip주소가 적혀있나 확인을 한다.
이 파일에는 디폴트로 localhost 127.0.0.1이라고 적혀있다.
만약 이 파일에 naver.com ip주소가 적혀있다면 DNS로 가지도 않는다.
naver.com의 ip주소가 없다면 연결되어있는 DNS로 간다.
만약 이 DNS도 naver.com의 ip주소가 없다면 404 오류가 뜰 것이다.
DNS에 주소가 있으면 그 ip주소를 응답해준다.
받은 ip주소로 공유기를 빠져나가서 라우터들을 거쳐 네이버 서버에 도착하게 된다.
라우터들을 거쳐 가는 동안 패킷을 가지고 간다.
네이버는 패킷들을 재조립하여 문자열로 직렬화한다.
이 문자열을 톰캣이 파싱 해주고
네이버 쪽에서는 request와 response에 파싱 된 데이터가 쏙쏙 들어가게 된다.
그리고 네이버가 응답이 완료되면 request, response는 사라지게 된다.
내 hosts 파일, 연결된 DNS 서버는 절대 해킹당해선 안된다.
피싱의 위험이 있기 때문이다.
내 DNS 서버가 해킹당한 상태에서
클라이언트가 busanbank.com을 요청했다.
그러면 해킹당한 DNS에서 원래 부산은행 홈페이지와 똑같이 복제한
거짓 사이트 주소의 ip를 보낸다.
이 주소로 다시 요청을 해서 서버에 도달한 클라이언트는
아무것도 모르고 로그인하는 순간 모든 정보가 유출되게 된다.
엄청 위험하다.
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9