1. 네트워크
1) 네트워크 구성도
- 홈 네트워크
인터넷 <-> 모뎀 <-> 공유기 <-> 컴퓨터, 테블릿, 스마트폰
2) 프로토콜
- 개요
- 통신을 하기 위한 규칙이나 규약
- 물리적 측면 : 데이터 전송 매체(케이블), 신호 규약, 회선 규격 등을 정의하는 것, 최근에는 거의 이더넷만 사용
- 논리적 측면 : 프로토콜 규격 등을 정의하는 것, 최근에는 거의 TCP/IP 만 사용
- 프로토콜을 정의할 때, 예전에는 비트 기반으로 많이 만들었는데 최근에는 문자 기반으로 많이 사용합니다.
- 비트 기반의 프로토콜은 효율적이기는 하지만 사람이 읽기가 어렵습니다.
- TCP/IP는 엄밀한 의미에서 프로토콜이 아니고 프로토콜 스택
- TCP와 IP는 별도의 계층에서 동작하는 프로토콜인데 이를 합쳐서 부릅니다.
- TCP/IP 프로토콜 스택에는 TCP와 IP 이외에도 UDP, ICMP, ARP, HTTP, SMTP, FTP, HTTPS 등이 포함되어 있습니다.
3) OSI 7계층과 TCP/IP
-
OSI 7계층
-
전에는 프로토콜을 각 벤더들이 별도로 개발했기 때문에 호환되지 않는 시스템이나 애플리케이션이 많았다.
-
하나의 프로토콜로 통합하고자 했던 노력으로 만들어진 것이 OSI 7계층
-
7개의 계층으로 모듈화 한 이유는 재사용 문제 때문 : 하나로 만들면 재사용성이 떨어지고 이해하기 어려워집니다.
| 이름 | 데이터 |
|---|
| Application | data |
| Presentation | data |
| Session | data |
| Transport | Segments |
| Network | Packet |
| DataLink | Frames |
| Physical | Bits |
-
2개 부분으로 분할
5~7 계층 : 상위 계층 - 애플리케이션 계층 : 인간, 애플리케이션 개발자의 영역
1~4 계층 : 하위 계층 - Data Flow 계층 : 기계, 네트워크 엔지니어의 영역
4) OSI 7계층 별 이해
- 1계층(물리 계층)
- 물리적 연결과 관련된 정보
- 장비 : Hub, Repeater, Cable, Connector, Transiver(랜카드와 케이블을 연결해주는 장비), TAP(네트워크 모니터링 이나 패킷 분석을 위해서 전기 신호를 다른 장비로 복제해주는 장비) 등
- 2계층(데이터 링크 계층)
- 전기 신호를 데이터 형태로 변환하는 계층
- 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는 역할을 수행
- 1계층에는 주소라는 개념이 존재하지 않지만, 출발지 주소와 목적지 주소를 확인하고 자신에게 전송된 것인지 확인
- 에러 탐지도 수행
- 2계층 장비는 NIC(Netwokr Interface Card) 와 Switch
- 사용하는 주소 체계는 MAC Address
- 2계층 장비들은 MAC Address를 이해할 수 있는 장비
- NIC 동작 방식
- 전기 신호를 데이터 형태로 생성
- 목적지 MAC Address 와 출발지 MAC Address를 확인
- 자신의 MAC Address 를 확인
- 목적지 MAC Address 와 자신의 MAC Address 가 일치하면 데이터를 처리하고 다르면 데이터를 폐기
- Switch
- 허브와 유사하게 여러 개의 포트로 구성
- MAC Address Table을 가지고 있어서 통신을 하면 MAC Address를 학습해서 테이블에 저장할 수 있습니다.
- 단말들이 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩합니다.
- 허브는 어느 한 순간 하나의 장비만 전송이 가능하지만, Switch는 동시에 데이터 전송이 가능데이터 전송이 가능


- 3계층(네트워크 계층)
- 논리적인 주소를 정의
- 사용자가 환경에 맞게 변경할 수 있고 주소를 네트워크 주소 부분과 호스트 주소 부분으로 나누어서 할당할 수 있습니다.
- 3계층 장비가 라우터 : IP를 이해해서 다른 네트워크를 찾아가는 장비

- 4계층(전송 계층)
- 데이터들이 정상적으로 잘 전송이 되는지 확인하는 역할
- 데이터는 하나의 묶음으로 전송되지 않고 일정한 크기(Packet) 단위로 분할해서 보내게 되는데 중간에 패킷이 유실되거나 순서가 바뀔 수 있는데 이러한 문제를 해결하는 계층
- 패킷을 만들 때 Sequence Number 를 붙이고 받는 쪽에서는 ACK(Acknowlegement) Number 를 전송합니다.
- 컴퓨터 내에서 애플리케이션을 구분하기 위해서 Port 를 부여
- 4계층에서 동작하는 장비는 Load Balancer 와 Firewall : 장비라고 하기도 하고 Software 라고 하기도 합니다.

