Chapter 19. Network Layer Protocols

HEEJOON MOON·2021년 10월 9일
0

컴퓨터 네트워크

목록 보기
7/12

19.1 IP(Internet protocol)

Main protocol인 IPv4는 packetizing, forwarding, delivery of packet을 담당한다. ICMPv4는 IPv4의 네트워크간 전달과정에서 발생한 에러를 처리하는 것을 돕는다.

IPv4는 unreliable한 datagram protocol이다. 보통 best - effort delivery service라고도 하는데, 이는 IPv4 패킷이 중간에 손상, 손실, 순서뒤바뀜, 지연, 혼잡등이 발생한다는 것이다. 만약 신뢰성이 중요하다면, TCP같은 신뢰성 있는 transport-layer와 pairing되어야 한다. IPV4는 또한 connectionless protocol이다. Datagram들은 독립적이며, 다른 path를 사용할 수 있다. IPv4는 이러한 문제점을 모두 해결할 수 있어야 한다.

19.1.1 Datagram Format

IP datagram은 길이가 가변적이며, 패킷은 header와 payload로 나뉜다고 한다. 헤더는 20~60바이트 사이며, 라우팅과 전달에 필수적이다. 흔한 TCP/IP 헤더는 4바이트이다.

  • Version number : IPv4의 버전을 가리킨다
  • Header Length : datagram 헤더의 길이를 알려준다
  • Service Type : 서비스 특성에 관한 정보
  • Total length : IPv4 datagram의 전체 길이
  • Time-to-live : datagram이 방문하는 router의 maximum number를 조절한다. 소스 호스트에서 송신될때, 이 공간에 숫자가 저장된다. 라우터를 방문할때마다, 이 숫자가 1씩 줄어들고, 0이 되면 라우터는 datagram을 버리게 된다.
  • protocol : TCP/IP에서 패킷의 data section을 payload라고 한다. 이것은 전체 패킷을 다른 프로토콜로 옮긴다. payload는 source IP의 datagram에 encapsulte되면서, 해당되는 protocol number도 같이 삽입된다. Destination source에서는 이 값을 이용하여 어떤 protocol에 payload가 전달되어야 하는지 알려준다. 즉, 이 공간은 소스에선 multiplexing을, 목적지선 demultiplexing을 한다

19.1.2 Fragmentation

datagram은 여러 네트워크들을 travel할 수 있다. 각 라우터는 IP datagram을 decapsulate하고, 처리한 후, 다시 encapsulate한다. physical network에 사용되는 protocol에 따라 프레임의 포멧과 사이즈는 달라진다. 즉, IPv4 패킷들을 여러 sub로 쪼갤수 있다.

Maximum Transfer Unit(MTU)

각각의 link-layer protocol은 고유의 프레임 포맷을 가지고 있다. 즉, 데이터그램이 캡슐화 될때, 데이터크램의 전체 크기는 최대 크기보다 작아야 하며, 이는 네트워크에 사용된 하드웨어, 소프트웨어의 제약때문이다. datagram이 서로 다른 환경의 네트워크들을 지나가기 위해서 분할하는 것은 fragmentation이라 하며, 지나가려는 네트워크의 MTU보다 작게 분할 되어야 한다.

offset은 전체 datagram에 대한 상대적인 position을 나타낸다. 위의 그림처럼 시작 바이트를 0으로 잡은 후, 8로 나누어 offset을 구한다.

위와 같이 offset을 같이 활용하여, origianl datagram을 sub한 datagram으로 쪼갤 수 있다. 이를 통해 패킷들이 쪼개져서 오래된 네트워크(MTU가 낮은)도 경유할 수 있으며, source부터 destination까지 메시지 전달을 가능하게 해준다.

19.2 ICMPv4

IPv4는 에러 보고나 수정기능이 없다. 또한 host, managament 쿼리들의 메커니즘도 부족하다. 이를 보완하기 위해 ICMP4가 고안되었다. 즉, 인터넷을 control하기 위한 메시지를 나누는 프로토콜이다.

19.2.1 Messages

ICMP 메시지들은 크게 error-reporting과 query 메시지로 나뉘다. error-reporting 메시지들은 라우터나 호스트가 IP packet을 처리하면서 발생하는 문제들을 보고한다. query 메시지들은 호스트나 네트워크 관리자들이 라우터나 다른 호스트의 세부 정보를 알수 있게 도와준다.

Error reporting messages

모든 에러 메시지들은 데이터 섹션을 가지고 있으며, original datagram IP 헤더 정보와 데이터그램의 첫 8바이트 데이터를 포함한다. original datagram 헤더는 에러메시지를 받는 original source를 알려준다. 첫 8 바이트의 정보는 UDP, TCP의 포트 넘버들과 sequence 넘버를 알려준다.이러한 정보는 소스가 프로토콜에게 에러에 관해 알리는데 필요하다.

19.2.2 Debugging Tools

인터넷에서 사용할 수 있는 디버킹 도구들은 다양하다. 호스트를 통할지, 라우터를 통할지 결정할 수 있다. 패킷의 경로도 추적가능하다

Ping

ping 프로그램을 이요하여 호스트가 살아있으며 응답하는지 알 수 있다. Ping프로그램을 통해 ICMP 패킷들이 어떻게 사용하는지 알 수 있다. 먼저 소스 호스트가 ICMP echo-request를 보내면, 목적지에서 살아있으면 echo-reply 메시지로 응답한다. 시작점과 끝점의 identifer field값을 0으로 설정한다음, 메시지가 새로 보내질때마다 1씩 증가한다. 또한 시간 측정도 가능하다. 즉, Ping을 통해서 서버/중간장치들이 살아있는지 확인 및 이들의 성능,지연 등을 파악할 수 있다

Traceroute

Traceroute는 소스에서 목적지까지의 path를 파악하는데 사용되는 프로그램이다. path의 라우터의 IP 주소들을 보두 찾을 수 있으며, 최대 30개까지 가능하다. Ping이 2개의 쿼리 메시지를 받는거라면, traceroute는 2개의 에러발생 메시지를 받는다.

첫번째 Traceroute 메시지는 TTL이 1로 설정되며, 첫번째 라우터에 도달후 버려진다. 이후 시간초과 메시지가 보내지고, traceroute 프로그램이 첫번째 라우터의 IP주소와 이름을 알 수 있다. 2번째 메시지역시 TTL은 2로 설정되며, 2번째 라우터에 도달후 버려지고 시간초과 메시지를 보낸다. 목적지에 도달하면, 시간초과 대신 Destination-unreachable이라는 메시지가 보내져서, traceroute 프로그램이 목적지에 도달했음을 알 수 있게 해준다. 이러한 과정들을 통해 중간에 거쳐야 하는 장치들을 하나하나 check 해볼 수 있다.

profile
Robotics, 3D-Vision, Deep-Learning에 관심이 있습니다

0개의 댓글