[데이터 통신과 네트워킹] Network Layer Protocol

YJ·2024년 5월 7일
0

Internet Protocol (IP)

IP의 위치

  • Internet Protocol (IP) : packetizing, forwarding, delivery of a packet의 책임을 가진다.
  • Internet Control Message Protocol (ICMP) : delivery 할 때 발생하는 에러 처리를 하여 IP를 돕는다.
  • Internet Group Management Protocol (IGMP) : multicasting 할 때 IP를 돕는다.
  • Addres Resolution Protocol (ARP) : 주소 매핑 할때 사용

IPv4 Datagram 형식

  • IP에 패킷을 datagrame으로 불린다.
  • datagrame은 두 파트로 이루어진 variable-length를 가진다.
    • Header : 20 ~ 60 bytes
      • routing과 delivery를 위한 정보로 이루어진다.
    • payload (data) : transport layer에서 내려온 데이터
  • 이더넷 프레임의 데이터 부분(최대 1500 bytes)에 넣어줘야 하기 때문에 잘라서(fragmentation) 전달해줘야 한다.

IPv4 datagrame 형식

  • Source IP address : 송신측 IP 주소
  • Destination IP address : 수신측 IP 주소
  • Total length : 총 길이 (가변) - 16bits
    • 최소 길이 : 20bytes
    • 최대 길이 : 65,535bytes
    • 데이터 길이 : (총 길이) - (HLEN) * 4
  • VER : IP 버전, 예) IPv4는4
  • HLEN : 헤더 길이, 4bit 밖에 안되기 때문에 4bytes 단위로 표시를 함
    • 최소 길이 : 5 (5x4bytes = 20bytes) 0101
    • 최대 길이 : 15 (15x4bytes = 60bytes) 1111
  • Flags : Flagmentation이 있는지 없는지 나타냄
    • bit 0 : 사용 x
    • bit 1 : Don't Fragment (DF), 1이면 fragment를 하지 마라
    • bit 2 : More Fragment (MF), 1이면 fragment가 더 존재한다.
  • Fragmentation offset : 0에서 부터 얼마나 떨어져 있는가?, 8 바이트 단위로 나타냄
  • Protocol : IP datagram에서 사용하는 protocol 정의
    • ICMP, UDP, IGMP, OSPF, TCP
  • Time-to-live (TTL) : hop count와 함께 패킷 생존 기간을 제한
    • router를 하나 지나갈때마다 1씩 감소, 0이되면 폐기 -> ICMP Time Exceed 메세지를 수신자에게 보냄
  • Header checksum : 오류 체크, Header만 본다.
    • desitnation address, protocol field, fragmentation field 등의 오류가 생기면 IP에 비정상적인 동작이 발생할 수 있다.
    • router를 지나갈때마다 header의 checksum을 계산하여 checksum field와 비교한다.
  • Service type : 품질 정의
  • Identification : 구별을 위해 하나의 데이터그램에 대해서 번호 부여한다.
  • Options : test나 debug를 위해 사용한다.
  • Payload : checksum에 포함되지 않는다.

예시 1

  • 처음 8비트가 (01000010)2로 IPv4 패킷이 도착했다
  • 수신자는 패킷을 폐기한다. 왜 그럴까?

solution

  • 가장 왼쪽 4비트(0100)2가 버전을 보여준다. -> correct
  • 다음 4 bits (0010)2 -> 올바르지 않은 header length (2X4=8)
  • header의 최소 사이즈가 20이기 때문이다.

예시 2

  • IPv4 패킷에서 HLEN의 값은 (1000)2이다.
  • 이 패킷에 의해 전송되는 옵션의 수는 몇 바이트입니까?

solution

  • HLen이 8이므로 header의 total number의 8X4 = 32 bytes이다.
  • 처음 20bytes는 기본 헤더이고, 다음 12bytes는 옵션이다.

예시 3

  • IPv4 패킷에서, HLEN의 값은 5이고, 전체 길이 필드의 값은 (0028)16이다.
  • 이 패킷에 의해 몇 bytes의 데이터가 운반되고 있나?

solution

  • HLEN 값은 5이며, 이는 헤더의 총 bytes 수가 5×4 또는 20 bytes(옵션 없음)임을 의미한다.
  • 전체 길이는 (0028)16 또는 40bytes이며, 이는 패킷이 20bytes의 데이터(40-20)를 운반하고 있음을 의미한다.

