컴퓨터통신#8

LeeMir, 04 May 2021

4장 - Network Layer(이어서)


Subnets
  • IP address
    • subnet part
      • high order bits
      • network portion
    • host part
      • low order bits
      • host portion
  • 동일한 Subnet에 있는 장비에서는 Router 없이 서로 연결이 됨
    • 만약, 다른 Subnet에 있는 장비로 신호를 보내려면 Router를 거쳐야 함
  • 32-bit의 IP address에서, 앞 24-bit(Prefix)가 Subnet
  • Router와 Router 사이의 연결도 하나의 Subnet
IP Addressing : CIDR
  • CIDR : Classless InterDomain Routing
    • 원래는 Class 개념이 존재했음
      • Class A
        • 1 byte의 network portion과 3 bytes의 host portion으로 사용
        • 대규모 network에 유리
      • Class B
        • 2 bytes의 network portion과 2 bytes의 host portion으로 사용
        • 중규모 network에 유리
        • 가장 많이 사용했었으나, network가 2 bytes에 host를 담아낼 수 없는 규모로 커지면서 Class 개념을 더이상 사용하지 않음
      • Class C
        • 3 bytes의 network portion과 1 byte의 host portion으로 사용
        • 소규모 network에 유리
  • Format : a.b.c.d/x
    • 상위 x-bits가 subnet portion임을 명시
    • x를 Subnet Mask라고 함
    • Router에서 Dest. IP를 이용해 내보낼 방향을 정할 때 32-bits를 전부 보는 것이 아니라, Network Prefix만 확인
DHCP : Dynamic Host Configuration Protocol
  • Host가 Network에 접속할 때 필요시 IP address를 DHCP Server로부터 받아올 수 있음
  • 제한 시간이 있어 계속 사용하기 위해서는 갱신 과정이 필요함
  • 반납된 IP address는 DHCP Server에서 관리
  • DHCP scenario
    • DHCP discover
      • Client가 DHCP Server로 IP address를 요청할 때, src. IP는 아직 존재하지 않으므로 0.0.0.0으로 설정해서 보냄
      • dest. IP도 모르는 상태이므로 255.255.255.255로 보냄
    • DHCP offer
      • DHCP Server에서는 Client로 보낼 때 src. IP로 본인의 IP를 명시하고, dest. IP는 아직 정해지지 않았으므로 255.255.255.255로 하고 Broadcast하게 보냄
      • yiaddr에 offered IP address를 대여사건과 함께 첨부해서 같이 보냄
      • 이 때, Client에서는 Server로 본인이 보냈던 Transaction ID 부분을 보고 일치하는 지를 봐서 받음
      • 만약 Client가 다수의 Server에서 offer를 받았을 경우 하나를 임의로 정해서 request를 보냄
    • DHCP request
      • Client에서는 목적지를 알고있음에도 dest.IP를 255.255.255.255로 설정해 Broadcast하게 보냄
        • 만약 다수의 Server에서 offer를 받았을 때 선택받지 못한 Server에게 알리기 위함
        • Server Identifier Option에 Server IP를 담아서 어떤 Server를 선택했는지 명시
    • DHCP ACK
      • 아직 Client의 IP 주소가 확실히 정해진 게 아니므로 Server에서 ACK를 보낼 때 255.255.255.255(Broadcast)로 보냄
      • 최종으로 Server에서 이 IP address를 쓰라고 보내는 ACK
  • DHCP에서는 IP address 뿐만 아니라 다른 것도 제공
    • Subnet에서 Client와 가장 가까운 Router의 address
    • DNS Server의 Domain Name과 IP address
    • Network Portion에 대한 Mask
  • DHCP는 주로 Router에 built-in 되어있음
Hierarchical Addressing : Route Aggregation
  • Route Summarization 또는 Address Aggregation라고도 부름
  • 각 Organization(Subnet)은 ISP로 묶임(ISP가 Organizations에 address Block을 제공)
    • 이 때, Organization의 Subnet Mask > ISP의 Subnet Mask
  • 계층적 구조를 지님으로써 Internet에서는 Table을 관리하고 Destination까지로의 Route를 찾기가 수월함
  • Route를 찾을 때에는 Longest Prefix가 원칙
IP Addressing : ICANN
  • Internet Corporation for Assigned Names and Numbers
    • 최상위 기관
    • https://www.icann.org
  • ISP들에게 Address Block을 할당
  • DNS(DNS Root Server)를 관리
  • Domain Name를 부여함
