장치들간 통신에서 줄이 여러 개가 생긴 상황에서 패킹을 어디로 전달할지 정하는 역할이 중요해졌다. 또한 커다란 네트워크끼리의 연결의 (inter - networking -> internet) 인터넷이 발생하였다. 줄이 여러 개가 되니 주소가 중요해졌다. 따라서 각각의 컴퓨터가 고유하게 분별 가능하게 만드는 어드레싱인 IP 가 발생하였으며 이에 대해 알아보도록 하자.

Concept

Host-to-Host (3계층). 아래 그림 같이 A->B 로 전달하기 위해 여러 라우터를 거친다. 이때 각 라우터에서 최종 위치까지 패킷을 전달하기 위해서 어떤 경로를 사용해야할 지 결정해야한다.

image

Packetizing

가장 중요하지만 단순한 기능이다. encapuslation, packetizing 으로 볼 수 있다. 메세지라는 단어보다 packet이라는 단어를 사용하며, 소스어드레스, 데스티네이션 어드레스를 패킹하고 있다. 따라서 라우터가 수 많은 줄들 중에서 어떤 것을 선택할 지 패킷안에 주소 내용을 보고 전달할 수 있다.

Forwarding and Routing

단순한 table 구조를 가지고 있다. 아래 테이블에 따라 A가 오면 1번으로, B가 오면 2번으로 내보낸다. 내보내기위한 규칙과 어디로 내보낼 것인지 두 가지가 항상 필요하다. 각 라우터들은 모두 테이블을 가지고 있으며 패킷의 정보를 보고 어디로 보낼 지 결정한다.

image

Datagram and Virtual Circuit

연결 설정을 할지 말지에 따라 Datagram 과 Virtual Circuit 으로 나눌 수 있다. 연결 설정 없이 데이터를 바로 보낸다면 Datagram, routing. 데이터 보내기 전에 여러 신호를 주고 받으면서 연결 설정 해제한다면 Virtual Circuit, forwarding 으로 볼 수 있다.

Datagram

IP 소프트웨어를 사용하는게 라우터이며 이걸로 연결된게 인터넷이다.

connectionless 는 데이터를 받고 최적의 경로라고 생각하는 쪽으로 보내는 것이다. 거시적으로는 각각의 라우터들이 독립적으로 판단해서 보낸다. 길을 내보는걸 결정할 때 주변의 정보를 수집하긴 하지만 전적으로 각각의 라우터가 결정한다. 연결 설정 해제 과정이 없기에 기존의 알로아, 이더넷처럼 보내고싶으면 바로 보낸다.

따라서 지금 받은 메세지에 있는 정보만으로 경로를 결정한다. 옛날에 어떻게 했는지 고려안한다는 뜻이다. 매 패킷은 독립적. 패킷에 있는걸로만 결정해서 보낸다.

때문에 a->b 3개의 메세지를 보내면 1번 메세지를 받은 라우터는 1번 경로, 2번 메세지를 2번경로 3번 메세지를 3번 경로로 보낼 수 있다.


연결설정 해제가 없는 connectless 데이터그램의 예시이다. 패킷을 전달하는 장치를 라우터, 패킷을 받아 전달하는 동작을 패킷 스위칭이라고 한다.비 연결형 방식이며 패킷 스위치로 구성되어있다.

여기서 R1이 데이터들을 같은 곳으로 보내지만 경로가 다 다르다.

이유는 R4가 고장나면 R1은 R4를 메세지를 보낼 후보에서 제거하기에 R4가 고장이 나더라도 전체적인 경로는 정상적으로 작동할 수 있다. 생존성을 최우선으로하는 네트워크에 적합하다고 할 수 있다.

image

포워딩 테이블이다.

패킷을 받아서 안에 있는 정보만으로 어디로 내보낸다.

인풋은 지금 받은 패킷의 정보 (데스티네이션 어드레스), 출력은 어디로 보낼지 interface나 port가 존재한다.

