OSI 7 Layers
OSI 7계층은 네트워크에서 통신이 일어나느 과정을 7단계로 나눈다. 이는 통신이 일어나는 과정을 단계별로 파악하기 위해선데, 각 단계는 독립적이고 위아래로 인접한 계층만 신경쓰면 된다.
- 1계층 - 물리계층
- 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송함
- 통신 단위: 비트 - 0과 1로 나타내는 상태
- 데이터를 전달만 함: 데이터가 무엇인지, 어떤 에러가 있는지는 상관 쓰지 않음
- 장비: 통신 케이블, 리피터, 허브 등
- 2계층 - 데이터 링크 계층
- 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
- 프레임에 물리적 주소(MAC Address)를 부여하고 에러 검출, 재전송, 흐름 제어 수행
- 전송 단위: 프레임
- 장비: 브리지, 스위치 등
- 브릿지나 스위치를 통해 맥주소를 가지고 물리계층에서 받은 정보를 전달함
- 3계층 - 네트워크 계층
- 데이터를 목적지까지 안전하고 빠르게 전달
- 라우터를 통해 경로를 선택하고 IP주소를 정하고 경로에 따라 패킷을 전달
- 라우팅, 세그멘테이션, 오류 제어, 인터네트워킹 등을 수행
- 라우팅: 데이터를 목적지까지 안전하고 빠르게 전달
- 전송단위: 패킷
- 장비: 라우터, L3 스위치
- 4계층 - 전송 계층
- 포트 번호, 전송방식 결정
- 종단 간 신뢰성 있고 정확한 데이터 전송을 담당
- 송신자와 수신자 간의 신뢰성있고 효율적인 데이터를 전송하기 위하여 오류검출 및 복구, 흐름제어와 중복검사 등을 수행
- 시퀀스 넘버 기반 오류 제어 방식
- 상위 계층이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않게 해줌
- 데이터가 오면 4계층에서 해당 데이터를 하나로 통합해 5계층에 전달한다
- 이 계층까지는 물리적인 계층에 속한다
- 전송단위: 세그먼트
- 전송계층의 예: TCP, UDP
- 5계층 - 세션 계층
- 양 끝단의 응용 프로세스가 통신을 관리하는 방법을 제공
- 통신 연결이 손실되는 경우 연결 복구 시도가 가능함
- 연결 시도 중 장시간 연결이 되지 않았다면 세션 계층의 프로토콜이 연결을 닫고 다시 연결을 시도함
- 연결 세션에서 데이터 교환과 에러 발생시의 복구 관리
- 동기화 기능 제공:
- 전이중 통신(Full Duplex): 두대의 단말기가 데이터를 송수신하기 위해 동시에 각각 독립된 회선을 사용하는 통신 방식
- 반이중 통신(Half Duplex): 한쪽이 송신하는 동안 다른쪽에서 수신하는 통신 방식
- 전송 방향을 교체한다
- 6계층 - 표현 계층
- 응용프로그램이나 네트워크를 위해 데이터를 어떻게 표현할지 정하는 역할
- 송신자에게 온 데이터를 해석하기 위한 응용 계층 데이터
- MIME 인코딩, 암호화 등의 동작이 이루어지는 계층
- (예) 해당 데이터가 텍스트인지 그림인지 구분
- 7계층 - 응용 프로그램 계층
- 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하는 계층
- 최상위 계층
- 사용자에게 직접적으로 보이는 부분
wireshark
와이어샤크는 오픈소스 LAN 분석툴로, 다음과 같은 주요 기능을 제공한다
- 네트워크 인터페이스에서 raw 패킷 캡처
- 패킷 내용을 상세하게 표시
- 패킷 캡처 데이터를 열거나 저장
- 다른 많은 LAN 분석툴이 캡처한 패킷 캡처 데이터를 변환해서 읽어들이거나 저장
- 다양한 조건으로 패킷을 필터링/검색
- 다양한 통계 생성
- 등
Layer1
LAN (Local Area Network
LAN(근거리 통신망)은 회사나 가정에서 케이블로 연결된 로컬 네트워크다. LAN분석기는 LAN 케이블을 지나는 전기 신호를 데이터(패킷 형태)로 가져와서 패킷의 의미를 조사할 수 있는데, 이 전기신호를 데이터 형태로 가져오는 것을 패킷 캡쳐라 하고, 패킷의 의미를 조사하는 것을 덤프 분석이라 한다.
WAN (Wide Area Network)
WAN(광역 네트워크)는 사무실, 데이터 센터, 클라우드 애플리케이션 및 클라우드 스토리지를 서로 연결하는 기술로, 하나의 지역이나 전세계에 분산된 여러 위치까지 포함할 수 있다. 오늘날 리소스가 디지털화됨에 따라 기업은 WAN을 필수적으로 활용한다.
UTP (Unshielded Twisted Pair)
UTP 케이블은 절연체로 감싸여 있지 않고 두가닥씩 꼬여있는 케이블. 이더넷이나 기타 네트워크 환경에서 가장 일반적으로 사용하는 케이블이다.
Direct 방식(1:1 케이블)과 Cross 방식으로 구현할 수 있다.
STP (Shielded Twisted Pair)
STP 케이블은 FTP(호일 쉴드)와 S-STP(스크린 쉴드)로 나뉘며 차폐가 되어있는 케이블을 지칭하는 말이다.
Layer2
Ethernet
이더넷은 컴퓨터 네트워크 기술로, 일반적으로 LAN에 쓰인다.
이더넷의 물리계층은 주로 UTP 케이블로 구현한다.
이더넷의 장치로는 스위치, 라우터, 브릿지, 게이트웨이 등이 있다.
- 스위치와 라우터가 여러 컴퓨터나 네트워크를 함께 연결해서 다른 모든 기기들 간의 통신을 가능하게 한다
- 게이트웨이와 브릿지가 여러 이더넷 네트워크를 연결하고 이들 사이의 통신을 허용하는데 사용된다
장점:
- 무선연결에 비해 훨씬 빠른 속도
- 공격이 발생하기 쉬운 와이파이와 달리 보안 수준이 높다
- 무선 주파수의 방해가 없어서 안정적이다. 연결된 장치 간 대역폭이 공유되지 않아 안정적이다
- 상당히 낮은 전력 소비량으로 효율적이다
단점
- 이동성 측면에서 많은 물리적 제약이 있다
- 네트워크를 확장하려면 추가 비용과 시간이 걸린다
- 여러 장치에 동시 연결이 가능한 와이파이와 달리 하나의 컴퓨터에만 연결이 가능하다
NIC (Network Interface Controller/Card)
데이터링크 계층에서 작동하는 네트워크 구성 요소로, LAN에 연결 지점을 제공하기 위해 컴퓨터에 설치하는 장치 어댑터다.
- 장비와 LAN 간의 통신을 준비하며 전송 속도, 프레임 유형/크기, 타임아웃 파라미터와 같은 파라미터를 정하는 기능을 수행한다
- 좀 더 빠른 전송 속도를 위해 데이터를 인코딩하고 압축한다
데이터 전송 방법:
- 직접 메모리 액세스 (Direct Memory Access): NIC에서 램에 지정된 위치까지 직접 데이터를 이동시키는 방법으로 NIC에 의해 사용이 제한되지 않는다
- 공유 어댑터 메모리: NIC가 자체적으로 메모리를 가지고 호스트의 마이크로프로세스가 접근할 수 있다
- 공유 시스템 메모리: NIC의 특별한 프로세서에서 시스템 메모리에 공유된 블록에 사용된다. 단말기의 마이크로프로세서가 데이터에 조금 더 빠르게 액세스할 수 있다
- 버스 마스터링: DMA의 개선 형태로, NIC는 단말기 마이크로프로세서의 인터럽트 없이 단말기의 메모리에 직접 정보를 전송한다
주소 지정 방법:
- 지역 주소 지정 (Local Addressing): 사용자를 정의하는 주소가 있고, 카드에 소프트웨어나 스위치의 사용으로 주어지는 주소
- 글로벌 주소 지정 (Global Addressing): 제조된 모든 NIC가 유일한 주소를 가진다. MAC 주소
NIC는 케이블을 통과하는 모든 프레임의 수신 여부를 결정한다. 필터링을 수행할 땐 인터페이스 카드, 디바이스 드라이브, IP 주소, UDP 단계를 거쳐야지만 수신해야될 프레임을 결정한다
Layer3
IP
IP 주소: 네트워크 환경에서 내 컴퓨터의 주소로, OSI 7계층 중에서 3계층인 네트워크 계층에서 생성 및 사용된다
- 네트워크 주소: 공통 부분, 호스트 주소: 고유 식별자 역할
- 네트워크 상 컴퓨터(노드)를 식별하기 위해 부여된 위치 주소
- 네트워크 주소와 호스트 주소로 구분되며 하나의 네트워크 상에 여러 호스트 주소가 있을 수 있다
- IPv4주소는 32비트 2진수로 표현이 가능하며 각 자릿수 (8비트 2진수 또는 10진수 3자리)를 옥텟이라 부르고 dot(.)으로 구분한다
IPv4의 주소 고갈 문제로 인해 IPv6가 도입되었다.
고갈 문제를 타파하기 위해 NAT와 CIDR 등의 방법을 사용하지만 단기적인 솔루션이다.
IPv4에는 없지만 IPv6에는 있는 것
- 확장된 주소 공간: IPv4의 32비트 주소 체계 대신 128비트 주소체계를 사용한다
- 새로운 헤더 포멧:
- 헤더를 고정길이로 변경
- 패킷 단편화 관련 필드 삭제
- 체크섬 필드 삭제
- 향상된 서비스의 지원: 트래픽을 효과적으로 분류할 수 있는 기능 제공
- 보안 기능
- IPv4는 IPSec이라는 보안 관련 프로토콜을 별도로 설치해줘야 했지만
- IPv6는 프로토콜 내에 보안관련 기능을 탑재할 수 있도록 설계
- 확장헤더로 네트워크 계층에서의 종단간 암호화 제공
- 주소 자동설정
- 로컬 IPv6 주소를 LAN상의 MAC주소와 라우터가 제공하는 네트워크 프리픽스에 결합하여 IP주소를 자동 생성
IPv4 vs. IPv6
- 주소 길이
- 표시 방법
- IPv4) 8비트씩 4부분 10진수 표시 (예) 203.252.53.55
- IPv6) 16비트 8부분 16진수 표시 (예) 2022:0221:ABCD:DCBA:0000:0000:FFFF:4002
- 주소 개수
- IPv4) 약 43억개
- IPv6) 2^128개
- 주소 할당 방식
- IPv4) A, B, C, D등 클래스 단위 비순차 할당
- IPv6) 네트워크 규모, 단말기수에 따라 순차할당
- 브로드캐스트 주소
- IPv4) 있음
- IPv6) 없음
- 로컬 범위 내에서 모든 노드에 대한 멀티캐스트 주소 사용
- 헤더 크기
routing
라우팅은 출발지에서 목적지까지의 경로를 결정하는 과정이며, 포워딩 테이블을 만들어내는 과정이다.
라우팅 알고리즘: 송신 측에서부터 수신 측 라우터의 네트워크를 통과하는 최적의 경로를 결정하는 알고리즘
라우팅 알고리즘의 종류
- 중앙 집중형(global) 라우팅 알고리즘: 네트워크 전체에 대한 완전한 정보를 가지고 출발지와 목적지 사이의 최소 비용 경로를 계산한다
- 모든 라우터가 연결 상태와 링크 비용을 알고 있음
- (예) Link state 알고리즘
- 분산 (decentralized) 라우팅 알고리즘: 최소 비용 경로의 계산이 라우터들에 의해 반복적이고 분산된 방식으로 수행된다
- 어떤 라우터도 모든 링크 비용에 대한 완전한 정보를 갖고 있지 않지만, 자신에게 연결된 인접노드에 대한 링크 비용 정보는 알고 있다
- 이후 반복된 계산과 인접 노드와의 정보 교환을 통해 목적지까지의 최소 비용 경로를 계산한다
- (예) Distance Vector 알고리즘
- 정적 알고리즘:
- 경로의 변경이 느림
- 사람이 직접 링크에 대한 비용을 수정해야 함
- 규모가 큰 네트워크에 적합하지 않음
- 동적 알고리즘:
- 네트워크 트래픽 부하 등에 따라 라우터가 자체적으로 경로를 바꿈
- 주기적으로 배치나 링크 비용의 변경에 직접적으로 응답하는 방식으로 수행
- 네트워크 변화에 더 빠르게 대응할 수 있지만, 경로의 loop이나 경로 진동과 같은 문제에 취약함
라우팅 알고리즘
- Link State 알고리즘: 링크 상태 알고리즘
- 중앙 집중형 알고리즘
- 모든 라우터가 모든 링크의 비용을 알고 있음
- 다익스트라 알고리즘 사용
- 한 노드에서 다른 모든 노드까지의 최적경로를 계산해 라우팅 테이블에 저장함
- Distance Vector 알고리즘: 거리 벡터 알고리즘
- 분산형 알고리즘
- 각 노드는 자신에게 연결된 이웃의 링크의 비용만 알고 있음
- 벨만-포드 알고리즘 사용
- 반복적, 비동적, 분산적
- 이웃끼리 반복해 정보를 교환해서 최적의 경로를 갱신한다
- 문제: count-to-infinite 문제 발생 가능
ICMP (Internet Control Message Protocol)
ICMP는 TCP/IP에서 IP패킷을 처리할 때 발생되는 문제를 알려주는 프로톸ㄹ이다.
IP는 오직 패킷을 목적지에 도달시키기 위한 내용으로만 구성되어 있어서 정상적으로 목적지에 도달하기만 하면 IP에서 통신이 성공하고 종료된다. IP에는 에러에 대한 처리 방법이 명시되어 있지 않기 때문에 전달받을 호스트가 꺼져있거나 선이 단절된 비상적인 경우 출발지 호스트에 알리지 않는다. 이 점을 보완하기 위해 ICMP를 사용한다
ICMP는 도착지 호스트가 없거나 포트가 닫혀있는 등의 에러상황이 발생하면 IP헤더에 기록되어 있는 출발지 호스트로 에러에 대한 정보를 보내준다. 에러 메세지는 Destination Unreachable, Time Exceeded 등이 있다.
Layer4
Port
포트: 임시 파일이나 스토리지를 사용하지 않고 데이터를 교환하는데 사용할 수 있는 논리적 데이터 연결
- 포트는 포트 번호, IP 주소, 전송 프로토콜을 사용해 식별됨
- 포트 번호: 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값
- (예) 데이터를 담고 있는 봉투에 목적지의 포트가 28080이면, 목적지 호스트에 도착한 뒤에 해당 호스트에서 28080 포트를 할당받은 프로세스를 찾아 데이터를 전달한다
- 데이터를 보내는 호스트의 프로세스도 보내기 전에 포트 번호를 할당받아 보내야 한다
- 받는 호스트가 요청한 내용을 처리해 보내줄 때 어디로 보내야 할지 결정
iptables
iptables는 리눅스상에서 방화벽을 설정하는 도구로 패킷필터링 기능을 사용자 공간에서 제어하는 수준으로 사용할 수 있다.
패킷필터링은 지나가는 패킷의 헤더를 보고 그 전체 패킷의 운명을 결정한다. 주로 패킷의 헤더에는 출발지 IP, 출발지 포트, 도착지 IP, 도착지 포트, 체크섬, 프로토콜 옵션 등을 가진다.
TCP와 UDP
TCP와 UDP는 7계층 중 TCP/IP의 전송 계층에서 사용되는 프로토콜이다.
- 연결 방식
- TCP) 연결형 서비스: 연결할 때는 3-way handshake, 해제할 때는 4-way handshake
- UDP) 비연결형 서비스
- 패킷 교환 방식
- TCP) 가상 회선 방식
- UDP) 데이터그램 방식
- 전송 순서
- TCP) 전송 순서 보장
- UDP) 전송 순서가 바뀔 수 있음
- 수신 여부 확인
- TCP) 수신 여부 확인함
- UDP) 수신 여부 확인 안함
- 통신 방식
- TCP) 1:1 통신
- UDP) 1:1 or 1:N or N:N 통신
- 신뢰성
- 속도
TCP는 연속성보다 신뢰성있는 전송이 중요할 때 사용하고, UDP는 TCP보다 빠르고 네트워크 부하가 적지만, 신뢰성 있는 데이터 전송을 보장하지는 않기 때문에 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 사용된다
Layer7
HTTP (Hyper Text Transfer Protocol)
- 인터넷에서 데이터를 주고받을 수 있는 프로토콜
- Stateless: 무상태
- 서버가 두 요청 간 어떠한 상태/데이터를 유지하지 않음
- TCP/IP 레이어 기반
SSH (Secure Shell)
Shell: 명령어와 프로그램을 사용할 때 사용하는 인터페이스로, 커널과 사용자 간의 다리 역할을 한다. 사용자로부터 명령을 받아 그것을 해석하고 실행한다.
SSH는 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다. 기존 원격 접속은 텔넷을 사용했는데, 암호화를 제공하지 않아 보안상 취약하여 암호화를 수행하는 SSH기술이 필수적인 요소가 되었다.
SSH에 비대칭키 또는 대칭키 방식을 사용할 수 있다.
Telnet (Teletype Network)
하나의 컴퓨터가 로컬 컴퓨터로 연결할 수 있기 해주는 TCP/IP 프로토콜이다. 연결을 시작하는 컴퓨터를 로컬 컴퓨터라고 하고, 연결을 수락하는 컴퓨터를 원격 컴퓨터라 한다.
HTTPs
HTTPS: HTTP에 S(Secure Socket)이 추가됨
- 데이터를 주고 받는 과정에 보안 요소를 추가하여, 서버와 클라이언트 사이의 모든 통신 내용이 암호화됨
- 장점:
- 웹사이트의 무결성 보장: 웹사이트와 사용자 브라우저 사이의 통신을 침입자가 건들지 못함
- 침입자가 웹사이트와 사용자 사이의 통신을 몰래 수신하는 것을 방지
- 단점:
- 모든 사이트에서 텍스트를 암호화하여 주고 받으면 과부하가 걸려 속도가 느려질 수도 있어서 중요한 사이트는 HTTPS로 관리하고, 그렇지 않은 사이트는 HTTP를 사용한다
- HTTPS 자체가 보안을 보장하는 것이 아니라, 신뢰할 수 있는 CA인지 등이 중요하다
DHCP
DHCP(Dynamic Host Configuration Protocol): 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동으로 할당해주는 애플리케이션 계층 프로토콜
- 포트번호: 67/68
- 연결 속도가 중요해 UDP를 사용한다
- 목적: 한정되어있는 IP주소에서 효율적으로 IP주소를 배분하기 위한 프로토콜
- 장점: 이용자가 네트워크 정보를 직접 설정할 필요 없이 자동으로 설정되기 때문에 네트워크 관리가 용이해진다
- 단점:
- IP할당을 DHCP서버에 의존해서 서버의 다운시 IP할당이 불가능.
- 인터넷 네트워크 사용 불가능
- 악의적인 서버 공격이 있는 경우 IP자원이 고갈됨에 따라 프로토콜 네트워크 부하로 인해 IP할당이 불가능하거나 실패하는 경우가 있다
- 메시지를 주로 브로드캐스팅하기 때문에 전체 네트워크에 부하가 있을 수 있음
주소 할당 절차
IP 주소 할당 절차: PC와 같은 단말이 DHCP 서버로부터 IP 주소 등의 네트워크 정보를 할당받기 위해서 거치는 4단계
- DHCP Discover: 단말이 DHCP 서버를 찾기 위해 이더넷에 discover 메시지를 브로드캐스팅하는데, 동일 서브넷 안에 있는 모든 단말이 이 메시지를 수신한다
- DHCP Offer: Discover 메시지를 수신한 DHCP 서버는 자신을 알리기 위해 offer 메시지를 브로드캐스팅하는데, 이 메시지는 동일 서브넷 안에 있는 모든 단말이 수신한다
- DHCP Request: DHCP 서버 존재를 확인한 PC는 요청 메시지를 브로드캐스팅한다: 서버가 여러개인 경우에 선택받지 못한 서버에게도 알리기 위해
- DHCP ACK: DHCP 서버는 요청 메시지 내에 서버 식별자에 기록된 IP주소가 자신의 주소인지 확인 후 offer 메시지와 함께 다양한 네트워크 정보(IP, Subnet, Lease time, Gateway, DNS)를 전달한다
이미 할당이 되어있는 IP주소를 할당하는 등의 충돌이 일어나면 offer 단계에서 이에 대한 신호를 준다
주소 임대기간 연장 절차, IP 주소 반납 절차 등도 존재한다
References: