• toc {:toc}

Notice

Computer Networks 글은 경희대학교 소프트웨어융합대학 이성원 교수님의 [컴퓨터 네트워크 CSE302] 수업을 기반으로 정리한 내용입니다.

Concept

  • Host-to-Host communication concept

image

  • 네트워크 이전 1, 2계층의 경우 1대1로 연결되는 구조였으나 네트워크 계층에서부터는 둘 이상과 통신한다.
  • 패킷화(Packetizing)
    • 상위 층부터 온 데이터를 peer communication을 하기 위해 정보를 추가하여 패킷을 만드는 것
  • 라우팅(Routing) : 목적지까지 전달되도록 최적의 길을 찾아주는 것
  • 포워딩(Forwarding) : 받은 정보를 다른 곳으로 보내는 것

image

  • Forwarding Table
    • 정보를 어디로 보내야 하는가에 대해 포워드 테이블을 통해서 보낸다.
    • ip 패킷의 키값(Destination address)이 있는데 키값이 포워딩 와 같다면 output interface로 내보낸다.
    • 처리 과정
      • ip 패킷을 받는다.
      • 패킷의 목적지 주소값과 포워딩 테이블의 값과 비교한다.
      • 일치하는 값의 출력 인터페이스에 따라 패킷을 내보낸다.
    • 400GbE를 사용하고 1000bytes 프레임이 들어오면 초 당 받을 수 있는 패킷 수는 400Gb/1000bytes이다.
    • 실시간으로 처리하고 내보내기 때문에 매우 빠른 처리작업이다.

Datagram and Virtual Circuit

  • Datagram - ip 방식, Connectionless 방식
    • Connectless : 연결 설정을 하지 않아 데이터를 보내기 전에 어떠한 행위도 하지 않는다.
      • 즉, 데이터를 여러 개 보낼 때 선후관계가 없이 받은 패킷의 목적지만 확인하고 전송한다.

image

  • 송신자와 수신자가 있다.

  • 송신자는 트랜스포트 계층에서 내려온 데이터를 네트워크 계층에서 4개의 패킷으로 쪼갠다.

  • 쪼갠 패킷을 순서대로 가까운 네트워크 장치인 R1(Router 1)으로 전송한다.

  • 연결 설정을 하지 않는다. 데이터를 보내기 전에 어떠한 행위도 하지 않는다.

  • 라우터 1은 받은 패킷으로부터 목적지 주소와 포워딩 테이블을 비교하여 지정된 라우터로 패킷을 전송한다. R1 R4 (1번 패킷), R1 R2 (2번 패킷), …

  • 수신자가 받았을 때 패킷의 순서가 바뀔 수 있다.

  • ip 프로토콜 - Datagram 방식을 사용했다.

  • 왜 이렇게 만들었는가? 전쟁에 대비하기 위해! 전쟁 시에 하나의 라우터가 파괴되어도 관계없이 전송될 수 있도록 하기 위함이다.

  • Virtual Circuit - 전화기 방식

image

  • Virtual Circuit은 없어진 기술이다.
  • 논리적인 연결선을 만든 것이다.
  • Virtual Circuit의 대표적인 예시 : 전화
    • 유선전화를 들면 뚜- 소리가 나는데, 이 뚜- 소리는 나와 전화기 사이의 전화선이 잡혔다는 의미이다.
    • 과거에는 회사 안에서 전화선이 부족한 경우가 있었고, 연결이 되지 않으면 뚜뚜뚜뚜 소리가 들리는 것이다.
    • 회사선이 연결되고 번호를 눌렸을 때 지역 번호에 따라 해당 지역의 물리적인 선이 서로 연결된다.