위에서 언급했듯이 output interface는 그때그때 다를 수 있다.

image

Virtual Circuit

Circuit 은 보통 피지컬로 연결된 1계층을 이야기한다. 반면 버츄얼 서킷은 로지컬하게 연결된 것이다.

connection oriented 는 패킷이 전달되기 전에 커넥션을 모두 만들고 모두 전달되면 해제된다. 이미 어떤 장치를 통과할 지 정하기 때문에 데이터들은 모두 같은 줄을 통해 이동한다. 이때 소스 어드레스, 데스티네이션 어드세스로만 전달이 가능하지만 성능 향상을 위해 라벨을 사용한다.


패킷 스위치는 패킷을 받아서 내보내지만 어떻게 내보내는 지 차이가 있다. 여기서는 순서대로 리시버에게 한줄로 전달되는 것을 확인할 수 있다.

image

포워딩 테이블이다.

각 포트에 라벨이 있으며, 줄이 온 방향을 인터페이스, 포트라 부른다. Source Address, Destination Address, Data 로 구성되어있다.

라벨 L1 은 네트워크 레이어에서 준 것이고 줄에서만 의미가 있다. 2번 포트로 내보내면서 라벨을 L2로 바꾼다.

따라서 데이터그램에서 판단부분이 없어지는 것을 확인할 수 있다.

image

아래는 연결 설정, 해제 후 데이터를 보내는 예시이다.

처음 연결 설정을 하기 위해 A -> B 로 패킷을 보낸다. 처음에는 라벨이 비워진 상태에서 R1을 지나면서 R1의 라벨을 채우고 본인이 본인의 라벨을 정한다. 이제 R3로 보내면서 다시 재라벨링 후 R4, B로 이동하게 된다.

image

이제 B에서 77이라는 라벨링을 붙여 대답한다. 다시 A의 경로로 되돌아오면서 모든 라벨링이 채워지고 연결이 된다.

image

Virtual-Circuit에서는 처음 연결 때 한번만 라우터들의 경로를 고민하면 된다. 이후 데이터를 보낼 때 라우터들은 라벨링만 바꿔 정해진 포트로 내보내면 되니 속도가 빨라진다.

image

Network Performance

3계층은 너무 많은 장치, 기술이 들어가 수치, 성능에 대한 이야기가 많은 계층이다. 성능을 평가하기 위한 정량적인 지표로는 딜레이, 처리율, 손실률(delay, throughtput, packet loss) 가 대표적이다.

  • congestion control : 컨제스쳔이 발생하면 패킷로스가 발생한다. 그 결과 처리율도 줄어들고, 패킷로스도 늘어나고 재전송해야되니 딜레이도 늘어난다.

Delay

Source Host 부터 Destination Host까지 Packet이 전달될 때 걸리는 시간이다. 크게 4가지 요소가 크게 영향을 미친다.

  1. transmission delay
    • 이더넷에 표준과 전송속도가 정해져있다. 라우터가 패킷을 link 로 밀어내는 속도이다.
  2. propagation delay
    • 사용하고 있는 물리적 소재에 따른 지연이다. 구리선, 광섬유 등 어떤 소재를 사용하느냐에 따라 다르다.
  3. Processing dealy
    • 네트워크 장치는 HW, SW로 되어있으므로 장치 속에서의 지연을 말한다.
  4. Queuing delay
    • 컴퓨터속에서 Queue에서 데이터가 대기하는 동안의 지연이다.

Throughput

입력이 됐을 때 얼마나 처리할 수 있는 지 측정한느 것이다.

  1. data rate
    • 현재 존재하는 줄에 얼마의 속도를 제공할 수 있는 지이다. 실제 숫자가 산출된다.
  2. Loss
    • 패킷을 밀어넣었을 때 얼마나 버려졌는지 계산하는 것이다. 입력을 100했는데 끝에 30만나온다면 0.3 throughput이 된다.

