세션 장비 → 세션을 이해하고 세션 테이블을 유지
성능 최적화와 보완을 위해 세션 테이블 정보를 이용해 패킷을 드롭하거나 포워드한다.
애플리케이션과 세션 장비 간 세션 정보를 동일하게 유지해주거나 애플리케이션을 제작할때 네트워크 중간에 있는 세션 장비를 고려해 여러가지 기능을 추가해주어야한다.
특히, 애플리케이션 세션 시간과 서비스 방향성을 고려하고 비대칭 경로를 피하는 것이 중요하다.
세션: 네트워크에서 클라이언트와 서버 간에 주고받는 데이터를 하나의 연결 상태로 묶어서 관리하는 단위
세션 장비: 네트워크 장비 중 하나로 데이터 패킷이 오갈 때 세션 정보를이해하고 관리해 주는 역할 → ‘세션 테이블’ 이라는 데이터를 저장
세션 테이블: 세션 장비는 서버와 사용자간의 정보를 기록하는 표를 유지한다 → 세션 테이블
세션 테이블을 보고 패킷을 어디로 보낼지 판단하거나 문제가 있으면 패킷을 막아버릴 수 있음
통신 시작 → 중간 세션 장비는 해당 세션 상태를 테이블에 기록 & 일정 시간 세션 테이블 유지
세션 테이블은 메모리에 저장
되기 때문에 메모리의 효율적인 사용을 위해 일정 시간만 테이블에 유지
과도한 세션 생성으로 발생할 수 있는 문제를 해결하기위해 타임아웃값을 설정하기도 함
일부 app은 세션 장비를 길게 설정해 다음 통신이 시도될때까지 세션이 끊기지 않도록 타임 아웃값을 길게 설정하기도 한다. → 세션 장비의 타임아웃 값 < app 세션 타임아웃
이면 문제가 생긴다.
동작 순서
애플리케이션에 주기적인 패킷 발생 기능 추가
네트워크 안정성을 위해 이중화를 시행 → 패킷이 지나가는 경로가 2개라 인바운드 패킷과 아웃바운드 패킷의 경로가 같거나 다를 수 있음
같은
장비를 통과하는 것다른
장비를 통과하는 것인바운드 패킷과 아웃 바운드 패킷 (헤더 정보로 판단)
- 인바운드 패킷: 외부에서 내부로 들어오는 데이터
- 아웃바운드 패킷: 내부에서 외부로 나가는 데이터
세션 장비는 세션 테이블을 만들어 관리해야 하므로 패킷이 들어오고 나갈때 동일한 장비를 통과해야한다. → 패킷이 들어올때와 나갈때 경로가 동일하지 않으면 문제가 발생한다.
해결 방안 1. 세션 테이블 동기화
⇒ 추천 X
패킷 경로를 변경하지 않고 동작가능 But, 세션을 동기화 하는 시간보다 패킷 응답이 빠르면 작동 X
응답 시간이 비교적 긴 인터넷 게이트웨이로 방화벽이 사용될 때 유용
해결방안2. 세션장비에서 다양한 방법으로 보정
인바운드 패킷이 들어오지 않았는데 아웃바운드 패킷이 장비로 들어온 경우 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로를 보정 → 강제로 대칭 경로를 만들기
⇒ 방화벽 간 통신용 링크 필요 & MAC 주소를 변경하는 MAC 리라이팅 or 기존 패킷에 MAC 주소를 한번 더 인캡슐레이션하는 터널링 기법 필요
하나의 통신을 위해 하나의 세션을 사용하는게 보통
하나의 통신에 2개 이상의 세션을 사용할 경우 세션 장비도 이를 파악해야함 → 하나만 작동할 경우 단방향 통신만 가능하거나 통신이 불가능할 수 있음
프로토콜
FTP의 경우 2개 이상의 프로토콜을 사용
FTP Active: 컨트롤 프로토콜과 데이터 프로토콜이 분리되어 있고 방향도 반대로 동작
⇒ 단점: 컨트롤 프로토콜과 데이터 프로토콜 방향이 반대임
컨트롤 프로토콜은 클라이언트에서 서버로 통신을 시작
데이터 프로토콜은 서버에서 클라이언트 쪽으로 데이터 푸쉬
동작 방식
중간에 방화벽, 세션 장비가 있다면 방화벽의 반대 방향도 열어주어야함
NAT 환경의 경우, FTP가 동작하는 프로토콜을 이해하도록 별도 기능을 동작시켜야함 → ALG
FTP Passive: Active 모드 단점 보완
⇒ 클라이언트에서 서버쪽으로 데이터를 요청해 다운받도록 동작