이 글은 IT 엔지니어를 위한 네트워크 입문 스터디를 마치고 정리한 글이다.
이전에 정리했던 RealMySQL 정리와는 조금 다르게 양이 너무 많아 설명을 모두 적으면, 책을 다시 읽는게 더 좋을 것 같아 키워드 위주로 정리했다.
네트워크는 단말간 물리적인 연결이 필요하다.(케이블부터 공기까지)
보통 상-하 또는 좌-우로 트래픽을 분산한다.
단말간 통신을 어떻게 할까? 통신 규약(프로토콜)이 있다.
통신 규약은 여러가지가 있지만 현재는 이더넷의 TCP/IP 기반이 대부분이다.
Physical (허브, 리피터, 케이블, 커넥터 등)
물리적 연결과 관련된 정보로 전기신호를 전송한다.
DataLink (랜카드, 스위치)
전기신호를 우리가 알아볼 수 있는 형태로 처리한다.
주소 정보를 정의하고, 정확한 주소(MAC주소)와 통신하는데 초점이 맞춰져있다.(상대방이 받을 수 있는지 확인한다.)
데이터에 대한 에러 탐지/수정 역할(이더넷 기반에선 탐지만)
랜카드에는 고유한 MAC주소가 있는데 입력되는 전기신호를 데이터로 바꾸고, MAC주소를 확인한 뒤 자신에게 돌아오는 전기신호를 확인한다. 통과하면 메모리에 적재
스위치는 단말의 MAC주소와 포트번호를 습득한다. 이 데이터를 기반으로 포트를 필터링하고, 포워딩한다. 스위치의 발전과 함께 이더넷 기반 네트워크는 급증했다.
Transport
데이터들이 정상적으로 잘보내지는지 확인하는 역할.(로드밸런서, 방화벽)
패킷이 유실되거나, 순서가 바뀌는 경우를 바로잡아준다.
보내는 순서는 시퀀스, 받는 순서는 ACK이라 하고, 포트번호를 사용해 상위 애플리케이션을 구분한다. 이 정보를 이용해 부하를 분산하거나, 보안정책을 수립한다.
Session
양 끝단의 응용프로세스가 연결을 성립, 안정적으로 유지, 작업 후 연결 종료.
세션을 관리하는 것이 주요 역할. TCP/IP 세션을 만들고 책임진다.
에러에 대한 복구와 재전송 수행
Presentation
표현 방식이 다른 애플리켕이션 또는 시스템간의 통신을 위해 통일된 구문으로 변환한다. (MIME인코딩, 암호화, 압축, 코드변환등)
Application
애플리케이션 프로세스를 정의하고, 서비스 수행.(FTP, SMTP, HTTP, TELNET등)
소프트웨어 UI 또는 사용자 입출력을 정의한다.
상위에서 하위 계층으로 보낼때 헤더를 추가하고 전기신호로 만드는 것을 인캡슐레이션,
하위에서 상위 계층으로 보낼때 헤더를 벗기고 데이터를 올려 보내는 것은 디캡슐레이션이라 한다.
예전에는 여러 LAN, MAN, WAN등 프로토콜이 존재했지만, 현재는 이더넷으로 통합 되어 구분은 의미가 없어졌다.
원격지 네트워크에 연결하기 위해서 WAN을 사용하는데 WAN도 이더넷을 사용한다.
특별한 상황에선 다른 기술을 사용하기도 한다.
출발지에서 목적지로 데이터를 전송할 때 통신하는 방법은 다음과 같다.
유니캐스트 : 1:1 통신 방식 실제로 대부분의 통신은 유니캐스트 방식이다.
브로드캐스트 : 동일 네트워크에 모든 호스트에 패킷을 전달할때 사용. 유니캐스트로 통신하기 전에 상대방의 정확한 위치를 알기위해 사용한다.
멀티캐스트 : 해당 그룹에 속한 다수의 호스트로 패킷을 전송한다. 사내방송이나 증권시세, IPTV와 같은 실시간 방송을 사용한다.
애니캐스트 : 주소가 같은 호스트중에 가장 가깝거나 효율적으로 서비스할 수 있는 호스트와 통신하는 방식이다.
가장 가까운 DNS 서버를 찾거나, 가장 가까운 게이트웨이를 찾는 애니캐스트 게이트웨이를 사용하기도 한다.
최초 통신은 1:1로 유니캐스트와 애니캐스트가 동일하지만 통신할 후보자는 다르다. 유니캐스트는 정확한 출발지와 목적지가 있지만, 애니캐스트는 같은 목적지 주소를 가진 서버가 여러대여서 다수의 후보군이 있다.
2계층 통신을 위해 네트워크 인터페이스에 할당된 물리적인 고유 식별자를 뜻한다.
2계층에서 전기 신호를 데이터로 변경하고, 도착 MAC주소를 확인한다. 이때 본인의 주소와 다르면 폐기한다.
3계층에서 사용되는 논리적인 주소를 뜻한다.
IPv4는 4개의 옥텟으로 나누는데, 옥텟 단위로 주소와 호스트를 나누어 네트워크를 세밀하게 분할할 수 있다.(요새는 비트 단위로 분할함)
4계층 프로토콜을 뜻한다. 2,3 계층과 다르게 출발지와 도착지를 구분해 처리한다.
2계층의 MAC 주소와 3계층의 IP 주소는 관계가 없는데 어떻게 알아낼까 → ARP 사용
첫 통신을 할 때 IP주소는 알지만, MAC 주소를 몰라 캡슐화 할 수 없다. 이때 ARP를 사용해 브로드캐스트로 MAC 주소를 질의한다.
ARP 요청은 CPU가 처리하기 때문에 요청이 몰리면 부하가 생긴다.(ARP 공격을 하기도 함) 따라서 ARP 필터링이나, 캐시를 사용해 성능을 높인다.
게이트웨이 : 원격지 네트워크와의 통신에 사용하는 장비 (ex. 라우터, L3스위치)
서브넷 : 원격지 네트워크 통신을 할 때 목적지가 동일한 네트워크 인지 확인하는 용도 (다른 네트워크는 ARP 못보냄)
스위치는 여러 장비가 동시에 패킷 통신할때 간섭이 없도록 도와주는 장비이다.
기존에는 스위치가 없어 패킷 경합이 일어났었는데, 스위치 덕분에 네트워크 효율성이 향상되었다.
플러딩 : 스위치가 부팅하면 네트워크 관련 정보가 아무것도 없다. 이때 스위치는 요청이 들어온 포트를 제외하고 모든 포트로 패킷을 전달한다. (허브와 같음)
패킷 정보의 MAC 주소를 보고 이를 학습해 테이블을 만들고 이를 통해 패킷을 전송한다.
- 비정상적인 플러딩 : TCP/IP 네트워크에선 ARP 브로드캐스트를 미리 주고받은 후 데이터가 전달되기 때문에 플러딩하지 않는다. 스위치를 사용해 필요한 곳에만 포워드 하므로 주변 통신을 악의적으로 가로채기 힘들어 보안에 도움이 된다.
어드레스 러닝 : MAC 주소 테이블을 만들고 유지하는 과정을 뜻한다. 패킷의 출발지 MAC 주소를 이용해 테이블에 기록한다.
포워딩/필터링 : 패킷이 스위치에 들어온 경우 자신의 MAC 테이블과 비교해 매치되는 포트로 포워딩한다. 이때 다른 포트로 패킷을 전송하지 않는데 이를 필터링이라고 한다.
물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술이다.
브로드캐스트로 단말들의 성능저하, 보안 향상을 위한 차단 용도, 정책 분리 같은 이유로 네트워크를 분리한다.
VLAN으로 나뉜 네트워크는 유니캐스트, 브로드캐스트로 통신할 수 없으며, 3계층 장비를 통해 통신해야 한다.
같은 스위치의 다른 VLAN은 별도의 스위치에 연결된 것과 같으므로 ARP 요청이 전달되지 않아 VLAN 간 통신이 불가능하다. 따라서 3계층 장비를 사용해야 한다.
여러개의 VLAN이 존재하는 상황에서 스위치를 서로 연결해야 하는 경우에는 각 VLAN끼리 통신하려면 VALN 개수만큼 포트를 연결해야한다. VLAN을 많이 사용하는 중형 이상의 네트워크에선 통신을 위한 포트만으로도 많은 포트가 낭비된다.
태그 포트 : 여러 VLAN이 한번에 통신하도록 해주는 포트다. 패킷이 들어올 경우 태그를 벗겨내면서 태그된 VLAN으로 패킷을 전송한다.
VLAN 태그 기능은 이 문제를 해결할 수 있다. (태그포트, 트렁크포트)
하나의 포트에 여러개의 VLAN을 함께 전송할 수 있게 해준다. 태그 포트는 이더넷 프레임 중간에 VLAN ID 필드를 끼워넣어 이 정보를 이용하는데, 보낼때 VLAN ID를 붙이고 수신측에서 제거하면서 VLAN으로 패킷을 보낼 수 있다.
태그 포트 기능이 스위치에 생기면서 스위치 패킷 전송에 사용되는 MAC 주소 테이블에도 변화가 생긴다.
다른 VLAN과 통신하지 못하도록 MAC 테이블에 VLAN을 지정하는 필드가 추가된다.
IT 환경에서 SPoF로 인한 장애를 피하기 위해 다양한 노력을 한다. 네트워크에서도 하나의 장비 고장으로 전체 네트워크가 마비되는 것을 막기 위해 N중화 네트워크를 디자인하고 구성한다.
SPoF를 피하기 위해 장비를 두 대 구성하면 네트워크 루프가 일어나 마비시킬 수 있다.
루프를 예방하기 위해 별도의 매커니즘이 필요한데 어떤 방법이 있는지 알아보자
루프의 원인은 크게 많지 않다.
루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 매커니즘이다.
STP를 사용해 루프를 예방하려면 전체 스위치가 어떻게 연결되는지 알아야 한다. 전체적인 스위치 연결 상황을 파악하려면 스위치 간에 정보를 전달해야 하는데, 이를 위해 스위치는 BPDU라는 프로토콜을 통해 스위치간 정보를 전달하고, 루프 구간을 확인한다.
스위치 포트의 상태 및 변경 과정
STP가 동작중인 스위치에서는 루프를 막기 위해 신규 스위치가 연결되면 바로 트래픽이 흐르지 않도록 차단한다. 그리고 4가지 상태를 거쳐 포워딩 된다.
다음과 같은 단계를 거치기 때문에 스위치에 신규 장비를 붙이면 통신하는데 50초가 소요된다. 스위치는 루프를 예방하기 위해 매우 방어적으로 동작하기 때문에 새로운 장비가 스위치가 아니어도 동일한 시간이 필요하다.
STP는 네트워크에 속한 모든 스위치까지 BPDU가 전달되는 시간을 고려해 30~50초의 시간이 소요된다. 너무 오래 걸리기 때문에 속도 향상이 필요했다.