NAT
동기 : 로컬 네트워크는 외부 네트워크가 관심을 가지는 단지 하나의 IP주소만을 사용
- ISP로부터 주소 범위가 할당될 필요가 없음: 단지 하나의 IP 주소가 모든 장치에 대해 사용됨
- 외부 알리지 않고 로컬 네트워크에서 장치들의 주소를 변경할 수 있음
- 로컬 네트워크의 주소 변경 없이 ISP를 변경할 수 있음
- 로컬 네트워크 내의 장치들은 외부에서 명시적으로 주소 지정이 되지 않으며, 보여지지 않음
NAT을 구현하기 위한 구성요소
- 발신 데이터그램 : 모든 발신 데이터그램(source IP주소, port번호)을 NAT IP주소, 새로운 port 번호로 변경
- NAT 해석 테이블에 모든 source IP주소, port 번호 와 NAT IP 주소, 새로운 port번호의 해석 쌍을 기억
- 수신 데이터그램 : 모든 수신 데이터그램의 목적지 필드에서(NAT IP주소, 새로운 port 번호)를 NAT 테이블에 저장된 대응하는 source IP주소, PORT 번호로 변경
하나의 ip주소를 주면 여러 디바이스들은 사용할 주소는 하나밖에 없기 때문에 사설 ip주소를 할당하고 공인된 ip주소로 변환을 해 실제 접속이 이루어지게 됩니다.
NAT은 IP주소에 대한 변환으로 port number를 새로 할당하는 것을 씁니다. 16-bit port-number field는 60,000개의 포트가 사용될 수 있을 것이고 서비스에서 default로 사용되는 것을 빼면 6만개의 동시 connection을 지원할 수 있습니다.
NAT의 논쟁
- 라우터는 계층 3까지만 처리
- 종단간 논의(end-to-end argument)에 어긋남 (호스트가 중계 노드의 ip주소와 port번호 변경 없이 직접 통신할 수 있어야 함)
- 주소 부족은 IPv6에 의해 해결되어야 함
ICMP
네트워크 레벨에서의 정보를 통신하기 위해 호스트, 라우터, 게이트웨이에 의해 사용됨
- 오류보고 (unreachable host, network, port, protocol)
- echo request / reply (used by ping)
IP 위에서동작하는 네트워크 계층
- ICMP 메시지를 IP 데이터그램으로 전송
ICMP 메시지
- ICMP type와 code 필드가 있고, 메시지 type에 의존하는 8바이트로 구성
Traceroute and ICMP
출발지에서 도착지까지 경로를 발생하면서 지연을 알려주는 것이 Traceroute입니다. 어떤 원리에서 동작하는지 보면 Source가 Destination으로 UDP segments를 보냅니다.
- First has TTL = 1
- Second has TTL=2, etc.
- Unlikely port number
n번째 데이터그램은 n번째 라우터에 도착을 하게 됩니다.
- 라우터 통과때마다 1줄어듬
- TTL값이 n으로 처음 될 때 n번째 라우터에 오면 값이 0가 됨
- N번째 라우터는 그 데이터그램을 버리고
- 출발지쪽으로 오류 발생을 알려줌 icmp message(type11, code0, TTL expired)
- Message가 n번째 라우터에서 출발지로 보내지고 ICP 메시지가 도착할 때 출발지는 실제 ICMP메시지가 도착할 때까지의 시간을 계산 (RTT 계산)
- 지연 측정을 정확하게 하기 위해 Traceroute를 위와 같은 것을 3번 동일한 패킷을 연속적으로 전송
종료 조건
- 목적지 도달하면 "dest port unreachable" 출발지로 돌려보냄 (type3, code3)
- 메세지가 source에 도착하면 경로 발견 했기에 Stop
IPv6
Initial Motivation
32-bit 주소 공간은 조만간 완전히 고갈될 것으로 예상
Additional motivation
- 헤더 포맷이 빠른 처리와 전달에 도움을 줌
- QoS 보장이 용이하도록 헤더 변경
IPv6 datagram format
- 고정길이 40바이트 헤더
- 단편화가 허용되지 않음
- no checksum
IPv6 Header
Priority
플로우에서 데이터그램의 우선순위를 식별
Flow Label
같은 flow에서 데이터그램 식별
Next header
데이터에 대한 상위 계층 프로토콜 식별 (tcp, udp)
IPv4와 다른점
Checksum : 각 홉에서 처리 시간을 줄이기 위해 완전히 제거
Options : 허용되지만 표준 ip 헤더 필드가 아님 "Next header" 필드에 의해 지시됨
ICMPv6 ": ICMP의 새로운 버전
- 추가적인 메시지 유형 정의
- 멀티캐스트 그룹 관리 기능 포함
IPv4 to IPv6 전환
모든 라우터들이 동시에 업그레이드 될 수 없음
- no "flag days"
- IPv4와 IPv6가 혼용된 라우터로 네트워크가 어떻게 동작할 것인가?
두가지 제안된 접근
- Dual stack : dual stack을 가진 라우터는 포맷들 간의 전환을 할 수 없음
- Tunneling : IPv4 라우터들 간에는 IPv6가 IPv4 데이터그램에서 payload로 전달됨
payload로 전달이 되는 것입니다. payload 부분에 ipv6의 데이터그램이 포함이 됩니다.
터널은 encapsulation으로 구현을 합니다.
터널의 끝까지 이렇게 캡슐화가 되어서 전송이 됩니다. 쭉 전달이 되고서 E에 도착하면 이제 E에서 IPv6의 네트워크이므로 v6 네트워크를 만들어서 진행합니다. 헤더만 없애면 v6가 나오게 됩니다.
전체적으로 전환되는데 걸리는 시간은 오래될 것으로 예상이 되고 있습니다.
'IT 프로그래밍 > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] distance vector (1) | 2024.12.05 |
---|---|
[컴퓨터네트워크] Control Plane (0) | 2024.12.05 |
[컴퓨터네트워크] 네트워크 계층 (1) | 2024.12.04 |
[컴퓨터네트워크] Congestion control (1) | 2024.12.04 |
[컴퓨터네트워크] Flow control (0) | 2024.12.03 |