cmd(명령 프롬프트)로 접속하여 ipconfig 명령어를 입력한 다음, 나타나는 값들은 무엇을 의미하는 것일까?
랜 카드 : 네트워크 안에서 컴퓨터 간의 통신을 할 때 사용하는 장비로 데이터 송수신을 위한 핵심장비이다. 즉, 빠른 속도의 패킷을 송수신하는 기본적인 기능을 지원한다.
랜 카드의 종류
1) PC에 랜선을 연결 하여 통신하는 유선 랜카드
2) 랜선을 연결하지 않고 와이파이로 연결 및 사용하는 무선 랜카드
공유기 (라우터) : 여러 단말기가 하나의 인터넷 라인을 공유해 동시에 인터넷을 사용할 수 있게 하는 장비
일반적인 IP 주소는 IPv4주소를 의미한다.
IP주소의 범위는 0.0.0.0 ~ 255.255.255.255로 총 32비트로 이루어져있다.
(이는 2진수 변환시 0000 0000 0000 0000 0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 1111 1111로 이루어진다는 것을 얘기한다.)
IP주소의 클래스 구분 (IP주소의 첫 번째 필드)
127번으로 시작하는 IP 주소는 127.0.0.1로 사용하는 특별한 주소로 어떠한 클래스에도 속하지 않는다.
127.0.0.1 : 자기가 사용하는 LAN 카드 자신을 의미하며, 루프백 주소라고 부른다.
- Local host : 컴퓨터 네트워크에서 사용하는 로컬 호스트명 / 자신의 컴퓨터를 의미
- 루프백 (Loopback) : 전기신호의 라우팅, 디지털 데이터 스트림, 또는 품목의 흐름이 의도적인 가공이니ㅏ 수정 없이 원래의 장치나 장비로 돌아가는 것을 의미함
-> 주로 전송이나 수송 기반 시설을 테스트하는 수단으로 사용한다고 함
서브넷 마스크는 IP주소와 쌍으로 사용하는 개념이다. Ex) 255.255.255.0
IP주소를 서브넷 마스크를 이용해 표기하는 방식을 서브넷 마스크 표기법이라고 부른다
Ex
10.10.10.10 255.0.0.0 : 네트워크 ID는 10 / 호스트 ID는 10.10.10
즉, 서브넷 마스크에서 255로 적혀있는 필드가 네트워크 ID에 해당하며, 0으로 적혀있는 필드가 호스트 ID에 해당한다.
IP주소와 서브넷 마스크의 대응 관계는 IP주소 체계를 의미한다. 즉, IP주소에서 네트워크 ID와 호스트 ID의 구분 기준을 서브넷 마스크를 이용해 표현한다.
: 인터넷으로 접속하기 위한 일종의 관문 역할을 수행하기 위한 장비이다. 소프트웨어 측면을 강조할 때 게이트웨이라고 하며, 하드웨어 측면을 강조할 때 라우터라고 표현한다.
해당 장비에서 수행하는 기능은 라우팅(서로 다른 LAN 영역의 호스트 사이를 연결하는 기능)이라고 한다. 주요 특징으로는 PC와 게이트웨이에 설정한 네트워크 ID는 동일하다.
LAN(Local Area Network) 영역 : 동일한 네트워크 ID를 공유하는 장치들의 집합적 공간 또는 동일한 게이트웨이 주소를 사용하는 장치들의 집합적 공간을 의미한다.
네트워크 ID : 무수한 LAN 영역에서 자기 LAN 영역을 구분하기 위한 식별자 또는 해당 LAN 영역을 식별하는 고유 IP주소 대역을 의미한다.
호스트 ID : 동일한 LAN 역역에 속한 호스트 각각을 구분하기 위한 식별자이다.
DHCP(Dynamic Host Configuration Protocol) 서비스 : 사용할 IP 주소 범위를 서버에 미리 등록하면 PC 사용자에게 IP주소, 서브넷 마스크, 게이트웨이 IP주소 등을 자동으로 할당해주는 기능이다.
DHCP 서비스가 할당해주는 내용 : IP주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 IP 주소
DHCP 동작 과정
1) Discovery : 클라이언트가 IP주소를 얻기 위하여 같은 네트워크 내의 모든 DHCP 서버에게 IP주소 요청
2) Offer : DHCP서버들이 클라이언트에게 IP정보와 관련정보 내용을 전달하여 임대 제안
3) Request : 클라이언트가 DHCP서버의 제안에 대해 통보함. 이후, 해당되는 DHCP서버만 다음 단계로 넘어감
4) ACK : DHCP서버가 클라이언트로부터 Request메세지를 받으면 구성 프로세스의 최종 단계로 들어감
--> 서버는 클라이언트에게 ACK를 보내고 IP구성 프로세스 완료
(ACK(Acknowledge Code) : 응답 문자)
기본 게이트웨이 주소와 DHCP서버 주소가 동일하다. = 이는 게이트웨이에서 DHCP기능을 수행하기 때문이다.
DNS(Domain Name System) 서비스 : 도메인 네임과 IP주소의 대응 관계를 일종의 데이터베이스 형태로 저장해 사용하는 기능
MAC주소 : LAN역역에서 내부 통신을 수행하기 위해 필요한 주소 (MAC주소는 랜카드에 새겨진 주소)
맥 주소는 48비트 체계이며, 16진수로 표현된다. 앞의 24비트와 뒤의 24비트를 나누어 OUI와 일련번호로 구분한다.
내부 통신 : LAN영역에서 스위치 같은 접선 장치에 물린 호스트 사이에서 일어나는 통신 (라우팅과 무관하다.)
내부통신의 데이터 전송
호스트 A에서 스위치 장비를 통해 호스트 C로 데이터를 전소알 경우
1) 스위치 운영체제는 호스트 A의 물리적 주소를 출발지 맥 주소로 간주
2) 호스트 C의 맥 주소를 목적지 맥주소로 간주해 스위치 장비에 내장한 모종의 테이블에 해당 맥 주소를 저장하고 거맥
--> 위의 과정을 스위칭이라고 하며, 스위칭은 스위치 장비가 맥 주소에 기반하여 호스트 사이에서 내부통신을 구현하는 기능을 의미한다.
(포워딩 : 스위치는 맥 주소 인식을 통해 오직 목적지 맥 주소가 있는 해당 포트로만 데이터를 전송)
ARP(Address Resolution Protocol) 기능 : IP주소와 MAC주소 사이를 연결해주는 기능
ARP 캐시 테이블 : IP주소와 MAC주소의 대응 관계를 저장한 테이블로, 스위치나 라우터 같은 장비에서도 볼 수 있다.
브로드캐스트(broadcast) 방식 : 자신과 동일한 네트워크 ID를 사용하는 모든 호스트에게 데이터를 전송
유니캐스트(unicast) 방식 : 특정한 호스트에게 데이터를 전송
ping 명령어 : 출발지 호스트와 목적지 호스트 사이에서 회선의 연결 상태나 목적지 운영체제의 동작 여부 등 여러 가지를 점검하기 위하여 사용
ARP 캐시 테이블에 목적지 맥 주소가 올라오면 운영체제에서는 ARP 캐시 테이블을 참조해 핑 데이터를 유니캐스트 방식으로 게이트웨이에게 전송하고 게이트웨기가 IP주소 기반 라우팅 통신을 통해 전송
ARP응답과 요청 과정
1) 운영체제는 출발지 서브넷 마스크를 기준으로 출발지 네트워크 ID와 목적지 네트워크 ID를 비교해 목적지가 스위칭 통신의 대상인지, 라우팅 통신의 대상인지 판단한다.
2) 운영체제는 ARP 캐시 테이블에 접근해 목적지 맥 주소를 검색한다. 목적지가 스위칭 통신의 대상이면 실제 목적지 IP주소에 해당하는 맥 주소를 ARP 캐시 테이블에서 검색하고, 목적지가 라우팅 통신의 대상이면 라우터 IP주소에 해당하는 맥 주소를 ARP 캐시 테이블에서 검색한다.
3) ARP 캐시 테이블에 목적지 맥 주소가 있다면, 운영체제는 해당 맥 주소를 참조해 목적지까지 유니캐스트 방식으로 전송한다. 만약 목적지 맥 주소가 없다면, 운영체제는 자신이 속한 LAN영역 전체를 대상으로 ARP 브로드캐스트 질의를 전송한다.
4) 출발지 호스트와 동일한 LAN영역에 속한 목적지 호스트는 ARP 유니캐스트 응답을 출ㄹ발지 호스트에게 전송한다.
5) 운영체제는 ARP 유니캐스트 응답을 통해 획득한 맥 주소를 ARP 캐시 테이블에 반영한다.
6) 운영체제는 사용자가 전송하고자 하는 실제 데이터를 ARP 캐시 테이블에 기반해 목적지 호스트를 유니캐스트 방식에 따라 전송한다.
(ARP 영역 : ARP 요청과 응답이 일어나는 장소로 ARP 영역 자체가 곧 LAN영역 자체를 의미한다.)
ARP 기능 요약 : ARP동작이 동일한 네트워크 ID를 공유하는 호스트를 대상으로 맥 주소를 구하는 기능
DNS 캐시 테이블 : 도메인 네임과 IP주소의 대응 관계를 저장한 테이블
DNS 동작 과정
1) 사용자가 도메인 네임을 입력하면 윈도우 운영체제는 해당 도메인 네임에 대응하는 IP주소를 'C:\Windows\System32\drivers\etc\hosts'에 위치한 파일에서 먼저 검색한다.
2) 해당 파일에서 도메인 네임이 없을 경우, DNS 캐시 테이블에서 해당 도메인 네임 대응 IP주소를 검색한다. 있다면, 해당 주소를 참조해 해당 사이트로 접속한다.
3) DNS 캐시 테이블에도 해당 도메인 네임이 없다면, 운영체제는 로컬 DNS서버의 IP주소를 해당 도메인 네임에 대한 질의를 요청
4) 로컬 DNS서버로부터 해당 도메인 네임에 대한 IP주소를 응답받으면, 해당 내용을 DNS 캐시 테이블에 반영한다.
UDP 전송 방식 : 송신 측 호스트에서 송신 데이터가 생기면 곧바로 수신 측 호스트에게 전송을 행한다. 수신 측에서 수신할 수 있는지 여부는 고려하지 않으며, 전송 중 오류가 생기는 것도 고려하지 않은 상태로 무조건 전송만을 수행한다.
TCP 전송 방식
(그림 및 표 출처 : 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e 그림 5-1, 5-2, 표 5-1)
UDP와 TCP 비교
UDP는 버퍼링 기능이 없고, TCP는 있다.
UDP는 시간이 민감한 환경에서 사용하며, TCP는 안정적인 전송을 요구하는 환경에서 사용한다.
UDP는 상대적으로 신뢰성이 떨어지며, TCP는 오류 제어가 가능하여 신뢰성이 상대적으로 높다.
UDP는 버퍼링 기능이 없기 때문에 전송 속도가 빠르며, TCP는 버퍼링 기능이 있기에 처리 지연이 발생한다.
소켓(socket) : 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다. / 포트 번호와 IP를 통칭하며 운영체제가 논리적인 방식에 따라 서로 떨어진 두 대의 호스트를 연결해주는 인터페이슬르 의미한다.
소켓 생성 : 운영체제가 통신에 필요한 내부 자원을 할당한다는 의미
소켓 통신 : server와 client가 특정 port를 통해 실시간으로 양방향 통신을 하는 방식
포트 번호 : 16비트로 이루어진 가상적 주소 (단일 체계 / 전송 계층)
포트(port) : 포트는 네트워크 상에서 통신하기 위하여 내부적으로 프로세스가 할당받아야 하는 고유한 숫자로 한 호스트 내에서 네트워크 통신을 하고 있는 프로세스를 식별하기 위해 사용되는 값
(표 출처 : 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e 표 5-3)
페이로드 : 사용자가 상대에게 전송하고자 하는 실제 정보가 담긴 공간
헤더 : 편지 봉투와 같이 보내는 사람의 주소(출발지 주소)와 받는 사람의 주소(목적지 주소)가 담긴 공간
메세지(message) : 페이로드만으로 이루어진 데이터 전송 단위
데이터그램(datagram) or 세그먼트(segment) : 페이로드가 UDP속성이면 데이터그램 헤더이며, TCP속성이면 세그먼트 헤더이다.
(전송 단위의 차이가 있는 이유는 단편화이며, 단편화란 데이터를 분할한다는 의미로, 생성한 페이로드 영역을 여러 개로 조각내어 전송하는 기법으로 전송의 호율성과 데이터의 기밀성 등을 목적으로 사용한다. 이 단편화는 TCP방식에만 존재한다.)
데이터그램 헤더의 핵심은 포트 번호이다. 상대방 운영체제에서는 데이터그램 헤더에 담긴 포트 번호를 통해 페이로드의 내용이 어떤 종류의 서비스에 해당했는지 판단이 가능하다.
패킷
패킷 헤더의 핵심 정보 : 출발지 IP 주소, 목적지 IP 주소
사용자가 웹 브라우저의 주소창에 도메인 네임을 입력하면 DNS 서비스에 의해 IP주소를 변환한 뒤 패킷 헤더의 목적지 IP주소에 담김
-> 라우터장비가 라우팅을 수행할 때 참조하는 부분이 패킷 헤더이다.
프레임
프레임 헤더의 핵심 정보 : MAC 주소
-> 스위치 장비가 스위칭 기능을 수행할 때 참조하는 부분이 프레임 헤더로 프레임 헤더는 스위칭 통신 영역과 라우팅 통신 영역에서 담는 정보가 다르다.
인캡슐레이션 : 생성한 페이로드 앞에 헤더를 붙이는 과정
디캡슐레이션 : 일련의 헤더를 떼는 과정