목차
큰 네트워크 단위를 다룸 WAN
sender 송신자 : 세그먼트를 Header 데이터그램(패킷 생성)으로 캡슐화 하고, Data link 계층으로 전달
receiver 수신자 : 세그먼트를 transport 계층으로 전달
라우터 대 라우터 통신 → LAN(프레임 화 된 상태)
forwarding, routing 구분
- forwarding 포워딩 : 패킷을 라우터 데입력 링크에서 적절한 라우터 출력 링크로 이동
- 1대의 라우터로 input, output 제어.
- 패킷이 라우터 내에서 어떻게 이동할지 결정
- routing 라우팅 : 소스에서 목적지까지 패킷이 따르는 경로 결정
- 여러대 라우터.
- 전체 네트워크 상에서 패킷의 이동경
Data plane VS Control plane
네트워크 장치가 패킷을 처리하는 두가지 주요 방식
- Data plane 전송부 : 라우터에 들어온 데이터를 여러 output 중에서 어디로 데이터그램을 보내야 하는지 결정
- 라우터 마다 스위치로 포워딩 개념 사용
- 패킷의 헤더에 Ip address 확인
- Control plane 제어부 : 네트워크의 전체적인 동작을 제어하고 관리하는 역할. 장비를 제어하는 뇌
- 소스 호스트에서 목적지 호스트까지 경로를 따라 데이터그램이 어떻게 라우팅되는지를 결정
- WAN, 라우팅, 라우터끼리 output 통신
- Per-router control plane : 개별 라우터(1개)가 독립적으로 컨트롤 프레인 기능 수행
- 분산 라우팅 알고리즘
- 변화에 유연, 최적의 경로찾기에는 복잡
- Software Defined Networking (SDN) control plane :
- Control, Data plane 제어부와 전송부 분리
- 중앙집중화 된 원격 컨트롤러에서 라우터에 포워딩 테이블을 계산하고 설치
- remote controller : 수많은 라우터를 전체 관리하는 역할
- control agent : 각 라우팅 내부 장비. remote controller에 패킷 및 상태 정보 보고
Router architecture overview
switching fabric
input, output 매칭, 연결, 매핑. 물리적 중간역할. 빠른속도로 forwarding을 결정함
- star topology 구조 중간자
- 속도 NR = R (bps) X N (input port)
- NR은 라인속도(R)의 N배가 바람직
- 종류 : memory, bus, interconnection network
input port
패킷을 비트 프레임으로 받아와 데이터그램화 하여 받아옴. 헤더필드 ouput port 조회
- input 데이터 받아오는(들어오는) 속도 a
- switch fabric을 통해 output 포트로 전달하는 속도 b
- input port queuing(버퍼)
- 처리속도b가 들어오는속도a보다 빠르면 ok
- 처리속도가 느리면, 임시 패킷 저장소 Queue 큐에 저장하고 FIFO로 전달
- 한개의 output port에 2개의 input이 들어온다면 동시에 처리가 불가능하기 때문에 input Queue에 delay 시킴
- output에도 Queue가 있을수도, 없을수도
- 패킷처리방법
- generalized forwarding(현재) : 패킷 헤더의 여러 필드 정보를 보고 종합적으로 고려하여 전달을 결정한다
- source IP address, destination IP address, Port number, protocol type 등
- destination-based forwarding(과거) : 패킷의 헤더의 많은 정보 중에 dest 목적지 주소만 보고 전달
- forwarding table
- 1번칸 : 200.23.16.0 through 200.23.23.255 범위의 dest address 패킷을 0번 포트로 보낸다
output port
패킷 처리하고 외부전송하는 포트
- output port queuing
- R보다 느리면 버퍼(Queue)가 있어야 delay 발생시 큐에 저장하고, 다음 time stack 때 큐에 저장한 값 가져와서 처리 FIFO
- 망 중립성
- 패킷간의 우선순위 Priority 큐 구조를 따를경우? 우선순의가 높은 패킷을 사용하는 유저는 빠르게, 낮은 패킷은 속도에 제한을 가짐
- 불공평하기 때문에 일반사용자 안에서는 패킷의 우선순위를 사용하면 안된다
- 통신사 ISP 들이 라우터를 구축할때 고성능의 데이터 처리 속도를 보장해야한다
- 법적규제
IP Datagram format
32bit = 4byte
TCP → 세그먼트 헤더 20byte + IP 헤더 20byte = 40byte의 헤더필드가 보장되어야 한다
- ver : IP protocol version number
- 0100 → IPv4 : 사용중 dotted decimal(192.168.1.1)
- 0110 → IPv6 바뀌면 전체 헤더 구조가 바뀌어야한다
- header length : 4bype
type of service- length : 전체 패킷(데이터그램) 길이 16bit 구성 → 0~2^16-1개 → 1500byte로 제한
- 16-bit identifier, flags, fargment offset : IP fragment 단편화. 쪼개서 전송하고 다시 재조합하는 정보
- time to live : TTL 패킷의 수명. 라우팅 될때마다 TTL을 1싹 감소, 0이되면 버려짐. 잘못된 라우팅으로 생기는 무한루프를 방지 → 버퍼, 트래킹 문제점 발생
- upper layer : dest에 도착하면 사용됨. dest의 전송계층의 특정 프로토콜 명시(ex. TCP or UDP)
- header checksum : 헤더 필드 에러 감지 → 재조합, source, dest를 위해
- source IP address(IPv4:32bits, IPv6:128bits)
- destination IP address
options- payload data(variable length, typically a TCP or UDP segment)
IPv4 : 32 bit 구성됨. 점으로 구성된 주소체계
0~255 = 2^8-1 = 11111111 = 255
- 인터페이스 : 호스트와 물리계층 사이의 경계 → 파란색 영역
- 라우터 : 여러개의 인터페이스
- 호스트 : 하나 또는 2개의 인터페이스(ex. 유선인터넷, 무선802.11)
- pc → LAN → router → WAN
서브넷 Subnet : 앞부분 같은 패턴, 라우터 통신 전에 존재
- 233.1.1.*인 세 호스트들의 인터페이스 + 하나의 라우터 인터페이스 : 서브넷 구성
- 233.1.1.0/24 주소 할당 → /24(서브넷 마스크) → 32비트 주소의 왼쪽 24비트가 서브넷 주소 → 나머지 비트는 호스트 부분
IP address | network(subnet) | host |
A class | 8 bit | 24 bit |
B class | 16 bit | 16 bit |
C class | 24 bit | 8 bit |
C class의 00000000 서브넷시작, 11111111 broadcast에 사용되고, 일반사용자는 사용하지 않는다.
(ev. 서브넷이 192.168.1.0/24인 경우 브로드캐스트 주소는 192.168.1.255가 됩니다. 이 주소로 보내진 패킷은 해당 서브넷에 있는 모든 기기에 전달)
CIDR : Classless InterDomain Routing 서브넷파트 가변길이.
- 주소 뒤에 /를 붙여서 사용함. 8로 나누어떨어지지 않아도됨
서브넷 파트와 호스트 파트 구분하는 이유 -> 40억개의 유니크한 주소 제공할 수 있음 -> 무한제공 불가능
A class의 ip값과 C class의 ip 값이 만약에 같을때, 클래스(서브넷)을 통해 구분 함
DHCP : Dynamic Host Configuration Protocol 동적 호스트 설정 프로토콜
- 장치가 네트워크에 유무선으로 연결될때(MAC) 자동으로 IP주소를 할당
- 사용 가능한 IP 주소 풀(pool)에서 IP 주소를 선택하여 해당 장치에게 할당
- 연결 중이거나 켜져 있는 동안에만 주소를 보유하고 끊길 시 주소 재사용 가능 : 리스
DHCP 방식으로 서브넷에 브로드캐스트하면 서버 관리자가 받으면 response로 새로운 IP주소를 넘김
- 클라이언트가 연결되면 DHCP 메시지를 브로드캐스트 한다
- DHCP메시지는 IP주소가 필요하다고 알리는 신호
- 서버는 메시지를 받아서 사용 가능한 IP 주소를 선택하고 클라이언트에 전송(서브넷, 게이트웨이, DNS 서버주소 정보 포함)
- 클라이언트는 해당 IP주소를 쓰겠다고 브로드캐스트한다
- 서버는 사용을 확정짓고 주소를 할당한다
ISP, 국가 단위로 DHCP 방식으로 서브넷 할당받아서 IP주소 제공함. 사용자는 사용료를 제공하여 공간을 할당받음
특정 구분 패턴에 맞게 라우터를 나눠가짐
NAT Network Address Translation : 네트워크 주소 변환 기술 공유기가 사용하는 기술.
- WAN 공인IP를 내부용 LAN 사설 IP주소로 변환하는 과정
- NAT router : WAN과 LAN을 연결하고 control. 1차적 방화벽을 생성한다. 한개의 IP로 여러대의 호스트에 IP를 부여할 수 있다.
- 컴퓨터가 데이터를 보낼때 과정
- sender 컴퓨터 사설 IP가 라우터에 도착하고, NAT에서 dest(Internet)로 나가는 과정에서 사설 source IP 주소를 라우터 공인 IP주소로 변경, 사설 IP와 포트번호 등 테이블로 기록함
- 인터넷 상의 다른 컴퓨터는 이 패킷을 사설 네트워크의 컴퓨터가 아니라 NAT 라우터가 보낸 것으로 인식
- 회신하면, 이 패킷은 NAT 라우터의 공인 IP 주소가 dest 주소. NAT 라우터는 이 패킷을 받고 통과하는 순간 NAT 테이블을 참조 하여 패킷의 목적지 주소를 원래의 사설 IP 주소로 변경합니다.
- switch 같은 역할을 하는 투명성
- 문제점
- NAT 라우터(네트워크 계층)가 port 넘버를 제어하는것 -> transport 전송 계층 관리 ⇒ 레이어간의 독립성 침해
- 공유기에 연결된 사설IP를 사용하는 서버? 외부에서 접근안됨, 사설 IP 주소 식별 어려움 → 포트포워딩
- 포트포워딩 : 수동으로 NAT 변환 테이블 설정해줌
IPv6
32bit(40억개) IPc4 주소공간 다 할당함
40byte 고정길이 (lock of space)
datagram format
- ver : 0110 = IPv6
- priority : 데이터그램 우선순위
- flow label : 전달 세그먼트의 연속성을 판단 (ex. 동영상)
- payload len : 세그먼트 payload 길이
- nexthdr, hop limit : 패킷 수명 1씩 감소 ⇒ 1홉 TTL(Time To Leave)
IPv4 | IPv6 |
checksum 에러검출 | NO checksum |
fragmentation / reassemble | Sender fragmentation / Recever reassemble |
options | No options |
- 에러검출 Data-link, transport 레이어에서 하기 때문에 v6에서는 할 필요가 없다고 판단 → 불필요한 연산 생략
- MTU Maximm Transfer Unit : 데이터를 쪼개는 fragment 최대 단위. v4 라우터에서 쪼개고 모으는거 둘다 처리했지만, v6에서는 sender가 쪼개고, recever가 재조합하는 역할을 나눠하 하나만 함
IPv4 → IPv6 ?
v4에서 v6로 넘어가기 어려움. v4로 모두 설정되어있는 네트워크를 한순간에 v6로 변경하기 어려움
99 : 1
tunneling : mixed IPv4 + IPv6
- v6 데이터그램을 v4 데이터그램에 encapsulate함. v4 헤더에 v6 정보 있음. packet within a packet
Routing 알고리즘
최적 경로 전송 → Dijkstra 다익스트라