image

  • Virtual Circuit 방식 : 데이터를 보내기 전에 전화하듯 상대방과 연결 설정을 하고 통신을 하는 것
  • Connection-oriented 방식으로, 미리 연결 설정을 하고 해당 연결 설정에 따라 패킷을 전송한다.
  • 목적지를 보고 전달하는 것이 아니라 연결 설정 시에 라벨을 설정하고 라벨에 해당하는 포트로 받은 패킷을 바로 내보낸다. (이때, 라벨은 내가 설정하는 것이 아니라 상대방이 설정해준다.)
  • Datagram 방식과 같이 포워딩 테이블의 키값을 비교하지 않고 받으면 해당 라벨로 바로 내보내기 때문에 빠르다는 장점을 갖는다.

image

  • 연결 과정

  • 송신자A와 수신자B가 있다.

  • A가 B에게 정보를 보내기 위해 R1에게 연결 요청을 하는 최초의 정보를 보낸다.

  • 현재 상황에서 R1이 B에게 보내는 가장 최적의 경로는 R3으로 보내는 경우이다.

  • R3의 입장에서는 R1의 라벨이 66으로 설정되어 있다.

  • 위의 과정에 따라 R3 R4, R4 B 로 연결 설정이 이어진다.

  • B에서부터 역으로 이동하면서 B의 입력 라벨이 R4의 출력 라벨이 되고, R4의 입력 라벨이 R3의 출력 라벨이 되는 형식으로 출력 라벨이 정해진다.

  • 즉, 각 라우터의 출력 라벨은 내가 전송하는 라우터의 입력 라벨로 지정된다.

  • 연결 설정 과정과 해제 과정이 있다.

  • 연결이 되면 빠르게 전송할 수 있다.

  • 하지만, 해야할 일들이 복잡해진다.

  • 가장 중요한 것은 Virtual Circuit 방식은 패킷을 받으면 바로 전송하는 역할만 한다는 것이다.

    • 전화에서부터 시작한 기술이고 기술을 이용하는 비용이 드는 만큼 데이터 품질을 보장해야 한다는 생각이 있었다.
    • 하지만 데이터 양, 압축 정도에 따라 적합한 이동이 있을 테고, 이를 정확히 조정할 수 없다는 점에서 품질 보장이 힘들다.

Network Performance

  • Data Link 유선 - 최대 전송 속도

네트워크

  • Delay - 송신 / 수신, 시작 / 끝 사이 시간 측정
    • 패킷 시작부터 끝까지의 속도
    • Physical Layer, 1대1의 연결관계 - transmission delay : 하나의 프레임을 완전히 전송하는데 걸리는 시간 - 데이터의 크기 / 링크의 전송속도
      • propagation delay : 한 노드에서 다른 노드로 전파될 때 통신 링크 상에서 걸리는 시간
        • 매체의 속성에 따라 발생하는 지연 시간 (e.g.구리선, 광케이블 속도 차이)
        • 거리 / 전파속도
    • 줄과 줄을 연결하는 장치에서부터 발생하는 지연 시간(e.g. Router)
      • processing delay : 입력 링크에서 출력 링크로 내보내기 위해 사용하는 소프트웨어 처리 혹은 하드웨어 처리에서 발생하는 지연 시간
        • 직접 측정한다.
      • queuing delay : 한 곳에 동시에 패킷이 몰렸을 때 버퍼에 위치하다 전송되는데, 이때 발생하는 지연시간
    • transmission / propagation /processing delay는 보통 상수값
  • Throughput

image

  • 통신 네트워크가 운반할 수 있는 데이터의 총량 / 총 전달 능력
  • 오류 없이 전송 수신되는 유효 데이터의 전송율 / 전송능력
  • 위 그림에서는 end-to-end의 throughput은 병목 지점으로 인해 100Kbps이다.
    • 내가 만든 네트워크라면 throughput을 만들 수 있다.

image

  • ip와 같은 전통적 네트워크 프로토콜은 위 그림을 목적으로 나온 기술이다.
  • 내 장치와 라우터 사이의 TR이 라우터와 라우터 사이의 속도보다 작은 상태.

  • 패킷 loss

    • 가해진 패킷 중 잃어버린 패킷 비율
  • 하나라도 좋아지면 좋아졌다고 말한다.

  • Conjestion : 내가 고속도로에 차를 몰고 가는 행위가 많아져 아침시간 저녁시간 길이 막히는 경우가 생길 수 있다는 것. 한곳에 몰리는 현상