아래와 같이 줄이 3개일 때 전체 속도는 가장 속도가 낮은 줄에 맞춰진다. 이때 속도가 늦은 부분을 Bottleneck이라 하며 이것을 줄이는 것이 성능 개선의 관건이다. 사실상 A -> B로 가는 모든 줄을 들여다 볼 수 없으니 중간 영역은 통신사업자에게 이정도의 속도는 꼭 만족해야한다고 요구하는 것이 일반적이라고 한다. 또한 볼 수 없는 중간 부분을 Backbone이라한다. 하나의 줄을 여러 컴퓨터가 쉐어하면 연결 방식과 사용 방식등을 계산해서 문제없는 네트워크 구축이 중요하다.

image

Packet Loss

보낸 메세지 중에서 사라진 메세지에 대한 수치이다. MAC 계층에서도 재전송 관련해서 이야기가 나왔다.

여기서는 장치 안에. 한곳으로 데이터가 몰릴 것을 예상해서 버퍼를 가지고 있다. 데이터가 오면 수신 버퍼에 저장된다. 문제는 감당할 수 없는 데이터가 들어오면 버퍼가 넘치면서 loss 가 발생한다는 것이다. 3계층에서 버퍼가 오버플로우 될 수 있으므로 4계층에서 또 다시 에러검출을 한다.

이때 버퍼가 오버플로우 되는 현상에서 컨제스쳔 컨트롤이 일어난다.

Congestion Control

스위치나 라우터가 너무 많은 데이터를 받거나 특정 링크 한쪽으로 데이터가 몰릴 때 필요하다.

주로 네트워크 계층에서 발생하지만 버츄얼 서킷 방식을 제외하고는 4계층에서 주로 다룬다.

본인들의 서비스에서 얼마만큼 loss를 감당할 수 있는지 계산하고 정의해야한다.

image

Addressing

4계층 TCP에서 연결 설정을 하기 위해서 꼭 필요한 데이터이다. 어드레스 필드에 32비트, 4바이트를 사용하며 기본적으로 인터넷은 중복되지 않는 고유의 주소를 가진다. 컴퓨터의 주소가 아니라 줄의 주소이다! 무선랜, 이동통신이 가능하다면 IP어드레스를 두개 가질 수도 있다.

서버는 줄이 죽는걸 예방해서 두 개 이상 꽂는데 각 줄에 IP 어드레스가 부여된다.


IP주소를 부여할 때는 큰 뭉탱이로 짤라 부여한다. 나라별로 자르고 기관에 나누고 건물마다 나눠 Prefix 를 가지고 내부에서 Suffix 를 나눠 주소를 부여한다.

따라서 32비트의 IP 주소는 network에 대한 주소가 앞을 차지하고, 호스트, node들의 주소의 suffix는 부여받은 prefix만 지키면 알아서 설정할 수 있다.

image

prefix를 몇 비트로 해야되나라는 의문이 존재한다.

가장 단순한 class full. A.B.C.D 로 8비트씩으로 나누고 prefix를 단순하게 정한 것이다. class ABC만 실제로 의미가 있다.

A에서는 24비트를 마음대로 쓸 수 있기 때문에 내부에서 주소 많이 할당해줄 수 있다.

하지만 세계적으로 점점 더 IP주소가 많이 필요해지고 32bit 로는 부족해지자 다른 방안을 제시했다.

image

suffix를 고정시키지 않는다면 몇 비트가 suffix인지 알려주기 위한 방식이 필요했다. 따라서 주소 이후에 prefix의 길이를 추가적으로 제공했다.

/12 면 앞쪽에 12비트를 네트워크 주소로 쓰겠다는 뜻이다.

image

ISP, Internet Service Provider

조직 안에 라우터들을 뜻한다. 대부분 건물 단위로 존재하는데, 어느 건물에 IP 주소를 부여할지 pool을 다시 자르는 것이다.

