2023. 6. 22. 20:29ㆍ공부내용 공유하기
TCP/IP 인터넷(네트워크) 계층
역할 세 줄 요약
- IP 프로토콜을 사용하여 호스트 간의 통신에 필요한 주소 관리와 경로 제어를 수행한다.
- 패킷을 라우팅하여 수신 호스트까지 전달한다.
- 데이터의 오류 확인 및 수정을 위한 ICMP 프로토콜을 제공한다.
주요 프로토콜
프로토콜이란?
패킷 교환 과정에서 정보를 주고받는 데 사용하는 규약이며, 송/수신 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당
= 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약
IP 프로토콜 (Internet Protocol)
대표적인 프로토콜 (IP가 이미 인터넷 프로토콜의 약자인데 왜 IP 프로토콜이라 부르는지...?)
송/수신 호스트가 패킷 교환 네트워크(PSN: 패킷 스위칭 네트워크)에서 정보를 주고받는데 사용
일명 아이피
IP의 정보는 패킷이라는 단위로 쪼개져서 나누어 전송
특징
- 비신뢰성: 패킷이 전송되는 과정에서 유실, 중복, 섞임 등이 발생할 수 있으며, 이러한 문제는 인터넷이라는 분산 구조에서 기인함. 이러한 문제에 대해서 IP 프로토콜은 보장해주지 않는다. 왜냐? 속도를 위해서.
이런 문제를 대응하고자 한다면 상위 프로토콜인 TCP등에서 구현을 하면 된다. 아마 수신자 입장에서 버퍼를 두고 순서를 정렬해서 받기 + 빠진 부분 체크하는 등의 구현이 이뤄지지 않을까 싶다. - 비연결성: IP 프로토콜은 데이터 전송 전에 송신자와 수신자가 미리 약속을 하거나 연결을 설정해두지 않고도 패킷을 전송할 수 있다. 인터넷이 유연하고 확장성 높은 구조를 갖출 수 있게 하지만, 전송 과정에서의 제어나 예측 가능성은 포기한다.
쉽게 말해서 아빠와 아들이 하는 캐치볼이 아니라는 뜻. 보낸다? 같은 이야기 없이 다짜고짜 보낸다.
상위 프로토콜에서 preflight나 TLS handshake 등의 기술이 약간 결은 다르지만 본격적인 연결 전에 먼저 확인 과정을 거친다는 점에서 일종의 비연결성을 보완하는 수단이라고 볼 수 있지 않을까?
ICMP 프로토콜 (Internet Control Message Protocol)
데이터 전송 과정에서의 오류 메시지 등을 다루는 데 주로 사용된다고 한다.
데이터가 대상에 도달했는지, 그리고 도달 시간이 적절한지 등을 확인하는데 사용되며, 네트워크의 건강상태를 확인한다고 보면 된다.
DDoS 공격에도 사용할 수 있다.
통신을 하는 경우 ICMP를 사용하여 일부 데이터가 누락된 경우 수신자 → 송신자로 전송되는 에러 메시지를 생성할 수 있다.
주요 역할
- 에러 보고: 지나치게 크기가 큰 데이터 패킷이 전송되는 경우 라우터는 해당 패킷을 폐기하고 ICMP 메시지를 발신자에게 전송해서 네트워크 전송에 문제가 생겼음을 알려준다.
- 네트워크 진단: trace route(패킷 전송 경로 추적 명령어), ping 모두 ICMP를 사용한다.
- 네트워크 성능 저하(공격):
1. ICMP Echo 요청을 담은 ping을 대량으로 보내 서비스를 다운시키는 공격
2. ICMP Redirect 메시지를 수정하여 목적지 주소를 조작하는 중간자 공격
3. ICMP Echo 요청을 대량으로 브로드캐스팅 하여 네트워크 상의 모든 호스트가 ICMP Reply 응답을 하도록 유도한다. 이 때 공격 대상이 되는 서버를 Reply 메시지의 수신자로 하여 대량의 트래픽을 유도하는 공격
ARP 프로토콜 (Address Resolution Protocol: 주소 결정 프로토콜)
IP 주소를 물리적인 네트워크의 주소(MAC 주소)로 바인딩 시키는 데 사용된다.
ARP의 구조
송신자의 MAC/IP 주소, 그리고 수신자의 MAC/IP 주소가 모두 기재되어 있다.
호스트 A가 호스트 B에게 IP를 통한 패킷을 전송하려고 한다면? MAC 주소를 모르는데 어떻게 전송을 하게 될까?
A와 B가 같은 네트워크에 있는 경우
- A는 같은 네트워크 대역에 B의 IP주소에 해당하는 단말기가 있는지를 광역으로 물어봄(ARP 요청 브로드캐스팅)
- A는 B의 MAC 주소를 모르기 때문에 ARP 내부의 타겟 MAC 주소는 기본값인 게이트웨이의 MAC 주소(FF:FF:FF:FF:FF:FF)로 기록해서 일단 전송
- 네트워크 스위치는 A의 MAC 주소를 자신의 MAC 주소 테이블에 기록(기존에 없었다면)
- 네트워크 스위치는 B의 IP주소에 해당하는 MAC 주소가 테이블에 있는지 확인
- B의 MAC 주소가 테이블에 있으면 A에게 해당 MAC 주소를 알려줌
- B의 MAC 주소가 테이블에 없다면, A가 보낸 ARP 요청이 B에게도 전달됨. B는 ARP요청을 받고 자신의 MAC 주소를 알려주는 응답을 보냄. 스위치는 B의 응답에 있는 MAC 주소를 테이블에 저장
- A는 전달받은 MAC 주소를 통해 마침내 B와 통신 시작
A와 B가 다른 네트워크에 있는 경우
- 같은 네트워크에 IP에 해당하는 B가 존재하는지 확인
- 마찬가지로 일단 ARP 내부의 타겟 MAC 주소는 기본값인 게이트웨이의 MAC 주소(FF:FF:FF:FF:FF:FF)로 기록된 상태
- 내부 네트워크에서 B를 찾지 못했다면 ARP 요청은 게이트웨이(라우터)로 전달
- ARP 패킷은 게이트웨이를 거치면서 최종적으로 B의 IP 주소를 가진 네트워크에 도달. 이 과정에서 ARP target MAC 주소는 계속 변경되지만 IP 주소는 유지
- 최종적으로 B를 찾고, B는 자신의 MAC 주소를 담아 ARP 응답을 A에게 전송. 요청인지 응답인지 구분하는 방법은 ARP 패킷 구조에 있는 Operation 값으로 판별. 1은 요청, 2는 응답
- 이제 A와 B는 MAC 주소를 통해 통신 시작 (ARP cache)
ARP를 통한 공격?
대표적인 공격은 ARP 스푸핑.
- 공격자는 공격하려는 대상의 네트워크에 접근하여 ARP 프로토콜로 모든 장치의 MAC 주소를 확인
- 그 후에, 가로채려는 IP 주소에 해당하는 MAC 주소를 자신의 MAC 주소로 교체 (ARP 요청을 통해 ARP cache 테이블에 데이터를 수정한다고 보면 됨)
- 사용자가 전송하려는 데이터 혹은 요청이 공격자가 설정한 MAC 주소로 오게 됨
사용자는 전혀 다른 곳에 접속하는 셈인데 위화감을 느끼지는 않을까?
- 중간자 공격을 통해 트래픽을 원래 보내려던 곳으로 리다이렉트 → 응답도 본인이 먼저 받은 후 사용자게에 다시 보내는 방식을 사용하기 때문에 아무 일도 일어나지 않은 것처럼 보이게 할 수 있다.
그 외 프로토콜…
RARP 프로토콜 (Reverse ARP)
- MAC 주소에서 IP 주소를 찾는 데 사용
- IP주소에서 MAC 주소를 찾는 ARP 프로토콜의 정 반대(Reverse)
IGMP 프로토콜
- 다중 캐스트 그룹 관리를 위해 사용
IPsec 프로토콜 (Internet Protocol Security)
- TCP/IP에서 사용되는 인증과 암호화 방법을 제공하는 보안 프로토콜. IPsec은 두 종류의 프로토콜로 구성된다.
- AH(Authentication Header) 프로토콜 IP 패킷의 출발지 정보와 패킷 데이터에 대한 인증을 제공해준다. 이를 통해 패킷의 위변조 여부를 검사할 수 있음
- ESP(Encapsulating Security Payload) 프로토콜 IP 패킷 전체를 암호화. 이를 통해 패킷의 내용을 해독할 수 없게 만듦
- 주로 VPN이나 원격 액세스, 안전한 네트워크를 위해 사용하며 일반적으로 기밀성과 무결성을 보장하기 위해 사용된다.
참조
ICMP(인터넷 제어 메시지 프로토콜)란? | Fortinet
[이해하기] ARP (Address Resolution Protocol) 프로토콜 | STEVEN J. LEE
[Network] ARP(주소 결정 프로토콜)에 대하여