- 1계층 (물리 계층), 2계층(데이터 링크 계층)은 물리적 연결을 통해 이루어짐
- 인터넷을 사용하기 위해 물리적 연결을 하면 지구는 전선으로 뒤덮임
- 아하! 네트워크 통신으로 해결!
- Alice (Source Host) → Router1 → Switch → Router2 → … → RouterN → Bob (Destination Host)
- Alice는 전송 계층 (4계층)이 준 패킷을 datagram에 Encapsulation 해서 데이터 링크 계층에 전달
- Bob은 datagram을 Decapsulation 해서 패킷 추출 후 전송 계층에 전달
- 라우터는 무슨 역할? ⇒ 패킷을 하나의 네트워크 to 다른 네트워크 전달
- Packetizing / Packet Switching
- 개념
- 캡슐화와 비슷. 우체국 같이 안전한 운반을 위한 개념
- 과정
- 출발지 host : payload를 상위 계층으로부터 받아서 헤더파일 추가. 그 후 데이터 링크 계층에 전달
- 목적지 host : 네트워크 계층 패킷을 데이터 링크 계층에서 받아 Decapsulation 진행 및 payload에 상응하는 상위계층 프로토콜에 전달
- 개념
- 네트워크에서 패킷을 독립적으로 전송, 목적지에서 재조립
- 즉, 패킷을 어떻게 주고 받을지에 대한 개념
- 종류
- 데이터 그램 방식 : Connectionless 비연결지향 - IP 기반의 네트워크 사용 - 각각의 패킷을 서로 연관이 없는 것처럼 독립적으로 다룸
- 도착 순서 보장 X → 지연 가능/ 추적 어려움
- 오류 회복 ⬆️ (해당 패킷만 재전송), 병목현상 감소
- 가상 회선 방식 : Connection-oriented service 연결 지향 - datagram 전송 전, 발송 / 수신 path 지정 (가상 회선)
- 모든 datagran아 같은 길을 가게됨 (순서 유지)
- 네트워크층의 성능
- 지연 Delay
- Transmition Delay : 전송 속도 제한으로 인한 지연
- Propagation Delay : 전송 매체에 의한 지연
- Processing Delay ; 패킷 받아서 헤더 제거, 에러 검출, output 포트에 전달하는 과정으로 인한 지연
- Queing Delay : 패킷이 input/output 포트에서 발생하는 대기시간으로 인한 지연
- 처리량 Throughput
가장 처리량이 적은 구간 = 처리량, 600kbps로 데이터가 와도 한 곳(라우터)의 처리량이 200kbps면 처리량 = 200kbps란 의미
- 패킷 손실 Packet Loss
- 전송 과정 중 상실되는 패킷의 개수
- 혼잡 제어 Congestion Control
성능을 향상하기 위한 메커니즘 → 부하에 따른 지연 + 처리량
- 지연 Delay
- OSI 계층 별 데이터 유통 단위
OSI 계층 유통 데이터 단위 L5 ~ L7 응용(Application) 계층 Socket + Stream L4 전송 계층 Segment L3 네트워크(인터넷) 계층 Packet L2 데이터 링크 계층 Frame L1 물리 계층 전기 신호
cmd에서 ipconfig하면 IP 주소들
- IPv4, IPv6, 서브넷 마스크, 게이트웨이
- IP = Internet Protocol address → [주소] + [프로토콜]
- TCP UDP 등 여타 다른 프로토콜과 같이 헤더를 추가
- IP 헤더가 붙으면 3계층에선 IP 패킷, 2계층에선 프레임
- IP 헤더 필드 설명
- Version : IPv4, IPv6 등 버전 관리
- Header Length (HLEN) : 헤더 길이
- ToS : 요구되는 서비스 품질
- Total Packet Length : IP 헤더 및 데이터 포함 IP 패킷 전체의 길이를 바이트 단위로 길이 표시 → MTU 관련
- IP 단편화를 위한 필드
- Fagment Identifier : 동일 datagram에 속한 fragment인지 확인
- Fragment Flag : Fragment 특성을 나타내기 위한 필드
- Fragment Offset : 조각나기 전 원래 datagram 위치
- TTL Time To Live : IP 패킷 수명
- Protocol Identifier : 상위계층의 어떤 프로토콜이 포함되었는지 나타나는 필드
- Source/Destination IP Address : 송신처, 수신처 IP 주소
- IP 헤더 옵션, Padding : 가변 길이, IP 헤더 옵션 사용 시 32비트를 맞춰주기 위해 Padding 존재
- 32비트 단위의 고유 주소 (2^32, 약 43억개) ⇒ 인터넷의 host, router의 연결 정의
- IPv4 주소는 계층적 (Hierachy), 2개 부분으로 나뉨
- prefix : 네트워크 할당 받은 기관 / 조직의 주소값, 고정적 or 가변적
- 고정 prefix : classful addressing / 가변 prefix : classless addressing
- suffix : 기관 / 조직 안에서의 세부 주소값
- prefix : 네트워크 할당 받은 기관 / 조직의 주소값, 고정적 or 가변적
- Classful Addressing (Class A ~ Class E)
- 인터넷 초기에는 3가지 크기(n = 8, 16, 24)로 고정된 prefix로 설계
- 요즘에는 사용 X → 비효율적인 주소 사용 및 주소 고갈 문제
- Class 자세한 설명
- 0.0.0.0 ~ 127.255.255.255 / A 클래스 (0 to 127)
- 128.0.0.0 ~ 191.255.255.255 / B 클래스 (128 to 191)
- 192.0.0.0 ~ 223.255.255.255 / C 클래스 (191 to 223)
- 224.0.0.0 ~ 239.255.255.255 / D 클래스 (224 to 239), 멀티캐스트 용도로 사용
- 240.0.0.0 ~ 255.255.255.255 / E 클래스 (240 to 255), 연구 및 개발 용도로 예약된 클래스
- Classless Addressing - class addressing 예시
- IP 주소 부족으로 길이를 늘려야 했음 → IP 패킷의 포맷 변화
- IPv6 개발, 기존 IPv4를 재사용하기 위한 classless addressing 등장
- 가변적인 block 길이 사용, 어떤 class에도 속하지 않음
- prefix도 0~32 사이의 길이값
- **서브넷 / 서브넷 마스크 Subnet, Subnet Mask (CIDR)**
-
한 Network를 분할해서 하위 Network (Sub-Net) 생성
-
사용 이유
- 많은 수의 컴퓨터가 한번에 브로드캐스트 패킷을 전송하면 성능에 문제 야기
- IP를 너무 적게 사용해도 낭비 발생
-
어떻게 쓰나요 ? ➡ 비트 연산 (AND)
-
ex) C 클래스의 IP 주소를 생각 C 클래스 = 앞의 24비트 = Network ID, 뒤의 8비트 + Host ID 192.168.1.0**/24**, 기본 서브넷 마스크 = 255.255.255.0이 됨
- 2진수로 변환 후 AND 연산 진행하면 Network ID만 도출 가능 - /24의 의미 : 해당 IP의 서브넷 마스크의 왼쪽부터 24개가 1이란 의미 <aside> 💡 Subnetmask의 비트를 1씩 증가시키면? → 할당 가능 네트워크 2배 증가, 호스트 수 2배 감소 → 서브네팅 </aside>
-
-
IPv4의 주소 개수가 부족해서 등장, 32비트 → 128비트로 주소 체계 변경
-
구조
- 콜론 기준으로 8자리로 구분
- 한 자리 당 0000~ffff 까지 16진수 사용 가능
-
기본적으로 서브넷팅을 사용해 주어진 주소 공간 할당에 맞게 네트워크 크기 조정 (가변적)
-
IPv4 에서 개선된 점
- 패킷 단편화 X, 효율적인 라우팅
- QoS 성능 개선
- NAT 삭제, 주소 공간 확장 (32 → 128)
- IPv4 보다 가벼운 헤더
-
NAT?, Network Address Translation
💡 프라이빗 IP를 공용 IP 주소로 변환해 하나의 공용 IP 주소로 여러 장치가 인터넷에 연결될 수 있게 하는 기술 ⇒ VPN 사용 가능- 주소 고갈 문제 해결을 위해 나온 기술 (공인 IP 주소 부족)
- 네트워크 보안 강화 → 내부 네트워크의 IP 주소 은닉, 방화벽
- NAT는 라우터에서 수행됨
-
Broadcast IP 주소 브로드캐스트 IP 주소 = 호스트 ID 값이 255인 것 ex) 192.168.0.255 ⇒ 192.168.0 이라는 ID를 갖는 네트워크에 속한 모든 호스트들에게 해당 패킷을 모두 전송해주세요 : Broadcast
- 호스트 ID 영역 (192.168.0.255의 255) 이 8비트를 가질 때, 255는 사용 불가능(브로드캐스트)
- 이런 종류의 ID ⇒ 0, 1, 255
💡 **Internet Control Message Protocol** IP의 부족한 오류 제어를 보완하기 위해 나온 프로토콜 ⇒ 주 목적은 통신 중 오류 보고
- 데이터 수송 역할 X, IP 프로토콜을 이용해 ICMP 메시지만 전달
- ICMP header
- 방법
- Tracert / Traceroute를 활용하는 방법 (Trace management utility) - 상세함 목적지 까지의 라우팅 경로 추적 | | Tracert | Traceroute | | --- | --- | --- | | 운영체제 | Windows | Unix, Linux, MacOS | | 프로토콜 | ICMP | 송신 : UDP, 수신 : ICMP | | 기능 | 8가지 옵션 제공 | 20가지 이상 옵션 제공 | - Time Exceeded 확인 가능 - IP 헤더의 TTL을 사용, 라우터를 지날 때마다 1씩 감소 - 목적지 도달 전 TTL이 0이되면 시간 초과 전송, 해당 패킷 폐기 - 이점 : 경로 추적 가능, 라우터 지연 시간 파악 후 경로 문제 식별 가능
- Ping - 간단함
- Echo Request, Echo Reply 사용
- ICMP Echo Request를 대상에 전송, 상대방이 응답하는 Echo Reply를 수신해 통신상태 체크
- DDoS, Flood, Death of Ping 관련 이야기
- ICMP는 메시지 전송하는 데 연결이 설정되지 않아도 괜찮음 → 비상 사태
- 핑 명령 전송 → ICMP 에코 요청 → ICMP 에코 응답 → 응답 수신까지의 시간 측정 및 보고
- 해커가 공격 대상에게 대량의 데이터를 쏟아붓는 것이 DDoS
- 연결 안해도 핑만 던져줘도 되는 ICMP를 활용한 DDoS 공격 잦음
- 핑 플러딩 : 공격자는 대량의 ICMP 에코 요청으로 폭주
- 죽음의 핑 : 훨씬 정교한 공격 방식, 조립 전엔 작지만 조립하면 훨씬 커지는 ICMP 패킷 전송
- IGMP header
- 크게 복잡하지 않음 ⇒ IGMP 메시지는 IP 데이터그램으로 전송
- 작동 방식
- 멀티 캐스팅 : 특정 그룹의 모든 호스트에 메시지 전송
- 멀티 캐스팅 라우팅 : 멀티 캐스팅을 위한 라우팅 알고리즘
- 여러 호스트에게 채널 전송 → IPTV 서비스에 많이 사용
- 취약점 : 별도 인증 과정 X ⇒ IGMP 위조로 가입해 IPTV 서비스의 프리미엄 채널 가로채기, ddoS등 가능
- 논리적 IP 주소를 물리적 MAC(Media Access Control)주소로 변환하는 프로토콜
- IP주소는 알지만 MAC 주소를 모를 때 → 네트워크에 ARP 요청 브로드캐스트
- 해당 IP 주소를 가진 장치가 자신의 MAC 주소를 포함한 ARP 응답을 유니캐스트로 전송
- 자주 사용되는 IP와 MAC 주소 간 매핑을 캐싱해서 성능을 개선
- ARP의 반대 작업 수행. MAC 주소는 알고 IP는 모를 때 진행되는 프로토콜
- 네트워크 부팅 과정에서 사용, IP 주소 할당을 위해 RARP 요청 진행
- 현대에는 사용되지 않음. 대신 DHCP (Dynamic Host Configuration Protocol) 사용
-
client - server 패러다임을 이용, 자동으로 network 관련 정보 구성 네트워크에서 IP 주소를 자동 할당 및 관리하는 프로토콜 ⇒ ! ! ! 서버 서버 서버 서버 서버 ! ! !
-
IP address의 부족한 문제 해결 가능
- 필요 시 IP 주소 할당, 사용이 끝나면 다시 반납 후 적은 IP 주소를 이용해 여러개의 host 사용 가능
- 말이 어렵지만 카페의 wifi 연결이 이런 방식
-
세부 정보
💡모든 디바이스는 TCP 기반 네트워크에서 네트워크 및 해당 리소스에 액세스 하는 고유 유니캐스트 IP 주소 필요
- DHCP (X) : 새 컴퓨터, 컴퓨터의 위치 이동(IP 변경) 시 IP 주소를 수동으로 구성 이전에 부여된 IP 주소 회수까지 수동으로 진행
- DHCP (O) : 위의 모든 프로세스를 중앙 집권화 ⇒ IP 주소 풀 유지 및 관리, Client의 요구에 맞게 IP 자동 할당 (임대 형식)
- 이점
- 신뢰할 수 있는 IP 주소 구성
- 수동 IP 주소 구성은 Huuuuman이 하기 때문에 오타 등의 실수가 빈번함
- 자동 IP 주소 구성은 실수도 없고, 동시 할당 충돌도 해결
- 네트워크 관리 감소
- 중앙에서 관리 (TCP/IP 구성)
- DHCP 옵션 사용 시 TCP/IP 구성 값의 전체 범위 지정 가능
- 신뢰할 수 있는 IP 주소 구성
- DHCP 옵션 : IP 주소 정보
- 게이트웨이 (로컬 네트워크와 인터넷 간의 데이터를 주고받는 기본 게이트웨이)
- 서브넷 마스크
- DNS 서버
- 임대를 얼마나 하나요? ⇒ 일반적으로 24시간
- 보안 문제가 당연히 있음
- 인증 과정 X (지하철 와이파이에 인증 X)
- 리소스 갈취
- 악성 Client가 DHCP 리소스 소모
- DNS 스푸핑
[DHCP 헤더]
[작동 과정]
- Discover : IP Address 주실 분… → 서버 찾는 과정
- Offer : 서버가 IP 제공
- Request : 여러 서버에게 Offer를 받으면 가장 좋은 Offer를 준 서버에게 Request 보냄
- Ack : 서버는 Ack 메시지를 보내 IP 유효 확인
- 라우터 ⇒ 노드, 연결 ⇒ 간선이라 생각한 후 from 출발지 노드 to 목적지 노드 최단 경로 찾기
- 네트워크 관리자가 수동으로 라우팅 테이블에 경로 정보를 설정하는 방식
- 정적 ⇒ 변화 감지 X ⇒ 초기 설정으로 알고리즘 작동
- 장점 : 단순함, 작은 네트워크에선 적합 (경로 변경 X, 예측 가능, 보안 강화)
- 단점 : 수동 갱신이기 때문에 복잡하고 오류 발생 높음
- 라우터들이 정보를 교환해 실시간으로 최적 경로 자동 계산 및 갱신
- 동적 ⇒ 변화 감지 O ⇒ 매번 가장 효율적인 경로 설정 가능
- 장점 : 최적 경로를 자동으로 갱신하기에 대규모 네트워크에 효율적
- 단점 : 추가 프로세싱 및 라우팅 정보 교환 과정에서 대역폭 소모
- 종류
- 거리 벡터 라우팅 (Distance Vector Routing)
- 각 라우터가 아웃 라우터로부터 정보를 받아 자신의 라우팅 테이블 업데이트
- 라우팅 경로의 거리 + 방향 기준으로 경로 결정
- ex) RIP (Routing Information Protocol) : 가장 오래된 거리 벡터 프로토콜
- 장점 : 구현 간단, 소규모 네트워크에 적합
- 단점 : 확장성 떨어짐, 네트워크 변경에 반응속도 느림
- Count to Infinity 같은 루프 문제 발생 가능
- 링크 상태 라우팅 (Dijkstra)
- 각 라우터가 네트워크 전체의 링크 상태 정보 수집, 최적 경로 계산
- ex) OSRF, IS-IS
- 장점 : 정확하고 빠름
- 단점 : 복잡하고 구현 어려움, 초기 설정 비용 매우 높음
- 거리 벡터 라우팅 (Distance Vector Routing)
https://velog.io/@wilko97/Chapter-18.-Introduction-to-Network-Layer#181-network-layer-sevices
https://m.blog.naver.com/errorsoft666/221720555130
https://leejoongwon.tistory.com/37
https://sol-cito.github.io/technology-network/2021/03/02/Tech-Blogging-Network-Network-Layer
https://be-developer.tistory.com/52