Addressing

  • 어딘가로 보내야 하기 때문에 목적지의 주소가 필요하다.

  • IPv6 Address : IPv4와 기능은 완전히 동일하나 주소 필드를 왕창 늘렸다.

  • IPv4 Address : 주소 필드가 32bit = 4bytes인 주소 체계이다.

    • 42억 개 주소를 가질 수 있다.
    • 기기가 많아짐에 따라 42억 개는 부족하기 때문에 IPv6가 나왔다.
  • IPv4 주소를 표현하는 3가지 방식

  • Binary : 컴퓨터에 사용할 때 사용. 비트 표현.

  • Dotted decimal : 10진법. 0~225 사이 숫자 정수 4개로 표현한 형태. 사람이 인식하기 편한 방법

  • Hexadecimal : 16진법. 프로그래밍 속에서 3, 4계층 주소를 함께 표현해야 하는 경우가 있는데 그때 사용.

  • Hierarchy in addressing

image

  • 32비트를 두 개로 쪼갠다.

  • Prefix : 네트워크 계층이 정의한다. 라우터는 ip 패킷을 받는데 테이블을 비교할 때 전부 비교하는 것이 아니라 prefix만 비교해서 동일하다면 통일해서 전송한다.

  • Suffix : Prefix로 해당된 집단 내에서 자유롭게 나누어 지정된다.

  • A라는 prefix를 받을 경우 suffix는 전부 0이거나 1로 채워진다.

  • Prefix가 같을 경우 동일한 집단 내에 속해 있는 것과 같다.

    • Prefix가 같다면 해당 집단으로 전송 해당 집단 내에서 알아서 전송한다.
  • Classful 방식

image

  • 인터넷이 처음 시작했을 때 사용했던 방식

  • Prefix를 8, 16, 24비트, 1바이트씩 끊은 3가지 고정 길이로 나누어 제공했다.

  • IPv4 주소를 5개의 클래스(A, B, C, D, E)로 나누어 사용했다.

  • Classless 방식

image

image

  • 인터넷이 많이 사용됨에 따라 Classful 방식으로 IP 주소 공간을 제공하는 것이 어려워졌다.

  • 즉, 더 많은 주소 공간이 필요 했고, 더 많은 주소 공간을 위해서는 IP 주소 길이가 길어져야 했다.(IPv6)

  • 동일한 주소 공간을 사용하면서 주소 분포를 변경해 각 조직에 공정하게 나누어주는 방법도 고안되었고, 해당 방법이 클래스를 없앤 Classless 방식이다.

  • Classless 방식은 클래스가 없기 때문에 주소 뒤에 prefix length를 함께 써주는 Slash notation이 필요하다.

  • 예를 들어 prefix length = 16 이고 prefix가 230.8로 정해졌다면 Block이 230.8.0.0 ~ 230.8.255.255로 지정된다.

  • 네트워크 주소 라우팅 예시

image

  • IPv4 패킷에서 목적지 주소 32비트를 읽는다.
  • 포워딩 테이블에는 prefix만 저장되어 있고, 해당 포워딩 테이블에서 네트워크 주소를 찾는다.
  • 해당하는 Interface로 패킷을 전달한다.

More Issues

  • DHCP(Dynamic Host Configuration Protocol)
    • 부족한 ip 주소를 확보하기 위한 방법(DHCP 주목적)
    • 네트워크 계층을 동적으로 설정하는 프로토콜
  • 용어
    • Host - 3계층
    • Node - 1, 2계층
  • PPP 데이터 링크 계층 DHCP 네트워크 계층
  • 네트워크 계층과 처음으로 연결하려 할 때 적용된다.
  • 유무선 공유기에 접근하면 반드시 사용된다.