- 5계층(세션 계층)
- 연결 해제와 연결 유지하는 역할
- 에러 복구와 중단된 통신의 재전송 수행
- 연결 해제와 유지를 위해서 특별한 키를 발급해서 키를 가지고 실제 연결하는 컴퓨터를 구분
- 6계층(프레젠테이션 계층)
- 구문 변환, 데이터 압축, 인코딩과 디코딩을 수행
- 데이터의 형식을 맞추는 계층
- 7계층(애플리케이션 계층)
- 애플리케이션 프로세스를 정의하는 계층
- OSI 전 계층을 수행하는 장비는 Gateway(Router를 Gateway로 보는 경우가 많음)
5) 통신 과정
- 데이터를 전송하게 되면 상위 계층에서 하위 계층으로 데이터를 전송
- 전송을 받는 쪽에서는 하위 계층에서 상위 계층으로 데이터를 전송
- 데이터를 보내는 과정을 Encasulation 그리고 받는 과정을 Decapsulation 이라고 하기도 합니다.
- 보내는 쪽
- Data
-> 4계층(4계층 헤더 + Data : Segment)
-> 3계층(3계층 헤더 + 4계층 헤더 + Data : Packet)
-> 2계층(2계층 헤더 + 3계층 헤더 + 4계층 헤더 + Data + FCS)
-> 1계층(전기적 신호로 변환)
- MSS 와 MTU
- MSS(Maximum Segment Size) : 4계층에서 사용할 수 있는 데이터의 최대 크기
- MTU(Maximum Transmission Unit) : 네트워크 계층에서 한 번에 보낼 수 있는 데이터의 크기, 이더넷에서는 1500 byte
2. 네트워크 구분과 구성 요소
1) 네트워크 연결 구분
- 규모에 따른 구분
- LAN : Local Area Network
- MAN : Metropolitan Area Network
- 하나의 도시 정도를 네트워크로 연결
- 도시 단위의 네트워크를 만들 때, 통신사의 인프라를 이용하면 WAN 이라고 하고 자체 인프라를 이용하면 MAN 이라고 하기도 합니다.
- WAN : Wide Area Network
- PAN : Personal Area Network
- 개인의 작업 공간을 중심으로 장치들을 서로 연결하기 위한 네트워크
2) 회선에 따른 분류
- 인터넷 회선 : 인터넷 접속을 위해 통신 사업자와 연결하는 회선
- 가입자와 통신 사업자 간에 직접 연결되는 구조가 아니라 전송 선로 공유 기술을 이용
- 전용 회선 : 가입자와 통신 사업자 간에 대역폭을 보장해주는 서비스
- 컴퓨터 - 스위치 - 라우터 - ISP(통신 사업자) - 라우터 - 스위치 - 컴퓨터
- 본사와 지사 연결이나 지사와 지사 연결 등에 사용
- 종류는 저속인 음성 전송 기술 기반이 있고 고속인 메트로 이더넷이 있습니다.
- LLCF(Link Loss Carry Forward)
- 한쪽 링크가 다운되면 이를 감지해 반대쪽 링크도 다운시키는 기능
- 전용 회선을 이더넷으로 구성할 때 통신 사업자가 LLCF를 설정하지 않으면 한 사이트에서 다운되더라도 반대쪽 사이트에서 회선이 살아있는 것처럼 보이기 때문에 회선을 개통한 후 회선사에서 LLCF 설정이 되어있는지 확인
- 인터넷 전용 회선 : 인터넷 연결 회선에 대한 통신 대역폭을 보장해주는 서비스
3) VPN(Virtual Private Network)
- 전용 회선이 아니지만 가상으로 직접 연결한 것 같은 효과가 나도록 만들어주는 네트워크 기술
- 통신 사업자 VPN
- 통신 사업자가 VPN을 구성해주는 것
- 하나의 건물에서만 VPN을 구성한다면 직접 구성하면 되지만 먼 거리에 떨어져있는 곳과도 통신이 가능한 VPN을 만들려면 회선 연결 비용이 증가하기 때문에 통신 사업자의 회선을 이용해서 구성합니다.
- MPLS VPN : 통신 사업자는 전용선인 것처럼 보이게 하지만 실제로는 가입자를 구분하는 기술과 시분할을 이용해서 서비스를 제공
- 가입자 VPN : 일반 사용자가 가상 네트워크를 직접 구성하는 것
4) DWDM(Dense Wavelenth Division Multiplex) : 파장 분할 다중화
- 광케이블로 데이터를 전송할 때 채널을 분할해서 데이터를 전송하는 것
5) 네트워크 구성 요소
- NIC(Network Interface Card)
- 직렬화, MAC Address, 흐름 제어(Flow Control - 데이터를 안정적으로 주고 받기 위해서 기존에 통신 중이라면 다른 네트워크에서 데이터를 보내는 것을 중지하라고 요청)
- 일반적으로 사용하는 NIC 외에도 스토리지와 서버를 연결하는 NIC도 존재
- 고성능 클러스터링을 구현하기 위한 HPC(High Performance Computing)에서도 일반적으로 사용하는 NIC를 사용하지 않습니다.
- 케이블과 커넥터
- 1000BASE-T
- 1000(속도, Mbps)BASE(채널)-T(케이블 타입)
- 케이블 종류는 트위스트페어(유선 인터넷), 동축 케이블(TV 회선), 광케이블 등이 있음
- 스위치
- 여러 장비를 연결하고 케이블을 한 곳으로 모아주는 역할을 수행
- 스위치와 허브의 기능을 같이 하면 스위칭 허브라고 부르고 4계층이나 3계층의 역할까지 수행하는 스위치를 L3 또는 L4 스위치라고 합니다.
- 라우터
- 외부 네트워크와 통신하기 위한 장비
- 정확한 방향으로 데이터가 전송되도록 하고 최적의 경로로 데이터를 포워딩하는 역할
- 로드밸런서
- 4계층 장비
- 애플리케이션 계층에서 애플리케이셔 프로토콜의 특징을 이해하고 동작하는 로드밸런서를 ADC(Application Delivery Controller)라고 합니다.
- 포트 주소를 확인하는 동시에 IP 변환도 수행
- 웹 서버를 구축할 때 많이 사용하는데 동일한 역할을 수행하는 웹 서버를 여러 대 만들고자 하는 경우 로드 밸런서를 웹 서버 앞에 두고 웹 서버를 여러 대 만든 다음 대표 IP는 로드밸런서에게 부여하고 로드밸런서가 요청이 오면 웹 서버를 지정해서 전송하도록 합니다.
- 이런 원리로 동작하는 소프트웨어 중 하나가 nginx 입니다.
- 로드밸런서를 이용하게 되면 서비스 헬스 체크나 대용량 세션 처리 기능을 사용할 수 있습니다.
- 보안 장비
- 방화벽이나 IPS 등의 장비 또는 소프트웨어
- 방화벽 : OSI 7계층 중 4계층에서 동작해서 패킷의 3,4 계층 정보를 확인하고 패킷을 정책과 비교해서 버리거나 포워딩합니다.
- 공유기
- 2계층 스위치, 3계층 라우터, 4계층 NAT 와 간단한 방화벽 기능을 모아놓은 장비
- 내부는 스위치와 무선 AP 그리고 라우터 부분으로 구성되어 있음
- 모뎀
- 공유기의 LAN 포트와 WAN 포트는 일반 이더넷이어서 100m 이상 먼 거리로 데이터를 보내지 못하기 때문에 먼 거리 통신을 위해서 모뎀이 필요이 필요
3. 네트워크 통신
1) 네트워크에서 출발지에서 목적지로 데이터를 전송할 때 사용하는 통신 방식
- unicast
- 1:1 통신
- 출발지와 목적지가 명확히 하나로 정해져있는 통신 방식
- 대다수의 통신은 unicast
- broadcast
- 목적지 주소가 모든으로 표기되어 있는 통신 방식
- 유니캐스트로 통신하기 전에 상대방의 정확한 위치를 알기 위해서 사용
- 로컬 네트워크에서 모든 호스트에 패킷을 전달해야 할 때 사용
- multicast
- 멀티캐스트 그룹 주소를 이용해서 해당 그룹에 속한 다수의 호스트로 패킷을 전송하기 위한 통신 방식
- IPTV 와 같은 실시간 방송을 볼 때 사용하고 사내 방송이나 증권 시세 전송과 같이 단방향으로 다수에게 같은 내용을 전송할 때 사용
- anycast
- 주소가 같은 호스트 중에서 가장 가깝거나 가장 효율적으로 서비스할 수 있는 호스트와 통신하는 방식
- 도메인을 이용해서 인터넷을 할 때 가장 가까운 DNS 서버를 찾을 때 사용
- IPv6 에서는 broadcast 라는 용어 대신에 Link Local Multicast 라고 합니다.
2) MAC Address
- 주소 체계
- 변경할 수 없도록 하드웨어에 고정되어 출하
- 모든 네트워크 장비에는 MAC 주소를 할당해야 합니다.
- 한 제조업체에 하나 이상의 주소 풀을 주고 그 안에서 자체적으로 할당
- 48bit로 구성되는데 앞의 24bit가 제조회사 코드(OUI)이고 뒤의 24bit(UAA)는 제조사에서 자체적으로 할당
- 고유하지 않을 수 있는데, 이유는 제조사의 실수나 코드의 부족 때문인데 동일 네트워크 안에서만 같지 않으면 통신하는데 문제가 없습니다.
- ROM에 고정되서 변경할 수 없도록 출하가 되지만 이 주소도 메모리에 적재되서 사용되므로 MAC 주소를 변경해서 사용하는 것이 가능
3) IP Address
- IPv4
- 32bit로 만들고 표기할 때는 4개의 Octet(8bit)으로 나누고 각 Octet은 .(점) 으로 구분. 각 Octet은 10진수로 표기
192.168.0.1 과 같이 표기
- 2개 부분으로 구성
- 네트워크 부분 : 호스트들을 모은 네트워크를 지칭하는 주소, 네트워크 주소가 같으면 같은 로컬 네트워크라고 합니다.
- 호스트 부분 : 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소
- 네트워크 부분과 호스트 부분을 구분하는 경계점이 고정이 아닙니다.
- 호스트의 IP 개수에 따라 네트워크 크기를 다르게 할당하는 것이 가능한데 이를 위해서 클래스라는 개념을 도입
- A 클래스는 약 1600만 개의 IP 주소를 가질 수 있습니다. 첫번째 점이 경계
- B 클래스는 65536개의 IP 주소를 가질 수 있습니다. 두번재 점이 경계
- C 클래스는 256개의 IP 주소를 가질 수 있습니다. 세번째 점이 경계
- 최근에는 조금 더 세밀하게 네트워크와 호스트 부분을 설정할 수 있습니다.
- 사용 가능한 IP 범위를 할 때도 이를 이용
처음 IPv4를 만들 때 각 클래스 별로 별도의 주소 블록을 할당
- A 클래스 : 맨 앞 비트가 0으로 시작
0.0.0.0 ~ 127.255.255.255
- B 클래스 : 맨 앞 2개 비트가 10으로 시작
128.0.0.0 ~ 191.255.255.255
- C 클래스 : 맨 앞 3개 비트가 110으로 시작
192.0.0.0 ~ 223.255.255.255
만일 IP 주소가 192.168.202.207 이라면 기본적으로 C 클래스
네트워크 주소 : 192.168.202.0
브로드캐스트 주소 : 192.168.202.255
실제 사용 가능한 IP 범위 : 192.168.202.1 ~ 192.168.202.254 가 됩니다.
이를 조금 더 세분화시켜서 비트 단위로 분할할 수 있는데 이를 서브네팅이라고 합니다.
- IP 주소 부족 문제 해결
- 인터넷을 사용하는 호스트 숫자가 폭발적으로 증가해서 IP 주소가 부족해지는 문제가 발생
- 이를 해결하기 위해서 가장 먼저 도입한 것은 클래스리스 방식, 즉 CIDR
- 두번째 도입한 것은 NAT 와 사설 IP 주소
- 세번째 도입한 것이 IPv6
- 클래스리스
- 기존 클래스의 개념을 없앤 것으로 네트워크를 원하는 단위로 분할할 수 있도록 한 것
- 이를 위해서 subnet mask 라는 개념을 도입
- subnet mask 는 동일한 네트워크 크기를 표현하기 위한 주소
- subnet mask 를 표현하는 방법은 비트 수를 기재하는 방법과 10진수로 표현하는 2가지
- IP Address/비트수 또는 IP Address/10진수로 표기
- 비트 수로 표시를 하면 비트 수 만큼 같으면 동일한 네트워크로 간주하는 것이고, 10진수로 표현하면 이진수로 변환해서 1이 있는 부분까지가 동일하면 동일한 네트워크로 간주
- 라우터나 컴퓨터에 IP를 설정할 때 이 방법을 사용
- 비트 수로 설정하지 않고 10진수로 설정
- 네트워크를 설정할 때는 네트워크 대역 안에 있는 어떤 IP 주소를 할당해도 동일하게 적용
- 컴퓨터의 IP를 설정할 때는 동일 네트워크 대역 안에서 정확하게 IP를 할당해야 합니다.
- Public IP 와 Private IP
- 인터넷에 접속을 하려면 IP 주소가 있어야 합니다.
- 인터넷을 할 때 사용할 수 있는 주소를 Public IP 라고 합니다.
- 인터넷을 연결하지 않고 네트워크를 구성하기 위해서 사용하는 IP 주소를 Private IP 라고 합니다.
- 인터넷에 접속하려면 통신 사업자로부터 IP 주소를 할당받거나 IP 할당 기관(KISA)에서 인터넷 독립 기관 주소를 할당받은 후 할 수 있는데 직접 할당받는 것은 절차가 복잡하기 때문에 대부분은 통신 사업자로부터 할당을 받습니다.
- 인터넷에 접속하지 않거나 NAT(Network Address Translation) 기술을 사용할 경우 Private IP를 이용
- Private IP를 가지고는 인터넷을 할 수 없지만 NAT 장비에서는 Public IP로 변경해서 인터넷에 접속이 가능
- Private IP 대역
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 회사 내부에서 Private Network를 구축할 때 보안 상의 문제나 IP 공유를 위해서 NAT를 사용하는데, 이때 다른 사용자와 중복된 IP를 사용하면 안되는데, 다른 사용자가 사용하고 있는 Public IP를 내부 네트워크의 IP로 할당을 하면 인터넷은 문제가 없지만 그 IP를 가진 컴퓨터와 통신은 안됩니다.
- Bogon IP
- 사용할 수 없는 IP 주소로 IANA(IP 주소를 할당하는 최상위 기관)가 여러 목적으로 예약해 놓아서 Public IP 로 사용할 수 없는 IP
- 이 주소를 이용한 네트워크 접속 시도가 있을 때는 IP Spoofing(주소를 변조해서 공격) 일 가능성이 높으므로 필터링 해야 합니다.
0.0.0.0/8 : This Network
10.0.0.0/8 : Private IP
100.64.0.0/10 : 캐리어 그래이드 NAT(통신 사업자가 Private IP 를 할당하기 위해 사용)
127.0.0.0/8 : Loop Back Address(자기 자신)
169.254.0.0/16 : 링크 로컬
172.16.0.0/12 : Private IP
192.0.0.0/24 : IETF 프로토콜 할당
192.168.0.0/16 : Private IP
224.0.0.0/4 : 멀티캐스트 예약
255.255.255.255/32 : 브로드캐스트
4) TCP 와 UDP
- 4계층 프로토콜
- 포트가 이 계층에서 제공하는 주소
- 애플리케이션에서 사용하는 프로세스를 정확히 찾아가고 데이터를 분할한 패킷을 잘 쪼개고 조립하는 역할을 수행
- 포트번호
- HTTP TCP는 80, HTTPS TCP는 443, SMTP TCP는 25 이런 식으로 알려진 포트를 Well Known 포트라고 하고 IANA에서 등록해 놓았고 1023 이하의 포트번호를 사용
- 애플리케이션에서도 IANA에 포트 번호를 등록할 수 있는데 이때는 1024 ~ 49151번 포트를 사용합니다.
- 자주 사용하는 Application의 포트번호는 기억해두는 것이 좋습니다.
- MySQL 이나 MariaDB 3306
- Oracle : 1521, 8080
- MongoDB : 27017
- Django : 8000
- Tomcat : 8080
- 49152 ~ 65535 까지는 자동으로 할당되거나, Private 용도로 클라이언트의 임시 포트 번호로 사용
- TCP
- 신뢰할 수 없는 공용망에서 정보 유실 없는 통신을 보장하기 위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 잘 전송되었는지 확인하는 기능을 가진 프로토콜
- 송신자와 수신자가 3개의 패킷을 주고 받아야 한다면
송신자 측에서 1번 패킷을 전송하면 수신자 측에서 1번을 잘 받으면 2번을 요청하고 송신자 측에서 2번을 전송하고 수신자 측에서 2번을 전송받았다면 3번을 요청, 송신자에서 3번을 전송하고 수신자 측에서 3번을 받으면 데이터를 전부 받았다고 알려주고 통신을 종료
- 유실 없는 안전한 통신을 위해서 통신 시작 전에 사전 연결 작업을 수행
클라이언트가 서버에서 Syn 신호를 전송하고 서버는 Syn 과 Ack를 전송하고 다시 클라이언트는 Ack를 전송해서 연결을 수행ck를 전송해서 연결을 수행
- 네트워크 프로그램을 직접 만든다면 중요한 데이터 전송은 TCP 방식을 사용해야 합니다.
- UDP
- 사전 연결 작업을 수행하지 않고 일방적으로 데이터를 전송하는 프로토콜
- 음성 데이터나 실시간 스트리밍과 같이 시간에 민감한 프로토콜이나 애플리케이션을 만들 때 사용. 사내 방송이나 증권 시세 데이터 전송에 사용하는 멀티캐스트 환경에서 사용
- 중요하지 않은 데이터 전송이나 단방향 전송을 하는 애플리케이션을 만들 때 사용
4. Switch
1) 개요
-
2계층 주소인 MAC Address 기반으로 동작하는 장비
-
아무 설정 없이 네트워크에 연결해도 MAC Address를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있습니다.
-
기본 동작 이외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크 루프를 방지하는 스패닝 트리 프로토콜(STP) 같은 기능을 기본적으로 가지고 있음
-
MAC Address Table 을 만들어서 어떤 포트에 어떤 MAC Address를 가진 호스트가 연결되어 있는지 학습을 할 수 있습니다.
-
Flooding -> Address Learning -> Forwarding/Filtering 의 3가지 동작으로 설명이 가능합니다.
- Flooding
- 스위치는 부팅되면 네트워크 관련 정보가 하나도 없습니다.
- 이 상태에서는 스위치는 네트워크 통신을 중재하는 자신의 역할을 하지 못하고 허브처럼 동작
- 스위치가 허브처럼 모든 포트로 패킷을 흘리는 동작을 Flooding 이라고 합니다.
- 새로 부팅하지 않았는데도 자꾸 flooding이 일어나면 스위치가 정상적으로 동작하지 않거나 공격받는 상황
- Address Learning
- 모르는 MAC Address 로 데이터를 전송하라고 하면, 일단 flooding을 수행하고 데이터를 전송하는 MAC Address를 주소 테이블에 기록합니다.
- Forwarding/Filtering
- 패킷이 스위치에 들어오면 도착지 MAC Address 를 확인하고 자신이 가진 주소 테이블과 비교해서 맞는 정보가 있는 해당 포트로 데이터를 전송(Forwarding)하고 다른 포트로는 데이터를 전송하지 않음(Filtering)
2) VLAN
- Virtual Local Area Network
- 하나의 물리적인 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 기능
- VLAN을 나누게 되면 유니캐스트나 브로드캐스트로 다른 VLAN과 통신을 할 수 없습니다.
- VLAN을 나누게 되면 VLAN 간에는 3계층 장비를 이용해서 통신해야 합니다.

