The Internet network layer

 

  • IP protocol : Internet Protocol의 약자, 주소 지정 규칙, 데이터 그램 형식, 패킷 처리 규칙
  • routing protocols : 경로 선택, RIP, OSPF, BGP
    • forwarding table : routing protocol에 의해 생성
  • ICMP protocol : 오류 보고, router "시그널링", 죽었는지 살았는지, 네트워크 layer에서 처리할 수 있음

IP datagram format

 

  • ver(버전 번호) : 4비트로 데이터그램의 IP 프로토콜 버전을 명시 - ex)IPv4, IPv6이 있음
  • head len(헤더 길이) : IPv4 데이터그램은 옵션을 포함하므로 이 네 비트로 IP 데이터그램에서 실제 데이터가 시작하는 곳을 결정 -> 대체로 IPv4 데이터그램 헤더는 20바이트
  • Type of service : 서비스 타입 비트는 다양한 타입의 IP 데이터그램을 허용하고, 과부하가 발생했을 때 각각을 구별해서 다르게 관리
  • length(데이터그램 길이) : 바이트로 계산한 IP 데이터그램(헤더와 데이터)의 전체 길이 - 16비트
  • 16-bit identifier, flag, fragment offset(인식자, 플레그, 단편화 오프셋) : 세 필드는 IP 단편화와 관련성이 있음 -> IPv6는 라우터의 단편화를 허용하지 않음
    • 메시지를 보내고 목적지와 맞추기 위해, 혹은 혼잡을 피하기 위해 자름
    • receiver가 받아들일 수 없을 경우에도 자름
    • 한 layer에서 자른 것은 그 layer에서 처리 해야함
  • Time to live : 최대 홉의 수 -> 홉의 제한이 없으면 많은 time out이 발생 -> count를 지정해 놓고 홉을 이동할 때마다 줄이다가 0이 되면 drop해 버림
  • upper layer : 상위계층 프로토콜 -> IP 데이터그램이 최종 목적지에 도착했을 때만 사용, 이 필드값은 IP 데이터그램에서 데이터 부분이 전달될 목적지의 트랜스포트 계층 프로토콜을 명시
  • header checksum : header에 대해서만 checksum을 함 -> 아래 data는 이미 다른 layer에서 했으므로 안해도 됨
  • 출발지와 목적지 IP주소 : 출발지가 데이터그램을 생성할 때, 자신의 IP주소를 출발지 IP주소 필드에 넣고, 목적지 IP주소를 목적지 IP주소 필드에 넣음
  • option : IP 헤더를 확장 -> 모든 데이터그램 헤더 옵션 필드에 정보를 포함하지 않는 방법으로 오버헤드를 해결하려는 생각에 헤더 옵션은 거의 사용되지 않음
  • data(페이로드) : 데이터그램이 존재하는 이유의 마지막이면서 가장 중요한 필드

IP fragmentation

  • MTU(maximum transmission unit) : 링크가 받아들이고 보낼 수 있는 최대의 사이즈 -> 링크마다 다름

  • 시작할 때 MTU가 작다면 자를 필요가 없겠지만 만약 Link보다 크다면 그 순간부터 fragmentation하여 쪼갠 것들을 각각 보냄

  • 통과 후 바로 합치는 것이 아닌 최종 목적지로 도착 했을 때 합침 -> 다른 루트들로 섞여서 오기 때문 

  • 16-bit Identifier는 쪼개진 데이터들을 합치기 위해 동일한 값을 넣어줌

  • 자를때는 Data만 자르고 각 잘린 Data에는 동일한 header가 필요

  • flags : 1이면 잘렸다는 것을 알 수 있음

  • fragment offset : 잘린 데이터그램들이 어디부터 어디까지 잘렸는지에대한 정보

  • 예제

  • 입력 : 하나의 큰 데이터그램(4000byte) -> IP 헤더의 20바이트와 IP 페이로드의 3980바이트를 합한 값
  • 출력 3개의 작은 데이터그램 -> MTU가 1500바이트인 링크로 전달해야 함
  • 따라서 20바이트의 헤더를 제외하고 1480씩 2개의 fragment와 1020byte의 1개의 fragment가 생성
  • ID는 위에서 말한 것 처럼 x로 일치시킴 fragflag는 마지막을 제외하고 1로 저장 마지막은 frag가 끝났음을 알릴 수 있도록 0으로 저장
  • data의 양이 8바이트의 배수이며 offset은 8바이트 단위로 표시됨 -> ex) 처음 시작부분의 offset은 0, 두 번째 frag는 offset이 1480/8 = 185, 세번째는 185 + 1480/8 = 370 이다 -> offset은 시작부분을 의미
  • 다시 합칠때는 데이터들만 1480 + 1480 + 1020 붙이고 header는 다시 하나만 붙임 -> flag 0으로 바꿈 -> fragment에 대한 내용들 없앰

IPv4 addressing

  • IP address : 컴퓨터마다 하나씩 존재 -> 32bit의 호스트, 라우터 인터페이스를 위한 식별자
  • network interface : 호스트 / 라우터와 물리적 링크 간의 연결
  • host뿐만아니라 router마다 address가 있음 -> port 갯수에 따라 IP address 보유량이 달라짐

 

  • switch hub : network layer가 아니고 data link layer에 해당하므로 IP adderss가 없음 -> IP address에서 switch를 그냥 통과하는 것으로 보임

Subnets

 

  • 서브넷 : IP 주소의 동일한 서브넷 부분을 가진 장치 인터페이스
  • IP 주소
    • 서브넷 부분 - 상위 비트 -> 어떤 네트워크 인지?
    • 호스트 부분 - 하위 비트 -> 어떤 네트워크 안의 어떤 기기인지?
  • 라우터를 끼지 않고 물리적으로 서로 도달 할 수 있음 -> 묶인 host들 끼리 데이터 전송 가능(link layer에서 처리 가능)
  • subnet은 각각의 router에 source와 destinaition을 어찌 알려주나 -> router는 가장먼저 subnet을 확인
  • 여러 라우터로 연결되어 있는 경우

  • 연결(link)되는 곳에는 모두 subnet이 있음 -> router와 router, edge와 router
  • router끼리도 subnet 확인 -> 무엇을 기준으로 하여 direct로 붙어있지 않은 subnet으로 보낼 수 있을까는 다음 강의에서...

 


     

     

     

     

     

     

     

     

    '네트워크 설계' 카테고리의 다른 글

    [11월26일]Generalized Forward and SDN  (0) 2018.11.26
    [11월21일]IP addressing  (0) 2018.11.25
    [11/14]Chapter 4: network layer  (0) 2018.11.20
    [11월12일]TCP congestion control  (0) 2018.11.17
    [11월07일]Chapter 3 - transport: TCP  (0) 2018.11.16

    + Recent posts