Address Mask - 덧씌움 (prefix 길이만큼 전부 1, suffix 길이만큼 전부 0)
주소의 총 개수 : NOT(MASK) +1 (기계에게 편한 방법)
첫 주소 : IP Address AND (MASK)
마지막 주소 : IP Address OR[NOT[MASK]]
첫 주소 = 네트워크 주소 -> 라우터에 네트워크 주소가 들어있다.
prefix길이는 라우터에 있음. 라우터는 네트워크 주소로 비교하며 찾음
Block Allocation - ICANN에서 2의 power승만큼 주소를 준다.
ISP가 1000개 주소 요구시 최소 1024개를 준다. -> 2의 power승
Subnetting - 여러 레벨의 계층을 갖는다.
네트워크 주소의 개수 -> 2의 거듭제곱, 서브넷도 2의 거듭제꼽 꼴
만약 14.24.74.0/24에서 하나는 10개 주소, 하나는 60개 주소, 하나는 120개 주소로 총 3개의 subblocks로 나누고 싶다면 가장 큰 주소부터 작은주소 순서로 할당해야 한다.
먼저 120 -> 가장 근접한 2의 power승인 128이므로 32-log2(128) = 25
-> 14.24.74.0/25 ~ 14.24.74.127/25
64 -> 32-log2(64) = 26
-> 14.24.74.128/26 ~ 14.24.74.191/26
16 -> 32-log2(16) = 28
-> 14.24.74.192/28 ~ 14.24.74.207/28
Address aggregation (주소 통합) - 주소 요약, 경로 요약
여러개의 주소를 통합하여 더 큰 블록의 주소가 된다.
This-host address 0.0.0.0/32 -> 자기 자신의 주소
Limited-broadcast address(제한된 브로드캐스트 주소) 255.255.255.255/32
Loopback address 127.0.0.0/8 되돌아오는 주소
private address(사설 주소) 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16 -> 주소가 부족해서 생긴 대안 보통 집 공유기는 192.168.0.0/16을 사용하고 효과는 하나의 사설 망을 만든 것과 같다. 여기서 인터넷 연결을 위해선 NAT(공유기에서 사설 네트워크 주소를 인터넷을 쓸 수 있게 번역해주는 역할)을 사용
Multicast address 224.0.0.0/4
대부분 컴퓨터들이 인터넷에 연결될 수 있는데 반드시 1:1로 자신이 통신에 참여할 필요 X
Network Address Translation(NAT) : 네트워크 주소를 번역해주는 장치
이와 비슷한 개념 VPN(Virtual private network) : Address Translation -> 패킷들의 주소 값을 변환시켜줌(사설망 -> 인터넷)
NAT의 Translation Table 방식
Using One IP Address -> 한쌍의 컬럼으로 사설주소와 인터넷 주소가 매핑되는데 이는 만약 사설망 내 모든 주소가 같은 주소를 요청할 때 되돌아오며 누구것인지 알 수 없어지므로 사용X
Using a pool of IP Address(여러 주소를 사용하는 방식) : 풀 안에 있는 주소들이 같은 주소로 갈 때 다른 걸로 적절히 조정 -> 자원소모가 크므로 좋은 해결책이 아님
Using Both IP Address and Port address : 이는 보편적인 방법으로 IP 값만 비교하는 것이 아닌 IP와 Port 번호 그리고 프로토콜로 검증
포워딩 : 가장 인접한 홉으로 패킷을 보내는 것
포워딩은 표를 기반으로 사용, 네트워크 주소에 따라 어느 홉으로 보낼지 결정
Packet -> Extract destination address -> Search Table -> Next hop
라우팅 테이블은 Prefix의 길이가 가장 큰 순서(구체적인) 부터 시작한다. -> Longest mask matching
거대한 포워딩 테이블을 피하기 위해 계층적으로 구성되어야 한다.
IPv4 - unreliable datagram protocol - best effort delivery service
-> connection less protocol : 패킷이 들어오면 아무리 같은 소스에서 만들어진거라 하더라도 라우터는 신경 안쓰고 독립적으로 처리, 그때 그때 최선의 경로로 보내기 때문에 목적지에 다른 경로로 도착할 수 있음
IPv4의 구조
Version Number(4비트) : 처음은 IPv4인지 IPv6인지를 표시
HLEN(4비트) : 2^4 = 16인데 적어도 20~60 6비트(2^6 = 64)가 필요하다. 즉 부족하므로 4의 배수 단위로 보면 5~15를(20~60) 나타낸다.
ServiceType(8비트) : 어떻게 갈지 정의하는 것인데 안쓴다. -> 그냥 0으로 채워 넣음(But, QoS에서 사용하는 경우도 있다)
Total Length(16비트) : 패킷의 크기(헤더 크기 포함) 0-65535지만 최소 헤더의 길이는 20bytes므로 20~65535
Identitication(16비트) : 패킷의 이름, ID(랜덤값)
Flags(3비트) : 정보를 표시 첫 비트는 만약 쪼개지 말라고 하면 쪼개지 않고 버리게 되는 것 두번째 비트는 내 뒤에 더 있는지 여부 마지막 1비트는 안씀
Fragmentation offset(13비트) : 기준점으로부터 얼마나 떨어져 있는가 패킷을 쪼갰을 때 이어붙이는 정보 -> 시작 바이트 위치, 쪼개질 수 있는 offset 크기는 8의 배수(앞 flag의 3비트 손실 때문)
TTL(8비트) : 패킷의 수명, 라우터는 어디로 내보낼지만 생각 -> 만약 도착지가 2개라 무한 전달되는 상황이 발생할 수 있음. 이 때 전달하는 총 수명을 정해주는 것이 TTL 수명을 다하면 버린다. -> 홉의 개수를 정해주는 것
Protocol : 무슨 종류인가? ex) TCP,UDP, ICMP 등 페이로드의 종류
Header checksum : 페이로드에 대해서는 검증X 헤더만 검증
헤더길이를 16bits인 반으로 쪼개버림 -> ex) 010101... 다 더함 -> 다 더한값을 옆의 다 더한 값으로 뺌 -> 두개 더해서 0이 된다면 같다고 생각, 다르면 100% 오류 -> 버림(오류발생시)
Source IP Address(32bits)
Destination IP Address(32bits)
Options + Padding (0 to 40bytes) : 라우팅 경로 설정하는데 사용, IP 패킷에 있는 경우는 거의 없다 지원 안하면 다 무시
네트워크 층(5)
2023. 3. 27. 15:09