복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.
▶Contents
- Services
- Packet Switching
- Performance
- Internet Protocol Version 4
- Next Generation (IPV6)
- Transition from IPV4 To IPV6
▶ICMPv4
IPv4에 오류 보고 또는 오류 수정 메커니즘이 없다.
IP 프로토콜에는 호스트 및 관리 쿼리를 위한 메커니즘도 없다.
ICMPv4(Internet Control Message Protocol version 4)는 위의 두 가지 결함을 보완하도록 설계되었다.
▶Messages
ICMP 메시지는 오류 보고 메시지와 쿼리 메시지의 두 가지 광범위한 범주로 나뉜다.
오류 보고 메시지는 라우터 또는 호스트(destination)가 IP 패킷을 처리할 때 발생할 수 있는 문제를 보고한다.
쌍으로 발생하는 쿼리 메시지는 호스트 또는 네트워크 관리자가 라우터 또는 다른 호스트에서 특정 정보를 가져오는 데 도움이 된다.
예를 들어 노드가 인접 네트워크를 검색할 수 있다.
또한 호스트는 네트워크의 라우터를 검색하고 학습할 수 있다.
라우터는 노드가 메시지를 리디렉션 하는 데 도움이 된다.
처음 4바이트는 모두에게 공통이다. (type, code, checksum)
- type : ICMP 유형(메시지 유형)
- code : 특정 메시지 유형에 대한 이유
- checksum
나머지 헤더는 각 메시지 유형에 따라 다르다.
오류 메시지의 데이터 섹션은 오류가 있는 원래 패킷을 찾기 위한 정보를 전달한다.
▶Messages - Error Reporting Messages
IP는 unreliable 프로토콜이기 때문에 ICMP는 일부 오류를 보고한다.
- ICMP는 오류를 수정하지 않고 단순히 오류를 보고한다.
- 오류 수정은 상위 프로토콜에서 한다.
오류 메시지는 항상 original source로 전송된다.
- ICMP는 소스 IP 주소를 사용하여 오류 메시지를 보냅니다.
오류 보고 프로세스를 단순화하기 위해 ICMP는 몇 가지 규칙을 따른다.
- 멀티캐스트나 특수 주소(이 호스트 또는 루프백과 같은)를 가진 datagram에 대한 오류 메시지는 생성되지 않는다.
- 루프백 주소: 127.0.0.1
- 로컬 호스트의 IP 주소: 0.0.0
- ICMP 오류 메시지를 전달하는 datagram에 대한 응답으로 ICMP 오류 메시지가 생성되지 않는다.
- 오류가 생기면 그냥 끝이다. (버리고 끝)
- 첫 번째 fragment이 아닌 fragmented datagram에 대해 ICMP 오류 메시지가 생성되지 않는다.
모든 오류 메시지에는 다음을 포함하는 데이터 섹션이 포함된다.
- orginal datagram의 IP header
- orginal datagram header는 오류 메시지를 수신하는 original source에 datagram 자체에 대한 정보를 제공하기 위해 추가된다.
- 해당 datagram의 처음 8바이트 데이터
- 처음 8바이트는 포트 번호(UDP 및 TCP)와 시퀀스 번호(TCP)에 대한 정보를 제공한다.
- 소스가 프로토콜(TCP 또는 UDP)에 오류를 알릴 수 있도록 이 정보가 필요하다.
▶Messages - Destination Unreachable
가장 널리 사용되는 오류 메시지는 destination unreachable(type 3) message이다.
오류 메시지 유형과 데이터그램이 최종 목적지에 도달하지 못한 이유를 정의하기 위해 서로 다른 코드(0 ~ 15)를 사용한다.
Ex) code 0 : 호스트에 연결할 수 없음을 소스에 알린다.
▶Messages - Query Messages
쿼리 메시지를 데이터그램에 캡슐화해야 한다.
쿼리 메시지(요청 및 응답) 사용
- 인터넷에서 호스트 또는 라우터의 활성 상태를 검사하거나 테스트하기 위해서
- 두 장치 간의 단방향 또는 왕복 시간을 찾기 위해서
- 두 장치의 clock이 동기화되어 있는지 확인하기 위해서
Echo-request(type 8) 및 Echo-reply(type 0)
- 다른 호스트/라우터의 활성도를 테스트하기 위해 호스트/라우터에서 사용
- ping 및 traceroute라는 두 가지 디버깅 도구에서 이 쌍의 응용 프로그램
타임스탬프 요청(type 13) 및 타임스탬프 응답(type14) 메시지
- 두 장치 사이의 round-trip time(RTT)을 찾는 데 사용된다.
- 두 장치의 클럭이 동기화되었는지 아래와 같이 확인한다.
- 타임스탬프 요청 메시지가 32비트 번호를 전송합니다. 이 번호는 1) 메시지가 전송되는 시간을 정의한다.
- 타임스탬프 응답 메시지는 해당 번호를 다시 보내지만 2) 요청을 받은 시간과 3) 응답을 보낸 시간을 나타내는 두 개의 새로운 32비트 번호도 포함한다.
- 모든 타임스탬프가 세계 표준시를 나타내는 경우, 발신인은 편도 및 왕복 시간을 계산할 수 있다.
▶Debugging Tools
Debugging Tools
디버깅을 위해 ICMP를 사용하는 두 가지 도구: ping 및 traceroute(tracert)
Debugging Tools – Ping
ping 프로그램을 사용하여 호스트가 활성화되어 있고 응답하고 있는지 확인할 수 있다.
소스 호스트가 ICMP 에코 요청 메시지를 보내고, 대상이 활성화된 경우 ICMP 에코 응답 메시지로 응답한다.
ping 프로그램은 echo-request 및 echo-reply 메시지에 식별자 필드를 설정하고 0부터 시퀀스 번호를 시작한다.
이 숫자는 새 메시지가 전송될 때마다 1씩 증가한다.
ping은 RTT를 계산할 수 있다.
Debugging Tools – Traceroute or Tracert
UNIX의 Traceroute 또는 Windows의 Tracert(응용 프로그램 계층 프로그램)
원본에서 대상까지의 패킷 경로를 추적하기 위해서
경로를 따라 방문한 모든 라우터의 IP 주소를 찾을 수 있다.
프로그램은 일반적으로 최대 30 홉을 확인하도록 설정된다.
- 인터넷의 홉 수는 보통 이것보다 적다.
Traceroute
traceroute가 두 개의 오류 보고 메시지(time exceeded, destinatio unreachable)로부터 도움을 받는다.
(Ping : 두 개의 쿼리 메시지)
서버 프로그램이 필요하지 않다.
대상 호스트의 애플리케이션 계층에 도달하지 않으므로 클라이언트 프로그램만 필요하다.
traceroute는 UDP 사용자 데이터그램에 캡슐화되어 있지만
traceroute는 대상에서 사용할 수 없는 포트 번호를 의도적으로 사용한다.
경로에 라우터가 n개인 경우 traceroute는 (n + 1) 메시지를 보냅니다.
- 처음 n개의 메시지는 n개의 라우터에 의해 폐기되며, 각 라우터마다 하나씩 폐기된다.
- 마지막 메시지가 대상 호스트에 의해 삭제된다.
- 우리는 n의 값을 알 필요가 없다.
첫 번째 traceroute message
- TTL이 1로 설정된 상태로 전송된다.
- 첫 번째 라우터는 이 메시지를 무시하고 IP 주소와 첫 번째 라우터의 이름을 포함한 time-exceeded ICMP 오류 메시지를 보낸다.
- IP 주소(오류 메시지의 원본 IP 주소)
- 라우터 이름(메시지의 데이터 섹션에 있음)
반복적으로, n번째 traceroute message
- TTL이 n으로 설정된 상태로 전송된다.
- n번째 라우터는 이 메시지를 무시하고 IP 주소와 n번째 라우터의 이름을 포함한 time-exceeded ICMP 오류 메시지를 보낸다.
그러나 (n + 1) 번째 메시지는 대상 호스트에 도달한다.
- 이 호스트도 삭제되지만 다른 이유(UDP 사용자 데이터그램에 지정된 포트 번호를 찾을 수 없음)가 있다.
- ICMP가 포트 번호를 찾을 수 없음을 나타내는 코드 3과 함께 destination-unreachable 메시지를 보낸다.
- 이 다른 ICMP 메시지를 수신한 후, 추적 경로 프로그램은 최종 목적지에 도달했음을 알 수 있다.
ICMP Checksum
ICMP에서 체크섬은 전체 메시지(헤더 및 데이터)에 걸쳐 계산된다.
'컴퓨터공학 > 데이터통신' 카테고리의 다른 글
[데이터 통신] Mobile IP (0) | 2022.12.17 |
---|---|
[데이터 통신] Main and Auxiliary Protocols - IPv4 (0) | 2022.12.15 |
[데이터 통신] IPv4 Addressing Example (0) | 2022.12.15 |
[데이터 통신] IPv4 Addressing - Internet Protocol Version 4 (0) | 2022.12.15 |
[데이터 통신] Performance - Network Layer : Data Transfer (0) | 2022.12.01 |