01 네트워크 계층의 기능
▷ 주요 기능
- 라우팅
- 혼잡 제어
- 패킷의 분할과 병합
1. 연결형 서비스와 비연결형 서비스
▷ 비연결형 서비스
- 신뢰성 낮음 -> 자체적으로 오류 제어와 흐름 제어 더 많이 수행해야 함
- 패킷이 서로 다른 경로로 전달됨 -> 순서 재조정기능 필요
- ex) IP 프로토콜, UDP
▷ 연결형 서비스
- 상대적으로 신뢰성 높음. 연결 미리 설정하여 송신
- ex) TCP
* UDP와 TCP는 둘 다 IP 프로토콜 위에서 동작하는 전송 계층 프로토콜이지만 UDP는 비연결형, TCP는 연결형 서비스
2. 라우팅
- 가상 회선 방식을 사용하는 연결형 서비스 - 모든 패킷 동일 경로 거침, 패킷 전달 순서도 일정.
- 비연결형인 데이터그램 - 연결 설정 과정 없어 고정 경로 존재 X -> 패킷마다 독립적인 전달 경로
▷ 정적 & 동적 라우팅
- 정적 라우팅: 패킷 전송 전 경로를 라우터에 미리 저장하여 중개. 정보 갱신 어려움. 혼잡도 반영 불가
- 동적 라우팅: 경로를 네트워크 상황에 따라 변경. 획득한 경로 정보를 다른 라우터와 공유
▷ HELLO/ECHO 패킷
- HELLO패킷: 이웃에 연결된 라우터에 HELLO패킷 전송 => 경로정보 얻음
- ECHO패킷: ECHO패킷 전송->즉각 회신->이 과정 반복 => 평균값으로 라우터 사이 지연시간 유추
▷ 라우팅 테이블
- 필수 정보: 목적지 호스트, 다음 홉(여러 경로 중 효과적 경로)
▷ 라우팅 정보의 처리
- 소스 라우팅: 패킷 전송 호스트가 경로를 스스로 결정
모든 라우팅 정보를 송신 호스트가 관리 => 중간의 라우터들은 라우팅 테이블 관리 필요 X
- 분산 라우팅: 전송 경로의 각 라우터가 경로 선택에 참여(데이터그램 방식에서 많이 사용)
장점: 호스트 수가 많아질수록 효과적
- 중앙 라우팅: RCC(Routing Control Center)라는 특별 호스트가 모든 정보 관리
일반 호스트의 부담 줄임. but 네트워크 규모가 커지면 RCC에 부담-> 효율 떨어짐
- 계층 라우팅: 분산 라우팅+중앙 라우팅. 네트워크 규모가 커지는 환경에 효과적
3. 혼잡 제어
- 혼잡: 패킷 수 많아져 네트워크 성능 감소한 현상
ㄴ 발생 원인: 네트워크 처리 능력보다 지나치게 많은 패킷이 입력되면 발생
- 혼잡 제어: 혼잡 문제 해결 방안
- 흐름 제어: 송신 호스트와 수신 호스트 사이 점대점 전송 속도 다룸
▷ 혼잡의 원인
- 타임아웃 기능을 통해 패킷들이 재전송되어 쌓임 => 타임아웃 시간 늘리기 필요
- 패킷 도착 순서 뒤바뀌어서 수신 호스트가 패킷 버림 => 패킷 재전송해 혼잡 높임
- 송신 호스트에 패킷 수신했다고 바로 응답하면 개별 응답 패킷 발생함 -> 혼잡 우려 / 피기배킹 방식으로 응답 패킷 모아 응답하는 방식은 타임아웃 기능으로 재전송 유발해 혼잡 가중시킬 우려
- 라우팅 알고리즘: 혼잡 발생 경로보다 트래픽 적은 경로로 패킷 전송하면 혼잡 줄일 수 있음
▷ 트래픽 성형: 버스트(트래픽이 특정 시간에 집중) -> 혼잡 => 예측할 수 있는 전송률로 이루어지게 하는 기능 필요
ㄴ 유명한 알고리즘: 리키 버킷(과도한 트래픽? 패킷 처리 거부, like깔때기)
▷ 혼잡 제거
방법 1) 가상 회선 방식인 서브넷에서 혼잡 사라질 때까지 연결 허락 x
-> 근데 보통 특정 지역에서만 혼잡함. 혼잡한 곳 안 거치게 하는 방안 필요
방법 2) 자원 예약: 전송 과정에서 사용하는 대역을 미리 할당받아 트래픽 사전 예방
-> 단점: 그동안 다른 사용자 못씀. 통신 자원 낭비 염려 있음
방법 3) ECN패킷(Explicit Congestion Notification) 사용: 모니터링으로 혼잡 부분에 주의표시. 이곳은 특별관리
02 라우팅 프로토콜
1. 간단한 라우팅 프로토콜
▷ 최단 경로 라우팅: 패킷이 목적지까지 거치는 라우터 수가 최소화되도록 경로 선택. 장) 간단한 형식으로 적용 쉬움
▷ 플러딩(Flloding): 라우터가 모든 경로로 중개
2. 거리 벡터 라우팅 프로토콜
: 자신과 직접 연결된 이웃 라우터와 라우팅 정보 교환
[관리할 정보]
- 링크 벡터: 이웃 네트워크 연결 정보 보관
- 거리 벡터: 전체 네트워크에 소속된 개별 네트워크까지 거리 정보 관리
- 다음 홉 벡터: 패킷을 전송하는 경로에 있는(개별 네트워크로 가기 위한) 홉 정보
RIP프로토콜(Routing Information Protocol)
- 거리 벡터 방식인 내부 라우팅 프로토콜 중 가장 간단. 소규모에 적합
- RIP패킷은 UDP사용 -> 비신뢰성이라 RIP패킷이 사라질 수도 있음
=> 그래서 개별 거리 정보다 라우팅 테이블에 순차적으로 적용되도록 함
- 첫 번째, 두 번째는 자신이 관리하는 거리 벡터 정보. 세 번째는 다른 라우터로부터 받는 거리 벡터 정보
3. 링크 상태 라우팅 프로토콜
- 개별 라우터가 이웃 라우터까지 거리를 구한 후 이를 네트워크의 모든 라우터에게 통보(플러딩 기법)
- 라우터 간의 정보 교환 원리가 거리 벡터 방식과 반대
- 거리 벡터 방식은 정보가 주기적으로 전달됨. 이를 극복하기 위한 방식
=> 이웃 라우터와 연결된 상황에 변화가 있을 때만 정보 전달함
- ex) TCP/IP 기반에서 사용하는 OSFP(Open Shortest Path First)
4. 외부 라우팅 프로토콜
- 거리 벡터 방식과 링크 상태 방식은 내부 용도였음
- 이 방식의 경로 벡터 프로토콜은 경로 거리 정보 값 필요 없음. 어느 네트워크가 연결 가능한지만 제공
- 경로 벡터 방식이 거리 벡터 방식과 다른 점
1) 거리에 대한 처리과정 없음
2) 관리하는 라우팅 정보에는 목적지 네트워크에 도착하기 위한 내용만 포함
- ex) BGP(Border Gateway Protocol): 인터넷에서 많이 사용. 종류가 다른 환경에서 동작(=게이트웨이)
03 IP 프로토콜
- 비연결형
- 패킷을 분할&병합
- 데이터 체크섬 제공 X 헤더 체크섬만 제공
- Besf Effor원칙을 따른 전송 기능
1. IP 헤더 구조
- DS/ECN: 8비트의 Service Type필드를 QoS 지원 위해 6비트의 DS필드와 2비트 ECN필드로 새로 정의
- 패킷 분할: 패킷 하나로 전송하기 너무 크면 분할해 전송 (관련 필드: Identification, DF, MF, Fragment Offset)
- 주소 관련 필드: 클래스 A, B, C(유니캐스팅)는 주소를 network와 host필드로 구분해 관리
- 기타 필드: Version Number, Header Length, Packet Length, Time to Live, Transport, Header Checksum, Options, Padding
2. 패킷 분할
▷ 하부 계층 관점에서 TCP에서 설정되는 가상 연결은 여러 종류 네트워크 걸쳐 설정됨
-> 그러나 TCP에선 패킷 크기 조절 쉽지 않음 -> IP 프로토콜에서 수행해야 함
▷ 분할 기능은 전송 경로에 위치한 라우터에 의해 수행됨
->라우터에 연결된 LAN이 서로 다를 수 있어 데이터 링크 계층 프레임 크기가 프로토콜마다 달라짐
=> LAN에 맞도록 프레임 분할
3. DHCP 프로토콜
- IP부족 등의 사유로 고정 IP주소 할당 못하고 자동 할당해야 할 수도 있음 -> DHCP사용
● DHCP 메시지
: IP주소를 원하는 클라이언트는 DHCP 서버에 요청 메시지 전송하고 서버는 응답 메시지 회신함
- DHCP 동작 과정에 필요한 주요 메시지 - UDP데이터그램에 캡슐화되어 전송. 클라포트번호:68, 서버:67
- 과정: 클라이언트에서 DHCP_DISCOVER메시지 전송 -> DHCP 서버에서 IP주소 받음(DHCP_OFFER)
-> 클라이언트에서 DHCP_REQUEST로 IP주소 사용하겠다 의사표시 -> DHCP로 긍정 응답(DHCP_ACK)
'네트워크' 카테고리의 다른 글
#6 데이터 링크 계층 (0) | 2021.11.07 |
---|---|
#5 MAC 계층 (0) | 2021.09.15 |
#4 데이터 전송의 기초 (0) | 2021.09.14 |
#3 네트워크 기술 (0) | 2021.09.14 |
#2 네트워크 모델 (0) | 2021.09.14 |