예시 4

  • IPv4가 다음과 같이 16진수 형태로 도착했다.
  • 패킷이 drop되기전에 이동할 수 있는 hop수는 몇 개인가?
  • 데이터는 어떤 상위 계층 프로토콜에 속하는가?

solution

  • time-to-live field를 찾기 위해, 처음 8 bytes를 스킵한다.
  • time-to-live field는 9번째 bytes로 (01)16이다.
    • 이것은 패킷이 하나의 hop만을 이동할 수 있음을 뜻한다.
  • protocol field는 다음 bytes인 (02)16인데, 이것은 상위 계층 프로토콜이 IGMP임을 뜻한다.

option없는 IPv4 header에 대해 checksum을 계산하는 예시

  • header를 16-bit로 나눔
  • 모든 sections을 더해주고 올림 수에 대해 wrapped sum을 한 후 보수를 취해준다.
  • 결과를 checksum field로 대체 한다.

checksum 계산 후 error check

  • 송신측에서 똑같이 계산 후 0이 나오면 오류가 없는 것이다.

Fragmentation

  • 각 router에서 frame을 decapsulate하고, procces하고, 다른 frame으로 encapsulate한다.
  • frame size는 physical network에서 사용하는 프로토콜에 의존한다.
  • 각 link layer protocol은 고유한 frame 형식을 가진다.

Maximum Transfer Unit(MTU)

  • MTU는 data link layer에서 사용되는 최대 데이터 크기를 말한다.
  • ethernet에서 최대 데이터 크기는 1500 bytes이다.
  • IP Datagram의 최대 데이터 크기는 65536 bytes이다.
  • MTU 값은 physical network마다 다르다.
    • Ethernet : 1500, FDDI :4000, X.25 :576, Gigabit : 9000 byte
    • 크기를 맞추기 위해 데이터를 잘라야 한다.

Fragmentation

  • IPv4는 지정된 MTU 제한을 수용하기 위해 datagram을 조각으로 나눈다.
    • Ethernet : 1500, FDDI :4000, X.25 :576, Gigabit : 9000 byte
  • datagrame이 4000bytes라고 하면,
    • MTU가 1400 bytes인 3개의 fragment로 fragmentation된다.
    • Offset은 8 bytes block 단위로 계산된다.

Fragmentation과 관련된 3개의 field
1) identification field

  • 송신측 host로 부터 datagrame을 식별한다.

2) Flag field

  • 가장 왼쪽 bit : Reserved, 항상 0이어야 한다.
  • 두 번째 bit : Don't Fragement(DF)
  • 세 번째 bit : More Fragment(MF)
    • 0이면 last fragment이다.

3) Fragmentation offset field

  • fragment에 상대적인 위치를 보여준다.
  • 8 bytes 단위로 측정된다.

Fragmentation 예시

예시

  • offset 값이 100이고, HLEN 값이 5이며, total length가 100인 패킷이 도착했다.
  • 첫 번째 바이트와 마지막 bytes의 수는 무엇이냐?

solution

  • 첫 번째 byte는 100 X 8 = 800이다.
  • total length가 100 bytes이고 header length가 20 bytes (5 X 4)이므로, datagram에는 80 bytes의 데이터가 있음을 의미한다.
  • 첫 번째 byte가 800이면 마지막 byte는 879여야 한다.

Options

  • IPv4 datagram의 header는 두 개의 파트로 구성된다.
    • fixed part의 길이는 20 bytes이다.
    • variable part는 header의 경계를 보존하기 위해 최대 40 bytes가 될 수 있는 옵션들로 구성되어 있다.

Security of Datagram

  • security는 IPv4 protocol에 대한 보안이 제공되지 않았다.
    • IPv4 protocol은 인터넷 사용자들이 서로 신뢰할 때 시작되었다.
    • 오늘날의 internet은 더 이상 안전하지 않다.

IP protocol의 세 가지 security issue

  • packet sniffing : (복사해서) 훔쳐가기, 다른 용도로 사용
  • packet modification : 패킷을 변조시킴
  • IP spoofing : 패킷을 위조함

IP Sniffing

  • 침입자가 IP 패킷을 가로채고(intercept) 복사(copy)할 수 있다.
  • 공격자는 packet의 내용을 변경하지 않는다.
  • 다른 목적으로 사용한다.