- 종류
- 포트 기반의 VLAN : 포트 단위로 VLAN을 생성
- MAC Address 기반의 VLAN : LAN을 이동하면서 사용하는 경우 MAC Address 기반으로 VLAN 생성
3) STP
- SPoF(Single Point of Failure) : 단일 장애점
- 하나의 요소에 발생한 장애가 전체 시스템에 장애를 일으키는 것
- 네트워크에서도 하나의 장비 고장으로 전체 네트워크가 마비되는 것을 막기 위해서 이중화 또는 다중화된 네트워크를 디자인하고 구성
- 다중화의 목적으로 여러 개의 switch로 네트워크를 디자인하게 되면 패킷이 잘못하면 네트워크를 따라 계속 전송되는 일이 발생할 수 있습니다.
- 루프 구조의 switch 연결이 있으면 계속해서 데이터를 전송할 수 있습니다.
- 브로드캐스트 스톰
- 루프 구조를 가진 네트워크에서 브로드캐스트 전송을 하는 경우 각 스위치는 데이터가 들어온 포트를 제외하고 모든 포트에 데이터를 전송합니다.
- 이 경우 케이블을 제거하기 전까지 데이터를 계속 전송합니다.
- STP(Spanning Tree Protocol)
- Switch가 루프를 확인하고 적절히 포트를 사용하지 못하도록 하여 브로트캐스트 스톰을 방지하는 프로토콜
- MAC 러닝 중복 문제
- Switch는 출발지의 MAC Address를 가지고 테이블을 구성하는데 여기서 출발지와 실제 데이터를 전송받은 곳의 MAC Address가 다른 경우 잘못된 학습을 할 수 있습니다.
5. Router
1) 개요
- 3계층에서 동작하는 네트워크 장비 중 하나
- 경로를 지정해주는 장비
- 라우터에 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 Route 정보를 이용해서 패킷을 최적의 경로로 포워딩(출발지의 IP + Subnet Mask를 가지고 패킷을 전달)
- 라우터는 다른 네트워크에 접근할 때 필수 장비
- L3 Switch
- Switch는 2계층 장비
- 3계층에서 동작하는 Switch를 L3 Switch라고 부릅니다.
- 라우터의 기능은 Software로 구현하고 스위치는 하드웨어로 구현하는 방식
- 최근에는 기술이 발달해서 L3 Switch와 Router를 기능 상으로 구별하는 것은 어렵다.
2) 라우터의 동작 방식과 역할
- 패킷이 라우터로 들어오면 도착지 IP 주소와 라우팅 테이블을 비교해서 최선의 경로로 패킷을 전달하는 역할을 수행
- 동작 과정은 경로 지정 -> 브로트캐스트 컨트롤 -> 프로토콜 변환
- 최근에는 거의 모든 네트워크에서 이터넷을 사용하기 때문에 프로토콜 변환 역할이 거의 유명무실해졌습니다.
3) 경로 지정
- 라우터가 패킷을 처리할 때는 크게 두 가지 작업을 수행
- 경로 정보를 얻어서 경로 정보를 정리하는 역할
- 정리된 경로 정보를 기반으로 패킷을 포워딩하는 역할
- Hop : 다른 라우터
- R1 - R2 - R3 - R4 : R1에서 R4로 데이터를 전송하는 경우 2 Hop
- Hop Count : 경로를 찾기 위해서 지나가야 하는 라우터의 개수
- TTL(Time To Live) : IP 헤더에 부착된 필드인데, 패킷이 네트워크에서 살아 있을 수 있는 시간
4) 리우팅 방법
- 다이렉트 커넥티드
- IP 주소를 입력할 때 사용된 IP 주소와 Subnet Mask로 입력을 하는데, 라우터는 이 정보를 가지고 자동으로 라우팅 테이블을 만들 수 있는 경우
- 인접한 라우터와의 네트워크
- 직접 연결되어 있는 경우 주기적으로 네트워크 정보를 주고받기 때문에 별도로 학습할 필요가 없다.
- static routing
- 관리자가 목적지 네트워크와 다음 hop을 직접 지정해서 경로 정보를 입력하는 것
- 변화가 적은 네트워크에서 네트워크를 손쉽게 관리할 수 있는 방법
- 설정 문법
ip route NETWORK NETMASK(Subnet Mask의 반대) NEXTHOP
- 예시 : 모든 곳에 전송할 때는 192.168.0.1을 통해서 가도록 설정
ip route 0.0.0.0 0.0.0.0 192.168.0.1
route add -net NETWORK/Prefix gw NEXTHOP
route add -net 0.0.0.0/0 gw 192.168.0.1
- dynamic routing
- static routing은 바로 앞 라우터의 주소만 지정하기 때문에 라우터 넘어의 다른 라우터의 상태 정보를 파악할 수 없어서 라우터 사이의 회선이나 라우터에 장애가 발생하면 장애 상황을 파악하고 대체 경로로 패킷을 보낼 수 없다.
- 다른 라우터와 라우팅 정보를 주기적으로 교환해서 전체 네트워크의 정보를 학습하는 방식
- 네트워크에 장애가 발생하더라도 주기가 지나면 다른 라우팅 정보를 학습해서 대체 경로로 패킷을 보낼 수 있습니다.
- 실제 대다수의 네트워크는 다이나믹 라우팅을 사용
5) Dynamic Routing Protocol
- AS(Autonomous System)
- 자율 시스템 : 라우팅이 자동으로 이루어지는 하나의 네트워크 묶음
- 인터넷 사업자들이 하나 이상의 AS를 운영
- IGP(Interior Gateway Protocol)
- AS 내부에서 사용하는 라우팅 프로토콜
- Distance Vector : 인접한 라우터로부터 라우팅 정보를 학습
- Classful - RIPv1, IGRP
- Classless - RIPv2
- Link State : 라우터에 연결된 링크 상태를 서로 교환하고 각 네트워크 맵을 그리는 라우팅 프로토콜
- Advanced Distance Vector
- EGP(External Gateway Protocol)
- AS 간 통신을 위해서 사용하는 라우팅 프로토콜
- BGPv4
3. 통신을 도와주는 기술
1) NAT(Network Address Translation)/PAT
- NAT는 하나의 네트워크 주소에 다른 하나의 네트워크 주소를 1:1로 변환해주는 기술
- PAT(Port Address Translation)는 공식 용어는 NAPT
- 용도와 필요성
- IPv4 주소 고갈 문제의 솔루션
- 보안 문제 : 외부와 통신할 때 내부 IP를 다른 IP로 변환해서 통신하면 외부에서는 내부 IP주소를 알 수 없습니다.
- IP 주소 체계가 같은 두 개의 네트워크 간 통신이 가능하도록 해줍니다.
- 동일한 private IP 에 대해 IP 충돌 방지
- 불필요한 설정 변경을 줄일 수 있습니다.
- 오버헤드가 발생
- SNAT와 DNAT
- SNAT : 출발지 주소를 변경하는 NAT
- DNAT : 도착지 주소를 변경하는 NAT
- 동적 NAT와 정적 NAT
- 동적 NAT : 변환되는 IP가 계속 변경
- 정적 NAT : 변환되는 IP가 고정P가 고정
2) DNS(Domain Name Service)
- 개요
- Domain
- IP 주소에 대한 별명
- Network 계층에서는 IP 주소를 이용해서 컴퓨터를 찾아갑니다.
- IP 주소는 인간이 기억하기 어렵고 논리적인 주소라서 변경될 가능성이 있습니다.
- 문자로 된 도메인을 사용하면 인간이 기억하기 쉬워지고, IP 주소가 변경되더라도 도메인과 연결만 해주먼 동일한 도메인으로 계속 접속 가능
- DNS는 도메인 주소를 IP 주소로 변환해주는 서비스
- 최근에 클라우드 기반 인프라 구성이 많아지면서 인프라가 빈번히 변경되어 DNS 설계가 점점 중요해지고 있다.
- MSA 기반의 서비스 설계가 많아지면서 다수의 API를 이용하다보니 사용자의 호출 뿐만 아니라 서비스의 API 호출이나 인터페이스가 많아져서 Domain의 역할이 더욱 중요해지고 있습니다.
- 구조
- 역트리 구조로 최상위 루트부터 Top-Level 도메인, Second-Level 도메인, Third-Level 도메인과 같이 단계적으로 찾아감.
- mail(Third-Level).naver(Second-Level).com(Top-Level)
- 도메인의 계층은 최대 128계층까지 구성할 수 있습니다.
- 계층별 길이는 최대 63byte
- 도메인 구분자 .을 포함해서 전체 도메인의 최대 길이는 255byte
- 문자는 알파벳, 숫자, -만 가능
- 루트 도메인
- 도메인을 구성하는 최상위 도메인으로 이 도메인을 가지고 DNS 서버에 가서 찾는데 없으면 루트 DNS(전 세계에 13개)에 쿼리
- Top-Level Domain 은 6가지 유형으로 구분
- generic (com, edu 등)
- country-code (kr, uk, jr 등)
- sponsered : 특정 목적을 가진 스폰서를 두는 경우 민족 공동체나 전문가 집단 (asiz, museum 등)
- infrastructure : 운용상 중요한 인프라 식별자 공간을 위해 사용
- generic-restricted : 특정 기준을 충족하는 사람이나 단체가 사용 (biz, name, pro 등)
- test
- DNS 동작 방식
- 기본적으로는 DNS 서버에 쿼리를 수행
- DNS 서버 없이 로컬에서 도메인과 IP 주소를 직접 설정해서 사용할 수 있습니다.
- 이 정보는 hosts 파일에 기록이 되는데 여기에 기록된 정보는 항상 DNS 캐시에 저장됨.
- 도메인을 쿼리하면 DNS 캐시를 조사하고 없으면 DNS 서버에게 문의
- 윈도우에서 캐시된 내용 확인 :
ipconfig /displaydns

