The Internet network layer
- routing protocols
- path 선택
- RIP, OSPF, BGP 등이 있음
- IP protocol
- addressing conventions
- datagram format
- packet handling conventions
- ICMP protocol
- error reporting
- router "signaling"
- ex) ping, traceroute
IP datagram format
- IP header
- IP protocol version num
- ex) v4, v6
- header length
- type of datagram
- total datagram length
- 16 bits (header + payload)
- IP packet은 1500 bytes가 넘어가는 경우가 많이 없음
- L2 ethernet의 MTU가 1500 bytes이기 때문
- wifi의 MTU는 2300bytes
- for fragmentation/reassembly
- 16-bit identifier
- flags
- fragment offset
- IPv4에만 해당, IPv6는 사용하지 않음
- TTL
- max number of remaining hops
- protocol
- 네트워크 layer를 transport layer에 연결해주는 것
- ICMP=1, TCP = 6, UDP=17, IPv4=4, IPv6=41
- header checksum
- IP header의 error checking을 위함
- TTL을 모든 라우터에서 다시 계산하기 때문에, checksum도 모든 라우터에서 다시 계산되어야 함
- IPv6는 checksum을 가지지 않음
- 32-bit src IP address
- 32-bit dst IP address
- IP protocol version num
- IP payload
- data: 가변길이
- overhead
- TCP header: 20 bytes
- IP header: 20 bytes
- app layer overhead: data
IP fragmentation, reassembly
- network link는 MTU를 가짐
- MTU: link level에서의 최대 전송 단위
- link마다 다른 MTU를 가짐
- fragmentation: 큰 IP datagram은 여러 개의 작은 IP datagram으로 쪼개짐
- 마지막 IP destination에서 재조립됨
- IP header bits는 연관된 fragments를 식별하고 정렬하는데 사용함
IPv4 addressing: introduction
- IP address: host, router의 interface를 식별하는 32 bit 식별자
- globally unique
- <8bit>.<8bit>.<8bit>.<8bit>
- interface: host/router와 physical link 사이의 연결
- router는 여러 개의 interface를 가짐
- host는 보통 하나에서 두 개의 interface를 가짐
- 각 interface에 연관된 IP 주소
- Q. interface가 어떻게 연결되나?
- A. 유선 이더넷 interface는 이더넷 스위치(hub)로 연결됨
- A. 무선 와이파이 interfcae는 WiFi AP로 연결됨
Subnets
- IP address
- subnet part: 높은 파트 bits
- host part: 낮은 파트 bits
- what's a subnet?
- IP 주소에서 같은 subnet part를 가지는 device interface들
- 다른 라우터를 방해하는 것 없이 물리적으로 서로 도달할 수 있음
- subnet을 정의하기 위해서, 각각의 host/router로부터 interface를 분리하고 고립된 네트워크의 섬을 만들어야 함.고립된 네트워크를 subnet이라고 부름
- x.x.x./Y
- Y는 subnet address에 사용된 bit의 수
IP addressing: CIDR
- CIDR: Classless InterDomain Routing
- IP주소의 subnet 부분의 길이가 임의적임
- a.b.c.d/x, x: IP 주소의 subnet 부분의 길이
- classful addressing
- 예전에는 고정적인 subnet bit를 사용해 class를 나눠서 사용했음
IP addresses: how to get one?
- Q. host가 어떻게 IP address를 얻을까?
- 1. file에 hard-code되어 있는 경우
- 2. DHCP: 서버로부터 주소를 dynamic하게 얻어옴
- DHCP: Dynamic Host Configuration Protocol
- 목표: host가 네트워크에 접속할 때, 네트워크 서버로부터 IP 주소를 dynamic하게 얻어온다 ("plug-and-play")
- 사용 중인 주소에 대한 임대를 갱신할 수 있음
- 주소의 재사용을 허용
- network에 접속하는 모바일 유저에 대한 지원
- DHCP overview
- host는 "DHCP request" msg를 사용해서 IP 주소를 요청함
- DHCP server는 "DHCP ack" msg를 주소로 보냄
- 목표: host가 네트워크에 접속할 때, 네트워크 서버로부터 IP 주소를 dynamic하게 얻어온다 ("plug-and-play")
DHCP client-server scenario
DHCP server in the subnet | arriving client |
[DHCP discover] Broadcast: DHCP 서버야~ 거기 있니?? | |
[DHCP offer] Broadcast: ㅇㅇ 내가 DHCP server다! 여기 니가 사용할 수 있는 IP 주소얌 - dhcp relay agent: dhcp 서버가 없는 서버넷으로부터 다른 서버넷에 존재하는 하나 이상의 DHCP 서버에게 DHCP 요청을 중계해줌 |
|
[DHCP request] ㅎㅇ. 나 그 IP addr 쓸게~~ | |
[DHCP ACK]ㅇㅇ 그거 쓰셈 |
DHCP: more than IP addresses
- DHCP는 subnet에 할당된 IP 주소보다 더 많이 것들을 return할 수 있음
- client의 first-hop router 주소
- name, IP address of DNS server
- network mask (network 부분 vs host 부분)
DHCP: example
- 1. laptop을 네트워크에 연결하는 것은 IP 주소, 첫번째 hop router의 주소, DNS 서버 주소가 필요함
- DHCP를 사용하자!
- 2. DHCP request는 UDP, IP, 이더넷 순으로 인캡슐화됨
- 3. 이더넷 프레임은 LAN에 broadcast되고, DHCP 서버에서 돌아가고 있는 라우터에서 받는다
- 4. DHCP 서버에 도착한 데이터는 이더넷, IP, UDP 순으로 demux된다
- 5. DHCP 서버는 client's IP 주소, 첫번째 라우터로 향하는 IP주소, DNS 서버의 이름과 주소를 담은 DHCP ACK를 형성한다.
- 6. 캡슐화 과정을 거쳐서 client에게 전달하고, client는 받아서 decapsulation 진행
- 7. client는 이제 자기 IP 주소랑, DNS 서버의 이름과 주소, first-hop rotuer 주소를 알게 되었다~~
IP addresses: how to get one?
- Q. how does network get subnet part of IP addr?
- A. gets allocated portion of its provider ISP's address space
- Q. how does an ISP get block of addresses?
- A. ICANN: Internet Corporation for Assigned Names and Numbers
- http://www.icann.org/
- 주소 할당
- DNS 관리
- domain name 할당, 분쟁 해결
- A. ICANN: Internet Corporation for Assigned Names and Numbers
Hierarchical addressing: route aggregation
- 위계 있는 주소는 routing information을 효율적으로 광고한다?
- longest prefix matching
NAT: network address translation
- public IP addr <---> private IP addr
- 보통 라우터 안에 NAT box가 존재함
- local network를 떠나는 모든 datagram은 하나의 source NAT IP addr를 가진다
- Motivation
- local network는 밖에서 볼 때는 하나의 IP address를 사용함
- 외부에 알리지 않고 local network 장치 주소를 바꾸는 것이 가능함
- local network의 주소를 바꾸지 않고 ISP를 바꾸는 것이 가능함
- 외부에서 local network를 볼 수 없기 때문에 보안 측면에서 좋음
- local network는 밖에서 볼 때는 하나의 IP address를 사용함
- Implementation
- outgoing datagram
- local network에서 외부로 데이터를 보내려면 (src IP 주소, port #)를 (NAT IP addr, new port #)로 바꾸어줘야 한다.
- remote machine은 destination addr로 (NAT IP addr, new port #)를 사용해 응답한다
- remember (in NAT translation table)
- 모든 (src IP addr, port #) - (NAT IP addr, new port #) 짝을 기억해야한다
- incoming datagrams
- (NAT IP addr, new port #)를 사용해서 local network로 들어오는 datagram들의 주소를 NAT translation table를 사용해서 (src IP addr, port #)로 대체해준다
- 16-bit port # field
- 하나의 LAN address에 60,000 개의 동시 connection이 존재할 수 있다
- NAT는 controversial!
- router는 layer 3까지 처리 가능
- address 부족 문제는 IPv6에 의해 해결되어야 한다
- end-to-end argument 위반: app designer에 의해 고려되어야 함
- client가 NAT 아래에 있는 서버에 연결하기 원하면 작동하지 않을 것임
- outgoing datagram
IPv6: motivation
- 초기 motivation: 32-bit IPv4 주소 공간은 부족하다!
- 추가 motivation
- header format은 speed processing/forwarding을 돕는다
- header는 QoS를 용이하게 하기 위해 변경할 수 있음
- IPv6 datagram format
- 고정길이 40 byte header
- no fragmentation allowed
- no IP checksum: 각 router에서 실행 시간을 줄이기 위해 제거
- priority: 전송 중인 datagram 사이의 우선순위
- flow label: 같은 flow의 datagram 확인
- next header: protocol in IPv4 header과 유사
- hop limit: TTL in IPv4
Transition from IPv4 to IPv6
- 모든 router를 동시에 업그레이드 할 수 없음
- 어떻게 IPv4와 IPv6을 혼합해서 작동시킬까?
- tunneling: IPv6 datagram은 IPv4 router들 사이에서 IPv4 datagram안의 payload를 운반함
- Ipv6 datagram in Ipv4 datagram
- 반대도 가능
IPv6: 채택
- google: IPv6를 통한 8%의 client access service
- NIST: 미국 정부 domain의 1/3
- IPv6는 너무 길기 때문에 아마 Ipv6만 단독으로 사용하기는 어렵고 IPv4와 혼합해서 사용할듯
'학교 > network' 카테고리의 다른 글
[ch5] 2. routing protocols (0) | 2022.06.20 |
---|---|
[ch5] 1. Introduction (0) | 2022.06.19 |
[ch4] 2. what's inside a router (0) | 2022.06.19 |
[ch4] 1. overview of network-layer (0) | 2022.06.19 |
[ch3] 5-7. connection-oriented transport: TCP (0) | 2022.06.19 |
댓글