[네트워크]IPv4

공부기록·2023년 12월 4일
0
post-thumbnail

Introduction


  • IP는 Network Layer에 존재한다.

datagrams

  • network layer단계에서의 Packet은 datagram이라 부르며 header와 data로 나누어져있다.
    • header : 20-60bytes로 routing과 delivery 부분에서 중요하다.

IP datagram의 구조와 IP Header의 구조

  • 여기서 간략하게 말하자면 ...
    • VER : Protocol의 버전을 의미하며 우리는 4를 이용
    • HLEN : 헤더의 길이를 나타낸다.
    • Service Type : 덜 중요...
    • Total Length : padding을 포함하는지 안하는지 알 수 있다.
    • 두번째 라인은 모두 fragmentation과 관련이 있다.
      • Identification : 해당 packet의 id
      • Flags : DF(Don't fragment)필드와 MF(More fragment)필드 존재
      • Fragmentation Offset : Packet의 시작주소로부터 얼마나 떨어져있나
    • Time to live : TTL이라 불리며 LOOP를 방지할 때 이용, router이동시마다 1씩 감소
    • Protocol : UDP냐 TCO냐
    • Header checksum, Source IP Address, Destination IP Address

🔊 Total Length


  • 헤더를 포함한 datagram의 총 길이를 나타낸다.
  • 전체길이가 필요한 이유
    • ethernet frame으로 캡슐화될 때 최소 46 바이트가 되어야하는데 이를 채우지 못하면 padding이 붙게된다. 그러므로 실질적인 바이트의 길이를 나타내기위하여 필요하다.
  • Multiplexing
    • datagram의 data 속에는 ICMP, IGMP, TCP, UDP, OSPF 등의 정보가 들어간다.

🔊 Fragmentation


  • datagram이 다른 network로 이동할 때 캡슐화와 역캡슐화가 진행된다. datagram이 frame으로 캡슐화가 진행될 때 MTU, 즉 캡슐화 가능한 최대 길이를 넘어선 안된다.
  • 최대 길이를 넘은 datagram은 fragmentation이 필요하다.

🏷️ Flags field

  • 3bits
    • 빈거
    • D : Do not fragment
    • M : More fragmets, 뒤에 단편화된 packet이 존재한다는 뜻

🏷️ offset

  • 만약 데이터의 길이가 4000bytes일 경우 이를 자르는 과정을 수행해야한다. offset은 13bits로 8K까지만 표현이가능하지만 실제론 16만정도가 표현가능해야한다. 3bit가 더 필요하므로 offset을 표시할 땐 시작지점 / 8을 이용하여 모두 표현 가능하다.

🔊 Options


  • datagram은 가변부분(header)과 불가변부분이 존재한다.
    Option 구조
  • Type
    • option copy(1bit) (1이면 첫번째 fragment만 copy, 0이면 모든 fragmentatin에 copy)
    • class(2bits)
      • 00 Datagram Control
      • 10 Debugging and management
    • Number(5bits)
      • 00000 End of option
      • 00001 No operation
      • 00011 Loose source route
      • 00100 Timestamp
      • 00111 Record route
      • 01001 Strict source route
  • Type의 Number
    • 위의 두개는 Single-byte로 거의 아무것도 안하는 땜빵같은 용도로 쓰인다. 옵션 쓰일 때 맨앞 혹은 맨뒤에 넣어 채워준다.
    • 밑의 네개는 Multiple-byte로 좀 더 중요한 개념이다. 몇개는 헤더의 내용도 함께 외우는 것이 좋다.

🔈 Record-route option (7)

  • 각 address칸은 처음엔 비어져있고 router를 거치면서 채워져가는 방식이다.

🔈 Strict-source-route option (137)

  • 각 address주소는 시작시에 모두 채워져있다. 이는 자기 주소를 제외한 route의 경로가 적혀있으며 지날때마다 router가 해당 option을 update해야한다.

🔈 Loose-source-route option (131)

  • 좀 더 위의 option보다는 유들하지만 잘 안써서 개념만 숙지하면 된다.

🔈 Time-stamp option (68)

  • Flag
    • flag 0 : timestamp만 적는다.
    • flag 1 : IP address와 timestamp가 적힌다.



  • ping : domain 연결가능한지와 RTT를 보여준다.
$ ping naver.com

  • R- : 거쳐간 IP 주소를 출력하는 옵션 - record-route
$ ping R- naver.com

  • traceroute : route와 그곳에 도달하는 RTT 값을 3번 출력한다.
$ traceroute naver.com
  • -g : loose source routing
  • -G : strict source routing
$ traceroute -g 153.18.251.4 naver.com

🔈 Checksum

  • 2bytes씩 잘라서 다 더한 후 complement한다.



🔊 Reassembly table

  • 분할된 packet을 재조합하기위하여 사용하는 테이블이다. off을 가지고 순서를 결정한다.
  • 만약 하나의 조각이라도 오지않으면 전체를 버리고 다 다시받아야한다.
  • 같은 ID끼리 Linked List 형태로 관리한다.

0개의 댓글

관련 채용 정보