-> packet의 암호화(encryption)는 공격자를 막을 수 있다. (복사해가도 쓸모없게 만듦)

Packet Modification

  • 공격자는 pcaekt을 가로채서 내용을 변경하고 새 packet을 수신자에게 전송한다.

-> Data Integrity 메커니즘은 packet이 변경되었는지 확인한다. (Data Integrity를 보장해주는 방법 적용), Data Integrity를 증명하도록 한다.
integrity : packet이 원래 데이터 그대로이다.

IP Spoofing

  • 공격자는 잘못된 송신측 IP 주소 IP packet을 만들고 대상 server로 전송한다.
    -> origin authentication 메커니즘을 사용하여 방지할 수 있다. (송신측 IP 주소가 위조된 것이 아님, 데이터 출발 packet이 그대로 도착 한 것임을 인증)
  • 예) DDoS (Distributed Denial of Service)
    • 송신측 IP 주소를 위조한다.
    • 3 단계 과정으로 경로 설정을 할 때, 송신측 주소가 가짜가 되면 수신측은 마지막 응답이 오기를 기다리는데, 송신측 주소가 가짜이므로 응답이 오지 않는다.
    • 서버는 메모리를 소모하게 되고 더 이상 서비스를 하지 못하게 된다.

IPSec(IP Security) : secure netowrk protocol

  • network protocol에서 동작됨
  • sources of IP packet을 검증 (Autentication)
    • 송신측에서 보낸 packet이 맞다는 것을 인증
  • old packet의 replaying 방지
  • packet integrity(무결성) and/or confidentiality(기밀성) of packet(Encryption)

두 가지 모드로 IPSec이 동작한다.

  • Transport mode (for end-to-end)
  • Tunnel mode (for VPN)

Transport mode (for end-to-end)

  • Data link layer로 보내기전에 IPsec Layer가 있어 IPsec Header/Trailer를 붙이고 새로운 IP Header를 붙여서 보냄

Tunnel mode (for VPN) in Router

  • Network layer 위에 IPSec Layer를 두고 IPSec Header/Trailer를 붙여줌
  • router와 router 사이에 Tunnel을 형성해서 전달

IPSec Protocol 모음

  • Authentication Header (AH)
  • Encapsulating Security Payload (ESP)
  • Internet Key Exchange (IKE)
  • IP Payload Compression (IPcomp)

AH(Authenticcation Header)

  • source authentiaction을 제공
  • data integrity 제공
  • confidentiality를 위한 보호 기능이 없음
  • 인증을 위해 추가함

Encapsulating Security Payload (ESP)

  • AH가 제공하는 모든 것을 제공한다.
  • confiddentiality도 제공한다. (대칭 키 암호화)
  • 암호화를 이용해서 데이터를 더 추가가 된다.

ICMPv4

  • IP의 부족한 부분들을 보충

IPv4

  • erorr-reporting과 error-correcting 메커니즘이 없음
  • host와 management querie에 대한 메커니즘이 없음
    • 네트워크 상황이 어떠지 질의하는 기능이 없음

Internet Control Message Protocol version 4 (ICMPv4)

  • 위의 두가지 결함을 보완하기(compensate) 위해 설계 되었다.
  • 두가지 categories
    • error-reporting messages
    • query messages

error-reporting messages는 problems을 report한다.

  • router나 host(destination)은 IP packet을 처리할 때 문제가 발생할 수 있다.

query messages에 의한 특정 정보

  • node는 자신의 이웃을 검색할 수 있다.
  • host는 자신의 network에서 router를 검색하고 학습할 수 있다. (이웃 router에 대한 정보를 구함)
  • rotuer는 node가 message를 redirect하는 데 도움을 줄 수 있다. (메시지를 다른 경로로 보내고 싶을 때)

ICMPv4 Messages Format

  • Type, Code, Checksum 부분이 같음
  • Query messages에는 ID가 들어감 (질의하고 응답을 해야하기 때문)
    • Echo request and replay : 특정 노드에 대해 echo를 보내면 그 노드가 reply함
    • Timestamp request and reply : packet에 Timestamp를 기록함
  • Error-reporting messags는 문제가 발생했음을 알려주기만 하면된다.
    • Destination unreachable (목적지 주소가 잘못됨)
    • Source quench (너무 바쁨 - 그만 보내는 것을 요청)
    • Time Exceeded (TTL 초과)
    • Parammeter Problem : 파라미터에 문제가 생김

