diff --git a/tech.md b/tech.md new file mode 100644 index 00000000..713825fc --- /dev/null +++ b/tech.md @@ -0,0 +1,356 @@ +# 주제: 인터넷을 여행하고 싶은 패킷 지망생을 위한 안내서 + +## 1. 네트워크의 개론 + + +네트워크 정의 + +네트워크란? 두 개 이상의 장비가 연결되어 통신이 가능한 것을 뜻한다. 네트워크는 크게 3가지 조건을 만족해야한다. + + + +1. 두 개 이상의 장비 + +2. 서로 연결이 되있어야한다.(무선이든 유선이든) + +3. 서로 통신을 할 수 있는 상태여야한다. + + + +통신에는 여러가지 기술이 있다. 장비들이 통신을 하기 위해서는 서로 간 규칙을 맞추어줘야한다. + +이러한 통신을 위해 서로 간 맞춰줘야하는 통신의 규칙을 프로토콜이라한다. + +프로토콜은 뒤에 나오는 계층 모델에 따라 여러가지로 정의된다. + +대표적인 표준 프로토콜은 IEFT의 RFC에 정의되었이다. + + + + + + + +네트워크 종류 + +네트워크는 물리적 거리에 따라 다음과 같은 두가지 네트워크로 구성된다. + + + +1. LAN(Local Area Network) + +- 일반적으로 좁은 지역에서의 네트워크를 뜻한다. + +- 현재 장비가 있는 지역의 네트워크(장비가 속해있는 네트워크) + +- 직접 구축하고 관리한다. + + + + + +2.WAN(Wide Area Network) + +- 지리적으로 넓은 지역을 연결한 네트워크를 뜻한다. + +- 개인이 아닌 ISP에서 직접 관리해준다 + + + +* ISP: ISP는 (Internet Sercvice Provider)의 약어로 인터넷 서비스 제공업체를 뜻한다. 우리나라의 경우 KT나 SKT 같은 인터넷 서비스를 제공해주는 업체라고 생각하면 된다. + + + +일반적으로 네트워크와 네트워크를 합쳐서 하나의 광역 네트워크로 이루어진다. 이러한 것을 internetwork라 한다. 대표적인 internetwork로 Internet이 있다. + +일반적으로 internet(소문자 'i')이라 함은 internetwork를 뜻한다. + +우리가 평상시에 사용하는 것은 internet이 아닌 Internet(대문자 'I')로 써서 구분한다. + +사실 상 오늘날은 그냥 혼용해서 쓰므로 상황에 따라서 알아듣자! + + + +네트워크 모델 + + + +현재 두 가지 네트워크 모델이 빈번하게 사용된다. + + + +1. TCP/IP 모델: 현재 우리가 사용하는 Internet에 적용되어 있는 모델이다 + + + + application + +tranport + +internet + + network interface + +위와 같이 나누어진다. + + + +여기서 network interface는 또 data-link와 physical로 나누어진다. + + + +2. OSI(Open Sysyem Interconnection) 모델: 가장 유명한 네트워크 모델, 구현된 시스템을 위한 모델이 아닌 개념적 설명을 위한 참조 모델로 사용된다. + + + +application + +presentation + +session + +transport + +network + +data-link + +physical + +위와 같이 나누어진다. + + + +항상 상위 계층이 아래 계층에게 일을 부여하며 아래 계층이 상위 계층에게 서비스를 제공한다. + + + +application Layer: 사용자에게 인터페이스를 제공해준다. 우리가 흔히 사용하는 카카오톡, 페이스북 등등 + +presentation Layer: 사용자 또는 컴퓨터처리를 위한 데이터 형식을 변환하는 계층, 우리가 읽는 고급어를 기계어로 번역한다거나, 특정 사용자의 조회를 금지하기위해 데이터를 암호화/복호화 한다거나, 각 파일에 확장자를 붙여 형식을 지정하는 등이 presentation 계층에 해당한다. + +session Layer: 응용프로그램 간 연결을 관리한다. 어플리케이션의 동기화같은 것에 사용된다. 통신을 준비하는 계층 + + + +위의 3개 계층을 상위 게층이라 하며 상위 계층의 역할은 데이터를 생성하는 것이다. + +네트워크에서는 당연히 데이터를 생성하였다면 데이터를 전송 할 필요가 있다. + +나머지 4개의 계층을 하위 계층이라 하며 역할은 데이터를 전송하는 것이다. + + + +transport Layer: transport라 하면 전송을 뜻하지만 실제로 데이터를 전송하지 않는다. 데이터 전송을 support 하는 느낌? + +정확한 정보 전달을 위해 데이터를 구분해준다.(웹 (http)-> 80) 이런식으로 + +또한 TCP와 UDP 방식으로 나누어 데이터 통신의 신뢰성도 보장해준다. + +-TCP(transmission Control Protocol)-> 데이터가 전달되었는지 지속적으로 물어보는 방식, 속도는 느리지만 데이터의 안전성을 확인 -> 오류 제어라고 한다 + +-UDP(User Datagram Protocol) -> 데이터의 안전성보다 속도에 더 치중한 방식, 데이터의 도착여부를 확인하지않고 데이터를 전송만한다. -> 흐름제어라고 한다. + +ex)실시간으로 통화하는 VOIP같은 경우는 데이터가 전달의 안정성보다 속도가 더 중요하다. + + + +network Layer: 네트워크를 논리적 주소(IP)로 나누어 통신경로를 결정하는 계층, 대표적으로 라우팅과 같은 것들이 속한다. + +라우팅: 네트워크 망 사이에서 통신을 결정하는 것 + +이러한 라우팅을 하는 장비를 라우터라고한다. + +만약 다른 네트워크로 데이터를 보내려면 게이트웨이를 거쳐야한다. + + + +게이트웨이: 네트워크 망에서 문(door)과 같은 역할, 게이트웨이를 통해 외부, 내부로 들어오가 나간다. + + + +data-link Layer: 단말 사이의 물리적 구성에 관한 계층, 대표적으로 이더넷 혹은 토큰링, ppp와 같은 네트워크 토폴로지의 개념이 이에 속한다. + + + +물리적 구성은 크게 두가지로 나누어진다. + +Point To Point: 1:1통신, 대표적으로 point to point 방식을 사용하는 프로토콜로는 ppp와 hdlc가 있다. + +Multiple Access: 세 대 이상의 장비연결 대표적으로 이더넷이 이에 해당한다. + + + +physical Layer: 받은 데이터를 0과 1로 바꾸어(전기적 신호) 수신측으로 보낸다. 직접 케이블을 통해 전송하는 계층, 보통 cable 규격 관련 프로토콜이 대표적인 1계층 프로토콜에 속한다. + + + +데이터 전송 시 각 계층의 헤더가 데이터에 추가된다. 헤더라는 것은 각 계층에서 전송하는 데이터에 속성을 더하는 것이라고 생각하면된다. 예를들어 네트워크 계층 경우 데이터에 출발지 ip와 목적지 ip, 데이터 life time 등의 정보를 추가해서 전송한다. + +대충 이런 형식이다 + +데이터 -> L7(layer 7) -> L7 Header+data -> L6 -> L6 Header+L7 Header+data ................ -> L7 Header +L6 Header +L5 Header +L4 Header +L3 Header +L2 Header + data -> 케이블(L1)과 같은 통신 매체를 통해 다른 pc로 전송 + +이런 식으로 데이터가 계층을 통과해 포장되어 다른 pc로 전송하는 것을 인캡슐레이션이라한다. + +데이터가 다시 전송되면 해당 header를 각 계층을 통과하며 다시 벗겨낸다. 이것을 디캡슐레이션이라 한다. + + + +이때 원본 data에 header가 붙여졌서 포장된 데이터를 PDU라고 부른다. + +즉, PDU = 원본 data + 헤더정보 + +이 PDU는 각 계층마다 명칭이 달라진다. + + + +계층에 따른 PDU 명칭 + +상위계층(5,6,7)->데어터, 메시지 + +transport -> 세그먼트 + +network -> 패킷 + +data-link -> frame + + + +마지막으로 physical Layer를 통해 비트(0,1)로 바뀌어 전송된다. + + +### 네트워크 장치 + +HUB(1계층) + +허브는 동일한 네트워크 내의 멀티포트 리피터라고 생각하면된다. (이때 포트는 서비스 포트가 아닌 물리적인 포트, 케이블의 연결지점) + +즉 여러가지 호스트, 서버들을 연결해주는 포트의 역할과 전기적 신호를 증폭시켜주는 리피터의 역할을 한다고 보면된다. + +허브는 half duplex 방식( 한 사람이 데이터 전송 시 나머지 사람들은 대기해야한다.)을 사용하며 만약 허브의 한 쪽 포트에서 데이터가 들어오면 들어온 포트 외에 모든 포트로 데이터를 전송한다. 이를 flooding이라 한다. + + + +SWITCH(2계층) + +스위치도 역시 동일한 네트워크 내에서 사용된다. 스위치와 허브의 가장 큰 차이점은 스위치는 Full duplex 방식이라는 것이다. 허브는 한쪽에서 네트워크를 사용하고 있으면 나머지 쪽은 네트워크를 사용하지 못한다는 치명적 단점이 있다. 이것은 결국 동시에 네트워크를 사용하는 경우 충돌이 일어난다는 단점으로 이루어진다. 스위치는 Full duplex, 즉 동시에 네트워크 사용이 가능하므로 서로 다른 스위치 포트에 연결을 한다면 충돌이 일어날 일이 없다.(당연히 한 포트당 하나의 네트워크 장비만 연결되어 있다는 조건) + +스위치는 기본적으로 주소를 학습 할 수 있다. 각 각 네트워크 device 들의 MAC 주소가 무엇인지 MAC table을 만들어 빠르게 전송이 가능하다. + +만약 스위치를 통해 데이터가 들어왔을 때 스위치가 해당 데이터의 목적지 주소가 어딘지 모른다면 이를 스위치의 모든 포트에 전송한다. 이런 동작을 위의 허브와 같이 flooding이라 한다. + +스위치가 해당 데이터의 목적지 주소를 알고 있다면, 또 이 목적지 주소가 같은 지역에 있다면 해당 지역 외에 다른 모든 지역에 데이터가 흘러가지 않도록 한다. 이를 filtering 이라 한다. + +또한 해당 지역 외에 다른 지역에 목적지 주소가 있고 스위치가 목적지 주소가 어디있는지 안다면 스위치는 그대로 목적지 주소로 데이터를 전송한다. 이를 포워딩이라 한다. + + + +ROUTER(3계층) + +라우터는 동일한 네트워크 내의 통신이 아닌 서로 다른 네트워크 내의 통신을 담당한다. 즉 라우터의 포트에 연결된 IP의 네트워크 ID 주소들은 각 포트마다 다른 값을 가지고 있다. 기본적으로 이더넷, 토큰링 등 서로 다른 방식으로 구성된 LAN망을 하나로 묶는데 사용되며, 한 네트워크의 GateWay(네트워크 망의 들어오고 나가는 문) 역할을 한다. + +라우터가 포트를 통해 데이터를 전송받으면 라우터는 IP 테이블을 조회해 목적지 주소가 어딨는지 파악 후 이를 전송한다. + +만약 라우터가 목적지 주소가 어디에 위치하는지 알 수 없으면, 라우터는 그대로 해당 데이터를 폐기한다.( 라우터는 동일한 네트워크가 아닌 서로 다른 네트워크를 연결시켜주므로 flooding 시켜서는 안된다. 서로 다른 네트워크가 영향을 받으므로!!) + + + +Collision Domain + +collision domain이란 말 그대로 충돌 영역이라는 뜻, 해당 데이터가 충돌이 날 경우(허브로 연결되어 있거나 스위치의 한 포트에 여러 장비들이 물려있는 경우) 충돌을 알리는 재밍 신호가 모든 포트로 전송된다. 이때 재밍신호가 전달되는 영역을 충돌영역이라 한다. + +앞서 언급했던 Switch의 filtering기능은 해당 재밍 신호가 다른 포트에 있는 호스트/서버들에게 도달되지 않도록 하는 기능을 한다. 즉 Switch는 해당 기능을 통해 Collision Domain을 분할한다. + + + +Broadcast Domain + +Brodacast는 해당 네트워크 대역에 있는 모든 장비들에게 메시지를 전달하는 것이다. + +Broadcast Domain은 말 그대로 Broadcast가 전달되는 영역을 뜻한다. + +허브는 어떤 data가 들어오든지 간에 flooding한다. 따라서 broadcast와 일반 데이터 간에 동작면에서 차이점이 없다. + +스위치는 broadcast data를 받으면 바로 flooding 한다.(스위치는 동일한 네트워크 대역 = broadcast는 동일한 네트워크 대역의 모든 장비들에게 데이터 전송) 이것이 스위치의 입장에서 치명적인 단점으로 작용 할 수 있다. 네트워크를 스위치로만 구성한다면 브로드 캐스트 영역은 자연스럽게 커질 수 밖에 없다. + +그러나 라우터는 각 포트마다 서로 다른 네트워크 ID를 가지고 있다. 즉 다른 네트워크 대역이므로 broadcast가 전송되지 않는다., 따라서 라우터는 브로드캐스트 영역(Broadcast Domain)을 분할하는 역할을 한다고 할 수 있다. + + + + + +스위치와 라우터 하드웨어 차이 + + + +1. Switch는 일반적으로 포트 수가 매우 많다. 요즘 허브를 사용하지 않기에 스위치가 멀티포트의 역할을 대신한다. 즉, 각 호스트 마다 각 스위치 포트에 연결되는 경우가 많기에 수가 매우 많다. + +반면 라우터는 각 포트가 하나의 네트워크 대역을 담당하므로 상대적으로 포트 수가 적다. + + + +2. 라우터는 사용자가 직접 초기구성을 설정하며 장비에 on/off버튼이 있다. 스위치의 경우 on/off 버튼이 없으며 초기 설정이 메모리에 저장되어있다. + + + +3. 이더넷 방식은 근거리 통신이다. 따라서 근거리 통신을 담당하는 스위치의 경우 이더넷 포트만 장착해도 상관 없다. 따라서 이더넷 포트만 장착된 고정형으로 나온다. + +반면에 라우터는 이더넷 통신(내부망과 라우터 사이의 연결)에도 사용되며 장거리를 연결(네트워크와 네트워크 연결)하는 serial 통신에도 사용한다. 따라서 이더넷 포트 뿐 아니라 serial 포트 또한 필요하다. 그래서 원하는 slot을 추가해서 사용하는 확장형 장비인 경우가 대부분이다. + + + +*slot은 크기에 따라 WIC 슬롯과 NM슬롯으로 구분한다. WIC 슬롯은 주로 시리얼 포트를 가지고 있고 크기가 작다, NM의 경우 주로 이더넷 포트를 가지고 있으며 크기가 크다. + + ex) NM-5E -> 이더넷 포트를 5개 가지고 있는 크기가 큰 슬롯 + + WIC-4T -> 시리얼 포트를 4개 가지고 있는 크기가 작은 슬롯 + + + +이더넷 포트와 시리얼 포트를 구분하는 이유는 연결되는 케이블이 다르기 때문이다. + +이더넷 포트는 우리가 앞서 배운 UTP 케이블을 연결하는 포트를 뜻한다. + +반면 시리얼 포트는 DTE와 DCE로 나누어져 있는 케이블과 호환되며, 주로 라우터와 모뎀사이 혹은 라우터와 라우터 사이를 연결할 떄 사용한다. + + + +*DTE는 앞서 배운 동기화 신호(clock signal)을 주는쪽이며 DCE는 받는 쪽이다. 모뎀과 라우터의 연결일 경우 라우터에 DTE, 모뎀에 DCE를 연결한다. + + + +*모뎀: modulation and demodulation(복조와 변조)의 준어이다. 일반적으로 아날로그 신호가 디지털 신호보다 더 멀리간다. 장거리 통신을 위해서는 디지털 신호를 아날로그 신호로 바꿔줄 필요가 있다. 이때 사용하는 장비가 모뎀이다. + + + +IOS(Internetworking Operating System) + +IOS는 네트워크 장비에서 사용하는 운영체제를 뜻한다. 각 장비의 버전과 호환되어 다양한 기능을 제공한다. + +대표적으로(기본적으로) 제공하는 기능 중 하나가 명령어를 입력하는 방식인 CLI(Command Line Interface)이다. + +그 외에도 여러가지 기능을 제공하며 라우터나 스위치의 버전에 따라 제공하는 기능이 상이하다. + + + +*IOS의 CLI + +-명령어를 직접 입력하는 방식 + +-텍스트 형태로 구성되어있다. + +-다양한 help 기능을 제공한다.(?를 입력 시 명령어 조회 가능, error 메시지 제공, history 기능) 등등 + + + + + +네트워크 장비 접근 방법 두 가지 + +1. console 포트를 통한 접근(물리적 접근): 주로 초기 설정을 잡아 줄 때 접근(IP 등등), 장비의 console 포트와 직접 연결하기때문에 보안 설정이 필요하지 않다.(물리적인 보안이 이미 되어있다.) + + + +2 원격 액세스(논리적 접근): ssh, telnet을 통한 접근, 초기설정을 완료한 후 보통 IP를 기반으로 접근한다. 어디서나 접근이 가능하므로 보안 설정이 필요하다. +