본문으로 바로가기

TIL 2021-10-15 IP

category TIL 2021. 10. 15. 00:16

Internet Protocol은 packet-switched 컴퓨터 통신 네트워크의 interconnected 시스템 사용을 위해 디자인되었다.

 

IP는 source-> destination으로 보내는 데이터 블럭들인 datagram을 전송하는걸 제공한다.

 

source와 destination은 고정된 IP 주소값으로 식별되는 host

 

long datagram의 fragmentation과 reassembly를 제공함

 

two basic function

 

1. addressing

 

2. fragmentation

 

internet module은 datagram을 destination에 전송하기 위해 인터넷 헤더에 주소를 사용함

 

전송의 경로를 설정하는 것이 routing

 

small packet network로 전송할 필요가 있을때, 

 

IP header의 field를 통해서  datagram을 fragment + reassemble함

 

IP는 각각의 datagram을 다른 인터넷 datagram과 관계 없는 독립적인 entity로 다룸.

 

connection X

 

logical circuit X

 

-> 이것이 end to end principle, Fate sharing 등으로

 

IP Operation

 

1. Type of servie

2. Time to Live

3. Options

4. Header Checksum

 

IPv4 Header

 

 

Version : IPv4 or IPv6

 

Header Lenght(HLEN) : 32bit(4byte) 유닛으로 헤더 길이를 나타냄

 

Total Length: 헤더를 포함한 datagram의 전체 길이

 

HLEN이 8이라는건 총 헤더의 길이가 32바이트므로, 기본적인 20바이트를 제외하고 12바이트에 옵션을 할당하는것

 

Protocol

 

이 필드는 datagram의 data부분에 사용되는 다음 레벨의 프로토콜을 나타냄

 

protocol의 값은 'Assigned Number'에서 특정됨

 

어떤 상위 레이어 프로토콜이 사용되었는지를 보여즘 (TCP, UDP etc...)

 

 

Type of Service

 

어떤 Quality of the service(QoS)가 필요한지 나타냄

 

이 타입은 datagram을 라우팅할떄 게이트웨이로 하여금 다음 hop이나 게이트웨이에 사용되는 네트워크의 실제 transmission parameter을 고를때 사용됨

 

MF(Mutli-Field) Classification : 패킷 헤더에 포함된 다양한 필드를 참조하여 패킷이 중요한 패킷인지 여부를 분류하는 방법

 

Behaviour-Aggregate(BA) Classification: QoS 정보는 이미 packet에 포함되어 있고, 그 필드를 통해서 중요도를 판별

 

-Differentiated Service Code Point

 

유사한 클래스를 하나의 클래스로 분류하고 각 클래스에 가중치를 부여하는 방법.

 

easy + scalable + most widely used

 

 

ECN

 

00 사용하지 않음

 

01, 10 ECN 할거임(라우터는 동일하게 취급)

 

01, 10 -> 11 로 바꾸어서 송신자에게 돌려보내면 네트워크가 혼잡하구나 인식

 

 

Time to Live

 

datagram의 lifetime의 upperbound를 나타냄

 

라우터가 IP Packet을 받을떄마다 TTL 값을 하나씩 감소시킴

 

TTL값이 0을 받으면 패킷을 버림

 

의도

 

패킷이 네트워크에 얼마나 오래 있었는지와 버려야할지를 말해즘

 

다양한 이유로 특정 위치로 시간내에 패킷이 전송되지 못하는 경우가 있음.

 

Ex) 잘못된 routing table의 조합으로 packet이 cycle을 도는 경우

 

TTL은 sender에게 packet을 다시 보내야한다고 알려주는 답으로 사용될수도 있음

 

Default TTL

 

Window 128

UNIX 64

Others 255

 

 

Addressing

 

name, address, route에 구별이 있어야함

 

name은 뭘 찾는지

address는 어디에 있는지

route는 어떻게 가는지

 

Fragmentation

 

이것은 큰 packet size를 허용하는 로컬 넷에 생성되었다가 작은 사이즈의 packet으로 제한하는 로컬 넷으로 횡단할떄 필요함

 

don't fragment로 표시되는 경우도 있는데 이 경우에는 어떠한 상황에서도 fragmented되지 않음

 

Maximum Transmit Unit

 

네트워크 인터페이스의 세그먼트없이 보낼수 있는 최대 datagram 사이즈임

 

Fragments의 수신자가 사용하는 것

 

identification field

다른 데이터그램이 섞이지 않았나 확신하기 위함

 

fragment offset

원래 datagram의 fragment의 포지션을 말해줌

 

fragment offset과 길이는 이 fragment에 의해 적용되는 원래 datagram의 부분을 결정함

 

 

 

이 필드들은 datagram을 재조립하는데 충분한 정보를 줌

Flag

3bit 중 1비트는 사용하지 않고,

Do not fragment와 more fragment가 있음

more-fragment flag는 마지막 fragment라는 것을 의미함. 더 받을게 있다면 1 마지막이라면 0

 

offset 단위는 8 octect(64bit)

 

 

fragment offset이 175, 275, 350인 이유

 

8octect으로 나타내야하기 떄문에 8로 나눔!

1400/8 = 175

 

220/8 = 275

 

2800/8 = 350