Error Reporting Messages

  • Destination Unreachabl
    • host에 연결할 수 없음을 송신측에 알려줌
  • Source quench
    • network에 congestion이 발생하여 datagram이 삭제되었음을 송신자에게 알려준다.
    • 송신측에서는 datagram 전송 속도를 늦춰야한다.
  • Redirect (경로 변경)
    • source가 잘못된 router를 사용하여 데이터를 보낼대 사용된다.
    • router가 redirect하여 기본 gateway를 변경해야한다는 것을 송신측에 알려준다. (원래의 경로를 다르게 바꿔서 전송)
  • Time Exceed
    • TTL field가 0이 되어 폐기된 datagrame을 source에 알려준다.

중간에 있는 router들이 에러가 발생했을때 송신자에게 보냄

Query Message

  • Echo Request/Reply
    • host나 router가 echo request를 다른 host나 router로 전송한다.
    • 만약 alive(활성화)되어 있으면, echo reply message로 응답한다.
    • Example : ping, traceroute
  • Timestamp Request
    • 두 장치 간에 round-trip time을 찾는 방법
    • 두 장치가 synchronize되어 있는지 확인하기 위함
      round-trip time : 두 장치 사이에 얼마나 시간이 걸리는지 알아 볼때 사용

Debugging Tools
Ping

  • ping 프로그램은 IP(Internet Protocol)에서 host에 도달할 수 있는지 테스트하기 위해 사용된다.
  • Ping은 대상 host로 ICMP echo request packet을 보내고 ICMP echo reply를 기다림으로써 동작한다.
  • 프로그램은 errors, packet loss, statical summmary of results를 보고하는데, 일반적으로 minimum, maximum, mean round-trip time과 standard deviation of the mean를 포함한다.

traceroute(Unix), tracert (window)

  • 송신측에서 수신측까지 packet의 경로를 추적하는데 사용한다. (목적지까지 어떤 경로를 가는지)
  • 경로를 따라 방문하는 모든 router의 IP 주소를 찾을 수 있다.
  • Application layer 프로그램이지만 client 프로그램만 필요하다.
  • Traceroute 프로그램은 two error-repoting으로 부터 도움을 받는다.
    • Destination Unreachable Message
    • Time Exceeded Message

Use of ICMP in traceroute

  • 첫 번째 traceroute message는 TTL 값을 1로 설정하여 전송된다.
    • 첫 번째 라우터가 packet을 drop하고 Time-exceed message가 송신측으로 전송된다.
  • 네 번재 message가 송신측에 도착한다. (Port 번호를 다르게 해서 보내어 송신측에 도착할 수 없다.)
    • port 번호를 찾을 수 없기 때문에 이 호스트는 packet을 drop한다. -> Destination Unreachable message가 송신측으로 전송된다.

traceroute 예시

  • Unix 예시
  • 4 hop만에 도착
  • 30 hops max -> 최대 hop을 말함, 예) 40 hop이면 안됨

simple echo-request message Checksum 계산법

  • checksum은 전체 message에 대해 계산된다. (header와 data)
  • mesasge를 16 bit word로 나눈다.
  • word가 더해지고 보수를 취한다. 송신측은 checksum field에 이값을 넣는다.

Summary

IPv4

  • end-to-end delivery, unreliable, connection-less service
    unreliable : 믿을 수없음, rotuer는 전달만하고 송신측과 수신측 사이에 IP는 책임을 지지 않는다. -> transport에서 함
  • datagrame은 각각 header와 payload 두가지 구성 요소를 가진다.
    • header의 길이는 20~60 bytes이고, total size는 65,535 bytes까지 가능하다.
  • datagram은 송신측에서 수신측으로 이동하는 동안 한 번 이상 fragementation 될 수 있다.
    • fragmentation의 재조립은 destination에서 수행된다.
  • datagrame의 checksum은 header에 대해서만 계산된다.

ICMPv4 - IP 지원

  • ICMP message는 diagnositc 또는 control 목적으로 사용되거나 IP 동작에 error에 대응하기 위해 생성된다.
  • Error Report and Query Messages
profile
제 글이 유익하셨다면 ♡와 팔로우로 응원 부탁드립니다.

0개의 댓글

관련 채용 정보