2022. 1. 21. 19:21ㆍMajor`/컴퓨터 네트워크
네트워크 계층 (Network Layer)
- 논리적인 주소(IP 주소)를 담당하고, 패킷의 전달 경로를 결정(라우팅)하는 역할
- Layer 4(Transport Layer)에서 만들어진 패킷을 전달 받아서, 목적지 컴퓨터의 논리적 주소(IP)를 Layer3의 헤더에 추가하는 역할
- 서로 다른 Network간의 통신을 가능하게 해주는 계층
- 라우터"라는 장비를 통해서 다른 Network로 Data를 전송
"라우터"
- Data의 목적지가 정해지면 해당 목적지까지의 최적의 경로를 설정해준다
- "IP 주소"를 통해서 Network를 식별
Layer 2(Data Link) / Layer 3(Network)
Layer 2
- Ethernet 프로토콜을 기반으로 같은 Network(LAN)안에서 Data를 주고받는다
Layer 3
- IP (Internet Protocol)를 기반으로 서로 다른 Network간에 Data를 주고받는다
라우터 (Router)
- Network를 분리할 수 있다
- 거리와 상관없이 다른 Network로 Data(패킷)를 보낼 수 있다
- 라우팅 테이블(Routing Table)을 통해서 경로 정보를 등록하고 관리
- 서로 다른 Network들에 대한 정보가 저장되어 있어야 한다
라우터 기능
▶ 경로 설정
- Data 패킷이 출발지 ~ 목적지까지 갈 수 있는 경로를 검사하고, 최적의 경로를 설정
▶ 스위칭
- 경로 설정이 결정될 경우, Data 패킷 스위칭 작업을 수행
패킷 스위칭
- 작은 블록의 패킷으로 Data를 전송해서, Data를 전송하는 동안만 Network 자원을 사용하도록 하는 방법
- 패킷은 데이터 연결 상의 모든 노드들 사이에 개별적으로 경로가 제어
▶ 장점
- 회선 이용률이 높다
- 고 신뢰성, 고품질, 고효율이다
▶ 단점
- 경로에서의 각 교환기에서 다소의 지연이 발생
- 패킷별 헤더 추가로 인한 오버헤드 발생 가능성
라우팅 (Routing)
- 서로 다른 Network간의 최적의 경로를 설정하고, Data를 보내는 기술
- 이를 처리하는 장치 : 라우터(Router)
라우팅 정보
토플로지
- Network 요소들을 물리적으로 연결하는 방식
트래픽 부하
- 특정 라우터에 트래픽이 많이 몰려있을 경우
- 다른 라우터로 경로를 안내해서 Network의 성능 향상
링크 비용 (라우팅 메트릭)
- (거쳐가는 지점의 개수, 비용, 지연, 처리율)등과 같은 변수들을 참조해서 최적의 라우팅 경로 계산
메세지
- 라우터끼리 라우팅을 위해 주고 받는 정보들
라우팅 테이블
- 패킷이 목적지까지 가는 방법/거리 등을 저장하고 있는 테이블 (목적지까지의 경로)
- 시간에 따라 주기적으로 업데이트
- 라우팅 프로토콜을 통해 계산된 라우팅 정보들을 저장
라우팅 방식
정적/고정 라우팅
- 관리자가 일일이 경로를 입력
- 미리 정해진 루트를 따라 경로선택 (수동 경로 설정)
- 소규모 Network에 적합
▶ 장점
- 라우터의 부하를 경감
- 복잡한 계산이 필요 없기 때문에 빠른 라우팅 가능
▶ 단점
- 관리자가 관리해야 할 부분이 많아진다
- 정해진 루트 상 장애가 발생할 경우, Network 전체 이용에 장애 발생
동적/적응적 라우팅
- 라우터가 프로토콜에 의한 계산에 따라 스스로 라우팅 경로를 결정
- 망의 상태에 따라 경로선택 (자동 경로 설정)
- 대규모 Network에 적합
IP (Internet Protocol)
- TCP 세그먼트에서 IP 헤더를 붙여서 데이터그램을 생성
IP 헤더(데이터그램)
▶ 버전 (Version)
- IP프로토콜의 버전
- IPv4 : 0100
- IPv6 : 0110
- 버전이 올바르지 않을 경우, 해당 데이터그램은 폐기
▶ 헤더길이 (Header Length)
- 4byte 단위로 표현
- 최소 길이 = 20byte (실제 적재값 = 5) / 최대 길이 = 60byte (실제 적재값 = 15)
▶ 서비스 유형 (Type Of Service : Differentiated Services)
- 데이터그램이 어떻게 처리되어야 하는지를 정의
- QoS 제공을 위해 사용
- Quality of Service : 전송율, 에러율, 서비스 품질, 우선순위,...
서로 다른 유형의 IP 데이터그램을 구별
- 실시간 데이터그램(IP 통신 App) / 비실시간 트래픽(FTP)
▶ 전체 길이 (Total Length)
- 헤더와 데이터 길이를 합한 길이
- 최대값 = 216 - 1 = 65535
- Data 길이 = 전체 길이 - 헤더 길이
- 실제 Data와 Padding(의미없는 0)을 구분하기 위해 전체길이가 필요
▶ 식별자 (Identification)
- 데이터그램이 단편화되어 전송된 후, 재조립할 때 사용
- 송신측에서 Data를 패킷단위로 나눠서 전송하면
- 수신측에서는 해당 Data를 재조립해야 한다
- 식별자 필드는 중복 X : 유일해야 한다
- Counter를 이용해서 데이터그램을 보낼때 마다 Counter값을 1씩 증가
- 모든 단편화된 단편의 헤더에는 식별자 필드가 포함
▶ 플래그 (Flag)
- 데이터그램의 상태/진위를 나타내기 위한 변수 (D, M으로 구성) - Data(조각)의 상태
- D : Do not Fragment >> 1이면 단편화 X, 0이면 단편화 O
- M : More Fragment >> 1이면 단편이 더 존재, 0이면 마지막 단편
▶ 단편화 오프셋 (Fragment Offset)
- 전체 데이터그램에서, 단편에 포함된 Data(조각)의 시작 위치
- 8byte 단위로 표시
▶ 수명 (Time To Live)
- 데이터그램의 수명제한을 위해 사용
- 송수신 과정에서 상위계층 프로토콜을 혼란시킬 수 있기 때문에, 오래된 데이터그램은 폐기
- 라우터가 데이터그램을 처리할 때마다 수명값은 1씩 감소
- 0이 되면, 라우터에서 해당 데이터그램 폐기
▶ 프로토콜 (Protocol)
- 데이터그램을 처리한 후, 전달될 상위프로토콜을 표시
- 6 : Data 부분을 TCP로 전달
- 17 : Data 부분을 UDP로 전달
▶ 체크섬 (Checksum)
- IP 헤더에 대한 에러 검출
- IP는 헤더에 대한 에러 검출만 수행
- Data 필드에 대한 에러 검출은 상위 계층에서 수행
- 에러가 검출된 데이터그램은 폐기
※ Example) IP 헤더 체크섬 구하기
- IP헤더의 모든 값들을 2byte씩 더해준다 (체크섬 부분은 0으로 설정해주고 더하기)
- 더한값에 1의 보수를 취하면 IP헤더의 체크섬 값이 추출된다
1) IP헤더 2byte씩 더하기
4500 0028 41E1 4000 8006 0000 C0A8 00A4 0E00 71D0 |
4500 >> 0100 0101 0000 0000 0028 >> 0000 0000 0010 1000 :: 4528 >> 0100 0101 0010 1000 - result |
4528 >> 0100 0101 0010 1000 41E1 >> 0100 0001 1110 0001 :: 8709 >> 1000 0111 0000 1001 - result |
8709 >> 1000 0111 0000 1001 4000 >> 0100 0000 0000 0000 :: C709 >> 1100 0111 0000 1001 - result |
C709 >> 1100 0111 0000 1001 8006 >> 1000 0000 0000 0110 :: 1470F >> 1 0100 0111 0000 1111 - (carry) |
1470F >> 1 0100 0111 0000 1111 4710 >> 0100 0111 0001 0000 - result (wrapped around) |
4710 >> 0100 0111 0001 0000 C0A8 >> 1100 0000 0100 1000 :: 107B8 >> 1 0000 0111 1011 1000 - (carry) |
107B8 >> 1 0000 0111 1011 1000 07B9 >> 0000 0111 1011 1001 - result (wrapped around) |
07B9 >> 0000 0111 1011 1001 00A4 >> 0000 0000 1010 0100 :: 085D >> 0000 1000 0101 1101 - result |
085D >> 0000 1000 0101 1101 0E00 >> 0000 1110 0000 0000 :: 165D >> 0001 0110 0101 1101 - result |
165D >> 0001 0110 0101 1101 71D0 >> 0111 0001 1101 0000 :: 882D >> 1000 1000 0010 1101 - final result |
2) 더한값에 1의보수 취하기 (:: 최종 체크섬 값)
882D >> 1000 1000 0010 1101 |
1의 보수 취하기 |
0111 0111 1101 0010 >> 77D2 |
- 체크섬 값이 올바르게 구해졌다
▶ 출발지 IP 주소 (Source IP Address)
- 송신자의 IP 주소
▶ 목적지 IP 주소 (Destination IP Address)
- 수신자의 IP 주소
▶ 옵션
- 필요한 경우에만 사용
- 최대 길이 = 40byte
- IP 헤더 길이가 4byte의 배수가 되지 않는 경우, 남는 공간을 Padding한다 (0으로 채운다)
▶ 데이터
- 상위 계층의 데이터 (Layer 4 ~ 7)를 전달
- 대부분의 경우 목적지에 전달하기 위해 Layer 4 세그먼트(TCP, UDP)를 포함
- ICMP 메시지와 같은 다른 유형의 Data 또한 담는다
IP 주소 (IP Address)
- LAN에서는 MAC 주소만으로 통신이 가능, but 다른 Network로는 Data 전송 불가능
- MAC주소가 아닌 서로 다른 Network를 식별할 수 있는 주소 : IP주소
- ISP로부터 제공받을 수 있다
- IPv4, IPv6가 존재
IPv4 / IPv6
▶ IPv4
- 32비트 : 약 43억 개 생성 가능
- 32비트를 8비트 단위로 4개씩 나눈다 / 각 블록은 10진수로 표기 / 점(.)으로 구분
- ex) 192.168.0.1
▶ IPv6
- 처음에는 IPv4만 존재했는데, Network가 보급됨에 따라 주소가 부족해져서 IPv6를 도입
- 128비트 : 43억 * 43억 * 43억 * 43억개 : 사실상 무한대
- 128비트를 16비트 단위로 8개씩 나눈다 / 각 블록은 4자리의 16진수로 표기 / 콜론(;)으로 구분
- ex) 2001:0230:aaaa:ffff:0000:0000:ffff:1111
IP 주소 클래스
- 각 클래스별로 네트워크 ID / 호스트 ID로 나눠져 있다
- 네트워크 ID : 어떤 네트워크인지
- 호스트 ID : 해당 네트워크의 어떤 컴퓨터인지
클래스 이름 | 내용 | 네트워크 ID : 호스트 ID |
A 클래스 | 대규모 네트워크 주소 | 8비트 : 24비트 |
B 클래스 | 중형 네트워크 주소 | 16비트 : 16비트 |
C 클래스 | 소규모 네트워크 주소 | 24비트 : 8비트 |
일반 네트워크에서는 A ~ C 클래스까지 사용 가능 |
||
D 클래스 | 멀티캐스트(MultiCast) 주소 | |
E 클래스 | 연구/특수용도 주소 |
▶ A ~ C 클래스 공인/사설 IP 범위
- 사설 IP는 절대로 공인 IP 주소로 사용할 수 없다
클래스 | 공인 IP 범위 | 사설 IP 범위 | 최대 호스트 수 |
A | - 1.0.0.0 ~ 9.255.255.255 - 11.0.0.0 ~ 126.255.255.255 |
10.0.0.0 ~ 10.255.255.255 | 16777214 |
B | - 128.0.0.0 ~ 172.15.255.255 - 172.32.0.0 ~ 191.255.255.255 |
172.16.0.0 ~ 172.31.255.255 | 65534 |
C | - 192.0.0.0 ~ 192.167.255.255 - 192.169.0.0 ~ 223.225.255.255 |
192.168.0.0 ~ 192.168.255.255 | 254 |
IP 주소 구분 1) 공인 IP - 사설 IP
- 둘다 2진수의 32비트를 사용한다 (IPv4의 경우)
▶ 공인 IP 주소 (Public IP)
- 인터넷에 직접 연결되는 컴퓨터/라우터에 할당
- 인터넷 상에서 사용할 수 있는 IP주소
- 전세계에서 유일한 IP 주소
- 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터의 접근이 가능
- 방화벽 등의 보안 프로그램이 필요
▶ 사설 IP 주소 (Private IP)
- IPv4의 주소가 부족해지면서 해결을 위해 사설(Private) IP영역을 만들어서 IP주소를 중복 사용할 수 있게 하였다
- LAN에 존재하는 컴퓨터에 할당
- 내부 네트워크 (ex - 공유기 내부 네트워크) 상에서만 사용할 수 있고, 인터넷상에서는 사용 X
▶ 할당 과정
- ISP가 제공하는 공인 IP 주소는 라우터에만 할당
- LAN 안에 있는 컴퓨터에는 (1) LAN의 네트워크 관리자가 자유롭게 사설 IP 주소 할당 (정적 라우팅) or (2) 라우터의 DHCP 기능을 사용해서 주소를 자동 할당 (동적 라우팅)
※ DHCP (Dynamic Host Configuration Protocol)
- IP주소, 게이트웨이,... 등 각종 네트워크 정보를 자동으로 할당해주는 프로토콜
▶ 장점
- PC의 수가 많거나, 변동사항이 많을 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능
- IP 충돌을 막을 수 있다
▶ 단점
- DHCP 서버에 의존되기 때문에 서버가 다운되면 IP 할당이 제대로 이루어지지 않는다
실제 IP 주소(32비트) : 11000000 | 10101000 | 00000001 | 00001010
10진수로 변환 (옥텟(8비트) 단위로 끊기) : 192.168.1.10
>> 옥텟별로 0 ~ 255(10진수) | 00000000 ~ 11111111(2진수) 범위 가능
IP 주소 구분 2) 네트워크 주소 - 브로드캐스트 주소
- 두 주소는 특별한 주소이고, 컴퓨터/라우터가 자신의 IP로 절대로 사용하면 안되는 주소이다
▶ 네트워크 주소
- 해당 네트워크의 대표 주소
- 호스트 ID가 10진수로 0
▶ 브로드캐스트 주소
- 네트워크에 있는 모든 컴퓨터한테 데이터를 전송하는 데 사용하는 전용 IP 주소
- 브로드캐스트 주소로 전송된 데이터는 네트워크 안에 있는 모든 컴퓨터로 송신된다
- 호스트 ID가 10진수로 255
서브넷 (Subnet)
- 많은 수의 컴퓨터가 브로드캐스트 패킷을 전송하면 모든 컴퓨터에 패킷이 전송되고 Network가 혼잡
- 대규모 Network → 소규모 Network로 분할 : 브로드캐스트로 전송되는 패킷의 범위가 좁아진다
- Network 분할하는 것 : 서브넷팅 (Subneting)
- 분활된 Network : 서브넷 (Subnet)
서브넷 마스크 (Subnet Mask)
- IP 주소에서 어디까지가 네트워크 ID인지 알려주는 역할
- 네트워크 부분 비트 = 1 / 호스트 부분 비트 = 0
- prefix 표기법에 의해서, 네트워크 부분의 비트 길이가 얼마인지 표현해주면 된다
- 255.255.255.0 Subnet Mask : prefix = /24
- 서브넷팅을 통해서 (네트워크 ID : 호스트 ID)가 (네트워크 ID : 서브넷 ID : 호스트 ID)로 변경된다
- IP주소에 서브넷 마스크를 AND 연산하면 네트워크 주소/브로드캐스트 주소를 구할 수 있다
- 호스트 비트 0으로 채우기 : 네트워크 주소
- 호스트 비트 1로 채우기 : 브로드캐스트 주소
>> 서브넷 마스크 bit개수 n개 늘리기 -> 클래스가 2n개의 서브넷으로 나뉘어진다
각 IP 클래스들의 기본 서브넷 (Default Subnet) - (A ~ C 클래스)
클래스 | 이진 표현 | 십진표현 |
A | 00000000 . 00000000 . 00000000 . 00000000 ~ 01111111 . 11111111 . 11111111 . 11111111 |
0.0.0.0 ~ 127.255.255.255 서브넷 마스크 : 255.0.0.0 |
B | 10000000 . 00000000 . 00000000 . 00000000 ~ 10111111 . 11111111 . 11111111 . 11111111 |
128.0.0.0 ~ 191.255.255.255 서브넷 마스크 : 255.255.0.0 |
C | 11000000 . 00000000 . 00000000 . 00000000 ~ 11011111 . 11111111 . 11111111 . 11111111 |
192.0.0.0 ~ 223.255.255.255 서브넷 마스크 : 255.255.255.0 |
※ Example)
192.168.4.100/26
- 192.168.4.100/26 비트화
-> 11000000 10101000 00000100 01100100 - /26 이니까 서브넷 마스크 비트화
-> 11111111 11111111 11111111 11000000 - IP주소와 서브넷 마스크 AND 연산 : 네트워크 주소
-> 11000000 10101000 00000100 01 / 호스트 부분은 남은 6비트 - 네트워크 주소 : 호스트 부분을 0으로 채움
-> 11000000 10101000 00000100 01000000 : 192.168.4.64 - 브로드캐스트 주소 : 호스트 부분을 1로 채움
-> 11000000 10101000 00000100 01111111 : 192.168.4.127 - 네트워크 주소 ~ 브로드캐스트 주소 사이에 있는 IP 주소들 = 호스트에게 할당 가능한 주소
-> 192.168.4.65 ~ 192.168.4.126 - 호스트 비트가 6bit
-> 호스트 개수 = 26-2 = 62개
subnettingquestions.com - Free Subnetting Questions and Answers Randomly Generated Online
Question: What is the broadcast address of the network 172.27.103.0/26?
subnettingquestions.com
기본 게이트웨이 (Default Gateway)
- 다른 Network로 Data를 전송하려고 할 때, 라우터의 IP주소를 설정하는 것
- 자신의 소속 Network 이외의 Network로 패킷을 보내려고 할때, 어디로 보내야 할지 정보를 갖고 있지 않을 때 기본 목적지 >> '보낼 곳을 모를 때 우선 전송해두는 곳'
- 보통, 네트워크 관리자들은 IP범위의 시작 주소를 기본 게이트웨이로 사용해서 컴퓨터의 라우팅 기능을 구성
- 모든 클라이언트가 해당 IP 주소를 가리키도록 한다
- 기본 게이트웨이를 사용함으로써 서로 다른 Network상에 존재하는 컴퓨터끼리 통신이 된다
- 게이트웨이가 없으면 Network는 외부와 격리 (세상과 단절)
- 호스트가 외부의 호스트에 도달하려면 반드시 게이트웨이를 거쳐야 한다