- Today
- Total
프로그래밍 농장
TCP / IP 프로토콜 [ IP Protocol / Fragmentation ] 본문
- IP Protocol
- Unreliable & connectionless
datagram을 직접전송 : Unreliable
- Best-effort : -> not guarantee : 네트워크에서 제공가능하면 최대한 제공
- 각 datagram은 독립적으로 실행 -> ( 목적지만 보고 동작함) / out-of-order (들어온 순서대로 처리)
- layer 4
- TCP protocol : reliable 한 특성을 가짐 : out-of-order 방식해결 : 순차적처리
ICMP : port정보를 전송
- Datagram = packet : 데이터그램 : 가변성(variable)을 가짐 -> 헤더정보에 total length 들어감( 20 - 60 bytes )
- TTL (Time to live) = hop count (8 bits) : 이 datagram이 네트워크안에서 지나갈수있는 최대의 수 ( 몇개의 라우터를 거쳐갈수있는지 ) -> packet이 loop되는것을 막을수있다 . -> (최대 64번이 지나면 폐기)
= Number of hops : ip datagram이 소스로 부터 목적지까지 갈떄 중간에 지나갈수있는 최대의 hope 수 ( router 수)
- protocol ( 8 bits ) field : 네트워크 계층에서 수신한 값을 어떤 프로토콜을 사용하였는지 판단 ( TCP /UDP )
- header checksum ( 8 bits ) : 비트에서 오류가 생겼을떄 체크 ( Check errors )
- flags (3 bits) : used in fragmentation - DF / MF ( Don't fragment / More fragment )
- Source address : The IP address of source (user privacy 포함가능)
- Destination address : The IP address of destination (user privacy 포함가능)
첫번쨰 4필드 : 버전 필드 / 두번쨰 4필드 : 헤더의 길이
- Header
-> 기본 20 bytes / 늘어날수있는 최대 40 bytes -> 최대 60 bytes
-> 암호화가 이루어지지않음 ( incapsulation X / 항상 오픈되어있음 )
-payload
상위계층에서 내려온 정보가 이곳으로 들어옴
-> 이 정보들을 네트워크 내에서 처리하기위한 incapsulation 과정을 거치는 곳이 Header 이다.
Example 7.1
An IP packet has arrived with the first 8 bit shown :
01000010
The receiver discards the packet. Why ?
풀이 : 첫번쨰 4필드 0100 -> 버전 필드 : 0100 = 10진수변환 -> '4' : IPv4 라는것을 확인가능
( IPv4 헤더의 최소사이즈 : 20~ 60 bytes )
두번쨰 4필드 0010 = 10진수변환 -> 2 * 4 = 8 bytes
정답 :
-> 헤더의 최소사이즈(20)에 미달되는 값이 들어옴. -> 패킷중간에 오류가 생겨서 미달값이 생김 .-> 버림
Example 7.2
In an IP packet, the value of HLEN (Header Length) is 1000 in binary. How many byte of option are being carried by this packet?
풀이 : 헤더길이가 1000 -> 10진수변환 : 8 * (IPv4이므로 *4) : 헤더길이 = 32 bytes
-> 헤더길이의 최소값 : 20 bytes : 32(입력값) - 20(기본값) = 12 bytes 의 추가된 옵션을 가지고있음
Example 7.3
In an IP packet, the value of HLEN(Header Length) is 5 16 and the value of the total length field is 0028 16 . How many bytes of data are being carried by this packet ?
풀이
Header length = 5 * 4 (IPv4 이기때문) = 20 bytes
Total length = 2 * 16 + 8 : 40 bytes
-> 이 패킷의 실제 데이터 : 40 -20 = 20 bytes
- Fragmentation
datagram의 총 크기가 항상 MTU(Maximum Transfer Unit)보다 작아야한다 -> 그래야 분할이 이루어지지않는다.
Fragmentation = 데이터그램이 네트워크를 통과할수있도록 만들어주는것
DF (Don't Fragment) : 더이상 fragment 될것이 없음
MF (More Fragment) : 더 fragment 할것이 남음
-> 한번 fragmentation을 진행할경우마다 offset value가 바뀜( fragmentation의 시작점이 바뀜 )
-> bit 값은 워드단위이기 떄문에 : ex) 0000/8 = 0 - 1400/8 = 175 - 2800/8 = 350
Example 7.8
A packet with M bit of 0 has arrived. Is this first fragment, or a middle fragment? Do we know if the packet was fragment ?
풀이 : More Fragment 가 0 (더이상없음) 이니까, last segment 이다. (마지막)
더이상없음(=분할될것이 없음) 이니까, 애초에 Fragment가 아닐수도있다. 그렇게에 fragment가 아닐수도있다.
Example 7.9
A packet with offset of 100 has arrived. HLEN(Header Length) = 5 and the value of the total length field = 100. What is the number of the first byte and the last byte ?
풀이 : offset value : 100 : 8 * 100(total length field) = 800 bytes 부터 시작 ( offset 값은 각 fragment 시 시작값 )
total length = 100 bytes / HLEN = 5 * 4(IPv4) = 20 bytes
-> 실제 payload의 사이즈 : 80bytes (=실제 옵션데이터)
-> 800+80(추가옵션데이터값) : 첫 데이터 bytes : 800 ~ 마지막 데이터 bytes : 879 / 다음 시작 offset : 880 ~~>
- Options
TLV의 형태로 되어있다 : type / length / value
- No Operation Option(NO-OP) : 각 옵션을 구분하기위하여 앞이나 끝에 붙혀주는 옵션(구분자 역할) 여러개 사용가능
- End of Operation : last option을 나타냄 / 오직 1개의 End Option을 사용
- Record Route Option : 소스에서 도착지까지 가는 경로에 있는 거쳐가는 라우터의 정보를 기족하는 옵션 ( 실질적으로 패키지를 manage 하는 입장에서 유용 [ 현재 대부분 안쓰임 ]
-> 최대 9개의 라우터까지만 저장가능 : 이유는 ? -> 헤더의 최소사이즈가 20 , 60byte이기 떄문에 옵션을 가질수있는 최대 -> 40bytes 이며, IPv4의 주소는 32bit -> 4bytes 가 들어감(한라우터당) -> 4*9=36까지가능 : 옵션의 끝에 end of operation 옵션이 들어가기떄문에 9개 까지만 가능하다.
-> Pointer : 처음을 나타내주기 위한 offset
-> 처음 시작하는 포인터 시작값 : 4 -> 이후 하나의 주소 추가기록 : 4+4=8의 시작값 ~~ 12byte로 시작 ~~ 16 ~~>
-> 위 그림에서 저장되는 IP 주소값을 잘 보아야함 . : 거쳐간 라우터 패킷들의 값들을 확인 !
- Source-Route Option
정보를 암호화할떄 일반적으로는, Header를 제외한 payload만을 암호화한다. : transroute 사용
-> 소스노드가 루트를 결정하는것 (중간에 거쳐가야할 라우터를 지정)
-> Strict option : 엄격/내가 지정한 루트(라우터)를 반드시 거쳐야함 (보통 네트워크가 작은경우 사용)
-> Loose option : 내가 지정한 루트를 지나가기는 하는데 순서상 중간에 다른 노드가 껴도 상관없음 ] (대부분 글로벌 네트워크일떄 - 그나마 요즘 사용 )
Strict option과 Loose option의 차이 : 융통성없이 지정한것만 따름 : Strint option / 융통성있지 지절한부분 거치기만하면됨 : Loose option
<Source-Route option>
- Timestamp Option
라우터에서 datagram을 받아서 처리했을떄의 시간을 기록하는 옵션 ( msec 단위로 기록 )
flags : 0일때 -> 오직 시간만 기록
1일떄 -> 주소와 시간을 기록
3일떄 -> 옵션에서 주소가 발견되면 시간을 기록
-> 1 datagram 마다 사용을 해야하기 떄문에 라우터에게 너무 큰 부담을 주기에 잘사용하지않는다 .
Checksum
헤더의 비트오류를 체크하기 위해서 만들어놓은 비트
0 : 비트오류 X / 0이아닌값 : 비트오류
'TCP-IP 프로토콜' 카테고리의 다른 글
TCP / IP 프로토콜 [ ICMP (Internet Control Message Protocol ] (0) | 2021.06.14 |
---|---|
TCP / IP 프로토콜 [ ARP (Address Resolution Protocol) ] (0) | 2021.06.14 |
TCP / IP 프로토콜 [ address manage / packet delivery ] (0) | 2021.06.13 |
TCP / IP 프로토콜 [ Underlying Technology ] (0) | 2021.04.19 |
TCP / IP 프로토콜 [ Addressing /Ethernet ] (0) | 2021.04.17 |