이번 포스팅은 지금까지 설명한 모든 내용에 대한 압축에 해당한다.
DNS 캐시테이블 : 도메인네임과 IP 주소의 대응관계를 저장해놓은 것.
DNS 서버 : 로컬 DNS캐시테이블에 찾는 도메인네임의 IP주소가 없으면 더 많은 정보를 저장하고 있는 서버에 요청해야 함.
ARP 캐시테이블 : IP 주소와 맥 주소의 대응관계를 저장해놓은 것
서브넷마스크 : IP 주소의 네트워크 ID와 호스트 ID를 구분하기 위해 사용함
아랫글 출처: 이 블로그에는 그림도 들어있으니 직접 들어가서 보길 추천함
쉽게 설명하는 네트워크 (IP주소, DNS, 네트워크, 호스트, CIDR, Private IP, 포트포워딩) (tistory.com)
쉽게 설명하는 네트워크 (IP주소, DNS, 네트워크, 호스트, CIDR, Private IP, 포트포워딩)
IP 주소가 뭔가요? IP 주소는 각각의 컴퓨터 기기가 서로 통신하기 위해 가지고 있는 네트워크 주소입니다. 우리가 우편주소로 집의 위치를 찾는 것처럼, 컴퓨터는 IP주소라는 주소체계를 통해 컴
sjquant.tistory.com
네트워크 ID는 네트워크를 구분하여 주는 ID입니다. 네트워크 ID가 같다는 의미는 같은 네트워크 상에 있다는 의미로, 같은 네트워크 상에 있다면 서로 자유롭게 통신을 할 수 있습니다. 즉, 서로 ping을 날릴 수도 있고, 공유폴더를 만들 수도 있습니다. 하나의 네트워크 ID에는 여러 기기가 있을 수 있습니다. 호스트 ID는 해당 네트워크에 속한 사용자에게 부여하는 고유의 번호입니다.
IP주소로 네트워크 ID와 호스트 ID를 어떻게 알아내는지는 추후에 설명드리겠습니다.
위의 설명대로라면 A클래스의 네트워크에는 약 1600만 개(2^24)의 호스트를 할당할 수 있습니다. 하지만 만약 어떤 기관에서 필요한 IP개수가 200개라면 나머지 IP주소는 리소스 낭비가 됩니다. 이러한 문제를 해결하기 위해 서브넷이라는 개념이 등장했습니다.
서브넷은 네트워크 안의 네트워크라는 의미입니다. 하나의 네트워크를 나누어 네트워크를 효율적으로 분배할 수 있습니다. 비유적으로 표현하면, 한 사람당 피자를 한 판씩 나눠주면 피자를 버리게 되니, 피자 한판을 쪼개어서 나누어 주자는 것입니다.
서브넷 마스크는 IP주소처럼 8비트씩 4블럭, 총 32비트로 구성되어 있습니다. 다만, 2진수로 표현했을 때, 앞자리가 모두 1로 구성되고 뒷자리는 모두 0으로 구성됩니다. 이를 10진수로 표현하면 255.255.255.XXX 식으로 구성됩니다. 아래는 모두 서브넷 마스크의 예시입니다.
그럼 서브넷 마스크를 통해 서브넷의 네트워크 ID(주소)를 구해봅시다. IP주소와 서브넷 마스크 주소를 AND 연산하면 네트워크 ID를 구할 수 있습니다. (2진법에서 AND 연산은 두 개의 수가 모두 1일 때는 1, 하나라도 0이면 0으로 표기합니다.)
IP주소: 115.95.229.196 → 01110011.01011111.11100101.11000100
서브넷 마스크: 255.255.255.0 → 11111111.11111111.11111111.00000000
위의 주소를 AND연산을 하게 되면, 01110011.01011111.11100101.00000000이 나오게 됩니다. 이는 115.95.229.0입니다. 즉, 새로운 네트워크 ID(주소)는 115.95.229.0입니다. 원래는 115.0.0.0이 네트워크 주소지만, 서브넷 마스크를 씌워서 네트워크 주소를 분리했습니다. 이렇게 서브넷 마스크를 씌우게 되면 이제는 115.95.229로 시작하는 주소만을 같은 네트워크에 있다고 인식하게 되고, 호스트 주소는 네트워크 주소 (115.95.229.0)와 브로드캐스팅 주소 (115.95.229.255)를 제외하고 254개 (2^8-2)를 가지게 됩니다.
CIDR
서브넷 마스크는 결국 2진수로 표현했을 때 앞자리를 모두 1로 만들면 됩니다. 그럼 1이 몇 개인지만 알면 해당 서브넷 마스크를 쉽게 알 수 있습니다. 이처럼 서브넷 마스크를 개수로 표현한 것을 CIDR라고 합니다. 네트워크 주소를 적고 /<개수>로 표기해주면 됩니다.
115.95.229.0/28은 28비트까지 서브넷 마스크라는 의미입니다. 115.95.229.0은 네트워크 주소이고 해당 네트워크는 115.95.229.0 ~ 115.95.229.15 (2^4)까지의 주소를 가지게 됩니다. 즉, 다음 IP주소는 115.95.229.16/28 이고 (115.95.229.16 ~ 115.95.229.32)까지의 주소를 가지게 됩니다.
정말 쉽게 설명한 블로그가 있어서 찾아왔다...
다음은 운영체제가 데이터를 전송하는 과정을 요약한 것
- 목적지 IP 주소에 해당하는 도메인 네임을 호스트 파일에서 검색한다.(도메인네임에 대응되는 IP 찾기 시작)
- 하드디스크에 해당 도메인네임이 없다면 내부 컴퓨터에 저장되어있는 DNS 캐시테이블에서 찾는다. (만약 도메인네임에 대응되는 IP가 DNS 캐시테이블에 있다면 도메인네임 찾기 끝. 아니라면 도메인네임을 DNS서버에 보내서 대응되는 IP주소를 3-14단계동안 얻어냄)
- 로컬 IP 주소와 DNS서버 IP 주소의 네트워크 ID를 비교한다. 로컬 IP 주소와 DNS서버의 네트워크 ID가 상이하기 때문에 ARP 캐시테이블에서 라우터의 맥 주소를 검색한다. : (ARP 캐시테이블에서 DNS 서버 맥 주소 검색해봄)
- ARP 캐시테이블에 없다면 네트워크 계층에서 ARP 헤더(ARP 요청)를 생성한다. (DNS 서버 맥 주소가 ARP 캐시테이블에 없다면 주위에 요청해서 일일히 다 찾기 시작(브로드캐스트 요청))
- 데이터 링크 계층에서는 이더넷프레임을 생성한다.(ARP요청 encapsulation 시작)
- 물리 계층에서는 ARP 요청을 LAN 영역 전체로 전송한다.(ARP요청 encapsulation 끝. 전송)
- 라우터는 DNS서버의 맥 주소를 담은 ARP 응답을 송신자에게 전송한다.
- 라우터로부터 ARP 응답이 오면 거기 있는 DNS 서버의 맥주소를 ARP 캐시테이블에 넣는다. (ARP 요청을 LAN 영역 전체에 브로드캐스트로 뿌림. DNS서버 맥 주소를 받으면 ARP 캐시테이블에 넣음)
- 응용계층에서 DNS페이로드를 생성한다.(도메인네임 encapsulation 시작)
- 전송 계층에서 데이터그램을 생성한다.
- 네트워크 계층에서 IP 패킷을 생성한다.
- 데이터링크 계층에서 이더넷프레임을 생성한다.
- 물리계층에서 비트를 생성하고 DNS서버의 라우터에 전송한다.(도메인 네임 encapsulation 끝. 도메인네임을 DNS 서버에 전송하고 DNS 서버에서 IP 주소를 반환받음)
- 목적지 DNS 서버로부터 DNS페이로드에 대한 답으로 IP가 오면 IP를 DNS캐시테이블에 넣는다. (도메인네임에 대응되는 IP 찾기 끝)
- 응용 계층에서 HTTP 페이로드를 생성한다. (보낼 데이터 encapsulation 시작)
- 전송 계층에서 HTTP 페이로드를 버퍼에 저장한다. (일단 보낼 데이터는 버퍼에 저장해놓고 보낼 데이터 encapsulation 일시중지)
- 전송 계층에서 SYN 플래그의 세그먼트를 생성한다.(3-way handshake 시작. SYN 요청 encapsulation 시작)
- 네트워크 계층에서 IP패킷을 생성한다.
- 데이터링크 계층에서 이더넷프레임을 생성한다.
- 물리 계층에서 라우터로 전송한다.(SYN encapsulation 끝. SYN 전송)
- 목적지로부터 ACK-SYN플래그가 오면 전송계층에서 ACK플래그를 생성해 이전과 똑같이 네트워크 계층에서 생성해서 보낸다.(ACK-SYN 받고 ACK 생성하고 encapsulation하고 전송)
- 전송 계층에서 버퍼에 저장했던 HTTP 페이로드를 여러 개로 단편화해 세그먼트를 생성한다. (보낼 데이터 encapsulation 재개)
- 네트워크 계층에서 IP 패킷을 생성한다.
- 데이터 링크 계층에서 이더넷프레임을 생성한다.
- 물리계층에서 라우터로 전송한다.(데이터 encapsulation 끝. 전송)
'network > 해킹 입문자를 위한 TCP IP 이론과 보안' 카테고리의 다른 글
TCP IP 계층 (0) | 2022.12.09 |
---|---|
TCP/IP 방식의 계층적 구조 (0) | 2022.12.09 |
데이터 전송 단위 (0) | 2022.12.09 |
UDP 방식과 TCP 방식 (0) | 2022.12.09 |
DNS 캐시 테이블 (0) | 2022.12.09 |