우클릭방지

글 목록

2017년 7월 5일 수요일

[네트워크]IP 충돌 과정 이해하기

통상 집에서 사용하는 컴퓨터는 KT,SK,LG등과 같은 ISP 업체로부터 IP를 자동으로 할당 받아 사용하기 때문에 크게 신경 쓸 필요가 없겠지만, 회사등에서 업무적으로 컴퓨터를 사용하는 경우라면, IP 설정에 신경을 써야 한다.

자신이 설정한 IP가 중요한 서버에서 사용중인 IP 라면 서비스가 다운될 수 있고, 이로 인한 피해는 서버의 역할에 따라 아주 클수도 있기 때문이다.

그렇다면, 우리 컴퓨터는 어떻게 IP가 사용중인지 아닌지 알 수 있을까?
이제부터 궁금증을 조금 해소해보도록 하자

컴퓨터에 우리가 사용하고자 하는 IP를 설정하고 케이블을 연결하면, 컴퓨터는 다음과 같은 동작을 하기 시작한다.


  1. 음.. 내가 설정한 IP가 xxx.xxx.xxx.xxx 인데.. 과연 사용해도 되는지 알아볼까?
  2. 내가 사용하려는 IP는 192.168.204.162 인데... 혹시 누가 사용하고 있나요?
    (ARP Request #1)

  3. 아무도 대답이 없네.. 다시 한번....
    내가 사용하려는 IP 는 192.168.204.162 입니다. 이거 사용하는 사람 있나요?
    (ARP Request #2)

  4. 한번 더 물어보자...
    나 192.168.204.162 써도 될까요?
    (ARP Request #3)

  5. 아무도 사용하는 사람이 없구만... 그럼 이제부터 이 IP를 사용해야겠다.
    저는 이제부터 192.168.204.162를 사용합니다. 다들 기억해 주세요~
    (Gratuitous ARP)


* Gratuitous ARP를 같은 서브넷에 연결된 호스트들이 받게 되면.. 각자 자신의 ARP 테이블에 해당 IP와 MAC 주소를 기록하게 된다.



테스트는 Windows 7 운영체제의 컴퓨터를 사용했다.

컴퓨터에서 수동으로 설정한 IP를 사용하기 위해서는 설정한 IP가 다른 호스트에서 사용중인지 여부를 검사하는 과정을 우리는 볼수 없지만.. 위와 같은 절차로 수행이 된다.

다시 정리해 보면..


  1. 설정한 IP를 사용해도 되는지 여부를 체크한다. (ARP Request)
  2. 초당 1회씩 총 3회 물어보고 문제가 없다면 자기가 사용하려는 IP를 같은 네트워크 세그먼트에 알린다. (Gratuitous ARP)


그럼, IP 충돌일 경우.. 그러니까 수동으로 설정한 IP를 다른곳에서 사용하고 있는 경우는 어떨까?

다음과 같다. 

  1. IP 192.168.204.163 을 내가 사용해도 되나요?
    (ARP Request)

  2. 안되요~ 192.168.204.163은 제가(삼성_F5:69:02) 사용합니다.
    (ARP Reply)

  3. 에구.. 알겠어요~.. 미안합니다.


IP가 충돌하게 되면 각자 위와 같은 경고 메시지는 본 기억이 있을것이다.
IP가 충돌되었는지 여부를 확인하는 과정을 자세히 들여다 볼 기회가 없었던 분들께 이번 포스팅 내용이 도움이 되길 바란다.

댓글 4개:

  1. 2번에 arp request를 보내려면 먼저 ip가 있어야 하잔아요? 그럼 이 때 설정할 ip는 중요한 ip인지 미리 알 수 있나요?

    답글삭제
    답글
    1. 수정이 안되네요; tell 0.0.0.0으로 돼 있는데 그럼 그냥 답을 브로드캐스로 뿌리라는 거 같네요 맞나요?
      그럼 자신의 pc에 ipv4 설정에도 ip가 0.0.0.0이 되어 있는 건가요?

      삭제
    2. 제가 코로나가 걸려서 회복하느라 바로 답을 못드렸습니다. ㅠㅠ
      중요한 IP 인지 아닌지는 사전에 알 수 있는 방법이 없다고 보는게 맞습니다.
      IP 관리 솔루션등과 같이 따로 IP를 관리하는 제품/솔루션의 도움 없이는 확인하기가 불가능해요.

      삭제
    3. 일단, tell 0.0.0.0 은 일종의 wireshark 버그일 가능성이 있을거 같네요..
      (글을 적은지 너무 오래되어서 해당 패킷을 가지고 있지 않고 해서 내용을 정확히 확인해 보기가 어려운 상태입니다.)
      원래는 tell 뒤에 통상 sender 의 IP가 있어야 하는데요~..
      위 패킷을 보면 sender 의 IP 가 0.0.0.0 임에도 불구하고 답을 정상적으로 해주긴 하는 걸로 보아 wireshark 의 디스플레이 문제가 있지 않았나 추정해 봅니다.
      원래는 물어본 당사자의 PC 또는 서버/제품등의 IP가 보여야 하는게 맞습니다.

      삭제