[네트워크 이해하기 Part 1] 네트워크 기본 개념
네트워크 구성다음과 같은 기기들로 구성된 네트워크를 살펴볼 것이다.IP주소의 네트워크 아이디와 변동이 있는 호스트 아이디로 구분하여 살펴봤을 때, 총 3개의 네트워크로 구성됨을 알 수 있
seatbelt.tistory.com
[네트워크 이해하기 Part 1] 네트워크 기본 개념
네트워크 구성다음과 같은 기기들로 구성된 네트워크를 살펴볼 것이다.IP주소의 네트워크 아이디와 변동이 있는 호스트 아이디로 구분하여 살펴봤을 때, 총 3개의 네트워크로 구성됨을 알 수 있
seatbelt.tistory.com
Part2를 정리하고 난 뒤 가지게 됐던 의문점들을 해결하는 글이다.
의문점
- DNS를 통해 IP는 어떻게 확보하는가?
- DNS 요청을 위한 DNS 서버의 IP는 어떻게 확보하는가?
- ARP로 목적지의 MAC 주소는 처음에 어떻게 확보하는 것인가?
- 3-way 핸드셰이크를 통해 연결을 어떻게 확립되는가?
- 3-way 핸드셰이크의 첫번째 통신에서 데이터는 무엇인가?
- 외부 네트워크와 통신을 하면 라우터는 공인 IP를 어떻게 처리하는 것인가?
- 각각의 과정은 OSI 7계층 중 어디까지 관여하여 이루어지는가?
DNS
다른 네트워크에 요청을 하려면 목적지 IP가 필요하다. 브라우저에 URL을 입력하면 브라우저는 도메인 이름을 IP주소로 변환하기 위해 DNS 요청을 시작한다. 이때 정확성, 신뢰성보다는 신속성이 중요하기 때문에 UDP를 사용하여 동작한다.
이때 요청에서 사용되는 목적지 IP 주소인 DNS 서버 IP 주소의 경우, 클라이언트 장치에 수동, 혹은 자동(DHCP) 할당된 IP주소를 사용한다. DNS 서버의 IP 주소는 클라이언트 장치 내 운영체제 네트워크 설정에 저장한다.
IP 주소 확보 과정
1. DNS 요청 생성
- DNS 클라이언트(운영체제 네트워크 스택)가 요청 생성
- 데이터: 도메인 이름에 매핑되는 IP주소를 알려달라는 질의
2. DNS 요청 전달 (캡슐화)
- 라우터에서 NAT를 통한 사설 IP 주소 -> 공인 IP 주소 변환
- 출발지 IP를 NAT 장치에서 공인 IP로 변환한다.
- 매핑 테이블을 생성하여 "사설 IP 주소 & 포트번호"와 "공인 IP 주소 & 포트번호"를 매핑하여 저장한다.
- ARP를 통한 MAC 주소 확보
- 데이터링크 계층에서 처리된다. (네트워크 계층으로 전달되지 않는다)
- 서브넷 마스크를 사용한 IP 주소 계산을 통해 같은 서브넷(네트워크)인지 확인한다. 같은 네트워크라면 해당 IP 주소를, 다른 네트워크라면 기본 게이트웨이(라우터)의 IP 주소를 브로드캐스트 주소(MAC: FF:FF:FF:FF:FF:FF)로 보낸다.
- 브로드캐스트 주소로 보내진 요청은 스위치에 연결된 모든 포트에 전달된다. 요청을 받은 기기 중, 해당 IP 주소와 일치하는 장치만 응답을 보낸다.
- 기본 게이트웨이의 IP 주소는 클라이언트가 IP를 할당받을 때, DHCP 서버로부터 자동으로 전달받거나, 네트워크 관리자가 수동으로 설정한 값으로 알 수 있다.
- ARP응답에서 받은 MAC 주소는 ARP 캐시 테이블(클라이언트의 메모리)에 저장된다. 이후 같은 IP 주소로 데이터를 보낼 때는 캐시 테이블에 저장된 MAC 주소를 사용한다.
3. DNS 응답 처리 (역캡슐화)
- 응답받은 IP 주소가 운영체제 네트워크 스택으로 전달된다.
- 브라우저는 이 IP 주소를 활용하여 다음 단계를 진행한다.
포트 구분
일반적으로 출발지 포트는 Ephemeral Port 중 하나가 임시로 할당된다. 포트의 종류는 3가지로 나뉜다.
- 0~1023: Well-known Port
- OS나 특정 서비스에서 사용 - 80(HTTP), 443(HTTPS), 53(DNS), 22(SSH)등
- 1024~49151: Registered Port
- 특정 애플리케이션이나 서비스가 등록해서 사용하는 포트 - 3306(MySQL), 5432(PostgreSQL).
- 49152~65535: Ephemeral Port
- 클라이언트가 자유롭게 사용할 수 있는 포트 범위
3-way 핸드셰이크
3-way 핸드셰이크는 클라이언트의 전송 계층과 서버의 전송 계층 사이에서 이루어진다. 그렇기 때문에, 응용 계층의 데이터 없이 TCP헤더의 코드비트에 SYN 플래그를 설정하여 연결을 요청하는 SYN 패킷을 보낸다.
1. 클라이언트는 SYN 패킷을 보내 연결 수립 요청을 한다.
2. 서버는 SYN-ACK 패킷을 보내서 연결 수립 요청에 응답한다.
3. 클라이언트는 ACK 패킷을 보내 연결을 확립한다.
'Dev > 인프라' 카테고리의 다른 글
OpenVPN으로 AWS RDS 접속하기 (0) | 2025.05.01 |
---|---|
아임웹과 AWS를 연결해서 사용하기 & Route53 이관 (0) | 2025.04.25 |
DNS 이해하기 (0) | 2025.04.23 |
[네트워크 이해하기 Part 2] 네트워크에서 데이터 흐름 살펴보기 (0) | 2024.11.30 |
[네트워크 이해하기 Part 1] 네트워크 기본 개념 (0) | 2024.11.30 |