IP는 패킷을 전송하고 수신하는 동안에 발생하는 주소화, 경로 선택, 패킷 조립 등의 작업을 처리하여 데이터의 안정적인 전송을 가능하게 합니다. 이를 통해 IP는 인터넷을 비롯한 다양한 네트워크에서 호스트 간 통신을 지원하며, 이기종 시스템들 사이에서도 데이터를 교환할 수 있습니다.
IP는 패킷 스위칭 네트워크에서 주소 지정과 라우팅을 담당하며, 데이터를 작은 패킷 단위로 나누어 전송합니다. 각 패킷은 출발지와 목적지의 IP 주소를 포함하고 있어서 목적지로의 정확한 전송이 가능합니다. 이러한 IP 주소는 전 세계적으로 고유하게 할당되며, 네트워크 상에서 패킷이 올바른 경로로 전달되도록 합니다.
IP는 네트워크에서 데이터의 전송을 신뢰성 있게 처리하며, 인터넷과 같은 대규모 네트워크에서도 확장성을 가지고 동작합니다. 이를 통해 다양한 이기종 시스템들이 연결되어 있는 현대의 인터넷에서 웹 페이지, 이메일, 파일 전송 등의 다양한 서비스를 가능하게 합니다.
호스트 간의 직접적인 연결로 인해 패킷의 전송
→ communication only possible between physically connected hosts
(물리적으로 연결된 호스트들끼리만 통신
이 가능합니다.)
네트워크 계층은 데이터 통신에서 중요한 역할을 수행합니다. 그러나 네트워크 계층이 없다면 패킷의 전송은 직접적으로 이웃한 노드 간
에 이루어지게 됩니다. 이러한 경우에는 패킷이 호스트로부터 출발하여 노드 간의 링크를 통해 직접적으로 수신 호스트에 도달
하게 됩니다.
패킷은 출발 호스트에서 목적 호스트로 전달되는 동안에는 상위 계층에서 제공되는 주소와 식별 정보를 사용하여 목적지를 식별하고 전송 경로를 결정합니다. 그러나 네트워크 계층이 없는 경우에는
패킷의 전송 경로를 결정할 수 있는 정보가 없으므로,
패킷은 출발 호스트로부터 수신 호스트로의 직접적인 경로를 따라 전달`됩니다.
이렇게 네트워크 계층이 없는 경우에는 호스트 간의 직접적인 연결로 인해 패킷의 전송
이 이루어지기 때문에, 전체 네트워크에서의 확장성과 유연성이 제한
될 수 있습니다. 네트워크 계층의 역할은 이러한 제한을 극복하여 다양한 네트워크 환경에서 데이터의 안정적이고 효율적인 전송을 가능하게 하는 것입니다.
네트워크에서는 호스트 간의 통신을 위해 물리적인 연결이 필요합니다. 호스트들은 네트워크 케이블, 스위치, 라우터 등을 통해 직접적으로 연결
되어야만 데이터를 주고받을 수
있습니다. 이러한 물리적인 연결을 통해 호스트들은 데이터를 전송하고, 이동한 데이터를 수신
하는 것이 가능합니다.
물리적인 연결이 없는 호스트들은 서로 직접적인 통신이 불가능
합니다. 예를 들어, 호스트 A와 호스트 B가 서로 다른 네트워크에 위치하고 있고, 두 네트워크 사이에는 물리적인 연결이 없다면 호스트 A와 호스트 B는 직접적인 통신이 불가능합니다. 이 경우에는 두 호스트 사이에 중간에 위치한 라우터나 게이트웨이 등을 통해 데이터가 라우팅되어야만 통신이 이루어질 수 있습니다.
따라서, 네트워크에서는 물리적인 연결을 통해 호스트들을 서로 연결
하고, 이를 통해 데이터의 전송과 통신
이 가능하게 됩니다. 네트워크 계층은 이러한 호스트 간의 통신을 관리하고, 데이터를 목적지까지 안전하고 효율적으로 전달하는 역할을 수행합니다.
네트워크 계층은 인터넷 프로토콜 (IP)
을 사용하여 패킷의 전송을 관리
하는 역할을 수행합니다. 이를 통해 패킷은 송신 호스트에서 수신 호스트로 전달
될 수 있습니다.
→ 라우터를 사용하면 다중 홉(multi-hop)
통신이 가능해집니다.
패킷의 흐름은 다음과 같은 단계로 이루어집니다:
패킷 생성
: 송신 호스트에서 전송할 데이터를 패킷으로 나눕니다. 각 패킷은 헤더와 페이로드
로 구성되며, 헤더에는 출발지 및 목적지 IP 주소 등의 정보가 포함됩니다.라우팅
: 송신 호스트는 패킷을 네트워크로
보냅니다. 패킷은 여러 개의 라우터
를 거치면서 목적지로 향합니다. 라우터는 패킷의 헤더 정보를 확인하고 적절한 다음 홉 (next hop)으로 패킷을 전달
합니다. 이 과정은 라우팅 테이블을 참조하여 수행됩니다.패킷 전송
: 각 라우터는 수신한 패킷을 다음 홉으로 전달합니다. 이때, 패킷의 헤더 정보를 업데이트하여 다음 목적지를 표시합니다. 패킷은 목적지에 도달할 때까지 이러한 과정을 반복합니다.수신 및 재조립
: 목적지 호스트는 패킷을 수신
하고, 패킷의 페이로드를 추출하여 데이터를 복원
합니다. 이때, 패킷은 순서대로 재조립되어 원래의 데이터로 복구
됩니다.네트워크 계층은 패킷의 전송과 라우팅
을 관리함으로써 다양한 네트워크 간의 통신
을 지원합니다. 이를 통해 패킷은 여러 개의 네트워크를 통과하며 목적지에 안전하고 효율적으로 전달
됩니다. 또한, 네트워크 계층은 패킷의 경로 선택, 라우팅 프로토콜, IP 주소 할당 등과 같은 중요한 기능을 제공하여 전체 인터넷의 원활한 동작을 보장합니다.
다중 홉 통신
은 송신 호스트와 수신 호스트 사이에 여러 개의 라우터가 연결
되어 있는 경우를 의미합니다. 데이터는 송신 호스트에서 출발하여 라우터를 거쳐 수신 호스트에 도달하는 과정을 거치게 됩니다. 각 라우터는 도착지로 데이터를 전달하기 위해 최적의 경로를 선택하고 패킷을 전달합니다.
다중 홉 통신을 가능하게 하는 것은 인터넷 프로토콜(IP)입니다. IP는 패킷을 여러 개의 호스트와 라우터를 거쳐 목적지에 전달하는 역할을 수행합니다. 각 라우터는 패킷을 받아 최적의 경로를 선택하고 다음 라우터에게 전달합니다. 이 과정을 반복하여 패킷은 최종적으로 수신 호스트에 도달하게 됩니다.
라우터는 패킷을 받고 도착지 주소를 확인하여 다음 라우터로 전달하는 중개 역할을 합니다. 이를 통해 다중 홉 통신이 가능해지며, 데이터는 여러 라우터를 거쳐 목적지에 도달할 수 있습니다. 이렇게 다중 홉 통신은 네트워크의 확장성과 유연성을 제공하며, 멀리 떨어진 호스트들 간의 통신을 가능하게 합니다.
IP
는 모든 라우터가 구현해야하는 통합 프로토콜
입니다.모두 IP를 구현
해야 합니다.손실
될 수 있음 (lost)순서가 바뀌어 전달
될 수 있음 (out-of-order)중복된 패킷
이 전달될 수 있음 (duplicate copies)오랜 시간 동안 지연
될 수 있음 (delay)IP: Packet Format
IP Header
가 첨부됩니다.옵션이 없는 경우 20바이트
이며, 옵션이 있는 경우 최대 60바이트까지
입니다.IP Header
HLEN: 헤더의 길이
4 bytes
service class
라우터에서 처리
됩니다.전체 길이 (Total Length)
: 패킷의 전체 길이 (header + data
)바이트 단위
로 표현되며, 헤더와 데이터를 모두 포함한 패킷의 전체 길이
를 나타냄라우터를 통과할 때마다 감소
됨TTL이 0
이 되면 패킷은 더 이상 전달되지 않음
우선순위가 가장 낮은 패킷부터 삭제
됨하나만 1
로 설정 가능하거나, 전부 0
으로 설정됨- 이전의 우선순위와 서비스 유형을 대체하는 업데이트된 필드
- 패킷의 서비스 요구 사항을 나타내는데 사용됨
- 혼잡 상태를 감지하고 네트워크에서 명시적으로 통지하는 기능
- 패킷의 전송 지연과 패킷 손실을 줄이기 위해 사용됨
Exercise 1.
IPv4 packet의 처음 8비트는 0100 0010 이다. 라우터는 잘못된 패킷이므로 해당 패킷을 삭제한다. Why?
Answer.
이 패킷은 잘못된 패킷으로 간주되어서 라우터가 해당 패킷을 삭제합니다. 이는 초기 8비트 "01000010"이 IPv4 패킷의 올바른 버전 값이 아니기 때문입니다. `IPv4 프로토콜에서는 버전 필드가 "0100"`로 설정되어야 하지만, 이 경우 `값이 "0100 0010"으로 잘못`되었습니다. 따라서 `라우터는 패킷을 잘못된 패킷으로 인식하고 삭제`합니다.
Exercise 2.
IPv4 패킷의 HLEN 값이 이진수로 1000이다. IP 헤더의 옵션 필드의 길이는 얼마인가?
Answer.
`HLEN 값은 IP 헤더의 길이`를 나타내는 값입니다. 이 값은 `4바이트 단위`로 표현되며, `이진수로 표현할 경우 1000은 8`을 의미합니다. 따라서 `옵션 필드의 길이는 8바이트`입니다.
Exercise 3.
패킷의 HLEN 값이 5이고, 총 길이 필드(total length field)의 값이 0x0028입니다. 이 IP 패킷의 데이터(data)의 길이는 얼마인가요?
Answer.
1. `HLEN 값이 5는 헤더의 길이`를 나타내며, `4바이트(32비트) 단위`로 표현됩니다. `HLEN 값이 5`이므로 `헤더의 길이는 5 x 4 = 20바이트`입니다.
2. 총 길이 필드의 값인 0x0028은 16진수로 표현된 값으로, 이를 10진수로 변환하면 `40`입니다. 이 값은 `헤더와 데이터를 합친 전체 패킷의 길이`를 나타냅니다.
3. `전체 패킷의 길이에서 헤더의 길이를 뺀 값`을 계산하면 `데이터의 길이`를 구할 수 있습니다.
4. `데이터의 길이 = 총 길이 - 헤더의 길이 = 40 - 20 = 20바이트`입니다.
Exercise 4.
주어진 IPv4 패킷의 초기 부분은 다음과 같습니다: 0x45000028000100000102
이 패킷의 Time-to-Live (TTL) 값은 무엇인가요?
Answer.
`IPv4 패킷의 Time-to-Live (TTL)은 패킷이 네트워크를 통해 전달될 수 있는 최대 라우터 수`를 의미합니다. `TTL은 패킷의 IP 헤더의 9번째 바이트` 에 위치하고 있습니다.
IPv4 패킷의 초기 부분은 0x45000028000100000102로 주어졌습니다. 이는 16진수로 표현된 값입니다. IPv4 패킷의 Time-to-Live (TTL) 값은 패킷이 네트워크를 통해 전달되는 동안 생명 주기를 나타내는 값입니다.
TTL 값은 이진수로 표현된 32비트 값에서 `9번째 비트부터 16번째 비트`까지의 비트 그룹입니다. 따라서, 주어진 패킷의 이진 표현은 다음과 같습니다:
주어진 IPv4 패킷의 Time-to-Live (TTL) 값을 찾아보겠습니다.
주어진 패킷의 32자리 16진수 표현은 다음과 같습니다: 0x45000028000100000102
TTL 값은 9번째와 10번째 바이트에 위치하며, 이 값은 패킷이 네트워크를 통과할 수 있는 최대 라우터 수를 나타냅니다.
따라서, 해당 패킷의 TTL 값은 0x01 (16진수)이며, 1 (10진수)로 해석됩니다.
즉, 이 패킷의 Time-to-Live (TTL) 값은 1입니다.
따라서, 이 `패킷의 Time-to-Live (TTL) 값은 1`입니다. 이 값은 `패킷이 네트워크를 통과하는 동안 최대 1개의 라우터를 거치고 지나가야 함`을 나타냅니다.
자체적인 패킷 전송 제한
을 가지고 있으며, 이는 MTU로 표현됩니다. 예를 들어, 이더넷은 일반적으로 1500바이트의 MTU를 가지고 있습니다. 반면에, 다른 프로토콜들은 더 작거나 큰 MTU를 가질 수 있습니다.IP 패킷의 크기가 MTU보다 크면 패킷을 여러 조각
으로 나누어야 합니다.각 조각에는 IP 헤더
가 첨부됩니다.- `동일한 패킷의 모든 조각은 동일한 식별자 번호`를 가집니다.
- `'D' 비트가 1`이면: 이 패킷은 `조각화되지 않아야 함`
• 패킷의 크기가 MTU보다 크면 패킷이 폐기됨
- `'M' 비트가 1`이면: `이후에 더 많은 조각`이 있음
• `'M'이 0`이면, 이것은 `마지막 조각`이거나 `유일한 조각`입니다.
→ D: Do not fragment
→ M: More fragment
- 원래 패킷에서 해당 조각의 위치를 나타냄
• 단위: 8 byte
• 데이터 바이트만을 고려함
어떤 노드에서든지
발생할 수 있습니다.재조립은 최종 목적지에서만
이루어집니다.중간 노드에서 패킷을 재조립하면 다시 조각화
해야 할 수도 있습니다.목적지에 도달하지 않으면 전체 패킷은 폐기
됩니다.→ 패킷의 모든 조각이 정확하게 도착해야만 패킷이 완전하게 재조립될 수 있습니다.
Fragmentation & reassembly
Exercise 1.
한 패킷이 도착했고, 해당 패킷의 'M' 비트가 0
인 경우의 의미는 다음 중 하나입니다:
조각나지 않은 패킷
입니다: 'M' 비트가 0이면, 패킷이 조각으로 나뉘어지지 않았음
을 나타냅니다. 이는 완전한 패킷
이거나 패킷의 유일한 조각
일 수 있습니다.조각화
되었고, 이 조각이 마지막 조각
입니다: 경우에 따라, 패킷이 조각으로 나뉘어져 있더라도 마지막 조각의 'M' 비트는 0
으로 설정될 수 있습니다. 이는 수신측이 모든 조각을 받았고 패킷을 재조립
할 수 있다는 것을 나타냅니다.→ 따라서 주어진 정보를 기반으로 하면, 해당 패킷은 조각화되지 않은 패킷
이거나 조각화된 패킷이며 이 조각이 마지막 조각
인 것입니다.
Exercise 2.
한 패킷이 도착했고, 해당 패킷의 'M' 비트가 1
인 경우의 의미는 다음과 같습니다:
조각화된 패킷
이며, 현재 조각은 마지막 조각이 아닙니다
: 'M' 비트가 1인 경우, 패킷이 조각
으로 나뉘어져 있고 현재 조각은 마지막 조각이 아니라는 것
을 나타냅니다. 즉, 추가적인 조각이 이어서 전송
될 것으로 예상됩니다.따라서 주어진 정보를 기반으로 하면, 해당 패킷은 조각화된 패킷
이며 현재 조각은 마지막 조각이 아닙니다
. 추가적인 조각이 이어서 전송
될 것으로 예상됩니다.
Exercise 3.
한 패킷이 도착했고, 해당 패킷의 'M' 비트가 1
이며, fragment offset 이 0
인 경우의 의미는 다음과 같습니다:
조각화된 패킷
이며, 이것은 첫 번째 조각
입니다: 'M' 비트가 1이고 조각화 오프셋이 0인 경우, 이 패킷은 조각화된 패킷이며, 현재 조각은 첫 번째 조각임을 나타냅니다. 즉, 이 패킷은 전체 패킷의 처음부분
을 나타내며, 이후에 추가적인 조각이 이어서 전송
될 것으로 예상됩니다.따라서 주어진 정보를 기반으로 하면, 해당 패킷은 조각화된 패킷
이며, 이것은 첫 번째 조각
임을 나타냅니다. 이후에 추가적인 조각이 이어서 전송될 것으로 예상됩니다.
Exercise 4.
한 패킷이 도착했고, 해당 패킷의 fragment offset이 100
인 경우의 의미는 다음과 같습니다:
조각화된 패킷
이며, 현재 조각의 위치는 800바이트
입니다: 조각화 오프셋은 조각의 위치
를 나타내는 값으로, 데이터 바이트만을 고려
합니다. 또한, fragment offset은 8바이트
만을 고려한다. 따라서 조각화 오프셋이 100인 경우, 이 패킷은 원래 패킷의 800바이트 위치에 해당하는 조각임을 나타냅니다. (100 x 8byte = 800 bytes)따라서 주어진 정보를 기반으로 하면, 해당 패킷은 조각화된 패킷
이며, 현재 조각은 원래 패킷의 800바이트
위치에 해당합니다.
Exercise 5.
주어진 패킷의 조각화 오프셋은 100이며, HLEN은 5이고 총 길이는 100입니다.
이 때, 해당 조각의 원래 패킷에서의 첫 번째와 마지막 위치(바이트)는 무엇인가요?
Exercise 6.
IP 헤더 크기가 항상 20바이트라고 가정합니다.
IP 패킷의 크기가 5140바이트인 경우 (헤더 포함)
데이터 링크 계층의 MTU가 1500바이트이면, 이 패킷은 어떻게 분할되어야 할까요?
IP header = 20 bytes
IP packet = 5140 bytes
MTU = 1500 bytes
분수의 분할 수는 존재할 수 없으므로, 가장 가까운 정수로 반올림합니다. 따라서 총 4개의 분할이 필요합니다.
각 분할은 IP 헤더를 첨부하여 최대 페이로드 크기가 1480바이트가 됩니다. 원래 패킷은 이러한 분할로 나뉘어지게 되며, 각 분할에는 IP 헤더가 첨부됩니다.
참고로, 이는 IP 헤더 크기가 항상 20바이트로 고정되고, 분할 오프셋이 8바이트 단위로 계산되는 것을 가정한 간소화된 설명입니다. 실제로는 IP 헤더 크기와 네트워크 상황을 포함하여 분할이 더 복잡하고 다양한 요인에 따라 달라질 수 있습니다.
패킷의 ‘M’ 비트가 0
패킷의 ‘M’비트가 1
패킷의 ‘M’비트가 1이고, fragment offset이 0
패킷의 ‘M’비트가 1이고, fragment offset이 100