https://www.notion.so/bscnote/67cc227bd1e14c6dbce593b414607a3a
네트워크란?
- 서로 연결하여 대화할 수 있게 하는 것
인터넷이란?
- inter는 '연결'을 의미함
- internet은 '여러 개의 네트워크(net)를 묶었다'는 뜻
인트라넷이란?
- intra는 '내부'를 의미함
- intranet은 내부(intra)의 네트워크(net)
엑스트라넷이란?
- 내용은 인트라넷과 비슷하지만 기업의 인트라넷을 기업의 종업원 외에도 일부의 협력 회사나 고객에게 사용할 수 있도록 한 것이 엑스트라넷(ExtraNet)임
프로토콜이란?
- 컴퓨터끼리 서로 통신을 하기 위한 규칙
- 컴퓨터는 프로토콜이 서로 같을 때에만 통신이 가능하다.
- 기본적으로 TCP/IP 등이 있다
TCP/IP란?
IP(Internet Protocol)
- 송신측과 수신측이 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 프로토콜
- 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.
- 특징
- 비신뢰성(Unreliability)
- 데이터 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다.
- 패킷 전송과 정확한 순서를 보장하려면 TCP 프로토콜과 같은 IP의 상위 프로토콜을 이용해야한다.
- 비연결성(Connectionlessness)
- 데이터를 한번 전송하면 연결을 끊는다.
- 비신뢰성(Unreliability)
TCP(Transmission Control Protocol)
-
패킷을 올바른 순서로 재조립하고 누락된 패킷이 있으면 재전송을 요청하거나 송신측에게 패킷이 잘 수신되었음을 알리는 기능을 한다.
-
TCP 연결 (3-way Hands Shaking)
- TCP 3-way Hands Shaking을 통해 2개의 호스트가 서로 연결되어 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고 실제로 데이터 전달을 시작하기 전에 한쪽에서 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- SYN
- 송신측이 수신측에게 임의의 x값을 포함한 연결 요청 메시지 전송
- 송신측은 SYN_SENT 상태가 됨
- SYN ACK
- 요청을 받은 수신측이 전달받은 x값에 +1을 하고 자신도 임의의 y값을 포함하여 다시 송신측에게 수락 메시지 전송
- 수신측은 SYN_RECEIVED 상태가 됨
- ACK
- 송신측이 다시 x값과 y값에 각각 +1씩 한 후 수락 메시지 전송
- 송신측 수신측 모두 ESTABLISHED 상태가 됨
-
TCP 연결 해제(4-way Hands Shaking)
- TCP에서 연결을 해제하기 위한 절차
- FIN
- 송신측이 연결을 종료하겠다는 메시지를 전송
- ACK
- 수신측은 일단 확인 메시지를 전송
- 자신의 통신이 끝날 때 까지 기다리는데 이 상태가 TIME_WAIT 상태임
- FIN
- 수신측이 통신이 끝난 것을 확인 후 송신측에게 연결이 종료되었다고 메시지를 전송
- ACK
- 송신측은 확인했다는 메시지를 전송
IP 주소란?
IP는 Internet Protocol의 약자.
IP 주소는 Internet Protocol Address이다.
0.0.0.0 부터 255.255.255.255 까지이며, TCP/IP 프로토콜을 사용하는 모든 장비들을 구분하기 위해서 만들어낸 고유한 주소이다. 즉, 인터넷을 사용하기 위한 주소이다.
IP 주소는 네트워크 부분과 호스트 부분으로 나뉘어 있다.
여기서 말하는 네트워크는 하나의 브로드캐스트 영역이라고 보면 된다.
즉, 하나의 PC가 데이터를 뿌렸을 때 그 데이터를 라우터를 거치치 않고 바로 받을수 있는 영역이라고 보면 된다.
호스트는 각각의 PC 또는 장비라고 생각하면 된다.
네트워크 부분과 호스트 부분을 나누는 규약은 IP 주소의 '클래스'이다.
IP주소의 클래스는 A, B, C, D, E로 구분된다.
클래스 A : 1~126(127은 예비번호) / 앞의 8비트가 네트워크 부분을 나타냄.
클래스 B : 128~191 / 앞의 16비트가 네트워크 부분을 나타냄
클래스 C : 192~223 / 앞의 24비트가 네트워크 부분을 나타냄
클래스 D : 224~239(멀티캐스트용 주소)
클래스 E : 240~255(연구용 주소)
A클래스의 IP주소를 예를 들면 아래와 같다.
10.3.4.3
B클래스의 IP주소를 예를 들면 아래와 같다.
132.12.11.4
C클래스의 IP주소를 예를 들면 아래와 같다.
203.240.100.1
*네트워크 영역
*호스트 영역
NAT(Network Address Translation)란?
- 한쪽 네트워크의 IP 주소가 다른 네트워크로 넘어갈 때 변환이 되어서 넘어가는 것을 말함
- NAT는 라우터에서 지원하는 기능이다.
- NAT가 사용되는 이유?
- 내부의 네트워크에는 비공인 IP 주소(Local 주소)를 사용하고 외부 인터넷으로 나가는 경우에만 공인 IP 주소(Global 주소)를 사용하고자 하는 경우
- 내부의 모든 PC나 호스트에 부여할 공인 주소는 한정되어 있고 모두 인터넷을 사용하고자 하는 경우에는 내부에서는 비공인 주소를 사용하다가 외부로 나갈 때에만 공인 주소를 부여받아 나가는 방식을 사용하면 다수의 비공인 IP 주소 사용자가 인터넷을 사용할 수 있기 때문
- 기존에 사용하던 ISP에서 새로운 ISP로 바꾸면서 내부 전체의 IP를 바꾸지 않고 기존의 IP 주소를 그대로 사용하고자 하는 경우
- 2개의 인트라넷을 서로 합하려다 보니 두 네트워크의 IP가 서로 겹치는 경우
- TCP 로드 분배가 필요한 경우
- 내부의 네트워크에는 비공인 IP 주소(Local 주소)를 사용하고 외부 인터넷으로 나가는 경우에만 공인 IP 주소(Global 주소)를 사용하고자 하는 경우
- NAT를 통해 변환되는 IP 주소는 NAT 테이블에 저장된다.
- Local IP 주소와 그에 매칭되는 Global IP 주소가 저장된다.
- 따라서 NAT로 변환된 IP라도 패킷이 되돌아올 때 정확한 호스트 PC에게 정확한 패킷을 전달해줄 수 있다.
서브넷 마스크(Subnet Mask)란?
말뜻 그대로 서브, 즉 메인이 아닌 어떤 가공을 통한 네트워크를 만들기 위해서 씌우는 마스크라고 생각하면 된다.
클래식한 기존의 네트워크를 서브넷으로 나누어 주기 위한 기법이다.
서브넷 마스크를 사용하는 이유는 네트워크를 서브넷으로 나누어주기 위해서인데 이는 너무 큰 네트워크를 필요에 맞는 사이즈로 나누어서 브로드캐스트 도메인을 작게 나누기 위해서이다. 이를 서브네팅(Subnetting)이라고한다.
기본적으로 IP주소에는 디폴트 서브넷 마스크가 따라다닌다.
클래스 A에는 255.0.0.0
클래스 B에는 255.255.0.0
클래스 C에는 255.255.255.0
예를들어
210.100.100.1 → IP주소
255.255.255.0 → 서브넷 마스크
210.100.100.0 → 서브넷 네트워크
이렇게 사용한다.
만약에 클래스 B의 IP를 잘게 나누고 싶으면?
150.150.100.1 → IP주소
255.255.255.0 → 서브넷 마스크
150.150.100.0 → 서브넷 네트워크
원래 150.150.0.0 네트워크 대역이였던 클래스 B 주소를 클래스 C형태의 주소로 나누어서 사용할 수 있도록 서브네팅 한 것이다.
서브넷으로 나눈 네트워크는 각각 하나의 네트워크이기 때문에 서로 나뉜 서브넷끼리는 라우터를 통해서만 통신이 가능하다.
예를들어 150.100.0.0이라는 클래스 B 네트워크가 있는데 이 때 150.100.100.1과 150.100.200.1은 라우터를 거치지 않고 통신이 가능하다. 왜냐하면 같은 네트워크에 있기 때문이다. (클래스 B의 기본 서브넷 마스크 255.255.0.0)
근데 이 네트워크의 서브넷 마스크를 255.255.255.0 으로 변경하면 150.100.100.1과 150.100.200.1은 라우터 없이 통신할 수 없다. 왜냐하면 서브네팅을 통해 네트워크 부분이 서로 달라졌기 때문이다. 즉 서로 다른 브로드캐스트 도메인에 존재하기 때문이다.
추가적으로 서브넷 마스크는 이진수로 나타냈을 때 연속적으로 1이 나온 후에 0이 나와야 서브넷 마스크로 사용할 수 있다. 이건 규칙이다.
LAN(Local Area Network)이란?
- 어느 한정된 공간에서 네트워크를 구성한다는 뜻
- 예) 사무실에 30대의 컴퓨터가 있는데 이것들을 네트워크로 구성한다면 '사무실에 LAN을 구축한다'고 함
WAN(Wide Area Network)이란?
- 멀리 떨어진 지역을 서로 연결하는 네트워크
- 인터넷도 하나의 WAN으로 볼 수 있음
이더넷(Ethernet)이란?
-
네트워킹의 한 방식
-
CSMA/CD 프로토콜을 사용하여 통신함.
-
즉, CSMA/CD 프로토콜을 사용해서 통신하는 네트워크의 한 방식.
-
CSMA/CD란?
- Carrier Sense Multiple Access/Collision Detection의 약자
- Carrier Sense : 네트워크상에 나타나는 신호(Carrier)를 감지(Sense)하는 것
- Multiple Access : 다중 접근
- Collision : 통신에서 2개 이상의 장비들이 데이터를 동시에 보내려다 부딪히는 경우를 충돌(Collision)이라고 함
- Collision Detection : 충돌 감지
- CSMA/CD 프로토콜은 통신하고자 하는 컴퓨터가 네트워크를 살펴봐서(Carrier Sense) 아무도 통신을 하고 있지 않으면 무조건 자기 데이터를 실어서 보낸 후 잘 갔는지 확인 해보는 방식이다.
- 그런데 만약 2개 이상의 컴퓨터에서 데이터를 실어 보내려고 하면 충돌(Collision)이 발생하는데, 충돌한 2개 이상의 컴퓨터는 자신이 보내려던 데이터를 랜덤한 시간 동안 기다렸다가 다시 보내게 된다.
- 하지만 계속해서 충돌하게 되면(최대 15번) 통신을 포기한다.
토큰링(TokenRing) 방식
- 네트워크에서 토큰을 가진 컴퓨터만 네트워크에 데이터를 실어 보낼 수 있는 방식
- 토큰은 한 방향으로(옆으로)만 전달된다.
- 따라서 충돌(Collision)은 없지만 데이터를 보내고 싶어도 토큰을 전달 받아야만 가능하므로 Pending시간이 있다.
맥 어드레스(MAC Address)란?
- MAC은 Media Access Control의 줄임말
- 네트워크 상에서 서로를 구분하기 위해 Device마다 할당된 물리적인 주소를 말함
- MAC Address는 12자리 숫자로 구성되어 있으며 앞의 6자리는 제품제조사, 나머지 6자리는 각 제조사에서 제품에 할당하는 코드이다.
- MAC Address는 랜카드 혹은 네트워크 장비에 고정되어 있는 주소이며 각각 전세계에서 고유한 주소이다.
- 통신을 위해서는 **ARP(Address Resolution Protocol)**과정이 필요하다.
-
ARP는 IP주소를 MAC으로 바꾸는 것이다.
-
ARP가 필요한 이유?
- L2 스위치는 이더넷 프레임 기반(MAC 기반)을 L3 스위치는 패킷(IP 주소 기반)을 기준으로 동작하기 때문에 Inter Networking 환경에서 MAC 주소와 IP 주소를 알아야 스위치, 라우터 조합의 네트워크 망에서 통신이 가능함.
- 인터넷에 접속을 위해 스위치를 만나게 되는데 이놈은 ETH MAC Address를 기반으로 장비의 경로를 파악함.
- 라우터는 IP Address를 이용하여 네트워크 경로를 파악함.
- 결국 자신이 다른 컴퓨터와 통신을 하려는 의도가 있다면 ARP packet을 전송하여 목적지의 MAC 주소를 파악해야함.
-
ARP Table
- 네트워크에 있는 장비들에게서 항상 이러한 ARP 프로세스 과정이 발생한다면 그 망에 트래픽이 심하여 부담이 된다.
- 따라서 ARP Table이라는 것이 존재하고 미리 IP/MAC 주소를 적어 놓는 과정을 진행한다.
- ARP Table에 없는 ARP 정보는 ARP Table을 갱신하여 저장해놓는다.
-
ARP 동작원리
- ARP(ARP Request) : 송신자는 목적지와 통신을 할 의도가 있다면 목적지의 물리적인 주소가 필요하므로, 물리주소 요청을 위한 ARP 요청 패킷을 브로드캐스트로 전송(목적지의 물리 주소를 모름)
- RARP(ARP Reply) : 모든 호스트와 라우터는 송신자가 보낸 ARP 요청 패킷을 수신하여 해당되는 수신자 (송신자가 요청한 IP를 확인하여)는자신의 IP와 MAC 을 넣어 응답패킷을 보냄.
- GARP(Gratuitous ARP) : IP 주소 충돌감지를 위해 사용하는 packet. 나와 동일 subnet 상에 존재하는 호스트/라우터가 누군가 GARP 를 보내면 자신의 ARP table 을 갱신함.
ARP와 RARP 동작 프로세스
-
캐스트
- 유니캐스트
- 브로드캐스트
- 멀티캐스트
유니캐스트
- 1:1 통신 방식
- 통신하려는 PC가 특정 목적지의 MAC 주소를 가지고 통신한다.
- LAN에 연결된 모든 PC는 전달받은 MAC 주소와 자신의 MAC 주소를 비교하여 일치하지 않으면 요청을 버리고 만약에 일치하면 요청을 받아서 일련의 처리를 한 후 MAC 주소가 일치하는 랜카드를 통해 요청에 대한 응답을 처리한다.
- 요청을 처리할 때 CPU에서 연산이 일어나는데 유니캐스트 방식은 MAC 주소가 일치하는 PC만 CPU 연산이 일어나므로 부하가 적다.
브로드캐스트
- 목적지의 MAC 주소를 모를 때 IP 주소를 가지고 다수에게 통신을 하는 방식
- 이 때 ARP가 사용된다. IP → MAC
- 통신하려는 PC가 특정 목적지의 IP 주소를 가지고 통신한다.
- 통신하려는 PC가 특정 목적지의 IP 주소를 가지고 LAN에 연결된 모든 PC에게 요청을 전달하여 해당 IP에 맞는 PC의 MAC 주소를 전달받는다. 이 과정이 바로 ARP인데, 이 때 브로드캐스트가 사용되는 것이다.
- 요청을 전달받은 '모든' PC들은 ARP를 처리하는 과정에서 CPU 연산을 한다. 즉, 브로드캐스트에서는 부하가 많기 때문에 과도한 브로드캐스트는 전체 네트워크의 성능 뿐만 아니라 PC 자체의 성능 역시 떨어뜨리는 결과를 가져온다.
멀티캐스트
- 통신하기를 원하는 PC에게만 패킷을 보내는 방식
- 라우터나 스위치에서 기능을 제공해 주어야만 사용 가능
- 만약 멀티캐스트를 지원하지않는 라우터에 멀티캐스트 요청을 보낼 경우 브로드캐스트 취급을 하여 요청을 막음(라우터는 브로드캐스트를 막아버리는 성질이 있음)
- 만약 멀티캐스트를 지원하지않는 스위치에 멀티캐스트 요청을 보낼 경우 브로드캐스트 취급을 하여 모든 포트로 요청을 뿌려버림
OSI 7계층 (Open Systems Interconnection 7 Layer)
네트워크는 7개의 계층으로 잘게 쪼개져 있고 그 계층별로 장비들이 있다.
그리고 이렇게 네트워크를 7개로 나눈 것은 통신의 편리를 위해서다.
OSI 7계층을 통해 2개의 PC가 통신을 하는 모습
-
7계층 : Application Layer(애플리케이션 레이어)
- 사용자가 직접 눈으로 보고 실제로 작업하는 계층이다.
- 이메일을 작성한다던가 웹사이트를 접속한다던가 하는 작업.
- 사용자와 직접적으로 상호작용을 하는 모든 응용프로그램들이 이 레이어에 속한다.
- 대표적인 프로토콜은 HTTP, FTP, Telnet, SMTP, POP 등이 있다.
-
6계층 : Presentation Layer(프리젠테이션 레이어)
- 데이터의 형식(Format)을 지정하는 역할을 한다.
- 응용프로그램 형식을 준비 혹은 네트워크 형식으로 변환하거나, 네트워크 형식을 응용프로그램 형식으로 변환하는 역할을 한다.
- PC1 (응용프로그램에서 실행할 수 있는 형식 → 데이터) ←→ (데이터 → 응용프로그램에서 실행할 수 있는 형식) PC2
- 서로 다른 환경의 애플리케이션들이 데이터를 서로 이해할 수 있도록 도와주는 역할을 한다.
- 데이터의 압축, 암호화의 기능도 수행한다.
- 대표적인 포맷 확장자로 JPEG, TIFF, GIF, MPEG, QUICKTIME, ASCII, EBCDIC 등이 있다.
-
5계층 : Session Layer(세션 레이어)
- 통신의 일을 책임지고 있는 역할을 한다.
- 2대의 PC간에 통신을 하기 위해서는 세션(Session)을 만들어야 하는데 이 작업을 처리한다.
- 네트워크 연결을 성립(Establishment), 제어와 운영(Manage and Control), 연결의 종료(Terminate)를 책임진다.
- 대표적인 프로토콜은 SSH, TLS 등이 있다.
-
4계층 : Transport Layer(트랜스포트 레이어)
- 에러 복구를 위해 패킷을 재전송하거나 Flow를 조절해서 데이터가 정상적으로 전송될 수 있도록 하는 역할을 한다.
- TCP/IP를 사용하는 경우 데이터가 잘 전송되고 있는지 확인하고 만약 중간에 에러가 발생하면 이를 알아내서 다시 에러난 부분을 재전송 해준다.
- UDP를 사용하는 경우 데이터를 보낸 후 아무것도 하지 않는다.
- 대표적인 프로토콜은 TCP/IP, UDP, ARP이다.
- 대표적인 장비로는 게이트웨이가 있다.
-
3계층 : Network Layer(네트워크 레이어)
- 경로를 선택하고, 주소를 정하며, 경로에 따라 패킷을 전달해주는 역할을 한다.
- 즉, 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 '라우팅' 역할을 한다.
- 하지만 에러는 신경쓰지 않는데 이유는 상위 계층에서 해결해주기 때문이다.
- 대표적인 프로토콜은 IP, ICMP, IGMP이다.
- 대표적인 장비로는 라우터, Layer3 스위치가 있다.
-
2계층 : Data Link Layer(데이터링크 레이어)
- 피지컬 레이어를 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와준다.
- 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있을 뿐만 아니라 MAC 주소를 가지고 통신할 수 있게 해준다.
- 이 계층에서 전송되는 단위를 '프레임'이라고 한다.
- 대표적인 프로토콜은 MAC, PPP이다.
- 대표적인 장비로는 브리지, 스위치 등이 있다.
-
1계층 : Physical Layer(피지컬 레이어)
- 전기적, 기계적, 기능적인 특성을 이용하여 통신 케이블로 데이터를 전송한다.
- 이 계층에서 사용되는 통신 단위는 비트이며, 이것은 1과 0으로 나타내는 전기적인 on, off 신호이다.
- 이 계층에서는 단지 데이터를 전달할 뿐, 이 데이터가 무엇인지 어떤 에러가 있는지 어떻게 보내는 것이 더 효율적인지 하는 것은 전혀 관여하지 않는다.
- 대표적인 프로토콜은 Ethernet, RS-232C이다.
- 대표적인 장비로는 통신케이블, 리피터, 허브 등이 있다.
DHCP(Dynamic Host Configuration Protocol)
DHCP는 IP 주소를 자동으로 배정해주는 역할을 한다.
PC가 네트워크를 통해 DHCP에게 IP 할당을 요청하면 DHCP가 가지고있는(관리하고있는) IP 주소중에 하나를 해당 PC에게 배정해준다.
PC가 IP 주소를 다 사용하면(컴퓨터를 종료하거나 네트워크 연결을 끊으면) DHCP가 다시 해당 IP 주소를 회수한다.
LAN 카드
- LAN 카드라고 하는 것은 네트워크 어댑터 혹은 NIC(Network Interface Card)라고도 부른다.
- LAN 카드는 데이터를 케이블에 실어서(피지컬 레이어) 허브나 스위치 혹은 라우터 등으로 전달해주고 자신에게 온 데이터를 CPU에게 전달해주는 역할을 한다.
- 이더넷용, 토큰링용, RDDI용, ATM용 등이 있다.
- LAN 카드는 PC의 버스 방식에 맞게 세팅해야한다.
- 위에서 네트워크 통신 시 자신에게 넘어온 패킷에서 목적지의 MAC 주소를 확인하여 자신의 MAC 주소와 동일하면 LAN 카드가 CPU에게 연산을 요구한다고 그랬는데 해당 세부적인 과정은 아래와 같다.
- LAN 카드를 PC에 설치하면 IRQ(인터럽트 요청)번호와 Base Memory(메모리 범위)를 할당받는다.
- 내 MAC 주소로 데이터가 들어왔을 때 LAN 카드는 PC의 CPU에 할당받은 IRQ 번호를 이용해서 인터럽트를 걸게된다.
- 즉, CPU에게 하던 일을 멈추고 자신의 일을 해줄 것을 요청한다.
- 그럼 CPU는 IRQ 번호를 보고 'LAN 카드가 요청한 서비스'라는것을 확인하고 Base Memory로 이동해서 작업을 시작한다.
허브(Hub)
멀티포트(Multiport), 리피터(Repeater)라고도 불리며 멀티포트는 말 그대로 포트가 많이 붙어있다는 뜻이고, 리피터는 들어온 데이터를 그대로 재전송한다는 의미를 가지고 있다.
따라서 허브는 포트가 여러개 달린 장비인데 이것은 한 포트로 들어온 데이터를 나머지 모든 포트로 뿌려준다.
이는 콜리전 도메인으로부터 자유롭지 못하다는 뜻이기도 하다.
허브에 연결된 PC가 많아지면 많아질수록 콜리전 도메인이 넓어져 네트워크 통신 속도가 느려진다.
- 더미 허브 : 기본적인 허브
- 인텔리전트 허브 : NMS(Network Manage System)을 통해서 데이터를 분석하고 제어가 가능하다. 또한 Auto Partition 기능이 있어 오류가 있는 PC의 네트워크 통신을 Isolation(격리)시킬 수 있다.
- 세미 인텔리전트 허브 : 인텔리전트 허브와 연결하면 인텔리전트 허브가 되고 아니면 더미 허브가 되는 허브
브리지(Bridge)
허브로 만들어진 콜리전 도메인을 반으로 나누어 그 사이를 이어주는 역할을 한다.
스위치(Switch)
스위칭 허브(Switching Hub)라고도 불리며, 허브와는 달리 포트별로 콜리전 도메인을 분리한 것이 특징이다.
브리지는 2개의 콜리전 도메인을 가지고 있지만 스위치는 더 많은 콜리전 도메인을 가지고 있다.(콜리전 도메인을 더 잘게 쪼갬)
브리지와 스위치의 공통 기능
- Learning : 배운다.
- Flooding : 모르면 들어온 포트를 제외한 다른 모든 포트로 뿌린다.
- Forwarding : 알면 해당 포트로 건네준다.
- Filtering : 해당되지않는 다른 포트로는 못 건너가게 막는다.
- Aging : 나이를 먹는다.(오래된 데이터는 지운다)
브리지와 스위치는 공통적으로 'MAC 주소 테이블'을 가지고 있는데, 이곳에 MAC 주소를 저장한다.
그리고 나중에 PC들이 네트워크를 통해 통신을 할 때 이 MAC 주소 테이블을 참조하여 다리(브릿지)를 건너가게 할지 아니면 못 건너가게 할지 결정한다.
처음엔 MAC 주소 테이블이 텅 비어있으므로 Flooding(들어온 포트를 제외한 나머지 다른 포트로 뿌림. 브로드캐스팅)을 한다. 그 과정에서 출발지와 목적지의 MAC 주소를 MAC 주소 테이블에 저장한다.
만약에 MAC 주소 테이블에 출발지와 목적지의 MAC 주소가 있으면 출발지의 데이터를 목적지로 바로 전송할 수 있다.
이 과정에서 만약 출발지의 데이터가 브릿지를 넘어서 목적지에 가야 한다면, 즉 분리된 콜리전 도메인을 넘어가야 한다면 Forwarding을 한다.
반대로 출발지와 목적지가 동일한 콜리전 도메인에 존재한다면 굳이 브릿지를 넘어갈 필요가 없으므로 Filtering을 한다.
그리고 MAC 주소 테이블에 계속 데이터를 쌓아둘 수 없으므로(새로운 MAC 주소를 저장해야하므로) 주기적으로 비워줘야 하는데 기본값으로 5분마다 리셋되게 되어있다. 이것에 대한 타이머가 Aging이다.
어떤 MAC 주소가 MAC 주소 테이블에 저장되고 나면 Aging이 가동되어서 저장한 후 300초(5분)가 지나도록 더이상 그 출발지 주소를 가진 프레임(요청)이 들어오지 않으면 테이블에서 MAC 주소를 삭제시킨다.
루핑(Looping)
예를 들어보자.
스위치 A에는 Host A라는 PC가 연결되어있다.
스위치 B에는 Host B라는 PC가 연결되어있다.
Host A와 Host B 사이에는 스위치 A, 스위치 B 즉 2개의 스위치가 있다.
Host A가 Host B로 데이터를 전송하려고 한다.
그럼 Host A의 데이터는 Host B의 MAC 주소를 알아야 하기 때문에 브로드캐스트 패킷을 보낸다.
이 브로드캐스트 패킷은 스위치 A와 스위치 B로 전달된다.
전달된 패킷을 가지고 스위치 A와 스위치 B는 분석을 한다.
이 패킷이 브로드캐스트 패킷이라는 것을 알아낸 스위치들은 Flooding을 한다.
Flooding을 하는 이유는 아래와 같다.
브로드캐스트 패킷에는 목적지의 MAC 주소를 FF:FF:FF:FF:FF:FF로 설정한다.
이는 모든 대상에게 프레임을 전송하는것, 즉 연결된 모든 포트로 데이터를 전송하는것을 뜻한다.
즉, 스위치는 이런 정확하지않은 목적지 주소를 보고 들어온 포트를 제외한 나머지 모든 포트로 뿌려주는 Flooding을 하는 것이다.
이외에
- 그 주소가 자신의 브리지 테이블에 없거나,
- 멀티캐스트 주소이거나
일 때 Flooding을 한다.
그럼 각자 스위치에서 상대방 쪽 세그먼트로 브로드캐스트 패킷이 보내질 것이다.
스위치 A에서는 스위치 B로
스위치 B에서는 스위치 A로
계속해서 Looping을 한다.
이 때 CSMA/CD의 특성으로 인해 각 분리된 세그멘트(콜리전 도메인)가 계속 점유되어 네트워크는 무용지물 상태가 된다.
라우터(Router)
- 한마디로 '지능을 가진 경로 배정기'라고 할 수 있다.
- 라우터는 자신이 가야할 길을 자동으로 찾아서 가장 빠르고 효율적인 길로 갈 수 있는 능력이 있다.
- 라우터는 2가지 일을 한다.
- Path Determination(경로 결정) : 데이터 패킷이 목적지까지 갈 수 있는 길을 검사하고 어떤 길로 가는 것이 가장 적절한 지 결정함.
- Switching(스위칭) : 길이 결정되면 그쪽으로 데이터 패킷을 스위칭함.
- 가장 좋은 경로를 결정하기 위해서 라우팅 알고리즘을 사용하고 이런 라우팅 알고리즘은 라우팅 테이블을 만들어서 관리한다.
라우터 키워드
- 인터페이스는 라우터의 접속 포트를 말한다.
- Ethernet 포트는 내부 네트워크, 즉 LAN을 위한 접속 포트이며, Serial 포트는 외부 네트워크(인터넷 또는 원격지) 접속을 위한 포트로 DSU/CSU와 연결한다.
라우팅 프로토콜(Routing Protocol) = 라우팅 알고리즘
- 라우터 안에서 라우티드 프로토콜들에게 목적지까지 가장 좋은 길을 갈 수 있게 해주는 역할을 한다.
- 라우팅 알고리즘은 자신의 라우팅 테이블을 가지고 있으면서 자기가 찾아갈 경로에 대한 정보를 이곳에 기억해둔다. 이 곳을 라우팅 테이블이라고 한다.
- 대표적으로 RIP(Routing Information Protocol), IGRP(Interior Gateway Routing Protocol), OSPF(Open Shortest Path First), EIGRP(Enhanced Interior Gateway Routing Protocol) 등이 있다.
라우팅 테이블
- 라우팅 테이블은 일종의 메모리라고 생각하면 된다. 즉, 어떤 라우팅 알고리즘을 사용하느냐에 따라서 라우팅 테이블의 내용은 달라지게 된다.
- 라우팅 테이블에는 목적지, 목적지까지의 거리, 그리고 어떻게 가야하는가 등의 내용이 들어간다.
- 라우팅 테이블의 내용은 시간이 지남에 따라 계속 업데이트된다. 왜냐하면 새로운 길이 생길 수도 있고 새로운 목적지가 추가될 수도 있기 때문이다.
- 라우터는 라우팅 테이블의 내용을 참조하여 경로를 찾을 때 사용한다.
- 메모리이기 때문에 전원이 꺼지면 내용이 모두 지워진다. 하지만 다시 전원이 들어오면 수분, 수초 만에 다시 만들어진다.
- 라우팅 테이블을 어떤 식으로 관리하는가에 대한 분류
-
디스턴스 벡터 알고리즘(Distance Vector Algorithm)
- 거리와 방향만을 위주로 만들어진 라우팅 알고리즘
- 목적지까지의 거리와 그 목적지까지 가려면 어떤 인접 라우터를 거쳐서 가야 하는지에 대한 방향만을 저장함.
- 따라서 인접 라우터들과 주기적으로 라우팅 테이블을 교환해서 자신의 정보에 변화가 생기지 않았는지를 확인하고 관리한다.
- 한 라우터가 모든 라우팅 정보를 가지고 있을 필요가 없기 때문에 라우팅 테이블을 줄일 수 있어서 메모리를 절약하고, 라우팅의 구성 자체가 간단하며, 여러 곳에서 표준으로 사용되고 있다는 장점이 있다.
- 반면에 라우팅 테이블에 아무런 변화가 없더라도 정해진 시간마다 주기적으로 한번씩 꼭 라우팅 테이블의 업데이트가 일어나기 때문에 트래픽을 쓸데없이 낭비하고, 만약 라우팅 테이블에 변화가 생길 경우 이 변화를 모든 라우터가 알 때까지 걸리는 시간(Convergence Time)이 너무 느리다.
- 또한 홉 카운트(네트워크 크기)에 제한이 있어 이를 넘어가는 라우터는 네트워크 인식을 못한다.
- 작은 규모의 네트워크에 적용하기 좋음.
-
링크 스테이트 알고리즘(Link State Algorithm)
- 한 라우터가 목적지까지의 모든 경로 정보를 다 알고있음.
- 어디에 어떤 네트워크가 있고, 거기까지 가려면 어떤 라우터를 통해야 한다는 정보(이것을 링크라고 한다)를 토폴로지 데이터베이스로 만든다.
- 이렇게 만들어진 토폴로지 데이터베이스를 가지고 라우터는 SPF(Shortest Path First)라는 알고리즘을 계산한다. SPF는 말 그대로 어디로 가야 가장 빨리 갈 수 있는가를 계산하는 알고리즘이다.
- 이 계산 결과를 가지고 라우터는 SPF 트리를 만드는데 이 트리 정보를 이용하여 라우팅 테이블을 만든다.
- 한 라우터에서 목적지까지의 모든 경로를 알고 있기 때문에 중간에 링크의 변화가 생겨도 이를 알아내는 데 걸리는 시간이 짧다.
- 또한 이웃 라우터들과 라우팅 테이블을 교환하는 과정에서도 테이블에 변화가 있는 것만 교환하기 때문에 테이블 교환이 자주 발생하지 않고 따라서 이에 따른 트래픽 발생이 적다.
- 하지만 라우터가 모든 라우팅 정보를 관리해야 하기 때문에 메모리 소모가 많고 SPF 계산 등 여러가지 계산을 해야 하기 때문에 라우터 CPU가 일을 많이 해야 한다.
- 큰 규모의 네트워크에 고용량,고사양 라우터를 사용하여 적용하기 좋음.
-
라우티드 프로토콜(Routed Protocol)
말 그대로 라우팅을 당하는, 즉 라우터가 라우팅을 해주는 프로토콜이라는 뜻.
대표적으로 TCP/IP, IPX, 등이 있다.
라우팅 프로토콜의 종류
- 디폴트 라우트(Default Route)
- 경로를 찾아내지 못한 모든 네트워크들은 모두 다 한곳으로 가라고 미리 정해놓는 방식.
- 즉, 여러가지 라우팅 프로토콜에 의해서 길을 다 찾아간 다음에 그래도 길을 못찾은 네트워크가 있다면 무조건 정해놓은 곳으로 가라고 결정함.
- 스테틱 라우팅 프로토콜(Static Routing Protocol)
- 사람이 가장 빠르고 좋은 길을 직접 일일이 입력해주는 방식.
- 스테틱 라우팅 프로토콜은 갈 수 있는 경로가 하나밖에 없는 Stub 라우터용을 많이 사용됨.
- Stub 네트워크란?
- 오직 하나의 경로만을 통해서 외부망과 연결된 네트워크를 의미함.
- 예) PC방 네트워크
- 장점
- 라우터는 정해진 경로로 아무 생각없이 데이터를 넘기기만하면됨 → CPU연산이 없어 속도 빨라짐, 메모리도 적게먹음, 보안에 강함
- 단점
- 사람이 일일이 경로를 직접 입력해줘야 하므로 귀찮음.
- 입력해준 경로에 문제가 생기면 장애가 발생함.
- 다이나믹 라우팅 프로토콜(Dynamic Routing Protocol)
- 라우터가 스스로 가장 좋은 길을 찾아내서 알아서 라우팅함.
- 장점
- 여러가지 상황에 자동으로 대응할 수 있음.
- 자동으로 가장 좋은길을 찾아감.
- 단점
- 라우팅 프로토콜을 이용해 어떤 길이 가장 빠른 길인지 계산해야하고, 시간이 지날 때마다 바뀐 정보는 없는지 계속 확인해봐야 하며, 라우팅 테이블도 계속 업데이트 해야하므로 라우터에 부담을 준다.
- 다이내믹 라우팅 프로토콜의 대표로서 RIP, IGRP, OSPF, EIGRP 등이 있다.
RIP(Routing Information Protocol)
라우팅 프로토콜 중 가장 많이 사용하는 표준 라우팅 프로토콜
- 다이나믹 라우팅 프로토콜
- 내부용 라우팅 프로토콜(Interior Gateway Protocol)
- 디스턴스 벡터 알고리즘 사용(거리와 방향으로 길을 찾아가는 프로토콜)
- 라우터가 좋은 길을 결정하는 기준이 되는 요소 : 홉 카운트
- 최대한 갈 수 있는 홉 카운트의 거리 : 15개
- 디폴트 라우팅 업데이트 주기 : 30초
RIP는 최적의 경로를 찾는 방법이 가장 단순하다.
라우터를 몇 번 거쳐서 목적지에 도착하는 가를 보기 때문인데, 즉 홉 카운트가 가장 낮은 경로를 가장 좋은 경로로 본다.
이렇듯 동작도 간단하고 이에 따라 구현도 간단하지만 단점이 있다.
RIP는 라우터 간의 회선 속도를 보고 경로를 판단하는 것이 아니기 때문에 만약 여러 라우터를 통해서 가는 방법이 더 빠르더라도, 즉 더 나은 방법이 있음에도 불구하고 홉 카운트가 가장 낮은 경로로 라우팅한다.
속도나 회선의 신뢰도, 회선의 로드 등을 확인하지 않는다. 또한 RIP는 자신의 라우터에서 15개 이상의 라우터를 거치는 목적지의 경우는 Unreachable(갈 수 없음)로 정의하고 데이터를 보내지 못한다. 따라서 커다란 네트워크 상에서는 사용하기 무리가 있다.
하지만 소규모 네트워크 상에서는 효율성이 좋고 라우터의 메모리를 적게 사용하며 구성이 간편해서 많이 사용한다.
그리고 모든 라우터에서 지원하는 표준 라우팅 프로토콜이기 때문에 많이 사용한다.
VPN(Virtual Private Network)란?
VPN이란 가상 사설망이다.
- 공중망(Public Network)를 사설망(전용선, Private Network)처럼 사용하는 것
- 터널링 프로토콜과 보안 과정을 거쳐 내부 기밀 유지
- 공중망을 경유하여 데이터가 전송되더라도 네트워크가 외부인으로부터 안전하게 보호되도록 주소 및 라우터 체계의 비공개, 데이터 암호화, 사용자 인증 및 사용자 액세스 권한 제한 등의 기능을 제공한다.
- VPN은 공중망을 통해 데이터를 송신하기 전 송신측에서 데이터를 암호화하고, 수신측에서 이를 복호화 한다.
폴트 톨러런트(Fault Tolerant)
시스템에 어떠한 문제가 발생할 경우를 대비해서 장애 대비책을 세워두는 것을 말한다.
장비를 이중 구조로 디자인하여 하나의 장비가 장애가 났을 시 대비하거나 하나의 지점에서 발생한 장애로 인해 영향을 받는 것을 방지하는 대책이다.
로드 밸런싱(Load Balancing)
로드를 분산하는 것.
예를 들어 한개의 인터넷 회선을 이용한 인터넷 접속 대신, 두개의 인터넷 회선을 이용한 인터넷 접속을 사용하면 인터넷 연결을 위한 2개의 회선이 생겨 1/2만큼 로드 분산 효과가 있다.
또 하나의 예로는 한대의 서버를 3대로 늘려 서버로의 요청을 3등분하면 1/3만큼의 로드 분산 효과가 있는 것이다.
참고
https://sjlim5092.tistory.com/entry/arp-패킷의-원리와-이해
https://awesometic.tistory.com/90
해저 케이블 지도 사이트
'개발관련 > Network' 카테고리의 다른 글
HTTP 쿠키와 세션, 그리고 JWT(Json Web Token)란? (0) | 2018.12.05 |
---|---|
OSI 7계층에 대한 정리 (0) | 2018.06.01 |
[펌]L2, L3, L4, L7 스위치란 무엇인가 (0) | 2018.06.01 |
[펌]허브, 스위치, 라우터의 진화과정으로 이해하는 인터넷 (0) | 2018.06.01 |
TCP/UDP 특징 및 차이점 (0) | 2018.06.01 |