통신 방식의 종류
- 유니캐스트
: 1대1 통신
- 브로드캐스트
: 동일 네트워크 모든 호스트에게 통신
: IPv6에서는 링크 로컬 멀티 캐스트로 대체되어 사용
- 멀티캐스트
: 1대다 통신
- 애니캐스트
: 가장 가까운 호스트에게 통신
- 언노운 유니캐스트
: 목적지가 정확하게 명시되어 있지만 스위치가 목적지에 대한 주소를 학습하지 못하여
패킷을 모든 포트로 전송
MAC (Media Access Control)
: 데이터링크 계층에서의 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자
: 제조업체마다 MAC주소 pool을 가지고 자체적으로 할당
: 24비트 OUI (IEEE가 제조사에 할당한 부분)과 24비트 UAA (제조사가 할당한 부분)으로 48비트로 구성
- MAC 주소를 변경하는 방법
: 윈도우
> 드라이버 상세 정보에서 변경
: 리눅스
> GNU MaxChanger나 네트워크 설정 파일 변경
=> 스위치 / 라우터 등의 복잡한 네트워크 장비는 여러 개의 NIC와 MAC 주소를 가진다
- 무차별 모드
: 자신의 MAC 주소와 상관없는 패킷이 들어와도 메모리에 올려서 처리하는 모드
: 와이어샤크에서 패킷을 분석하기 위해 사용하는 모드
IP
: 32비트 IPv4와 128비트 IPv6로 나뉨
: IPv4의 경우 네트워크 주소와 호스트 주소로 나뉨
> 네트워크 주소가 동일한 경우 로컬 네트워크라고 함
> A, B, C, D, E 클래스로 네트워크 주소의 범위가 달라짐
=> 현재는 클래스 단위가 아닌 1비트 단위로 네트워크를 분할 함
- 클래스풀
: 클래스 기반의 IP 주소 체계
- 클래스리스
: 클래스 개념을 적용하지 않는 주소 체계
: 네트워크 주소와 호스트 주소를 구분하기 위해 서브넷 마스크를 사용
> 서브넷 마스크는 보통 2진수 기준으로 1의 갯수로 표기함
- 서브네팅 <CIDR (Classless Inter Domain Routing)>
: 부여된 네트워크 주소를 나누는 것
: 1비트 단위로 네트워크를 분할
: 계산 방법1
> 내 IP와 서브넷 마스크를 진수로 표현
> AND 연산을 통해 네트워크 주소 계산
> 호스트 주소를 2진수 1로 변경하여 브로드 캐스트 주소 계산
> 서브네팅 된 주소 +1 ~ 브로드캐스트 주소 -1 범위가 호스트 네트워크의 범위
: 계산 방법2
> 서브넷 마스크를 보고 가질 수 있는 IP 개 수를 파악
> 파악한 IP 개수로 0~255 범위의 IP 단위를 나눔
> 주어진 호스트의 IP가 어떤 범위에 속해 있는지 계산
> 최소 주소 / 최대 주소 등 계산
공인 IP
: 인터넷 접속을 위해 유일해야하는 식별자
: 통신 사업자 혹은 KISA로 부터 ASN (인터넷 독립 기관 주소)를 할당 받아 사용 가능
사설 IP
: 인터넷 접속 유무와 상관없이 구축할 수 있는 네트워크
: NAT를 이용해 내부 IP를 구성하여 하나의 공인 IP로 여러 호스트가 사용할 수 있음
> NAT는 인터넷 표준인 RFC에 명시된 주소를 할당함
: 공인 IP로 사용하지 않는 주소가 할당되어야 함
- 사설 IP의 클래스
: 공인 IP와의 충돌을 방지하기 위해 범위가 정해져 있음
: A 클래스 1개 / B 클래스 16개 / C 클래스 256개를 사용할 수 있음
> A클래스 10.0.0.0/8 (~10.255.255.255)
> B클래스 172.16.0.0/12 (~172.31.255.255)
> C클래스 192.168.0.0/16 (~192.168.255.255)
- Bogon IP
: IP 주소 할당 기구인 IANA에서 예약해놓아 공인 IP로 할당하지 않는 IP
포트
: IANA에서 지정
- Well known Port
: 1 ~ 1023
- Registered Port
: 1024 ~ 49151
- 임시포트
: 49152 ~ 65535
: 자동 할당 되거나 사설 용도로 사용
- 프로토콜 확인
: System32\drivers\etc\protocols
: System32\drivers\etc\services
TCP 통신
- 슬라이딩 윈도우
: 네트워크에 따라 송신량을 조절하는 기술
> 송신 사이즈를 의미하는 윈도우 사이즈를 조절
- 3way handshake
: TCP 통신에서 데이터를 안전하게 전송하기 위해 데이터를 받을 수 있는지 상태를 확인하고
보내며 확인 과정을 거치는 통신 방법
: 클라이언트 (송신 측) 상태 변화
> SYN-SENT > ESTABLISHED
: 서버 (수신 측) 상태 변화
> LISTEN > SYN-RECEIVED > ESABLISHED
: 헤더에 플래그를 넣어 기존 통신과 새로운 통신을 구분
> 플래그에 1 값을 넣어 활성화
> SYN (연결 시작)
> ACK (기존 메시지에 대한 응답)
> FIN (연결 정상 종료)
> RST (연결 강제 종료)
> URG (긴급 데이터)
> PSH (서버 측에서 전송할 데이터가 없거나 버퍼링 없이 즉시 전달할 때)
: 시퀀스 번호를 이용해 순서대로 데이터를 전송 받음
UDP
: 안전한 데이터 전송을 보장하지 않는 프로토콜
: 데이터의 유실 보다 신속성이 중요한 경우 사용
: 첫 데이터를 인터럽트 용으로 사용하고 유실
: TCP로 연결확립 시키고 UDP로 실제 데이터를 전송함
ARP
: 송신 측에서 수신 측의 MAC 주소를 알아내기 위해 사용하는 프로토콜
: 통신을 시도하기 전에 ARP 브로드캐스트를 통해 네트워크 전체에 대해 MAC주소를 질의
> ARP 패킷의 목적지 IP를 통해 자신을 목표로 하는 경우 ARP 응답
> 이 과정을 통해 양측이 상대방의 MAC 주소를 인지하고 통신
: 양측에서는 브로드캐스트로 인한 CPU 낭비를 방지하기 위해
메모리에 ARP 테이블을 유지하여 일정기간 동안 활용
GARP (Gratuitous ARP)
: 자신의 IP와 MAC 주소를 알릴 목적으로 사용하는 프로토콜
- 용도
: IP 충돌 감지
> 할당 받은 IP가 다른 호스트의 IP와 겹치는지 확인
: 상대방의 ARP 테이블 갱신
> 고가용성 클러스터에서 대기중인 호스트가 활성화 상태가 되었을 때
상대 호스트에게 자신의 MAC 주소를 알림
> 보안상 문제로 요즘은 가상 MAC주소를 활용
: 고가용성 및 클러스터링 (VRRP / HSRP / FHRP)
> 스위치 장비의 MAC 테이블 갱신
> 마스터와 슬레이브 역할이 변경 되었을 때 통신 장애 방지를 위함
RARP
: IP 주소가 정해져 있지 않은 단말이 IP 할당을 요청하기 위해 사용하는 프로토콜
: MAC 주소를 통해 IP 주소를 할당 받을 수 있도록 함
: 과거 네트워크 호스트의 주소 할당에 쓰였으나 제한된 기능으로 인해 BOOTP와 DHCP로 대체됨
게이트웨이
: 서로 다른 네트워크의 통신을 위한 장비
> 원격지 네트워크 와의 통신을 위함
> 라우터와 L3 스위치가 역할 수행 가능
: ARP 브로드 캐스트로 MAC 주소 학습이 가능하지만 원격 네트워크에 대한 MAC 주소는 알 수 없음
> 네트워크 경로와 통신을 위해 게이트웨이가 필요
- 기본게이트웨이
: 게이트웨이에 대한 정보를 PC나 네트워크 장비에 설정하는 항목
: 원격지에서 ARP 브로드캐스트를 보냈을 때 응답
서브넷 마스크
: 통신을 하기전 목적지 네트워크가 자신이 속한 네트워크 범위인지 확인하기 위한 값
: IP주소와 서브넷 마스크를 AND 연산하여 나온 값
> 연산 결과 값이 로컬 네트워크에 속한 경우 로컬 통신
> 아닌 경우 원격 통신
프록시 ARP
: ARP 브로드캐스트를 대행하는 기능
: 수신 측의 기본 게이트웨이에 프록시 ARP가 활성화 되어 있는 경우
라우터가 기본 게이트웨이를 대신하여 원격지의 송신 측으로 ARP 응답
> 편리하게 MAC 주소를 알아낼 수 있지만 라우터 교체 및 구성 변경 시 장애 발생 위험
로컬 네트워크 통신과 원격지 네트워크 통신
- 로컬 네트워크 통신
: 데이터링크 계층을 통해 이루어지는 통신
: 전송 계층 프로토콜을 사용하지 않고 통신 가능
: 네트워크 내에서 직접 ARP 브로드캐스트
> 패킷의 목적지 MAC 주소와 목적지 IP주소가 동일
- 원격지 네트워크 통신
: 전송 계층을 통해 이루어지는 통신
: 패킷을 전송하는 네트워크 장비에서 전송 계층 프로토콜 정보가 필요
: 기본 게이트웨이를 통해 ARP 브로드캐스트
> 패킷의 목적지 MAC주소가 기본 게이트웨이의 MAC주소 이고
실제 도착지 IP주소가 기재
Reference
'Computer Science > Network' 카테고리의 다른 글
네트워크 인프라 4. 네트워크 계층 장비 (0) | 2022.05.18 |
---|---|
네트워크 인프라 3. 데이터링크 계층 장비 (0) | 2022.05.15 |
네트워크 인프라 1. 네트워크 기초 (0) | 2022.05.10 |
HTTP Header의 구조와 캐시, 쿠키, 세션 (0) | 2022.05.05 |
사용중인 네트워크 회선의 포트 개폐 여부 확인 (열린 포트 확인) (0) | 2021.09.08 |