| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 해커톤
- 온프레미스
- 클라우드 네이티브 5회차
- 도커
- ResourceQuota
- dns
- 리소스 풀링
- 다중화
- 혼잡제어
- 빅데이터
- configmap
- 해시
- k8s
- cronjob
- goorm
- LimitRange
- namespace
- 네트워크
- docker
- 클라우드
- Urn
- OverTheWire
- Replicaset
- daemonset
- Web
- 네트워크 가상화
- 하둡
- 고가용성
- 핸드셰이크
- 웹 스토리지
- Today
- Total
NakedFlower 님의 블로그
네트워크 계층의 기능, 존재 목적, IP 패킷 그리고 ARP 본문
물리계층과 데이터링크 계층의 네트워크 범위는 일반적으로 LAN으로 한정되어 있다. 즉, 같은 네트워크 내 호스트끼리 정보를 주고받는 것을 상정한 기술이라는 소리다
그리하여 다른 네트워크와 정보를 주고 받기 위해 사용되는 것이 네트워크 계층이다
네트워크 계층이 제공하는 것 2개
IP주소를 통해 송수신지 대상을 지정
라우팅을 통한 다른 네트워크와 통신
네트워크 계층이 존재하는 이유
당연히 아래 층들의 한계가 있기 때문이겠죠??
데이터링크 계층의 한계
- 물리 계층과 데이터 링크 계층 만으로는 LAN을 넘어서 통신하기 어려운 이유
1. 물리 계층과 데이터 링크 계층만으로는 다른 네트워크까지의 도달 경로를 파악하기 어려움. 즉 라우팅이 안된다.
- 라우팅 : 패킷이 이동할 최적의 경로를 결정하는 것
- 라우터 : 라우팅을 수행하는 대표적인 장비
2. MAC 주소만으로는 모든 네트워크에 속한 모든 호스트의 위치를 특정하기 어려움
- MAC주소와 IP주소는 함께 사용되고, 기본적으로 IP주소를 우선 활용

번외 -> DHCP : IP주소를 자동으로 할당받는데 사용되는 프로토콜
IP: 물리 계층과 데이터 링크 계층의 한계를 극복하는 프로토콜
종류 : IPv4와 IPv6가 있음
IP의 공식적인 두 기능
- 주소 지정(IP addressing)
-> IP주소를 바탕으로 송수신 대상을 지정하는 것을 의미함
-> 4바이트로 하나의 주소를 표현
-> 숫자당 8비트로 표현
-> 각 숫자는 점으로 구분(점으로 구분된 8비트를 옥텟이라 함) - 단편화(IP fragmentation)
-> 전송하고자 하는 패킷의 크기를 MTU(한번에 전송 가능한 IP패킷의 최대 크기)이하의 복수의 패킷으로 나누는 것
-> IP 패킷의 헤더도 MTU 크기에 포함
-> 일반적인 MTU크기는 1500바이트(페이로드에 명시할 수 있는 일반적인 데이터 크기), MTU 크기 이하로 나누어진 패킷은 수신지에 도착하면 다시 재조합
위에서 IP단편화를 통해 MTU이상의 크기를 가지는 IP패킷을 쪼갠다고 했는데, 단편화는 많이 일어나면 일어날수록 불필요한 트래픽이 늘어나서 안 좋다. ip단편화를 회피하기 위해 path mtu discovery 기술이 있음. 오늘날 대부분의 패킷은 df(don't fragment)비트가 세팅되어 있어서 단편화가 자주 일어나지는 않음
RFC 791 : IP를 정의한 인터넷 표준

IP패킷은 아래와 같은 형태를 가지고 있다.


단편화에 주로 관여하는 필드(아래 3개를 기준으로 단편화가 이루어짐)
- 식별자
- 패킷에 할당된 번호
- 쪼개져서 도착한 IPv4 패킷들이 어떤 메시지에서 쪼개졌는지 알기 위해 사용
- 플래그
- 첫번째 비트는 항상 0 : 현재 사용되지 않음
- 단편화 오프셋
- 단편화되어 전송되는 패킷들은 수신지에 순서대로 도착하지 않을 수 있음
- 수신지가 패킷들을 순서대로 재조합하려면 초기 데이터에서 몇 번째로 떨어진 패킷인지를 나타냄
나머지 필드에 대한 설명
TTL (Time To Live)
- 패킷의 수명
- 무의미한 패킷이 네트워크상에 지속적으로 남아있는 것을 방지하기 위해 존재
- 패킷이 하나의 라우터를 거칠 때마다 TTL이 1씩 감소, TTL 값이 0으로 떨어진 패킷은 폐기
- 홉(hop) - 패킷이 호스트 또는 라우터에 한 번 전달되는 것
- 즉, TTL 필드의 값은 홉마다 1씩 감소
프로토콜
- 상위 계층의 프로토콜이 무엇인지를 나타내는 필드
- 예) 전송 계층의 대표적인 프로토콜인 TCP는 6번, UDP는 17번
송신지 IP 주소, 수신지 IP 주소
- 이름 그대로 송수신지의 IPv4 주소
IPv6
- IPv6은 16바이트(128비트)로 주소를 표현할 수 있고, 콜론(:)으로 구분된 8개 그룹의 16진수로 표기
- IPv4보다 주소 공간이 크게 확장되어 사물 인터넷 등에서 활용 가능
- 사실상 무한에 가까운 주소 할당 가능
- IPv4 주소: 192.168.1.1
- IPv6 주소: 2001:0230:abcd:ffff:0000:0000:ffff:1111
IPv6 패킷의 핵심 필드
- 다음 헤더
- 홉 제한
- 송신지 IP 주소
- 수신지 IP 주소