-
DNS 주요 레코드
| 레코드 | 역할 |
|---|
| A | 도메인 주소를 IPv4로 매핑 |
| AAAA | 도메인 주소를 IPv6로 매핑 |
| CNAME | 별칭 이름을 사용하게 해주는 레코드 |
- CNAME 을 사용하는 이유
- 2개의 도메인을 하나의 웹 애플리케이션에 연결하려고 합니다. adam.net 과 www.adam.net 을 매핑하고자 하는 경우
- A 레코드를 이용해서 매핑을 하게 되면 2번 매핑을 하는데 이때 IP가 수정되면 2번 변경해야 합니다.
- adam.net 은 A 레코드로 매핑하고 www.adam.net 은 adam.net의 별명으로 만들면 IP가 수정되는 경우 adam.net 만 수정하면 됩니다.
- 화이트 도메인
- KISA에서는 불법적인 방법으로 발송되는 스팸 메일 차단 활동을 수행
- 정상적인 도메인을 인증 관리하는 제도가 화이트 도메인
- 비정상적인 스팸 메일을 발송하는 사이트를 RBL(Realtime Blackhole List, Blocking List)라고 합니다.
- KISA 의 RBL 사이트에 화이트 도메인으로 등록을 하면 대량의 메일을 발송해도 문제가 되지 않습니다.
- 한글 도메인
- 한글을 punycode로 변환해서 등록
- 유니코드로 변환해서 등록하는 것인데 이 코드는 xn으로 시작합니다.
- 변환 코드는 한국인터넷진흥원에서 알 수 있습니다.
3) GSLB (Global Server/Service Load Balancing)
- DNS에서 동일한 레코드 이름으로 서로 다른 IP 주소를 동시에 설정하는 것
- 이렇게 하면 도메인 질의에 따라 응답받는 IP 주소를 나눌 수 있는데 이것이 로드밸런싱입니다.
- DNS만으로는 이 구성을 할 수 없는데, DNS는 연결된 호스트의 비정상적인 상황을 감지하지 못합니다.
- GSLB는 등록된 도메인에 연결된 서비스가 정상적인지 헬스 체크 기능을 가지고 있습니다.
- 구성 방법은 2가지인데 도메인 자체를 GSLB로 구성할 수 있고 도메인 내의 특정 레코드만 GSLB로 구성할 수도 있다.
4) DHCP (Dynamic Host Configuration)
- 개요
- 네트워크 정보를 호스트에 적용하려면 사용자가 IP 정보를 설정하거나 IP 정보를 할당해주는 서버를 이용해 자동으로 설정해야 합니다.
- 수동으로 네트워크 정보를 설정하는 것을 정적 할당이라고 하고, 자동으로 설정하는 것을 동적 할당이라고 합니다.
- 일반적으로 데이터센터의 서버 팜과 같은 운영망에서는 주로 정적 할당을 수행하지만, 일반적인 PC 사용자들은 동적 할당을 사용합니다.
- 네트워크 정보를 동적으로 할당하는데 사용되는 프로토콜이 DHCP
- DHCP를 사용하게 되면 사용자가 직접 입력해야하는 IP 주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당받아서 사용할 수 있습니다.
- 별도의 설정 과정이 없기 때문에 사용자와 관리자 모드 편리하게 네트워크에 접속할 수 있다.
- 사용하지 않는 IP 정보는 회수되어 사용하는 경우에만 재할당되기 때문에, 사용자 이동이 많고 한정된 IP 주소를 가진 경우 유용하게 사용할 수 있습니다.
- DHCP 서버 구성
- 윈도우나 리눅스 서버의 DHCP 데몬을 이용해서 구현이 가능
- 스위치, 라우터, 방화벽, VPN 같은 네트워크, 보안 장비에서도 구현 가능
- 설정 값
- IP 주소 풀 : 클라이언트에 할당할 IP 주소 범위
- 예외 주소 풀 : 할당하지 않을 대역
- 임대 시간 : 기본 임대 시간
- 서브넷 마스크
- 게이트웨이
- DNS
- 우분투 리눅스에서 DHCP 서버 구성
- 패키지 설치 :
sudo apt-get install isc-dhcp-server
- 설정 파일에 주소 풀을 설정 : /etc/dhcp/dhcpd.conf
sudo nano /etc/dhcp/dhcpd.confsubnet 네트워크주소 netmask 서브넷마스크{
range 시작IP 종료IP;
}
subnet 192.168.0.0 netmask 255.255.255.0{
range 192.168.0.2 192.168.0.254;
}
- 네트워크 노드 추가 : /etc/default/isc-dhcp-server
sudo nano /etc/default/isc-dhcp-serverINTERFACEv4="eth1"
INTERFACEv6="eth1"
- eth1에 IP를 할당 : 일종의 Gateway 가 되서 다른 컴퓨터들이 이 IP에 접속하면 동적으로 IP를 할당받음
sudo ifconfig eth1 192.168.0.1
- ipconfig 명령이 없다면
sudo apt install net-tools
- 서버 재시작
sudo /etc/init.d/isc-dhcp-server restart