- Overview of Network Layer
- What's inside a router
- IP(Internet Protocol) : forwarding을 위해 사용
(1) datagram format & fragmentation
(2) IPv4 addressing
(3) network address translation(NAT)
(4) IPv6
- Generalized Forwarding, SDN(Software-Defined Network)
- Middleboxes : 새롭게 생겨나는 기능들을 router의 핵심 계층으로 실을 수 없어 만드는 별도의 box
Control plane의 protocol: 다음 챕터에서 자세히 (router에만 존재)
1. Path-selection algorithm을 실행
routing protocol 안에 path-selection algorithm 포함
-> (traditional network의 경우)routing protocol들이 network 상태 정보 끌어모음
(SDN network의 경우)SDN controller가 path-selection algorithm 실행
-> path-selection algorithm 실행 결과로 forwarding table이 생성
2. ICMP protocol
- error reporting
- router "signaling"
Data plane의 protocol: IP protocol (router + end host 모두에 존재)
- datagram format: 어떤 형태로 encapsulate하는지
- addressing: 목적지를 어떻게 표현하는지
- packet handling conventions
이 세 개를 차례대로 살펴볼 것이다.
IPv4 datagram format(Datagram format)
보통 ip datagram은 option field가 없기 때문에 header 길이가 20byte(고정 길이=20byte)
=> TCP header 20byte + IP header 20byte =40byte(최소 길이!!)
- ver: IP datagram의 remainder을 어떻게 해석할 것인지는 version에 따라 다름
- head.len: "options" field에 따라 길이가 가변적일 수 있기 때문 => 헤더만의 길이
- type of service: 1byte
* 0~5: diffserv, 6~7: ECN
- length(16bit): datagram 전체 길이
* header+data 총 길이 => 2^16byte=64K byte 가능
* 보통은 1500 byte 이하 (ethernet의 frame size=1500 byte이기 때문)
- time to live: 목적지까지 가는 데 걸리는 hope 최대 개수
* router 하나 거칠 때마다 -1 => 0이 된 datagram은 drop
- upper-layer protocol: ip datagram이 어느 프로토콜의 data인지 식별하기 위해
* network layer에서 transport layer로 올려보낼 때, TCP, UDP, ICMP, OSPF 중 어디로 올려보낼 건지 결정
* 6=TCP, 17=UDP, 1=ICMP, 89=OSPF
- header checksum: 오직 header에 대해서만 checksum(data부분은 TCP나 UDP가 알아서 계산)
* 문제가 있으면 drop해버림
IPv4 fragmentation, reassembly
'MTU(Maximum Transmission Unit)': 각 frame이 캐리할 수 있는 data unit
ex. Ethernet은 1500byte까지 캐리 가능
MTU 때문에 fragment로 나눠서 전송
-> header 개수가 늘어남으로써 transmission rate는 어느 정도 느려지지만 reassemble은 하지 않음
-> 목적지 host의 IP protocol에서 reassemble
오류 복구는 TCP의 retransmission으로 진행됨
"Fragmentation"
datagram은 다음과 같은 구조를 가진다. 4000byte의 datagram을 가정하자.
- length: 4000byte
- ID
- fragflag: 0으로 초기화
- offset: fragment의 시작 byte가 original byte에서 몇 번째인지
header 길이 제외하면
length=4000-20=3800bytes
MTU=1500-20=1480bytes
=> 3800/1480=3.xx
=> 3개로 fragmentation 일어남
한 fragment당 header 포함 1500byte이므로
* <length> 3개의 fragment는 각각 1500/1500/1040byte로 나뉨
* <fragflag> 마지막꺼만 0, 그 전에는 1
* <offset> 첫 번째는 "0", 두 번째는 1480/8="185", 세 번째는 (1480+1480)/8="370"
"Reassembly"
=> Reassemble할 때 offset을 보고 순서 결정
(예제)
datagram length=2400byte
MTU=700byte
ID=422
2380/680 => 몫 3, 나머지 340
Total datagram length | ID | FragFlag | offset |
700 | 422 | 1 | 0 |
700 | 422 | 1 | 680/8=85 |
700 | 422 | 1 | 85*2=170 |
360 | 422 | 0 | 85*3=255 |
'네트워크 > 컴퓨터 네트워크 수업' 카테고리의 다른 글
4-3. IP(Internet Protocol)(3) (0) | 2024.11.16 |
---|---|
4-3. IP(Internet Protocol)(2) (6) | 2024.11.15 |
4-2. What's inside a router(1) (2) | 2024.11.12 |
4-1. Overview of Network Layer (0) | 2024.11.12 |
2-3. Electronic mail(SMTP & POP3) (0) | 2024.11.12 |