Error/Status Reporting
- 라우터가 만나는 에러의 상황
1. 라우터가 패킷을 어디로 보내야 할지 모를 때
2. 패킷의 TTL(hop count) 값이 만료되었을 때
3. 패킷이 링크레이어 라우터가 처리할 수 있는 크기를 넘어섰을 때 (don't fragment bit set)
- 이와 같은 상황에 라우터는 respond를 보내 줄 필요가 없다.
Best Effort는 에러 컨트롤을 하지 않기 때문이다. Not guaranted
때문에, IP는 조용히 패킷을 드롭한다.
- 하지만 silent failure(silent drop)가 이루어진 것을 end-host가 진단하는 일은 매우 어렵다.
ICMP (Internet Control Message Protocol)
- ICMP는 IP의 에러 리포팅, 간단한 쿼리(ex. ping)를 도와주기 위한 프로토콜이다.
- ICMP 메시지는 IP 데이터그램으로 캡슐화된다.
- ICMP는 IP 위에서 동작한다. TCP/UDP와 같은 레벨이지만, transport layer는 아니다. 3.5
- IP packet이 time exceeded or destination unreachable 문제에 직면했을 때, trigger 된다.
- ICMP 패킷은 에러 메시지와 오리지널 패킷의 (IP header) + (8+ byte)를 source IP address로 전송된다.
- Surce Host는 ICMP packet을 받으면, excerpt(오리지널 패킷의 (IP header) + (8+ byte))를 진단해 소켓을 확인한다.
- 문제가 생긴 ICMP 패킷에 대해서는 ICMP를 보내지 않는다.
ICMP format
- Type (1 byte): ICMP 메시지의 타입
- Code (1 byte): subtype
- checksum (2 bytes): ICMP 메세지 전체의 checksum
- 추가적인 데이터가 없으면 4 bytes가 0으로 set 된다. -> ICMP message는 최소 8 bytes
- Data section
1. Error Message (28 bytes excerpt)
2. Query Message (쿼리 종류에 따라 extra info)
ICMP Error message
- ICMP 에러 메시지가 보내지지 않는 상황
1. ICMP error message를 포함하는 데이터그램 (ICMP 에러에 대해서 다시 ICMP 에러를 보내지 않는다.)
2. fragment된 데이터그램의 첫 번째 fragment가 아닐 때 (첫 fragment만 보내주고, 나머지 fragment는 보내지 않는다.)
3. 데이터그램이 broadcast/multicast address를 가지고 있을 때 (어디로 보내야 할지 모르기 때문에)
4. 데이터그램이 127.0.0.0 or 0.0.0.0과 같은 특별한 주소를 가지고 있을 때 (loopback interface)
- Destination unreachable
IP datagram이 forward 되지 못하고 드롭되었다. code field가 상세 이유를 포함
- Redirect
alternative route에 대한 정보를 알리고 라우팅 테이블을 업데이트시킨다.
code field가 route change의 이유를 설명
- Time exceeded
TTL filed가 0이 되었거나 세그먼트 재조립에 대한 시간이 초과되었다.
- Parameter problem
IP header가 유효하지 않거나, IP header option이 누락되었다.
Destination Unreachable
- Protocol is unreachable과 Port is unreachable의 ICMP는 호스트에서 만들어진다.
나머지는 라우터
- Destination에서 해당하는 프로토콜 모듈, 프로세스 포트가 not active 하다면 host가 ICMP를 보내기 때문
ICMP query message
- 네트워크 문제를 진단하기 위해
Echo Request and Reply
- Ping은 커널에서 직접적으로 다뤄진다.
- 각 ping은 ICMP Echo Request로 변환된다.
- 핑을 받은 호스트는 ICMP Echo Reply를 보내준다.
ICMP Timestamp
- 시스템이 다른 시스템에게 현재 시간을 묻는다.
- 시간은 현재 날짜의 UTC 자정 이후의 밀리 초로 측정된다.
네트워크 경로 찾기
- ICMP는 라우터가 end-host와 대화할 수 있게 해 준다.
- PMTU(Path Maximum Transfer Unit) Discovery
네트워크를 통해 fragmentation 없이 보낼 수 있는 가장 큰 패킷의 크기를 알아낼 수 있다.
- Traceroute
패킷이 네트워크를 통과할 때, 통과하는 라우터들이 무엇인지 알아낼 수 있다.
PMTU Discovery
- MTU = Maximum Transmission Unit (링크가 받을 수 있는 가장 큰 IP 패킷)
- PMTU = minimum end-to-end MTU
- 적절한 크기의 패킷을 DF를 설정해 보내고, Need Fragmentation ICMP가 오면 더 작게 해서 보내고..
DIscovering Routing Path
- TTL을 1부터 하나씩 올리며, 각 라우터에게 Time Exceeded ICMP를 받는다.
Ping
- 라우터는 ping을 전달해주기 때문에 인터넷 어느 장치든 ping을 보낼 수 있다.
- 각 장치(라우터 포함)는 ping에 reply, forward하지 않도록 설정될 수 있다.
'컴퓨터 사이언스 > 네트워크' 카테고리의 다른 글
[모바일 컴퓨팅] Transmission Control Protocol (TCP) (0) | 2021.04.22 |
---|---|
[모바일 컴퓨팅] User Datagram Protocol (UDP) (0) | 2021.04.21 |
[모바일 컴퓨팅] IP (Internet Protocol) (0) | 2021.04.19 |
[모바일 컴퓨팅] Addressing (0) | 2021.04.18 |
[모바일 컴퓨팅] Data Link Layer (0) | 2021.04.17 |