NAT : Nework Address Translation
  • IPv4의 주소 부족 문제를 해결하기 위해 나온 방안
  • 외부 망으로부터 Globally unique한 IP address 한 개를 지닌 Router에 사설(내부) 망을 연결해 각 host가 통신을 하고자 할 때 그 망을 대표해서 통신함
    • 하나의 내부망에 연결하기 위해 외부에서 하나의 IP address만 받으면 됨
    • ISP에서 받아올 필요 없이 내부에서는 마음대로 IP address를 사용함
  • Internet(src)에서 각 Host(dest)로 연결할 때 Router에서 Host를 구분하는 방법으로 Source Port Number를 이용함
    • L3 기술(NAT)에서 L4 개념(Port)을 사용해 Layer 개념을 위반함
  • 보안 측면에서 장점이 존재
  • NAT Router
    • NAT Router에서는 모든 외부로 나가는 Datagram에 대해 source IP address와 port #을 NAT IP address와 new port #으로 바꿈
    • NAT Translation Table을 기록함
      • src IP address / port #을 NAT IP address / new port #으로 바꿨다는 것을 기록함
    • 외부에서 들어오는 Datagram에 대해서는 NAT Translation Table을 이용해 원래 IP와 port #으로 바꿔서 host로 보내줌
  • 16-bits인 Port-number field에 따라 각 내부망마다 약 6만개의 연결을 구성할 수 있다는 장점이 있으나, Layer 개념을 위반한 NAT 방식 보다는 IPv6로 문제를 해결해야함
IPv6
  • IPv4의 주소 부족 문제를 해결하기 위해 나온 방안
  • IPv4에서는 고정 header size가 20 bytes였으나, IPv6에서는 address가 128-bits가 됨에 따라 header size도 늘어남
    • IPv4에서는 40 bytes의 header를 사용함
    • 훨씬 커야하지만, field를 간략화해서 40 bytes로 맞춤
  • fragmentation을 허용하지 않음
  • QoS(quality of service)를 좋게 함
  • IPv6 Datagram Format
    • ver : IPv6임을 명시 => 0110
    • pri : traffic class
      • 한 flow 내에서 이 datagram의 prioirty를 명시
    • flow Label : 같은 flow에 속하는 datagram을 구분짓기 위해 사용
      • 하나의 Application에서 Generate한(동일한 Service를 갖는) Datagram들은 한 Flow에 속함
    • payload len : data field의 bytes 수를 명시
    • next hdr : extension header의 유무에 따라 역할이 달라짐
      • extension header이 있다면, 그 extension header가 어떤 type인지 명시
        • 각 extension header에도 next hdr가 존재해, 다음 extension header의 type을 명시
        • 마지막 extension header에서 data field가 어떤 Protocol로 만들어졌는지 명시함
      • extension header가 없다면, data field가 어떤 Protocol로 만들어졌는지 명시함
        • IPv4의 Protocol Type Field와 같은 역할
    • hop limit : Router를 지날 때마다 하나씩 줄음
      • IPv4의 TTL과 같은 역할
  • IPv4와 달라진 점
    • checksum
    • ICMPv6 추가
      • ICMP의 새로운 version
      • fragmentation이 없어서 Router에서 너무 큰 size의 Packet을 받았다면 src로 Packet이 너무 커서 버렸다는 Message를 보냄
      • IGMP(Internet Group Management Protocol)를 포함시킴
        • Subnet에서 Multicast Group에 대한 Membership을 관리해주는 Protocol
  • 기존에 IPv4를 사용하게 설계된 Router장비들에 어떻게 IPv6를 적용할 것인가?
    • 장비교체는 너무 비용이 많이 들어 한꺼번에 교체 불가능
    • Tunneling
      • IPv6 Datagram에 IPv4 Header를 붙여 한 IPv4 Datagram로 구성함
      • IPv4를 사용하는 Router에서는 IPv4로 생각하게끔 함
      • IPv6를 사용하는 Router 사이에 IPv4를 사용하는 Router가 껴있을 경우, 그 End Point에서는 IPv6와 IPv4를 모두 할 수 있어야 함
      • Tunneling 도중 IPv6를 담은 IPv4 Datagram의 Protocol Type Field에는 IPv6 Type이라고 명시