컴퓨터통신#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 part
- 동일한 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에 유리
- Class A
- 원래는 Class 개념이 존재했음
- 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를 선택했는지 명시
- Client에서는 목적지를 알고있음에도 dest.IP를 255.255.255.255로 설정해 Broadcast하게 보냄
- DHCP ACK
- 아직 Client의 IP 주소가 확실히 정해진 게 아니므로 Server에서 ACK를 보낼 때 255.255.255.255(Broadcast)로 보냄
- 최종으로 Server에서 이 IP address를 쓰라고 보내는 ACK
- DHCP discover
- 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와 같은 역할
- extension header이 있다면, 그 extension header가 어떤 type인지 명시
- hop limit : Router를 지날 때마다 하나씩 줄음
- IPv4의 TTL과 같은 역할
- ver : IPv6임을 명시 =>
- IPv4와 달라진 점
- checksum
- ㅇ
- ICMPv6 추가
- ICMP의 새로운 version
- fragmentation이 없어서 Router에서 너무 큰 size의 Packet을 받았다면 src로 Packet이 너무 커서 버렸다는 Message를 보냄
- IGMP(Internet Group Management Protocol)를 포함시킴
- Subnet에서 Multicast Group에 대한 Membership을 관리해주는 Protocol
- checksum
- 기존에 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이라고 명시