Chapter4 : Network Layer: The Data Plane(3)

jiwon·2021년 12월 28일
0

컴퓨터네트워크

목록 보기
10/13
post-thumbnail

4.3 (3) Network Address Translation (NAT)

private ip addr은 인터넷에 나가지 못하는 non routable address! 얘를 인터넷에 나갈 수 있는 public ip addr로 바꿔주는 애를 NAT라고 한다.

local network를 떠나 인터넷으로 나가는 애들은 다 똑같은 주소(공식 ip 주소)로 바뀌어서 나감! 구분은 src port로..

만약 16 bit port num이면? 65535(2^16)개의 클라가 하나의 public ip주소 같이쓰기 가능

NAT 쓰는 이유

small office, home office라서 많은 범위의 ip 필요 없을때 유용.
주소가 노출이 안되니 보안 좋음
내 로컬 네트워크 안에서 device의 주소를 마음껏 바꿀 수 있고, 상위 ISP에게 알려줄 필요도 없다.

시나리오: privte 클라 → public의 서버

LAN에서의 주소, 포트와 나갈때 주소, 포트 기록.

  1. private 클라가 public 서버로 datagram 보냄.
  2. 라우터에 달려있는 NAT가 패킷을 까서 공식주소로 바꾸고 table에 기록
  3. 서버는 NAT가 바꾼 주소/포트로 응답. 라우터는 incoming traffic 있으면 보고 table 검색해서 다시 private ip로 바꿔서 해당 클라에게 보냄

NAT is controversial

IPv4쓰면 되지 왜 NAT 쓰는가?
왜 L4 계층의 포트 번호를 막 봐? 레이어링 망가져!
라우터에서 끊기니까 e2e connectivity를 파괴.
private 서버 + public 클라면 어떻게 할거야? → NAT traversal techniques

NAT traversal techniques

  • Relaying: 중앙의 relay 서버를 끼고 통신
  • Connection reversal: 제 3자인 peer C가 private 서버가 마치 클라인 것처럼 연결을 initiate 하도록 요청! 이 방법이 좀 도 효율적이다.

4.3 (4) IPv6


8개 파트로 쪼개서 콜론으로 구분.
0의 반복은 생략 가능.

IPv4와는 달리, multiple IP addr can be allocated to one NIC card.

IPv6 datagram format


fixed length 40 byte header
flow label: 패킷들의 플로우를 조절하려고 했으나..실패!
next header: 데이터 필드가 전달될 프로토콜 식별
hop limit: ghost traffic 잡음. TTL과 같다.

Changing Extension Header in IPv6 packet

데이터 필드에 있는 것이 다른 프로토콜의 메세지가 아니라 또다른 IPv6 헤더 일 수 있음.
ipv6의 경우 fragmentation 라우터에서 안함. fragment header은 호스트에서만 쓸 수 있다.

changes from IPv4

option, padding 없어짐.
헤더 길이가 고정됐으므로 header length 필요 없음.
라우터가 fragmentation 하지 않으니 frag 필드 필요 없음.
고품질이라서 에러 적으니까 checksum 뒤로 뺌
TTL → Hop limit
Type of service → Traffic class
Total length → payload length
Upper layer protocol → next header

어떻게 네트워크가 IPv4, IPv6 모두 작동하게 할까?

  • dual stack: 둘 다 읽을 수 있는 라우터
  • NAT-PT: v4-v6 변환시켜준다.
  • Tunneling: IPv4를 터널처럼 통과. 듀얼 스택 라우터들이 중개인 역할

4.4 Generalized Forward and SDN

SDN: Software Defined Networking
SDN은 Qos(서비스 품질 우선순위)도 있고 IPv6이 실패한 pkt flow 조절도 성공함!

"match plus action" 에서
match: 모든 레이어의 헤더 값 보고 match.
action: 기존 라우팅 프로토콜은 forwarding만 했는데 sdn은 load balancing과 rewrite(NAT), block, drop, firewall 등등도 해준다.

Logically centralized control plane

여러개 서버가 마치 하나인것처럼...(single point of failure 대비) → Logically centralized

forwarding 말고 다른 action도 취하므로 FIB 대신 flow table 이라고 한다. 라우터는 packet switch 라고 한다.

openFlow abstraction: match action

match 볼때 flow 단위로 보고 특별 제어 가능. traditional 라우터는 불가능했던 load balancing이 가능해졌다.

Router

  • match: dst ip 주소 본다.
  • action: forwarding

Firewall

  • match: 특정 포트 번호 본다.
  • action: 가게하거나 못가게 드롭시킴. (ex: 어디서 온 애들 아니면 안받아!)

Switch

  • match: dst mac 주소 본다.
  • action: forward or flood

NAT

  • match: ip 주소와 포트 번호 본다.
  • action: ip 주소와 포트 번호를 rewrite한다.
profile
개발 공부합니다. 파이팅!

0개의 댓글