1. Service of network layer
1.1 Packetizing
Encapsulating
- 송신지에서 상위 계층에서 받은 데이터(=페이로드)를 네트워크 계층 패킷에 담는 것
- 너무 크면 쪼개서 쪼갬 fragmentation
Decapsulating
- 수신지에서 전달받은 패킷으로부터 페이로드를 꺼내는 것
- 라우터나 송신지에서 패킷을 쪼개서 보내는 경우 모든 조각들이 도착할 때까지 기다렸다가 재조립하고 상위 계층으로 전달
1.2 Routing
- 물리적으로 네트워크의 조합되어 사용되기 때문에 하나 이상의 송수신지가 경로에 존재함
- 따라서 여러 경로 중 최적의 경로를 찾아줌
1.3 Forwording
- 라우터 input → output 으로 패킷 이동시키는 것
- 이때 포워딩 테이블 참조해서 적절한 수신지로 보냄
1.4 Error control
- 각 라우터에서 조각난 패킷들에 대한 에러 체크를 모두 확인하면 비효율적이라 하지 않음
- 패킷에 체크섬필드만 헤더에 추가하여 corruption된 조각임을 알리는 정도만
1.5 Flow control
- 없음
- 상위 계층에서 버퍼를 사용해서 데이터를 받기 때문에 흐름 제어 해줌
1.6 Congestiong control
- 인터넷 분야에 너무 많은 데이터그램이 있기 때문에 혼잡이 너무 많음
- 인터넷 네트워크 계층에서 구현 X
즉, 네트워크 계층에서 오류, 흐름, 혼잡 제어 없음 + 보안 요소 없음
2. Packet switching
- 또는 circuit switching
- 패킷 스위칭은 네트워크 계층에서만 사용됨
- 상위 계층에서 오는 메시지를 관리 가능한 사이즈의 패킷으로 쪼개고 각 패킷을 네트워크를 통해 보냄
- packet switching →
- 데이터그램 접근법 : 비연결 서비스
- 가상 회선 접근법 : 연결 지향 서비스
2.1 Datagram approach
- 비연결 서비스 (패킷간 관계 없음)
- 각 패킷은 헤더에 있는 destination address 정보를 기반으로 라우팅 됨
- 패킷 헤더 → 목적지 주소 확인 → 포워딩 테이블에서 아웃풋 인터페이스로 패킷 전달
2.2 Virtual circuit approach
- 연결 지향 서비스
- 가상 연결은 데이터그램을 보내기 전에 경로를 미리 준비해 둠 → 미리 세팅한 경로가 가상 회선
- 각 패킷은 패킷 내부에 incoming 라벨을 확인 → 포워딩 테이블에 그 라벨에 해당하는 outgoing 라벨을 찾아 보냄
3. Performance of network layer
- 성능 지표 : delay, throughput, packet loss
3.1 Delay
- transmission delay = packet length / transmission rate
- propagation delay = distance / propagation speed
- processing delay = 라우터나 수신지에서 패킷을 처리하는데 필요한 시간
- queuing delay = 인풋 아웃풋 큐에서 패킷이 대기하는 시간
- total delay = (n+1)(transmission delay + propagation delay + processing delay) + (n)(queuing delay). ** n = 양단 사이에의 라우터 개수
3.2 Throughput
- transmission rate에 의해 결정됨
- 일정 시간 동안 보낼 수 있는 비트의 수
- throughput = 송수신지 사이에 존재하는 모든 링크의 transmission rate 중 가장 작은 것 (최악의 속도)
- 두 라우터 사이의 링크는 항상 하나의 흐름만 사용하는 것이 아니라 분산된 프름 중
- not always dedicated to one flow
- collect several flow and shared
3.3 Packet loss
- 한 패킷을 처리하는 동안 라우터가 다른 패킷을 받으면 그 패킷은 input 버퍼에 저장됨
- input 버퍼는 제한적인 사이즈를 가짐
- 버퍼가 가득차거나 다음 패킷이 버려져야 할 때 패킷 손실 발생
- 패킷 손실 → resent 재전송 발생 → 오버플로우 패킷 손실 더 크게 발생
4. Congestion
4.1 open loop congestion control
- 혼잡 발생 전 예방하기
retransmission policy
- 재전송은 혼잡 더 증가시킬 위험이 있지만
- 좋은 혼잡 예방 방법
window policy
- GBN, SR 에서 사용하는 송신측의 윈도우 타입
- Go Back N 윈도우: 패킷의 타이머가 타임아웃되면 여러개의 패킷들이 재전송됨 (안전하게 도착한 패킷도 포함해서)
- Selective repeat 윈도우 : 손실된 패킷만 재전송 시도
acknowlegement policy
- 수신자가 받는 모든 패킷에 대해 ack를 하지 않으면 송신자는 보내는 속도 늦춤
discard policy
- 라우터에 의해 동작
- 전송의 integrity를 해치지 않음
admission policy
- 가상 회선 네트워크 상에서 혼잡 예방 매커니즘
4.2 closed loop congestion control
- 혼잡 발생 후 완화시키기
backpressure
- 혼잡 발생시 이전 라우터에 backpressure
- 각 라우터를 거쳐 결국 송신지로 backpressure
choke packet
- 혼잡 발생 시점에서 choke packet을 송신지로 보냄
implicit signaling
- 혼잡이 발생한 노드 - 송신지간 소통 없음
- 송신지는 다른 신호들로 혼잡이 있을 것이라고 예상하는 방식
explicit signaling
5. Router
- input ports
- output ports
- routing processor : 포워딩 테이블을 참조해서 다음 hop 주소와 output 포트 넘버 찾음 (= table lookup)
- switching fabrics
- batcher-banyan swtich
6. Network layer protocol
6.1 IP 데이터그램 포맷
- VER : ip 프로토콜 버전 정의 4 비트 ( 4 → 6 = 0110)
- HLEN : 헤더 총 길이 4 비트
- TOS : 서비스 타입 8 비트
- 총 길이 : 데이터그램의 총 바이트 정의 16 비트 (데이터 길이 =총 길이 - 헤더 길이)
- identification: fragmentation 에 사용할 16 비트
- flag : fragmentation 에 사용할 3 비트 플래그
- TTL (time to live) → 라우터 방문할 때마다 값이 감소하고 0 이 되면 버림, 방문하는 홉의 수를 최대치를 제한하기 위해 사용
- 프로토콜 : TCP, UDP, ICMP, IGMP, OSPF 등 이 계층에서 사용하는 서비스를 정의하는 8 비트
- checksum : 16비트 오류 확인
- 송신지 아이피 주소 32 비트
- 수신지 아이피 주소 32 비트
- MTU (maximum transfer unit) : 프레임에 데이터그램을 캡슐화할 때 데이터그램의 총 사이즈는 MTU 보다 작아야됨 크면 fragment
fragmentation 관련 필드
- 데이터그램을 fragmentation으로 쪼갬
- 송신지는 IP 패킷을 잘 쪼개지 않음
- 데이터그램이 쪼개진 경우 각 조각들은 자신만의 헤더를 가짐
- 수신지는 헤더 정보를 기반으로 데이터그램을 재조립
- identification (16비트) : 송신지에서 만드는 필드로 데이터그램 공유 식별 가능한 필드, 이 숫자를 기반으로 재조립
- flags (3비트) : 1 reserved, 2 do not fragment, 3 more fragment
- fragmentation offset (13비트) : 8바이트 단위, 0000/8= 0 , 1400/8 = 175
6.2 IPv4 주소
- 32비트 주소
- 고유함
- 주소 공간 = 2^32
표기법
- 이진 표기법 : 32 비트로 나타내기
- dotted decimal 표기법 : 이진수를 8개씩 잘라서 십진수로 바꾸고 . 으로 나눠서 표현
- 이진수로 32비트 나열해서 앞에서부터 4개씩 16진수로 바꿔서 표현
addressing 계층 구조
- prefix : 네트워크 정의 (n 비트)
- suffix : 연결한 네트워크 중 노드 정의 (32-n 비트)
classful addressing
- A ~ E
- prefix 크기 : A = 8 < B = 16 < C = 24
- 프리픽스가 클수록 구분해야 하는 네트워크가 많다는 뜻이므로 더 큰 망에 있다는 것을 의미
- D : 멀티캐스트 주소
- E : 미래 사용을 위해 예약된 것
- 주소 고갈 완화를 위한 기법
- subnetting : A, B 클래스를 여러개의 서브넷으로 나누고 각 서브넷은 원래의 네트워크보다 prefix 길이가 길다. → not work
- supernetting : C 클래스 블럭 여러개를 하나의 큰 것으로 조합 → not work
- 제약사항
- 블럭 내 주소의 개수는 2의 제곱수
- 첫번째 주소는 반드시 주소 개수로 나누어 떨어짐
- mask - 주소에 항상 동반됨 x.y.z.t/n => n 은 블럭에서 모든 주소에 동일한 구간의 비트 수를 정의
- prefix = 주소 범위에서 공통된 부분
- suffix = hostid, 달라지는 부분
- 167.199.170.82/27이면 167.199.170.82를 이진수로 나열하고 앞에부터 27 비트는 고정된 비트이고 그 뒤에 suffix만 바뀌는 것 suffix 000..0 부터 1..1
6.3 네트워크 주소
- 주소 블럭의 첫번째 주소 = 네트워크 주소
- 프리픽스가 n 이면 첫번째 주소 = 2^(32-n)
- 1000개의 주소가 필요하다고 하면 2의 제곱수중 1000보다 크게 → 2^(32-10) = 2^22 ⇒ /n = /22로 설정해야 됨
6.4 특별한 주소
- This-host : 0.0.0.0/32
- limited-broadcase : 255.255.255.255/32 - 라우터에 연결된 모든 디바이스로 보냄
- loopback : 127.0.0.0/8 송신지로 되돌아 옴
- private : 10.0.0.0/8 , ...
- 멀티캐스트 주소 244.0.0.0/4
- 멀티캐스트 주소는 suffix를 전부 1로 설정,
6.5 DHCP
- dynamic host configuration protocol
- DHCPDISCOVER 메시지 : 트랜잭션 아이디가 랜덤넘버로 설정되는 경우 생성
- DHCP 서버는 DHCPOFFER 메시지로 응답
- offer에 대한 응답으로 DHCPREQUEST
- 선택됨 서버는 DHCPACK로 응답
- 포트넘버 : 있다 67 68
6.6 NAT
- network address translation
- private - universal 주소 간 맵핑 제공하는 기술
- virtual private 네트워크 제공
- private 주소에 매칭하는 universal 주소 보여주는 translation table
- n:m 연결 허용
- translatoin table : 송수신지 포트, 주소와 전송 계층 프로토콜
6.7 IP패킷 포워딩 기술
- next hop method : 라우팅 테이블 → 목적지 호스트와 다음 라우터 (홉) 주소만 가지고 있음
- network specific method : 라우팅 테이블의 각 엔트리 ⇒ 목적지 네트워크 주소를 가지고 있음
- host specific method : 위와 달리 네트워크 내부 다른 호스트 주소를 가지고 있음
- classless addressing
- address aggregation
- longest mask matching : 지리적으로 가까운 경우, 라우텅 테이블이 가장 긴 마스크부터 짧은 것까지 정렬 m1, m2, m3...
- hierarchical routing
- geographical routing
- routing table searh algorithm
- longest match 사용
- 리스트 말고 다른 자료 구조 사용 (트리)
- based on label : 패킷 앞에 붙은 라벨을 보고 포워딩 (연결 지향)
- MPLS (multi protocol label switching)
- 라우터처럼 동작 → 목적지 주소를 기준으로 포워딩
- 스위치처럼 동작 → 라벨을 기반으로 포워딩
- 해더 = 서브 헤더의 스택 / label → 라우터에서 포워딩 테이블 인덱스 찾기 위해 사용하는 라벨, Exp reserved, S 1이면 마지막 스택이라는 뜻, TTL 0 이면 패킷 버림
6.8 ICMPv4
ICMP message
- 하위 계층으로 가기 전에 ip데이터그램 내부를 캡슐화
- 프레임 → ip 헤더 + 데이터 → IP 데이터를 ICMP 메시지로 캡슐화
→ error reporting
- ip 패킷 처리 중 라우터나 목적지 호스트가 마주할 수 있는 문제 보고
- 도달할 수 없는 목적지 unreacheable destinatoin
- 라우터가 데이터그램을 보낼 수 없거나 수신지가 받을 수 없는 경우 해당 데이터그램은 버려지는데 이때 destination unreachable 메시지를 원 송신지로 보냄
- type3
- 헤더 나머지: 사용되지 않음 모두 0
- 데이터 부분 : 헤더 포함 데이터그램 일부 + 데이터그램 데이터의 첫번째 8 바이트
- source quench
- 흐름 제어의 일부
- 데이터그램이 혼잡으로 인해 버려질 때 송신측에 source-quench 메시지를 보내서 버려졌음을 알리고 혼잡을 경고함
- type 4
- 시간 초과 time exceeded
- type 11
- code 0 : TTL 값이 0으로 된 데이터그램은 버려짐
- code 1 : 최종 목적지가 정해진 시간 내에 모든 fragment를 받지 못한 경우
- traceroute 프로그램으로 패킷 경로 추적 가능
- 파라미터 문제
- type 12
- 라우터나 목적지 호스트가 생성할 수 있는 메시지
- code 0: 헤더 일부에 문제 발생 → 포인터 필드의 값이 문제가 생긴 부분의 바이트를 나타냄
- code 1 : 옵션 일부가 없는 경우
- redirection
- type 5
- 헤더 나머지 부분 16비트 : 타겟 라우터 ip 주소
- code 0 : network specific route 로 리디렉션
- code 1 : host specific route로 리디렉션
- code 2 : 특정 타입의 서비스 기반 network specific route로 리디렉션
- code 3 : 특정 타입의 서비스 기반 host specific route로 리디렉션
- 데이터 섹션에 문제가 있는 패킷을 찾기 위한 정보 담고 있음
- 항상 원 송신지로 에러 메시지 report
- 응답 메시지 X, first fragment가 아닌 데이터그램에 대해서, 멀티캐스트 주소 가지고 있는 데이터그램, 특별 주소 가지고 있는 데이터그램에 대해서는 에러 메시지 만들어지지 않음
→ query
- 호스트가 라우터로부터 특정 정보를 얻을 수 있도록 돕는 메시지
- 데이터 섹션에 쿼리 타입 기반으로 추가 정보를 담고 있음
- 8 바이트 헤더
- type 8 or 0 : echo request or reply
- echo request → 호스트 또는 라우터가 보낼 수 있음
- echo reply → request 메시지를 받은 호스트 또는 라우터가 보냄
- 네트워크 관리자가 ip 프로토콜 동작 확인을 위해 사용
- host 도달 가능성을 테스트하기 위한 메시지
- 데이터 섹션에 보낸 메시지를 그대로 응답 받음
- ping 프로그램에서 사용
- type 13 or 14 : timestamp request or reply
- 데이터그램이 돌아다니기 위해 필요한 round trip time을 결정하기 위한 요청 응답 메시지
- original time stams, recevie, transmit timestamp
- 각 필드는 ms 단위로 표현되는 숫자 가지고 있음
- type 17 or 18 : address mask request or reply
- requesta 메시지는 address mask in data section = all 0s
- reply에 얻고자 하는 mask 주소 담김
- type 10 or 9 : router solicitation or advertisement
7. Unicast routing
7.1 least cost routing
- 가중치 그래프로 모델링된 인터넷 → 최소 비용 경로 찾기
- N 개의 라우터가 있다면 각 라우터마다 N-1 least cost 경로가 있음
- 전체 인터넷에 필요한 least cost path는 n*(n-1)개
- least cost trees : 전체 노드를 방문하는 그래프
7.2 distance vector routing
- 어떤 두 노드 사이의 거리가 최소 = 최소 비용
- 벨만 포드 공식 : souce x - destination y 사이의 최소 비용(거리) 찾는 공식
- 초기화 : 각 노드마다 자기 자신과의 거리 0, 이웃 노드까지의 거리의 알 수 있음, 나머지 모르는건 무한대로 표시 (각 노드마다 테이블 가짐)
- sharing : 노드는 이웃의 테이블 모름, 최선의 방식은 전체 테이블을 전달하고 받은 쪽이 알아서 사용하는 것, 거리 벡터 라우팅에서는 각 노드가 자신의 이웃노드들과 라우팅 테이블을 주기적으로 또는 변경이 있을 때 공유
- updating
- two node loop instability
- define infinity : 각 노드가 1이고 최대 16으로 제한
- split horizon : 각 노드가 테이블 일부를 보냄
- poison reverse : Do not use this value; what I know about this come from you
- three node instability
7.3 link state routing
- 최소 비용 트리, 포워딩 테이블 생성을 위한 라우팅 알고리즘
- link state database (LSDB)
- 각 네트워크 (노드)에 대한 연결 상태 정보를 담고 있는 map
- building LSDB = flooding
- 각 노드는 이웃노드에 인사 메시지 보내면서 자신의 식별자와 연결 비용 알림 (LS 패킷) + sequence number (새로운 버전의 패킷이 만들어질때마다 증가하는 숫자)
- 각 노드는 LSP를 만들고 각 인터페이스로 보냄
- LSP를 받은 노드는 기존의 패킷과 비교, sequence number를 통해 이미 가지고 있는 것인지 아닌지 판단
- 오래된 LSP는 버리고 새로운 것을 유지하고 이것의 복사본을 받은 곳을 제외한 다른 인터페이스로 보냄
- 모든 새로운 LSP를 받은 후 각 노드는 LSDB를 완성
- 최소 비용 트리 생성
- 모든 LSP를 받은 후 각 노드들은 전체 LSP 복본을 가지고 있음
- 최단 경로 트리가 필요
- 다익스트라 알고리즘 사용
7.4 path vector routing
- 최소 비용 라우팅 기반 아님
- ISP들 사이의 패킷 라우팅을 위해 설계된 알고리즘
- spanning tree
- source → 모든 destination 경로는 best spanning tree에 의해 결정
- 만약 하나 이상의 목적지로 라우팅한다면 source는 자신의 정책으로 최적의 경로 찾아야 함
- source는 동시에 여러개의 정책 적용할 수도 있음
- 일반적인 정책 중 하나는 방문하는 노드의 수가 최소인 정책
- 각 source 마다 자신의 spanning tree 생성 - 최소한의 노드만을 거쳐서 목적지로 도달할 수 있게 하는 정책 적용
- spanning tree 만들기
- 노도 시작 → 이웃 노드 정도 기반으로 거리 벡터 생성
- 노드는 이웃노드로 인사 메시지 보내서 정보 얻음
- 각 노드는 이웃 노드로부터 얻어서 초기화한 정보 전체를 이웃 노드로 보냄
- 각 노드는 이웃으로 부터 또 받아서 업데이트함 → 여기서 업데이트는 새로 받은 정보 중 최선의 경로로 선택하는 것
7.5 unicasting routing protocols
- unicasting : 하나의 송신지 → 하나의 수신지
인터넷
- 모든 연결 중추 backbone
- provider network → 모든 연결 객체들 = ISP Ineternet service provider
- AS (autonomous system) 내부의 라우팅 = intradomain routing
- AS 간 라우팅 = interdomain routing
RIP (Routing informaton protocol)
- distance vector 알고리즘 사용
- 라우터는 포워딩 테이블 전체를 응답 메시지에 담아 보냄
- 받는 쪽은 hop 개수 하나 추가
- 수정된 포워딩 테이블의 각 경로 = received route
- 오래된 포워딩 테이블의 각 경로 = old route
- 새로 받은 포워딩 테이블이 추가적인 정보를 가지고 있거나 더 작은 비용을 가지고 있는 경우 수정
- 새로운 테이블의 값이 더 크지만 다음 라우터 값이 같은 경우 새로운 것 선택
- intradomain routing , AS 내부
- cost = hop count
- 송수신지 사이의 라우터의 개수 → 맥스가 16, 15까지 나타낼 수 있음
- 애플리케이션 계층에서 실행되지만 네트워크 계층을 위해 포워딩 테이블 생성
- UDP , 520 포트 사용해서 라우팅 업데이트
- RIP 메시지 : request, response
- command : 1 - request, 2 - response
- version : 오늘날은 2
- family : TCP/IP 프로토콜인 경우 2
- tag : AS 에 대한 정보
- network address : 목적지 주소
- subnet mask : prefix 길이
- next hop address : 주소 길이
- distance : 목적지까지 거쳐야 하는 hop의 수
- 타이머
- periodic : 일반적인 업데이트 시간 알려줌 25~35 중 랜덤, 감소하다가 0에 도달하면 업데이트 메시지 전송
- expiration : 경로의 유효성 알림, 문제가 있다면 hop count를 16으로 만듦
- garbage collection : 경로정보가 invalid → 즉시 제거 X 16값을 가지고 계속해서 advertise, 동시에 GC 타이버가 120으로 맞춰짐
- 숫자가 0에 도달하면 route 제거
OSPF (open shortest path first)
- link state 알고리즘 기반 LSDB
- 각 연결마다 가중치 부여
- 각 노드마다 다익스트라 알고리즘을 사용해서 shortest path tree 생성한 후 포워딩 테이블을 만듦
- AS를 area로 나눔
- area = AS 내에 포함된 네트워크, 호스트, 라우터의 집합
- area border router 는 다른 area로 보내는 정보를 요약함
- 모든 area들은 백본에 연결되어야 함 → broken → 가상 연결 생성
- router link
- 노드에 라우터 존재 알림
- 포인트 투 포인트 링크는 라우터 두개가 라우터나 다른 호스트 없이 둘만 연결
- transient link는 여러 라우터가 붙는 네트워크
- stub link 는 오직 하나의 라우터에 연결되는 네트워크
- network link
- 네트워크를 노드로 알리는 것
- 네트워크는 자기 자신을 알릴 수 없기 때문에 라우터 중 하나가 설계된 라우터로 할당되어야 함
- 즉, 설계된 라우터 = 네트워크 노드
- summary link to network
- area border router 가 수행
- 백본에 수집된 연결 요약 알리거나
- 백본에 연결된 area에 수집된 요약 정보 알림
- area border router가 area들에게 advertise
- summary link to AS
- AS router에 의해 수행
- 백본 영역에 연결된 AS로부터 요약 알림
- AS router가 area 로 advertisement
- external link
- AS router에 의해 수행
- AS 외부에 하나의 네트워크 존재 알림
- AS router가 area 또는 외부 네트워크에 advertisement
- OSPF 메시지
- 일반적인 헤더 : 모든 메시지에 사용
- link state general 헤더 : 일부 메시지에만 사용
- 타입
- hello message : 라우터가 이웃에 자신을 알리기 위해 사용
- database description message : hello에 대한 응답으로 전체 LSDB완성을 위해 새로 들어온 라우터를 넣음
- link state request message : 라우터가 특정 링크 상태 알기 위해 보냄
- link state update message : LSDB 생성을 위해 사용
- link state acknowledgement : ospf 안정성 생성을 위해 사용
BGP4 (border gateway protocol version 4)
- path vector
- interdomain routing protocol (AS간)
- external BGP4 각 border router에 설치
- eBGP 이 설치된 border 라우터가 TCP 연결을 생성하려고 하는 경우 (179 포트 넘버) → 각 경우마다 순환되는 숫자가 보내는 라우터 정의
- 예를 들어 AS1의 border router인 R1이 R5에게 자신의 AS1에 연결된 라우터들을 알림
- internal BGP4 모든 라우터에 설치
- BGP의 역할은 AS 내부 라우터들이 자신의 라우팅 정보를 주장하는 것을 돕는다.
- intradomain (AS 내부 네트워크) 포워딩 테이블 (RIP, OSPF)에 다른 AS 정보 연결
- path attribute
- interdomain 라우팅은 intradomain에 비해 더 많은 정보 필요
- o, p , t, e = 맨 앞에 4비트 , 뒤 4비트는 모두 0
- optional bit : 속성이 옵션인 거면 1
- partial bit : 옵션인 속성이 전송중 손실되면 1
- transitive bit : 속성이 전송가능하면 1
- extended bit : 속성 길이가 2 바이트면 1
- path attribute
- type1 ORIGIN : well known 의무 속성, 라우팅 정보 source 정의
- 1 RIP or OSPF , 1 BGP, 3 unknown
- type2 AS-PATH : 의무, 도달할 수 있는 AS 리스트
- type 3 NEXT-HOP : 의무, 데이터 패킷이 나아가야할 다음 라우터 정의
- type 4 MULTI-EXIT-DISC : 선택적, 전송 불가 속성
- type 5 LOCAL-PREF : well known discretionary , 집단 정책에 기반, 관리자가 설정, 지역 선호 부여
- type 6 ATOMIC-AGGREGATE : well keno discretionary, 목적지 프리픽스 정의, 오직 하나의 목적지
- type 7 AGGREGATOR : optional transitive, 목적지 프리픽스가 aggregate라고 강조
- type1 ORIGIN : well known 의무 속성, 라우팅 정보 source 정의
- 메시지
- open message : 이웃 관계 형성, BGP 실행하는 라우터가 TCP 연결을 열고 이웃에 보냄
- update message : 이전에 이미 알린 목적지 라우터로 새로운 목적지 알릴 때 사용
- keepalive message : 주기적으로 살아있음을 알림
- notification : 에러 상태 감지하거나 라우터 닫을 때 알림
8. Multicasting
- 하나의 송신지 → 여러 목적지 (목적지 그룹)
- 하나의 송신지에서 하나의 패킷으로 시작하는데 이를 라우터가 목적지만큼 복제하는 것
- multiple unicasting은 하나의 송신지가 여러개의 패킷을 보내는 것이므로 멀티캐스팅과 다른 것
8.1 멀티캐스트 응용
- 분산 데이터베이스에 접근 : 사용자의 요청이 모든 분산된 데이터베이스로 멀티캐스트됨
- information dissemination : 소프트웨어 모든 구매자들에게 업데이트 소식 알리는 것
- teleconferencing : 텔레컨퍼런스에 참가한 사람들 모두 동시에 같은 정보를 받아야 함
- distance learning
8.2 Broadcasting
- one to all communication : 호스트가 인터넷에 있는 모든 호스트에게 패킷을 보냄 → 대역폭 양이 너무 방대해서 실제로 잘 사용되지 않음
- 부분적 브로드캐스팅 사용 : 일부 피어투피어 애플리케이션에서 모든 피어들에게 접근할 때 브로드캐스팅 사용
8.3 멀티캐스트 주소
- 멀티캐스트 주소가 수신자 그룹을 정의
- 목적지호스트는 유니캐스트와 멀티캐스트 데이터 그램을 구분해야 하기 때문에 IPv4는 주소 블럭을 할당
- 모든 클래스 D 주소는 멀티캐스트 주소에 사용됨 224.0.0.0 ~ 239.255.255.255 (224.0.0.0/4) → 앞에 4비트만 고정된 프리픽스도 뒤 28비트로 그룹 식별
- 멀티캐스트 블록의 서브 블록
- local network control block 224.0.0.0/24 : 네트워크 내부에서 사용되는 멀티캐스트 라우팅 프로토콜에 할당
- internetwork control block 224.0.1.0/24 : 인터넷 전체에서 할당
- source specific multicast block 232.0.0.0/8 : IGMP 프로토콜에서 사용
- GLOP block 233.0.0.0/8 : AS 내부에서 사용, 주소 범위 정의
- adminstratively scoped block 239.0.0.0/8 : 인터넷의 특정 area에서 사용되는 블럭
- internet group management protocol
- 그룹 멤버들의 정보를 얻기 위해 사용하는 프로토콜
- 네트워크 계층에서 정의
- IGMP 메시지는 IP 데이터그램에 캡슐화됨
- query message : 라우터가 주기적으로 붙어있는 모든 호스트에게 보내는 메시지, 그룹 내 멤버들의 interest를 보고하도록 요청
- general query message : 어떤 그룹에서든 멤버에 대한 질문 요청, 224.0.0.1, 모든 라우터들은 이 메시지를 받으면 이 메시지가 이미 왔고, 다시 보내는 것을 자제하도록 알림
- group specific query message : 라우터카 특정 그룹에 연관된 멤버에 대한 질의, 라우터가 특정 그룹에 응답을 받지 못하거나 특정 그룹에 비활 멤버가 있는 것을 확인하고자 할 때 보냄
- source and group specific query message : 라우터가 특정 그룹과 관련있는 멤버에 대해 묻는 메시지, 특정 소스로부터 메시지가 왔을 때
- report message
- 호스트가 쿼리 메시지에 대한 응답으로 보내는 것
- 메시지는 레코드 리스트를 가지고 있음
- 각 레코드는 해당하는 그룹 식별자와 호스트가 메시지를 받길 원하는 모든 호스트에 주소 정보를 가지고 있음
- 메시지는 멀티캐스트 주소 224.0.0.22에 데이터그랩으로 캡슐화
- query message : 라우터가 주기적으로 붙어있는 모든 호스트에게 보내는 메시지, 그룹 내 멤버들의 interest를 보고하도록 요청
- 패킷의 목적지는 하나의 그룹을 의미함
- 그 그룹은 인터넷에서 하나 이상의 멤버를 의미함
- 패킷에 적힌 목적지와 송신지 주소 모두를 보고 포워딩
- 송신지 하나당 하나의 트리
- shortest path tree
- reverse path forwarding
- 그룹이 하나의 트리 공유
- minimal spanning
- center based trees
9. Intradomain routing protocol (AS내)
9.1 DVMRP- distance vectore multicast routing protocol
- RIP 확장
- source-based tree 접근법 사용
- 라우터가 세가지 알고리즘 사용
- RPF Reverse Path Forwarding
- 송신지가 라우터에 전달한 unicast shortest path 정보에 의존
- RPB Reverse Path Broadcasting
- RPM Reverse Path multicasting
- RPF Reverse Path Forwarding
- multicast open shortest path first
- 다익스트라 알고리즘 사용해서 최단 경로 트리 생성
- 라우터는
- protocol independent multicast
- 특정 유니캐스트 라우팅 알고리즘에 의존 X
- 두가지 멀티캐스트 분산 시나리오
- PIM-DM : protocol indenpendent multicast dense mode, 그룹 멤버들이 밀집된 상태, 대역폭이 충분한 상태
- PIM-SM ... sparse mode, 그룹 내 멤버들이 퍼져있는 상태로 대역폭이 충분하지 않은 상태
10. IPv6
10.1 pakcet format- 주소 128 비트 = 16 바이트
- version 4 bit = 6 = 0110
- traffic class : 데이터그랩 우선순위 식별
- flow label : 같은 흐름 내에 있는 데이터그램 식별 → 연결 지향 프로토콜로 사용
- payload length : 2바이트, 헤더를 제외한 IP 데이터그램 길이 정의
- next header : 첫번째 확장 헤더의 타입 또는 상위 계층 프로토콜 식별
- hop limit : 8 비트, TTL 필드와 같은 목적
- source and destination address : 16 바이트 = 128 비트
- payload
- 오직 송신지에 의해서만 fragment 될 수 있고 라우터는 안됨
- 재조립은 목적지에서 수행
- extension header → fragmentatoin, authentication, extended security payload 등이 나타남
- 128 비트 → 4*8 16진수
- 앞 부분의 0들은 생략될 수 있음
- 계층적 주소 사용
- slash, CIDR 표기법 허용
- ** CIDR / 뒤에 고정 프리픽스 개수 나타내는 표기법 ㅜ
- 주소 공간이 v4에 비해 2^96 배 커짐 → 2^128개의 주소 수용 가능
- 주소 타입 : unicast, anycast, multicast
- unspecified address : 오직 하나의 주소만 가지고 있는 서브 블럭, 호스트가 자신의 주소를 몰라서 묻기 위해 보내고 싶을 때 사용하는 것 000::/128 = 128 전체 다 0
- loopback address : 하나의 주소 0000::1/128 = 000...001 (마지막만 1)
- compatible address : 다른 컴퓨터로 메시지를 보내고 싶을 때 사용 0000::/96 → 다 0인데 뒤에 32비트로 버전4 주소 나타냄
- mapped address : 컴퓨터가 이미 버전6으로 마이그래이션 한 상태에서 아직 버전4를 쓰는 컴퓨터로 보내고 싶을 때 사용 0000::FFFF/96 → 다 0 인데 뒤에 16비트 전체 1 + 뒤에 32비트로 버전4 주소 나타내기
- unique local block
- link local block
- IPv6를 사용하는 컴퓨터가 IPv4를 사용하는 지역을 지나 서로 소통하고 패킷을 전달하고자 할 때 사용하는 방식
- 인터넷의 대부분이 버전6으로 이동하고 일부만 4를 쓰고 있을 떄 필요한 전략
- 버전 6 구간을 사용하다가 4는 헤더 변환을 수행하고 지역 또는 호스트에 접근
11. ICMPv6
- internet control message protocol version 6
12. Middleboxes
- network appliance, network function
- stateful → 모든 패킷과 연결에 대해 정교한 데이터를 업데이트 하고 가지고 있음
- 패킷에 대한 복잡하고 다양한 오퍼레이션 수행
- 안전하고 성능 좋음
- NAT
- application specific
- caches
- load balancser
- firewalls, IDS
- billing and usage monitoring
- asset tracking
- ex) Intrusion presentation system → 모든 연결들을 모니터링하고 이상한 활동을 감지함
- ex2) web proxy → 성능 향상 appliance: 대역폭 시간 등 향상을 위해 웹 컨텐츠 캐싱
- 최근 트랜드
- proprierary hw
- whitebox hw, 오픈api로 구현
- nfv (network function virtualization)
- tunneling
- source based tree
'컴퓨터 공학 > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] acronym 총정리 (0) | 2021.05.31 |
---|---|
[Python3/컴퓨터 네트워크] 소켓 프로그래밍 : 파일 전송 프로그램 (0) | 2021.05.03 |
[Python3/컴퓨터 네트워크] 소켓 프로그래밍 : 멀티 쓰레드 (0) | 2021.05.03 |
[컴퓨터 네트워크] Transport Layer 전송 계층 기본 개념 정리 (0) | 2021.05.02 |
[컴퓨터 네트워크] Application layer 애플리케이션 계층 기본 개념 정리 (0) | 2021.05.02 |