이번 학기에서 배울 전체적인 내용으로서 우리가 네트워크에 접속했을 때 실제로 어떤 일이 일어나는지를 배운다.
용어 | 영어 | 한글 |
---|---|---|
LAN | Local Area Network | 근거리 통신망 (e.g. 가정, 학교, 회사 등) |
WAN | Wide Area Network | 광역 통신망 (e.g. 도시, 국가 등) |
ISP | Internet Service Provider | 인터넷 서비스 제공자 (e.g. SKT, KT, LG U+ 등) |
IP | Internet Protocol | 인터넷 통신규약 |
DHCP | Dynamic Host Configuration Protocol | 동적 호스트 설정 프로토콜 |
DNS | Domain Name System | 도메인 이름을 IP주소로 변경하는 시스템 |
ARP | Address Resolution Protocol | IP주소를 MAC주소로 변경하는 프로토콜 |
동의어 |
---|
Host = End point |
First-Hop router = Gateway router |
네트워크 7계층 |
---|
Application |
Presentation |
Session |
Transport |
Network |
Data Link |
Physical |
학생이 유선 LAN을 이용해 학교 네트워크에 접속한 후 브라우저를 열어 https://www.naver.com/에 접속했을 때 무슨 일이 일어나는지 살펴보자
인터넷에 접속하려면 먼저 위 3가지를 알아야 한다. 그럼 자신의 IP주소를 어디서 어떻게 할당받을까? 이는 DHCP를 통해 알 수 있다.
DHCP는 IP를 필요로하는 기기에 IP를 자동으로 할당해주고, 사용하지 않는 컴퓨터가 쓰는 IP를 자동으로 회수하는 통신 규약이다. 이를 통해 IP의 유연한 사용이 가능하고, IP 추적을 어느 정도 방어할 수 있다는 장점이 있다. DHCP 요청은 UDP 형식을 통해 이뤄지고, DHCP에서 위 3가지 정보를 얻는 과정을 다음과 같다.
- 사용자가 DHCP 요청 구문을 메시지로 만든다. DHCP REQUEST
- 사용자는 그 메시지를 LAN을 통해 여러 라우터로 전파한다. Broadcast
- DHCP 서비스를 실행하고 있는 라우터가 이 메시지를 수신한다.
- 라우터는 수신한 메시지를 분해해 DHCP 요청 구문을 찾는다.
- 라우터가 위 3가지 IP주소를 담은 메시지를 만들어 사용자에게 전송한다. DHCP ACK
- 사용자는 수신한 메시지를 분해해 위 3가지 IP주소를 알아낸다.
사용자가 게이트웨이 라우터로 메시지를 보내기 위해선 해당 라우터의 MAC주소를 알아야 한다. ARP 요청이 이뤄지는 과정은 다음과 같다.
- 사용자는 자신의 IP주소와 MAC주소, 해당 라우터의 IP주소를 담은 메시지를 만든다.
- 사용자는 그 메시지를 LAN에 속한 모든 라우터에 전파한다. Broadcast
- 해당 라우터는 수신한 메시지를 분해한다.
- 라우터는 기존 메시지에 자신의 MAC주소를 추가한 후 해당 메시지를 사용자에게 전송한다. Unicast
- 사용자는 수신한 메시지를 분해해 게이트웨이 라우터의 MAC주소를 얻는다.
ARP 요청은 비단 이것뿐만 아니라 IP주소를 MAC주소로 변환할 필요가 있는 모든 요청에 대해 이뤄진다.
사실 어떤 사이트의 서버에 접속하기 위해선 그 서버의 공용 IP주소가 필요하다. IP주소는 직접 입력해도 되고, 다른 곳에서 자동으로 알아와도 된다. 일반적으로 우리는 사이트 영문 이름만 알아도 그 서버에 접속할 수 있다. 이는 DNS 서버에서 사이트 주소를 IP주소로 변경해주기 때문이다.
위와 같이 우리가 입력하는 영어로된 사이트 주소는 DNS서버에서 IP주소로 변경해준다. 네이버로 접속할 때 위와 같이 https://www.naver.com/으로 접속해도 되고, 네이버 서버의 IP주소인 125.209.222.141으로 접속해도 된다. 사용자가 DNS 서버로 요청을 보내는 과정은 다음과 같다.
- 사용자가 DNS 요청 구문을 메시지로 만든다. Encapsulate
- 사용자는 그 메시지를 게이트웨이 라우터로 전송한다.
- 게이트웨이 라우터가 외부 ISP 네트워크에 메시지를 전달한다.
- 외부 ISP 네트워크 라우터는 전달받은 메시지를 해당 DNS 서버로 전달한다.
- 해당 DNS 서버는 수신한 메시지를 분해해 DNS 요청 구문을 찾는다. Decapsulate
- DNS 서버가 도메인 이름에 해당하는 IP주소를 담은 메시지를 만든다. Encapsulate
- DNS 서버는 그 메시지를 사용자에게 전송한다.
- 사용자는 수신한 메시지를 분해해 요청한 도메인 서버 IP주소를 알아낸다. Decapsulate
DNS 서버는 일종의 전화번호부로서 전화번호부에 이름을 입력하면 핸드폰 번호를 알 수 있듯이, DNS 서버에 도메인 이름을 주면 도메인 IP주소를 알 수 있다. DNS 서버 차단 방식은 여기서 이뤄지는 방식으로, 우리나라의 DNS 서버는 특정 도메인 이름이 입력됐을 때 해당 도메인의 IP주소가 아닌 http://warning.or.kr/
의 IP주소를 반환하는 방식으로 차단이 이뤄진다.
하지만 세상에 DNS 서버는 여러 개 존재하기 때문에 국내 DNS 서버가 아닌 해외 DNS 서버에 요청하면 국내에서 이루어지는 DNS 차단을 우회할 수 있다는 허점이 있다.
여기까지 왔으면 해당 사이트의 IP주소를 알기 때문에 해당 사이트로 접속할 수 있다. 해당 사이트에 접속하는 과정은 다음과 같다.
- 해당 서버(사이트)와 TCP 연결을 시도하기 위해 내 PC에 TCP 소켓을 생성한다.
- 해당 서버에 SYN 메시지를 전송한다.
- SYN 메시지를 받은 서버가 SYN ACK 메시지를 사용자에게 보낸다.
사용자는 SYN ACK 내용을 통해 서버와 연결이 됐는지 안 됐는지 확인할 수 있다.
서버로 web request 메시지를 보내면 서버가 해당하는 파일, 예를 들면 웹 HTML 파일이나 이미지 파일을 전송해준다. 그러면 내 PC의 인터넷 브라우저 화면에 해당 사이트의 내용이 표시된다.
무선 네트워크에서 이뤄지는 과정은 유선 네트워크와 동일하나 제일 처음에 WiFi AP(Access Point) 사용자 인증 단계가 추가된다.
- 사용자가 SSID와 비밀번호를 입력해 WiFi AP에 접속한다.
- WiFi AP가 사용자에게 네트워크 접속 권한을 부여한다.
WiFi AP는 스위치와 게이트웨이가 하나로 합쳐진 형태가 대부분이다.