본문 바로가기

23년 2학기 학교공부/컴퓨터네트워크

[CN] 네트워크 계층 프로토콜 : IP

목차

    728x90
    반응형
    SMALL

    📁 네트워크 계층

     

    네트워크 계층은 OSI 계층모델에서 3계층에 해당하고, 대표적인 프로토콜로 IP 프로토콜이 있다.

     

     

    네트워크 계층에서는 IP 패킷을 송수신하고, IP 패킷을 전달하고, IP주소를 찾고 이에 대한 목적지까지 경로를 찾는 알고리즘과 자료구조를 찾는 일 등이 수행된다.

     

     

    호스트, 라우터, 스위치 등등은 각각의 기능 차이를 반영하는 다른 계층들로 구성된다.

     

     

     

     

     

    📁 IP 패킷

     

    IP 패킷은 다음 절차에 따라 생성된다.

     

    1. 웹 브라우저 클릭

    2. 클릭에 대한 내용을 HTTP 메시지로 만들기

    3. HTTP 메시지 TCP 세그먼트로 만들기

    4. TCP 세그먼트를 IP 패킷으로 만들기 (encapsulation)

    5. IP 패킷을 이더넷 프레임으로 만들기

    6. 이더넷 프레임을 0,1 비트로 만들어서 보내기

    7. 비트를 아날로그 신호로 보내기

     

     

     

    어플리케이션 계층에서 HTTP 등의 프로토콜의 사용해서 전달하는 정보 패킷을 메시지(message) 라고 부른다.

     

    송신 호스트에서 어플리케이션 계층의 message는 트랜스포트 계층으로 보내지는데, 트랜스포트 계층은 수신 측 트랜스포트 계층에서 사용될 추가 정보인 트랜스포트 계층 헤더 정보와 함께 segment라고 불리는 트랜스포트 계층의 패킷을 구성한다.

     

    위 과정에서, segment는 어플리케이션 계층 message를 캡슐화한다.

     

     

    이후 트랜스포트 계층은 segment를 네트워크 계층으로 전달한다. 그럼 네트워크 계층은 헤더 정보를 추가하여 네트워크 계층의 패킷인 datagram을 구성한다.

     

    datagram은 링크 계층으로 전달되고, 링크 계층도 자신의 헤더 정보를 추가하여 frame이라고 불리는 링크 계층의 패킷을 만든다.

     

     

    즉, 각 계층에서 패킷은 헤더 필드와 페이로드 필드(payload field)로 구성되며, 페이로드 필드는 일반적으로 그 계층 상위로부터의 패킷이다.

     

     

     

     

    네트워크 계층의 핵심인 호스트 간 최적의 경로를 찾아주는 기능은 IP 프로토콜이 수행하며, ICMP 프로토콜은 라우팅에 문제가 발생했을 때 제어해준다.

     

    이 네트워크 계층의 패킷에는 IP주소의 경로를 찾는 알고리즘이 필요하고, 라우터 소프트웨어에 구현되어있다.

     

     

     

     

     

    🌱 IP Datagram(패킷)의 포맷

     

     

    1) ver(version)

       - 4bits

       - IP의 버전을 나타낸다. IPv4 혹은 IPv6이 쓰인다.

     

    2) head.len(head length)

       - 4bits

       - IP 헤더의 길이/4의 값을 나타낸다. 즉 4bytes단위이며, 최솟값(0000)은 5bytes를 뜻한다.

     

    3) type of service

       - 6bits의 differntiated Service(DS), 2bits의 Explicit Congestion Notification(ECN)으로 구성된다.

       - DS : 서비스 레벨을 나타낸다.

       - ECN : TCP가 사용하는 피드백 매커니즘이다.

     

    4) length

       - 16bits

       - datagram의 총 바이트 개수를 나타낸다. 즉 최대 length는 2^16-1 bytes가 된다.

     

    5) identifier

       - 16bits

       - 각 조각이 같은 데이터그램에 속하면 같은 일련번호 값을 공유한다.

     

    6) flags

       - 3bits

       - 첫번째 비트는 항상 0이다.

       - 두번째 비트는 DF(Do not Fragment) bit로, 중간에 있는 라우터가 한 번에 다룰 수 있는 크기를 넘었을 때 이 패킷을 드랍할 것인지, 아니면 ICMP 메세지를 보낼것인지 나타낸다.

       - 세번째 비트는 MF(More Fragment) bit로, 받는 사람 입장에서 아직 받을 패킷이 남아있는지 나타낸다.

     

    7) fragment offset

       - 13bits

       - 현재 fragment가 속한 원래 데이터그램에서의 페이로드 offset을 8bytes 단위로 나타낸다.

     

    8) TTL(time to live)

       - 8bits

       - 두 라우터 사이에서 패킷이 영원히 돌면서 점점 축적되는 문제가 생길 수 있다. 그래서 패킷의 유효기간을 정한다. sender가 128, 256 등으로 지정하는데 이 값은 hops를 의미한다. 각 hop을 128번 뛰면 수명을 다한다는 뜻이다. 따라서 한 번 hop을 뛸 때마다 각 라우터는 TTL 값을 1씩 감소시키다 0이되면 패킷을 드랍하고 ICMP 프로토콜 메세지로 "time exceeded"를 보낸다. ([출처] [모바일 컴퓨팅] Network Layer - IP protocol|)

     

    9) upper layer

       - 8bits

       - 상위 계층의 프로토콜을 나타낸다.

     

    10) header checksum

       - 16bits

       - 매 라우터(hop)를 거칠때마다 변하는 값이다. checksum 값을 이용해 데이터의 무결성을 검사한다.

     

    11) source IP address

       - 32bits

     

    12) destination IP address

       - 32bits

       - 일반적으로 1500bytes 이하이지만,최대 64Kbytes까지 가능하다.

     

    13) options

     

    14) payload data

       - 보통 상위 계층인 TCP, UDP의 segment가 포함된다.

     

     

     

     

     

    📁 Fragmentation

    우리가 10020bytes의 패킷을 전송한다고 가정하자.

     

    MTU란 환경에 

     

     

    예를 들면 다음과 같다.

     

     

     

     

     

     

    📁 TTL(Time to live)

    건너갈수 있는 라우터의 최대 갯수.

    목적은 라우팅 루프 해결 목적. 목적지에 가야하는데 패킷이 목적지에 못가고 어떤 무한루프 안에서 돌수있음. 

    디버깅 용도로. ttl이 100이되면 라우트는 이 패킷을 버림.

     

     

     

    IP address

    v4기준 32비트.

    어드레스가 인터페이스마다 할당됨.

     

     

     

    Subnet

    라우터를 써도같은 서브넷을 쓰면 통신 가능.

    앞 3byte가 같음.

    공유기가 같으면 라우터를 쓰지 않아도 통신 가능.

     

    subnet 표기법은 공통 바이트를 통일하는거.

     

    핵심은 파란색이 하나의 서브넷.

    라우터가 선으로 연결되어있는데 이 선도 하나의 서브넷임.

     

     

    CIDR(Classless InterDomain Routing)

    IP주소의 앞에서 몇비트가 네트워크다.

    200.23.16.0/23이면 앞에서 23비트가 네트워크다.

     

    /8 : 클래스 A. /16 : 클래스 B. /24 : 클래스 C.

    앞에서 8, 16, 24 비트가 네트워크

    /23을 보면 클래스 C가 두개 있다는 것.

    /32는 자기자신만 가르키고

    /31은 주소 두개. 비트 맨 뒤꺼 하나만 다름.

     

     

    DHCP

    서버 잇으면 아이피 할당해줭. 자동 주소 할당.

     

    과정은 위와 같음.

     

     

    NAT

    사설아이피, 공인아이피.

     

     

    v4를 쓰는데 중 일부에서 v6을 쓰자.

     

     

     

    728x90
    반응형
    LIST