1. 네트워크
1) 네트워크 구성도
2) 프로토콜
- 개요
- 통신을 하기 위한 규칙 규약
- 물리적 측면: 데이터 전송 매체(케이블), 신호 규약, 회선 규격 등을 정의하는 것인데 최근에는 거의 이더넷만 사용
- 논리적 측면: 프로토콜 규격 등을 정의하는 것인데 최근에는 TCP/IP 만 사용
- 프로토콜을 정의할 떄 예전에는 비트 기반으로 많이 만들었는데 최근에는 문자 기반으로 많이 사용한다.
비트 기반의 프로토콜은 효율적이기는 하지만 사람이 읽기가 어렵다.
- TCP/IP는 엄밀한 의미에서는 프로토콜이 아니고 프로토콜 스택. TCP와 IP는 별도의 계층에서 동작하는 프로토콜인데 이를 합쳐서 부른다. 이렇게 여러 개를 합쳐서 부를 때는 Stack 이라는 단어를 추가. TCP/IP 프로토콜 스택에는 TCP와 IP 이외에도 UDP, ICMP, ARP, HTTP, SMTP, FTP, HTTPS 등이 포함되어있다.
3) OSI 7계층과 TCP/IP
- OSI 7계층
- 전에는 프로토콜을 각 벤더들이 별도로 개발했기 때문에 호환되지 않는 시스템이나 애플리케이션이 많았음
- 하나의 프로토콜로 통합하고자 했던 노력으로 만들어진 것이 OSI 7계층
- 7개의 계층으로 모듈화 한 이유는 재사용 문제 때문: 하나로 만들면 재사용성이 떨어지고 이해하기 어려워진다.
| 이름 | 데이터 |
|---|
| Application | 실제 데이터: 우리가 이해할 수 있는 데이터 |
| Presentation | 실제 데이터 |
| Session | 실제 데이터 |
| Transport | Segments |
| Network | Packet |
| DataLink | Frames |
| Physical | Bits |
-
2개 부분으로 분할
5-7계층: 상위 계층 - 애플리케이션 계층 : 인간, 애플리케이션 개발자의 영역
1-4계층: 하위 계층 - Data Flow 계층 : 기계, 네트워크 엔지니어의 영역
-
TCP/IP 프로토콜 스택
- 4개 계층으로 프로토콜을 정의
Application: OSI 의 5-7계층
Transport
Internet: OSI 3계층
Network Access: OSI의 1,2 계층
-
계층 별 기능을 설명할 떄 OSI 7계층을 가지고 설명을 많이 한다.
4) OSI 7계층 별 이해
- 1계층(물리 계층)
- 물리적 연결과 관련된 정보
- 장비로는 Hub, Repeater, Cable, Connector, Transiver(랜 카드와 케이블을 연결해주는 장비), TAP(네트워크 모니터링 이나 패킷 분석을 하기 위해서 전기 신호를 다른 장비로 복제해주는 장비) 등
- 2계층(데이터 링크 계층)
- 전기 신호를 데이터 형태로 변환하는 계층
- 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는 역할을 수행
- 1계층에서는 주소라는 개념이 존재하지 않지만 출발지 주소와 목적지 주소를 확인하고 자신에게 전송된 것인지 확인
- 에러 탐지도 수행
- 2계층 장비는 NIC(Network 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 그리고 받는 과정을 Dcapsulation 이라고 하기도 한다.
-
보내는 쪽
Data -> 4계층(4계층 헤더 + Data: Segment) -> 3계층(3계층 헤더 + 4계층 헤더 + 데이터: Packet) -> 2계층(2계층 헤더 + 3계층 헤더 + 4계층 헤더 + 데이터 + FCS) -> 1계층 (전기적 신호로 변환)
-
받는 쪽은 반대 과정을 거침
-
MSS와 MTU
- MSS(Maximum Segment Size): 4계층에서 사용할 수 있는 데이터의 최대 크기
- MTU(Maximum Transmission Unit): 네트워크 계층에서 한 번에 보낼 수 있는 데이터의 최대 크기, 이데넛에서는 1500 바이트
2. 네트워크 구분과 구성 요소
1) 네트워크 연결 구분
- 규모에 따른 구분
- LAN: Local Area Network
사무실이나 건물 하나 정도의 소규모의 네트워크
도시 단위의 네트워크를 만들 때 통신사의 인프라를 이용하면 WAN이라고 하고 자체 인프라를 이용하면 MAN 이라고 하기도 한다.
- MAN: Metropolitan Area Network
하나의 도시 정도를 네트워크로 연결
- 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 Divistion Multiplex: 파장 분할 다중화)
- 광케이블로 데이터를 전송할 채널을 분할해서 데이터를 전송하는 것
5) 네트워크 구성 요소
- NIC(Network Interface Card)
직렬화, MAC Address, 흐름 제어(Flow Control - 데이터를 안정적으로 주고받기 위해서 통신 중일 때 다른 네트워크에서 데이터를 보내는 것을 중지하라고 요청)
일반적으로 사용하는 NIC 외에도 스토리지와 서버를 연결하는 NIC도 존재
고성능 클러스터링을 구현하기 위한 HPC(HIgh Performance COmputing)에서도 우리가 일반적으로 사용하는 NIC를 사용하지 않는다.
-
케이블과 커넥터
1000(속도)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에서는 브로드캐스트라는 용어 대신에 링크 로컬 멀티캐스트라고 한다.
2) MAC Address
- 주소 체계
- 변경할 수 없도록 하드웨어 고정되어 출하
- 모든 네트워크 장비에는 MAC 주소를 할당해야 한다.
- 한 제조업체 하나 이상의 주소 풀을 주고 그 안에서 자체적으로 할당
- 48비트로 구성되는데 앞의 24비트가 제조회사 코드(OUI)이고 뒤의 24비트(UAA)는 제조사에서 자체적으로 할당
- 고유하지 않을 수 있는데 이유는 제조사의 실수나 코드의 부족 때문인데 동일 네트워크 안에서만 같지 않으면 통신하는데 문제가 없다.
- ROM 고정되서 변경할 수 없도록 출하가 되지만 이 주소도 메모리에 적재되서 사용되므로 MAC 주소를 변경해서 사용하는 것이 가능
3) IP Address
라우터의 네트워크 설정을 한다면 192.168.200.0 255.255.240.0 으로 해야 하지만 이 주소 풀이 192.168.200.0 ~ 192.168.215.255 이다.
192.168.201.1 255.255.240.0 으로 설정해도 된다.
- 필요한 크기대로 분할하는 작업 subnetting이라고 한다.
- 네트워크 사용자 입장에서 서브네팅이 중요한 것은 서브네팅 된 주소를 보고 사용할 수 있는 IP를 할당해야 한다.
- 네트워크 설계자 입장에서는 호스트의 개수를 파악해서 적절한 서브네팅 작업을 해주어야 한다.
- 방화벽을 설정할 떄도 서브네팅이 필요하다.
모든 컴퓨터를 지칭 | 0.0.0./0 | 웹 애플리케이션 서버가 보통 이렇게 설정
컴퓨터 1대를 지칭 | IP/32 | 데이터베이스 서버의 경우 이렇게 설정하는 경우가 많음
일정 그룹의 컴퓨터를 지칭 | 네트워크주소/크기 | 애플리케이션 서버가 여러 대인 경우 데이터베이스는 이런식으로 설정
-
퍼블릭 클라우드의 대부분 동일 네트워크 내에서의 통신은 비용을 지불하지 않는다.
퍼블릭 클라우드에서는 직접 설정하기 보다는 동일한 VPC 로 묶으면 이 작업을 대신 수행해 준다.
-
Public IP와 Private IP
- 인터넷에 접속을 할려면 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 | 10.0.0.0 ~ 10.255.255.255
172.16.0.0/12 | 172.16.9.9 ~ 172.31.255.255
192.168.0.0/16 | 192.168.0.0 ~ 192.168.255.255
- 회사 내부에서 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.0.2.0/24: 테스트 용
192.168.0.0/16: Private IP
224.0.0.0/4: 멀티캐스트 예약
255.255.255.255/32: 브로드캐스트
4) TCP와 UDP
4. Switch
1) 개요
- 2계층 주소인 MAC Address 기반으로 동작하는 장비
- 아무 설정없이 네트워크에 연결해도 MAC Address를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있다.
- 기본 동작이외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크 루프를 방지하는 스패닝 트리 프로토콜(STP) 같은 기능을 기본적으로 가지고 있음
- MAC Address Tble을 만들어서 어떤 포트에 어떤 MAC Address를 가진 호스트가 연결되어 있는지 학습을 할 수 있다.
Flooding -> Address Learning -> Forwarding/Filtering의 3가지 동작으로 설명이 가능하다.
- 플러딩
스위치는 부팅되면 네트워크 관련 정보가 하나도 없다.
이 상태에서는 스위치는 네트워크 통신을 중재하는 자신의 역할을 하지 못하고 허브처럼 동작
스위치가 허브처럼 모든 포트로 패킷을 흘리는 동작을 플러딩이라고 한다.
새로 부팅하지 않았는데도 자꾸 플러딩이 일어나면 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 상황
- Address Learning
모르는 MAC Address로 데이터를 전송하라고 하면 일단 플러딩을 수행하고 데이터를 전송하는 장비의 MAC Address를 주소 테이블에 기록한다.
- Forwarding/Filtering
패킷이 스위치에 들어오면 도착지 MAC Address를 확인하고 자신이 가진 주소 테이블과 비교해서 맞는 정보가 있는 해당 포트로 데이터를 전송하고 다른 포트로는 데이터를 전송하지 않음
2) VLAN
- 하나의 물리적인 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 기능: Virtual Local Area Network
- VLAN을 나누게 되면 유니캐스트나 브로드캐스트로 다른 VLAN과 통신할 수 없다.
VLAN을 나누게 되면 VALN 간에는 3계층 장비를 이용해서 통신을 해야 한다.
- 종류
- 포트 기반의 VLAN: 포트 단위로 VLAN을 생성
- MAC Address 기반의 VLAN: LAN을 이동하면서 사용하는 경우 MAC Address 기반으로 VLAN 생성
3) STP
-
SPoF(Single Point of Failure: 단일 장애점)
하나의 요소 때문에 장애가 발생한 경우 전체 시스템에 장애가 발생하는 것
-
네트워크에서도 하나의 장비 고장으로 전체 네트워크가 마비되는 것을 막기 위해서 이중화 또는 다중화된 네트워크를 디자인하고 구성
-
여러 개의 switch로 네트워크를 디자인하게 되면 패킷이 잘못되면 네트워크를 따라서 계속 전송되는 일이 발생할 수 있다.
-
루프 구조의 switch 연결이 있으면 계속해서 데이터를 전송할 수 있다.
-
브로드캐스트 스톰
- 루프구조를 가진 네트워크에서 브로드캐스트 전송을 하는 경우 각 스위치는 데이터가 들어온 포트를 제외하고 모든 포트에 데이터를 전송한다.
이 경우 케이블을 제거하기 전까지 데이터를 계속 전송한다.
-
MAC 러닝 중복 문제
- Switch는 출발지의 MAC Address를 가지고 테이블을 구성하는데 여기서 출발지와 실제 데이터를 전송받은 곳의 MAC Address가 다른 경우 잘못된 학습을 할 수 있다.
-
Spanning Tree Protocol
- 스위치가 루프를 확인하고 적절히 포트를 사용하지 못하도록 하는 것
다운받을거