IPv6는 확장 헤더를 통해서 여러개의 헤더를 가질 수 있다는 것이 특징
IP 주소로 MAC 주소 알아내기: ARP (Address Resolution Protocol)
- IP 주소를 통해 MAC 주소를 알아내는 프로토콜
- ARP는 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아낼 수 있음
- ARP 동작
① ARP 요청 ② ARP 응답 ③ ARP 테이블 갱신
- ARP 동작
ARP 프로토콜이 동작하는 순서(ARP 패킷을 주고 받는다)
호스트가 같은 네트워크에 속해있을 때
① ARP 요청 (ARP Request)
- 호스트 A는 브로드캐스트 메시지 전송
- 이 브로드캐스트 메시지 = ARP 요청이라는 ARP 패킷
② ARP 응답 (ARP Reply)
- 호스트 B 외에 나머지 호스트는 자신의 IP 주소가 아니므로 무시
- 호스트 B는 자신의 MAC 주소를 담은 유니캐스트 메시지를 A에게 전송
- 이 메시지를 수신한 A는 B의 MAC 주소를 알게 됨
유니캐스트 메시지 - 1대 1 통신을 하는 메시지
ARP 패킷
- ARP 요청, ARP 응답 과정에서는 송수신되는 패킷
- 오퍼레이션 코드(Opcode, Operation Code) - ARP 요청의 경우 1, ARP 응답의 경우 2
- 송신지 하드웨어 주소(Sender Hardware Address)와 수신지 하드웨어 주소(Target Hardware Address)
- 송신지 프로토콜 주소(Sender Protocol Address)와 수신지 프로토콜 주소(Target Protocol Address)

송수신지 하드웨어 주소에는 송수신지의 MAC주소가 명시됨
송수신지 프로토콜 주소에는 송수신지의 IP주소가 명시됨
③ ARP 테이블 갱신
- ARP 테이블(ARP table): ARP 요청-응답을 통해 알게 된 IP 주소와 MAC 주소의 연관 관계
- ARP 테이블을 통해 일정 시간(캐시) 동안 자주 쓰는 쌍의 정보를 저장, 관리
- ARP 테이블에 등록된 호스트에 대해선 ARP 요청을 보낼 필요 없음
호스트가 다른 네트워크에 속해있을 때
ARP 요청

ARP 응답 과정을 통해
라우터 A의 MAC 주소를 알아낸 뒤, 이를 향해 패킷 전송

ARP 응답 과정을 통해
라우터 B의 MAC 주소를 알아낸 뒤, 이를 향해 패킷 전송

ARP 응답 과정을 통해
호스트 B의 MAC 주소를 알아낸 뒤, 이를 향해 패킷 전송