왕초보일지

240130 TIL |

다시은 2024. 1. 30. 17:38

브라우저로 웹사이트에 접속할 때 도메인을 입력하면 일어나는 일들 

내용 출처 : https://preamtree.tistory.com/35    , https://hello-judy-world.tistory.com/189

 

[IT 기술면접 준비자료] 당신이 브라우저로 웹사이트에 접속할 때 일어나는 일들 (부제: DNS 이야

당신이 인터넷으로 웹 페이지에 접속 할 때 어떤 네트워크 작용이 일어나는지 설명하는 것. "어느정도로 자세히 설명해야하는가?" 에 대한 명확한 기준은 없지만, 대학 시절 배운 지식만으로도

preamtree.tistory.com

숫자로 되어있는 긴 ip 주소는 사람이 외우기 어렵다는 단점을 가지고 있다. 

그래서 ip주소를 특정 별명을 매핑 해준 것이 도메인 주소이다.

DNS는 도메인 이름과 ip주소를 저장하고 있는 분산 데이터베이스이다.

이러한 DNS 서버는 확장성을 위해 많은 서버를 이용하여 계층 형태로 분산되어있다.

 

 

브라우저에 도메인을 입력하면 어떤 과정을 거치나?

https://preamtree.tistory.com/35

 

1 브라우저의 캐시 확인 

자체적으로 유지하는 캐시를 검사하여 도메인에 대한 ip주소를 찾으려고 시도한다.

브라우저 -> OS -> router -> ISP  순으로 확인

 

 

* 로컬 PC 의 hosts 파일 확인

브라우저는 도메인의 매핑 정보가 존재하는지 확인한다.

 

C:/Windows/System32/drivers/etc

하위의 hosts 파일은 ip 주소와 도메인을 매핑해주는 리스트이다.

예를 들어 abcd.com 이라는 도메인에 네이버의 ip를 매핑시켜놓으면

abcd.com 에 접속했을 때 네이버에 접속되는 것! 

 

인터넷을 제공하는 회사가 운영하는 DNS 서버인 로컬 DNS 서버에 질의요청

 

로컬 DNS 에서까지 뒤졌는데 없으면 외부에 요청!

 

 

2  DHCP&ARP

DHCP : 호스트의 ip주소 및 tcp/ip 설정을 클라이언트에 자동으로 제공하는 프로토콜

DHCP 프로토콜은 보통 네트워크에 새로운 장치가 연결되거나 부팅 시 자동으로 실행되어 네트워크 구성 정보를 얻는다. 이 때 DNS 서버의 ip주소도 함께 받아온다.

ARP : ip주소를 물리적인 mac 주소로 매핑하는 프로토콜

ARP 프로토콜을 사용하여 DNS 주소에 대한 mac 주소를 찾아서 DNS Query 를 날린다.

 

3 DNS Query

DNS 서버들을 검색해서 해당 도메인의 ip주소를 찾는다.

찾을 때까지 DNS 서버 계층을 오가며 반복적을 검색한다.

www.naver.com  의 경우

루트(.) -> com -> naver -> www 구조

Root -> TLD(Top Level Domain) -> Authoritative DNS 

https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/

 

 

4 DNS 캐싱

응답받은 ip주소를 호스트이름과 쌍으로 DNS 서버에 저장한다.

다음 번에 같은 주소를 입력했을 때 브라우저가 캐싱된 DNS 를 확인할 수 있다.

 

5 받은 ip주소로 TCP 통신

 

6 HTTP 프로토콜 요청으로 서버에게 웹페이지를 요구

 

 

 


완전히 이해되지 않았다.

네트워크 공부 더 해보고 다시 돌아오면 더 잘 이해할 수 있지 않을까...

 


리눅스 권한 명령어

참조 : https://danmilife.tistory.com/8

 

리눅스 권한 설정 (chmod, chown, chgrp)

1. 파일 권한 확인 ls -al 2. 파일 권한 설정 -rw-r--r-- 1 root root 0 2월 24 16:20 testfile2 testfile2파일의 소유자는 root이고 권한은 소유자(읽기/쓰기)권한, 그룹(읽기)권한, 다른 사용자(읽기)권한 - 파일표시

danmilife.tistory.com

 

권한 확인

 ls -l 

-rwxrwr-- 1 eun eun 0 Jan 30 16:58 test

- (-: 일반, d:디렉토리, l: 링크) / rwx (소유자권한) / rw (그룹권한) / r (다른 사용자 권한) 
	/ 1 (링크수) / eun (소유자) / eun (소유자 그룹) / 0 파일크기 / Jan 30 16:58 (수정날짜) / test (파일이름)

링크 수 : 해당 파일이 몇 개 있는지 

 

read  = 4 write = 2 excute = 1

rwxr--r-- = 7 + 4 + 4 = 15

 

권한 변경 (chmod)

chmod [권한][파일 또는 디렉터리]

 

g : 그룹, u : 사용자, o : 다른 사용자, a : 모두

+ 로 부여, -로 삭제

 

chmod g+rw test  // 해당 그룹에 속하는 유저에게 읽기/쓰기 권한 부여
chmod u+r test   // 해당 파일을 소유한 사람에게 읽기 권한 부여
chmod a+rwx test // 모두에게 읽기/쓰기/실행 권한 부여

chmod g-rw test  // 해당 그룹에 속하는 유저에게 읽기/쓰기 권한 삭제
chmod u-r test   // 해당 파일을 소유한 사람에게 읽기 권한 삭제
chmod a-rwx test // 모두에게 읽기/쓰기/실행 권한 삭제

chmod 777 test // 사용자, 그룹, 다른 사용자 에게 읽기/쓰기/실행 권한 
chmod 764 test // 사용자: 읽기/쓰기/실행, 그룹: 읽기/쓰기, 다른 사용자: 읽기

 

gradle 빌드할 때 썼던 명령어

 chmod +x ./gradlew 

모든 사용자에게 실행 권한 부여