4. Network Layer Protocol

2JE0·2022년 10월 8일

컴퓨터네트워크

목록 보기
1/2
post-thumbnail

🎆1. ARP (Adress Resolution Protocol)

IP 주소를 MAC 주소로 변환하는 프로토콜

송신자는 목적지 물리주소가 필요하므로, 물리주소 요청을 위한 ARP요청 패킷을 **브로드캐스트**로
전송.
(브로드캐스트를 하는 이유는 목적지의 물리주소를 모르므로 모두에게 요청함.)
(요청 패킷에는 수신자가 수신자 주소를 응답할 때 필요한 송신자 주소가 포함)
모든 호스트와 라우터는 송신자가 보낸 ARP 요청 패킷을 수신함.
해당되는 수신자만 자신의 논리주소와 물리주소를 넣어 응답 패킷을 **유니캐스트**로 전송.

  • Preamble and SFD : 2계층 frame의 시작을 알리는 역할
  • 111111111111 : 브로드캐스트 주소
  • 보낼 때 Data 영역에 있는 mac 주소와 ip 주소는 내 주소
  • 알고싶은 mac 주소는 비어있음
  • CRC : 데이터에 이상이 생겼는지 확인하는 해시

🎆2. IP (Internet Protocol )

🎈Network Layer

  • Routing protocol: 패킷이 목적지까지 가는 경로 결정 - static과 dynamic 프로토콜로 구분됨
  • ICMP(Internet Control Message Protocol): 인터넷 제어 메시지 프로토콜
    오류 메시지를 전송받는데 주로 쓰임(ping)

🎈Protocol

  • Host-to-host delivery
  • Unreliable and connectionless
    • best-effort Effort Network란 무엇인가요? 편지에 주소를 적어 보내면 우체부 아저씨가 수거해 가서 우체국에 모아서 보낼 주소지의 우체국으로 보낸 후 다시 우체부 아저씨가 주소지의 우편함에 편지를 가져다 놓게 되지요. 근데 이 편지를 실제 사람에게 직접 전달해주는 것이 아니고 또한 편지 받은 사람이 나 잘 받았다고 하는 것도 아니기 때문에 편지를 보낸 사람은 잘 도착했는지 전혀 알 수가 없습니다. 이렇듯 우체국은 최선의 노력을 다해 목적지 주소로 편지를 보내지만 편지가 실제 사람에게 전달되었는 지에 대해서 보증하지는 않습니다. 이런식의 네트워크을 best effort network이라 하며 대표적인 예가 우리가 사용하고 있는 인터넷입니다.
    • no error control nor flow control 에러를 고치진 못하고 탐지만 함, 에러가 탐지되면 버림
  • Reliable 프로토콜 (TCP) 와 쌍을 이뤄야함
    재전송이 필요해졌을 때 TCP가 다시 보냄
  • Reliable : 컴퓨터 네트워킹에서 신뢰할 수있는 프로토콜은 의도 한받는 사람에게 데이터를 성공적으로 배달했는지 여부를 보낸 사람에게 알리는 통신 프로토콜

🎈IP Datagram


1. VER(버전영역) : IP 버전을 나타내기 위한 영역
2. HLEN(헤더크기) : 4바이트를 기본 단위로 헤더의 길이를 규정 ( HLEN = 5 => 5 * 4바이트 = 20바이트
3. DS(차별화된 서비스) (Type of Service): 네트워크를 통해 데이터를 전송하고자 할 때 사용자의 데이터마다 우선권을 부여할 수 있음 (8bits) <= 라우팅할 때 중요
voice 같은 경우 delay가 중요하기 때문에 먼저 처리됨
Quality of Service (QoS)

4. Total length(전체패킷 길이) : IP 데이터그램의 총 길이를 나타냄
5. Identification(데이터그램 식별자) : 패킷분할시 이 영역값을 참조해 어떤 원본 데이터그램으로부터 분할되었는지 알 수 있음
6. flag(플래그) : 전송되는 패킷이 분할되었는지 여부
7. 패킷분할 옵셋 : 8바이트 단위로 조각난 패킷의 부분을 가리키는데 사용
8. TTL(존재시간 영역) : 패킷이 네트워크를 통해 전송되었을 때, 최종 목적지에 도착하지 못한 패킷은 네트워크상에 계속 존재하게 되어 네트워크의 자원을 잠식
8bits → 256 라우터를 하나 거치면서 1씩 작아지다가 0이되면 사라짐 (약 2분)
9. Protocol(프로토콜) : IP계층의 서비스를 사용하는 상위계층 프로토콜이 무엇인지를 정의
10. checksum(헤더 체크섬) : 네트워크를 통해 패킷이 전송될 때 발생한 에러를 검출하기 위해 사용하는데, 1에 대한 보수 연산으로 수행
11. 전송측과 목적지 주소 영역 : 32비트

예제1) IP HLEN = 5, Total Length = 0028일 때 사용자 데이터 길이는?

  • 헤더의 총 길이는 5 * 4 = 20바이트 => 옵션영역은 0
  • 총길이가 40바이트이므로 사용자 데이터는 20바이트가 됨

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=printf7&logNo=10170430212