block마다 어느 조직 단위로 주소를 할당해줄 수 있따.

ISP를 거쳐야하기 때문에 prefix는 이미 관제된다. 따라서 내부적으로는 prefix를 알 필요가 없기에 suffix부분인 것만으로 구분가능하다.

그림과 같은 예시에서는 이후에 internet으로 내보낼 때 마지막 2 비트는 어떤 형태든 자신의 조직이므로 24비트만을 따라오게 만들면 된다.

image

DHCP

호스트나 노드에 IP 주소를 자동으로 받아오는 방법이다. IP Address를 빌렸다 반납한다. Client가 IP Address를 요청한다. 이때 주변 모두에게 말하니 255.255.255.255 의 destination address 를 가진다. 요청을 받은 서버가 IP 주소를 하나 골라서 오퍼를 보낸다. Lease time은 3600초 동안만 빌려주겠다는 뜻이다. Client는 오퍼들 중 하나를 골라 Request, Server는 Ack를 보내주며 확정짓는다.

image

NAT, Network Address Translation

IP 주소가 너무 많이 필요해지자 아끼기 위한 방법이다. public address 와 private address 를 가진다. 내부에서는 내부에서만 의미있는 IP 주소를 사용하다가 필요시에 public 으로 변환해주는 것이 NAT 이다.

아래 그림에서 NAT 라우터는 200.24.5.8 이라는 IP주소를 가지고 있다. 172… 는 Private안에서만 의미있고 바깥 인터넷과 1대1 대응시켜준다. 인터넷이 Private 내부로 들어올 때 누구에게 전달해야할지 정할 수 없으니 더 많은 정보를 봐야하는데, IP Frame 안에 있는 정보를 통해 알 수 있다. 문제는 표준이 없다는 것이다. 결국 많은 걸로 table을 정리해야하며 이를 위한 고유 알고리즘이 많다. 결국 key 값을 만들어내는게 핵심 기술이고 만약 ports넘버를 보면 PAT (Port address translatio) 이다!

image

IP Protocol

TTL(time to live)는 무한 루프나 너무 멀리가는 것을 방지하기 위해 라우터를 지날 때마다 -1하고 0이되면 데이터를 삭제시킨다. 맨 위에는 IP버전 정보, 헤더 렝스, 서비스 타입, 어떤 특성인지 나타낸다.

image

서로 다른 네트워크를 연결 할 때 레이어들 중 최소 패킷 사이즈를 맞춰준다. 패킷을 쪼개고 offset field. 첫번째 바이트를 0, 다음은 8로 나누어 offset. 모든 패킷들은 offset만 다르다. 계속 쪼개져도 상관없고, 오래된 네트워크를 통과할 때 알아서 쪼개져서 통과된다.

데이터를 쪼개기 때문에 bottle neck 에서 매우 효율적이다.

image

보안

IP보안은 성능을 굉장히 깎아먹어서 필요한 부분에만 사용된다.

  • ICMPv4 : 내용의 변질과 잘 동작하는지 감시하기 위한 프로토콜, 인터넷을 컨트롤하는 명령어를 실어 나르는 프로토콜이다. 선이 살아있을까? 갈 때까지 지연은 얼마나 걸릴까?

IP 메세지를 받고 헤더를 포함해서 ICMP에 다시 집어넣고 헤더만 붙여서 다시 돌려줌. 루프백 -> ping, traceroute

  • Ping : 도메인의 TTl, time 을 알 수 있다. 패킷로스가 없음, 상대방이 살아있음, 중간에 문제없음, 평균-최대-최소 시간, 로스율을 알 수 있음.
  • TraceRout : TTL을 1부터 늘여가면서 보냄.ping을 1부터 n까지~ 중간에 어떤 장치가 죽었는지 알 수 있다.

업데이트:

댓글남기기