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
'TIL' 카테고리의 다른 글
TIL 2021-11-10 ICMP 1 (0) | 2021.11.10 |
---|---|
TIL 2021-11-09 Python Pandas, Spam Filtering (0) | 2021.11.09 |
TIL 2021-11-06 Next.js12 (0) | 2021.11.06 |
TIL 2021-11-05 useInfiniteQuery와 Cursor Pagination, Intersection Observer Hook (0) | 2021.11.05 |
TIL 2021-10-20 IP2 (0) | 2021.10.20 |