🎈Maximum Transmission Unit (MTU)

  • 배경 모든 링크 계층 프로토콜이 같은 크기 네트워크 계층 패킷을 전달할 수 없다 MTU : 링크 계층 프레임이 전달할 수 있는 최대 데이터의 양 큰 IP 데이터그램을 net 내에서 분할한다(fragmented)
    • 분할은 SRC와 라우터에서
    • 하나의 데이터그램이 여러 개의 데이터그램으로 나뉨
    • 마지막 목적지에서만 "재조립(reassembled)"됨
      재조립시 필요한 것 : 순서, 마지막조각, 어느그룹인지
    • IP header bits는 fragments의 순서와 identify 하기 위해 사용된다
  • Fragmentation 하기 위한 IP 헤더의 필드
    1. Identification(데이터그램 식별자) 16bits : 패킷분할시 이 영역값을 참조해 어떤 원본 데이터그램으로부터 분할되었는지 알 수 있음
    2. flag(플래그) 3bits : 전송되는 패킷이 분할되었는지 여부
    3. Fragmentation offset(13bits) : 8바이트 단위로 조각난 패킷의 부분을 가리키는데 사용
      2^16 짜리를 표현하는데 13bits 가 사용되었으니 1bit 당 8bits를 담당

예제


fragflag는 마지막 데이터그램만 0으로 표시하여 내용 끝났음을 표시

https://hororolol.tistory.com/299


offset unit이 8bits 이므로 MTU도 8의 배수여야함

🎈Path MTU Discovery (PMTUD)

fragmentation의 문제

  1. Throughtput Issues on Fragmentation

ip header에 있는 id칸은 16비트 이다. fragmentation 때문에 생긴 이 id 필드는 같은 id를 가진 패킷을 합친다. 따라서 패킷을 보낼때 2분 내에 같은 패킷을 보내면 안된다.
id는 최대 2^16개 존재 할 수 있는데 120초 이내에 같은 패킷을 보내며 안되므로 초당 최대 보낼 수 있는 패킷의 숫자는 2^16 / 120 = 546개이다.

초당 최대로 보낼 수 있는 패킷숫자의 한계가 있다보니 최대 속도에도 제한이 걸려버리는 것이다.

→ 따라서 이 문제를 해결하기 위해서는 id 필드를 늘려도 되지만 애초에 fragmentation을 안하면 된다.
  1. 여러번 쪼개야 하는 경우

    MTU가 200 → 1500 →1000 인 라우터를 거치게 되면 fragmentation이란 작업을 여러번 해주어야 한다. 이 작업은 비용이 많이 든다. fragmentation을 안하게 된다면 속도의 향상을 기대해 볼 수있다.

  2. wasted

    fragmentation의 또다른 문제는 낭비이다. 10개의 fragment로 쪼개었는데 1개의 조각이 사라지면 나머지 9개는 버려야하기 때문이다.

여러 Fragmentation의 문제를 해결하기 위해서는 패킷 전송의 path 중에서 가장 작은 MTU를 찾아서 처음부터 그만큼으로 잘라서 보내면 된다.

과정

ICMP( internet Control Message Protocol )

  1. Don’t Fragment bit를 세팅한다.
    MTU문제로 패킷을 쪼개야 할 때 이 패킷은 진퇴양난의 상황에 빠진다. DF 때문에 쪼갤 수는 없지만 그렇다고 큰 사이즈로 전송할 수도 없기 때문이다.
  2. ICMP error 를 통해서 sender와 통신한다.
  3. Sender에서는 이 정보를 바탕으로 패킷을 더 쪼개서 전송한다.
  4. 한번 길이 뚫리면 이 정보를 계속 이용한다.

Maximum Segment Size

대부분의 MTU는 1500 바이트면 해결이 되기 때문에 IP 헤더와 TCP 헤더 크기를 뺀 1460이 MSS이다

Untitled

Discussion on IP Header

  1. PMTUD를 사용하면 더이상 fragmentation 할 일이 없는데 id feild를 넣어야 할까? 필요할 땐 option으로 넣자
  2. ip 는 32비트로 충분하지 않다. 하지만 현재 인터넷을 잘 쓰고있는 이유는 DHCP, NAT, CIDR과 같은 임시 해결책을 사용중이기 때문이다.
  3. 대부분의 ip header의 길이가 20/4 =5 를 사용중인데 HLEN 필드가 필요할까?

이 문제들을 IPv6를 만들때 고려되었음, (fragmentation 문제, routing 문제) 하지만 공사가 어려워 전환이 안됨

3. ICMP (Internet Control Message Protocol)

IP는 에러 처리기능이 없다. (detect만 할 수 있음)

하지만 ICMP는 이동을 하지 못한다. 따라서 IP에 붙어서 이동하여 공생관계를 이룬다.

Error Control

네트워크의 패킷이 사라지는 3가지 이유

  • TTL expiration
    TTL이 라우터를 돌다가 0이 되면 drop이 일어남
  • Congestion
    라우터가 받아들일 수 있는 용량보다 패킷이 많이 들어오는 경우
    즉, 패킷을 처리하는 속도보다 보내는 속도가 클 때 busy router라고 부르고 패킷을 삭제한다.
  • FCS error
    Checksum을 통한 오류

3가지 문제중 99%는 Congestion의 문제로 패킷이 사라지게 되는데 ICMP가 sender에게 패킷을 천천히 보내라고 에러를 보낼 수 있다. Flow control

ICMP Encapsulation

error report → 빨간색 화살표가 붙어있는 ip header 는 실제 전송 방법에 대한 ip header이고 안쪽에 있는 또다른 header는 error를 만든 ip의 복사본이다.

🎆4. Tunneling

0개의 댓글