IP 데이터그램: Difference between revisions
From CS Wiki
No edit summary |
No edit summary |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
[[분류:네트워크]] | [[분류:네트워크]] | ||
;IP Datagram | |||
;IP Datagram; IP Packet; IP 패킷 | |||
IP프로토콜에서 데이터가 전달되는 기본 단위 | IP프로토콜에서 데이터가 전달되는 기본 단위 | ||
== 헤더 == | *IP 패킷이라고 많이 부르지만, '[[패킷]]'이라는 표현은 더 일반적인 표현으로, IP에서 사용되는 패킷을 데이터그램이라 칭하므로, IP 데이터그램이라고 부르는 것이 더 정확함 | ||
==데이터그램 헤더== | |||
{| class="wikitable" | {| class="wikitable" | ||
| Version (4bit) | |Version (4bit) | ||
All) 0100 | All) 0100 | ||
| HLEN (4bit, quartets 단위) | |HLEN (4bit, quartets 단위) | ||
헤더의 길이 | 헤더의 길이 | ||
| DS/ESN (8bit) | |DS/ESN (8bit) | ||
지금은 거의 쓰이지 않는 옵션 | 지금은 거의 쓰이지 않는 옵션 | ||
대부분 00000000으로 들어감 | 대부분 00000000으로 들어감 | ||
| colspan="2" | Total Length (16bit, octets 단위) | | colspan="2" |Total Length (16bit, octets 단위) | ||
데이터를 포함한 IP Datagram의 전체 길이 | 데이터를 포함한 IP Datagram의 전체 길이 | ||
|- | |- | ||
| colspan="3" | Identification (8bit) | | colspan="3" |Identification (8bit) | ||
재조립을 위한 모체를 식별하는 코드 | 재조립을 위한 모체를 식별하는 코드 | ||
| Flags(3bit) | |Flags(3bit) | ||
-More bit: 파편 중 마지막인지 아닌지 | -More bit: 파편 중 마지막인지 아닌지 | ||
-Don't fragment bit: 절대 분할금지. 분할이 필요하면 폐기 | -Don't fragment bit: 절대 분할금지. 분할이 필요하면 폐기 | ||
| Fragment Offset(15bit, octets 단위) | |Fragment Offset(15bit, octets 단위) | ||
헤더를 포함하지 않은 데이터만의 시작 위치 | 헤더를 포함하지 않은 데이터만의 시작 위치 | ||
|- | |- | ||
| colspan="2" | Time to Live (8bit) | | colspan="2" |Time to Live (8bit) | ||
데이터그램의 수명 | 데이터그램의 수명 | ||
Line 31: | Line 35: | ||
(라우터 통과) | (라우터 통과) | ||
0이 되면 폐기 | 0이 되면 폐기 | ||
| Protocol(8bit) | |Protocol(8bit) | ||
상위 계층의 프로토콜이 누구인가? | 상위 계층의 프로토콜이 누구인가? | ||
ex) TCP, UDP, ICMP | ex) TCP, UDP, ICMP | ||
| colspan="2" | Header Checksum(16bit) | | colspan="2" |Header Checksum(16bit) | ||
데이터 전체가 아닌 헤드의 오류만 검출 | 데이터 전체가 아닌 헤드의 오류만 검출 | ||
오류가 검출되면 복구하지 않고 폐기 | 오류가 검출되면 복구하지 않고 폐기 | ||
|- | |- | ||
| colspan="5" | Source Address(32bit) | | colspan="5" |Source Address(32bit) | ||
|- | |- | ||
| colspan="5" | Destination Address (32bit) | | colspan="5" |Destination Address (32bit) | ||
|- | |- | ||
| colspan="5" | Options + Padding (가변 bit) | | colspan="5" |Options + Padding (가변 bit) | ||
Padding: 전체 길이가 무조건 4의 배수가 되어야 하기 때문에 4의 배수가 아닐 경우 이를 채우기 위해 사용 | Padding: 전체 길이가 무조건 4의 배수가 되어야 하기 때문에 4의 배수가 아닐 경우 이를 채우기 위해 사용. | ||
|} | |} | ||
*'''버전숫자:''' IP 프로토콜의 버전을 정의 | |||
*'''헤더길이:''' 데이터그램은 가변의 헤더를 가지게되기 떄문에 수신자가 데이터그램을 수신하면 헤더가 어디서 끝나고 패킷에 캡슐화된 데이터가 어디서 시작하는지 알아야 한다. 따라서 수신자는 전체 길이를 확인하기 위해 필드값에 4를 곱하게 된다. | |||
*'''서비스유형:''' 데이터그램을 어떻게 처리할지를 정의 | |||
*'''전체길이:''' IP 데이터그램의 전체 바이트 수를 정의함 | |||
*'''식별자 ('''[[IP 단편화|단편화]] '''관련):''' 데이터그램이 전송된 근원지 호스트를 구분 | |||
*'''플래그 ('''[[IP 단편화|단편화]] '''관련):''' 세개의 비트로 단편화 관련 정보를 표시함 | |||
**첫번째 비트 : 사용되지 않음 | |||
**두번째 비트 : 단편화 금지 필드 | |||
**세번째 비트 : 1이면 다른 단편이 더 있음을 의미, 0이면 마지막 단편이거나 오직 하나의 단편임을 의미 | |||
*'''단편화 오프셋:''' 전체 데이터그램에서 해당 단편의 상대적인 위치를 나타냄 | |||
*'''생존시간(TTL):''' TTL 필드는 데이터그램이 방문할 수 있는 최대 라우터 수를 정의함 | |||
*'''프로토콜:''' 근원지 IP에서 페이로드가 캡슐화될 때, 이 필드에 상응하는 프로토콜의 번호가 추가됨 | |||
*'''헤더 검사합(Checksum):''' IP는 헤더를 검사하기 위한 검사합 필드를 추가함 | |||
*'''근원지와 목적지(Destination Address):''' 각각 소스IP와 목적지IP주소를 나타냄 | |||
*'''옵션:''' 데이터그램 헤더는 40바이트까지 옵션을 가질 수 있음 | |||
==[[IP 단편화]]== |
Latest revision as of 10:08, 29 January 2022
- IP Datagram; IP Packet; IP 패킷
IP프로토콜에서 데이터가 전달되는 기본 단위
- IP 패킷이라고 많이 부르지만, '패킷'이라는 표현은 더 일반적인 표현으로, IP에서 사용되는 패킷을 데이터그램이라 칭하므로, IP 데이터그램이라고 부르는 것이 더 정확함
데이터그램 헤더[edit | edit source]
Version (4bit)
All) 0100 |
HLEN (4bit, quartets 단위)
헤더의 길이 |
DS/ESN (8bit)
지금은 거의 쓰이지 않는 옵션 대부분 00000000으로 들어감 |
Total Length (16bit, octets 단위)
데이터를 포함한 IP Datagram의 전체 길이 | |
Identification (8bit)
재조립을 위한 모체를 식별하는 코드 |
Flags(3bit)
-More bit: 파편 중 마지막인지 아닌지 -Don't fragment bit: 절대 분할금지. 분할이 필요하면 폐기 |
Fragment Offset(15bit, octets 단위)
헤더를 포함하지 않은 데이터만의 시작 위치 | ||
Time to Live (8bit)
데이터그램의 수명 네트워크를 거칠 때마다 --1; (라우터 통과) 0이 되면 폐기 |
Protocol(8bit)
상위 계층의 프로토콜이 누구인가? ex) TCP, UDP, ICMP |
Header Checksum(16bit)
데이터 전체가 아닌 헤드의 오류만 검출 오류가 검출되면 복구하지 않고 폐기 | ||
Source Address(32bit) | ||||
Destination Address (32bit) | ||||
Options + Padding (가변 bit)
Padding: 전체 길이가 무조건 4의 배수가 되어야 하기 때문에 4의 배수가 아닐 경우 이를 채우기 위해 사용. |
- 버전숫자: IP 프로토콜의 버전을 정의
- 헤더길이: 데이터그램은 가변의 헤더를 가지게되기 떄문에 수신자가 데이터그램을 수신하면 헤더가 어디서 끝나고 패킷에 캡슐화된 데이터가 어디서 시작하는지 알아야 한다. 따라서 수신자는 전체 길이를 확인하기 위해 필드값에 4를 곱하게 된다.
- 서비스유형: 데이터그램을 어떻게 처리할지를 정의
- 전체길이: IP 데이터그램의 전체 바이트 수를 정의함
- 식별자 (단편화 관련): 데이터그램이 전송된 근원지 호스트를 구분
- 플래그 (단편화 관련): 세개의 비트로 단편화 관련 정보를 표시함
- 첫번째 비트 : 사용되지 않음
- 두번째 비트 : 단편화 금지 필드
- 세번째 비트 : 1이면 다른 단편이 더 있음을 의미, 0이면 마지막 단편이거나 오직 하나의 단편임을 의미
- 단편화 오프셋: 전체 데이터그램에서 해당 단편의 상대적인 위치를 나타냄
- 생존시간(TTL): TTL 필드는 데이터그램이 방문할 수 있는 최대 라우터 수를 정의함
- 프로토콜: 근원지 IP에서 페이로드가 캡슐화될 때, 이 필드에 상응하는 프로토콜의 번호가 추가됨
- 헤더 검사합(Checksum): IP는 헤더를 검사하기 위한 검사합 필드를 추가함
- 근원지와 목적지(Destination Address): 각각 소스IP와 목적지IP주소를 나타냄
- 옵션: 데이터그램 헤더는 40바이트까지 옵션을 가질 수 있음