image

  • 동작

  • DHCPDISCOVER

    • 노트북에 1,2 계층 주소가 있으나 3계층은 없어 요청해야 하는 상황이다.
    • 처음 Client는 IP 주소를 가지고 있지 않은 상태에서 DHCPDISCOVER를 서버로 전송하여 DHCP서버에게 주소를 달라고 요청한다.
    • DHCP는 목적지 포트(프로그램 포트) 67이 고정되어 있다.
    • 목적지 주소가 255.255.255.255로 설정되어 broadcast하게 모두에게 전송한다.
  • DHCPOFFER

    • 서버에서 IP 주소를 지정한 offer를 클라이언트에게 준다.
    • 이때 찾아가기 위해 하드웨어 주소를 사용한다.
  • DHCPREQUEST

    • 해당 주소가 괜찮다고 서버에게 클라이언트가 말한다.
  • DHCPACK

    • REQUEST를 받고 확인 정보를 보낸다.
    • Lease time 사용 가능한 시간으로, 시간 다 지나면 다시 요청해서 확인받아 사용한다.
  • DHCP : 연결 알 필요 없이 편하게 하기 위해 사용하기도 함. 이동통신의 경우 계속 켜져 있기 때문에 주고 반납하고 하기 보다는 편하게 configuration하기 위해 사용하는 느낌

  • NAT(Network Address Translation) : IP 주소가 부족하므로 내가 할당 받은 ip 주소를 뻥튀기하자!

image

  • 오른쪽의 인터넷으로부터 IP 주소를 부여받는다.
  • NAT 라우터를 통하여 유무선 공유기 안 쪽에 있는 기기들에게는 private 주소를 제공한다.
  • Private 주소는 개인들에게만 적용되고, 유무선 공유기 바깥으로 나가면 private 주소는 의미가 없다.
  • NAT는 표준 없는 완전히 회사마다의 기술이다.

image

image

  • SKT 내부에서 동작하는 private 네트워크를 생성해 각 기기들에 private 주소를 제공한 경우
    • skt 사용자가 네이버를 들어간다면 인터넷에 접근해야 하기 때문에 연결되는 public 네트워크와 연결되어야 한다.
    • 스마트폰에서 출발한 Private IP 주소를 Public Ip 주소로 변경하고 Public Ip 주소를 Private Ip 주소로 변경하는 역할을 수행하는 것이 NAT.

IP Protocol

  • Time-to-live : 정수값을 설정해놓고 라우터를 통과할 때

  • Multiplexing

  • Fragmentation : 어떻게든 구겨 넣어서 통과하는 것 쪼개서 전송

  • MTU(Maximum transfer unit) : 프레임이 최대로 전송할 수 있는 데이터 크기

  • 프레임은 MTU를 갖기 때문에 MTU를 넘어갈 경우 쪼개서 전송해야 한다.

image

  • 예시

    • 보내고자 하는 패킷의 사이즈가 큰 상황
    • 통채로 보낼 수 없어서 3개의 ip 패킷으로 분할. Offset 값 맨 앞의 바이트를 /8해서 나온 값
    • 쪼개지지 않으면 모든 ip패킷의 offset은 0
  • Fragmentation 세부 예시

image

  • F1,2,3로 찢어진다. offset이 추가된다.
  • 뒤에 더 올 것이 있다고 한다면 flag = 1로 세팅해준다. f1, f2는 flag가 1로 설정, f3은 마지막이므로 flag=0
  • 2번째 패킷은 다른 라우터로 이동 이동하면서 2개로 분할

보안

  • layer를 집어넣는다.
  • 암호화해서 보내고 암호화 제거하는 형식
  • 하지만 어플리케이션 측면에서 암호화하지 ip 계층에서는 하지 않는다.
    • 속도가 느려지기 때문.

다른 프로토콜

  • ICMPv4
  • ping 받은 데이터그램에 ICMP헤더를 붙여 다시 되돌려 보낸다. (66)
  • Traceroute : TTL:1로 설정해서 보내면 첫 번째 라우터가 받은 것을 되돌려 받는다.

참고문헌

연결문서

  • 다음 노트 - 2023-10-16-ComNet-L07-Network2
  • 이전 노트 - 2023-10-03-ComNet-L04-MAC-DLC1