LAN 에서 노드는 MAC 주소를 통해 서로 통신을 할 수 있다.
스위치가 서로 연결 된 MAC 주소를 알고 있어 전송을 적절하게 전달 할 수 있기 때문이다.
하지만, 특정 MAC 주소가 어느 시점에 어느 위치에 있는지 알 수 있는 방법이 없기 때문에
장거리 네트워크에서는 이상적인 방법이 아니다.
그래서 필요한게 네트워크 계층이다.
네트워크 계층과 함께 오는 IP 를 알아보자
목표
- IP 주소를 식별 할 수 있다.
- 이더넷 프레임의 페이로드 내부에 IP 데이터그램이 캡슐화 된 방법을 알 수 있다.
- IP 데이터그램의 필드를 설명 할 수 있다.

IP 주소는 4개의 octets 으로 구성된 32 비트 길이의 숫자다.
각 octets 은 십진수로 설명이 되고 8비트 데이터는 0부터 255 까지의 숫자를 나타낸다.
IP 주소는 계층적 구조를 갖고있다.
예를들어 IMB 사가 첫번째 octest 의 9를 전부 가지고 있을때
인터넷 라우터가 9.0.0.1 어디로 보내야 될 지 알아내야 하는 경우
라우터는 IBM 사의 라우터 중 하나로 가져오기만 하면 된다.
나머지 배송은 라우터가 알아서 처리한다
IP Datagrams and Encapsulation
IP 프로토콜에서, 패킷은 대개 IP 데이터그램으로 불린다.
IP 데이터그램은 엄격하게 정의된 structure field 다.

IP 데이터 그램에서 두가지 주요 섹션은 헤더와 페이로드다
IP 데이터 그램의 헤더는 이더넷 프레임 헤더보다 훨씬 더 많은 데이터를 포함하고 있다.
첫번째 필드는 4비트로 어떤 버전의 프로토콜이 사용되고 있는지를 나타낸다.
IP 의 일반적인 버전으로는 IPv4 가 있다.
버전 필드 뒤에는 헤더 길이 필드가 있다.
헤더 길이를 선언하는 부분도 4비트 필드다.
다음은 서비스 유형 필드가 있다. 이 8비트를 사용해 서비스 품질 기술(QoS)에 대한 세부 정보를 지정할 수 있다.
라우터가 어떤 IP 데이터그램이 다른 것들보다 더 중요 할 수 있는지에 대한 결정을 내릴 수 있게 해준다.
다음 필드는 총 길이 필드고 16비트 필드다.
IP 데이터그램의 총 길이를 나나낸다.
Identification 필드는 메시지를 그룹화 할때 사용되는 16비트 필드인데
IP 데이터그램은 최대 크기를 가지고 있고, 전송해야 하는 총 데이터 양이 단일 데이터그램에 들어갈 수 있는 양보다 크다면, IP 계층은 이 데이터를 많은 개별 패킷으로 분할 해서 보내게 되는데
패킷이 동일한 전송의 일부임을 이해 하도록 Identification 필드를 사용하는것이다.
flags 필드와 fragment offset 필드는
flags 필드는 데이터그램이 분할 될 수 있는지 , 또는 데이터글매이 이미 분할 되었음을 나타낼때 사용된다.
fragment offset 은 단일 IP 데이터그램을 몇개의 작은 데이터그램으로 나누는 과정이다.
더 큰 데이터그램 크기를 허용하는 네트워크에서 더 작은 데이터그램 크기를 가진 곳으로 교체해야 한다면,
데이터그램은 분할 되어야 한다.
fragment offset 필드에는 조각화된 패킷의 모든 부분을 취합해 올바른 순서로 다시 조합하기 위해 사용하는 값이 포함되어 있다.
TTL 필드는 데이터그램이 통과 할 수 있는 라우터 홉 수 를 나타낸다.
프로토콜 필드는 어떤 전송 계층 프로토콜이 사용 되는지에 대한 데이터를 포함한다
가장 일반적인 전송 계층은 TCP 와 UDP 다.
헤더 체크섬 필드는 전체 IP 데이터그램 헤더 내용의 체크섬이다.
그리고 가장 중요한, 소스 IP 주소 필드와 대상 IP 주소 필드가 나온다.
모두 32비트를 가지고 있다.
IP 옵션 필드는 선택적 분야다. 특수 특성을 설정하는데 사용된다.
패딩 필드는 헤더가 정확한 총 크기를 갖도록 하기 위해 사용되는 0 숫자들에 불과하다.

- 이더넷 프레임을 분해 할 때 데이터 페이로드 섹션으로 설명이 된 부분이 바로 IP 데이터 그램이다.
이 과정이 바로 캡슐화.
IP 데이터그램의 전체 내용은 이더넷 프레임의 페이로드로 캡슐화 된다.
IP 데이터그램의 페이로드 섹션은 TCP 또는 UDP 패킷의 전체 부분이다.
IP 주소 클래스
IP 주소는 네트워크 ID 와 호스트 ID 두 섹션으로 나눌 수 있다.
예를들어 IBM 이 첫번째 옥텟 값으로 9를 가지고 있다면,
첫번째 옥텟은 네트워크 ID 나머지 2,3,4 는 호스트 ID 가 된다.
이렇게 주소 클래스 시스템은 IP 주소 공간을 어떻게 분할시키는지 정의하는 방법이다.
주소 클래스 에는 3가지 유형이 있다.
클래스 A, 클래스 B, 클래스 C
클래스 A는 네트워크 ID 가 첫번째 옥텟을 사용하고 나머지 3개가 호스트

B는 두개까지 네트워크 3,4 는 호스트
C 는 세개 까지 네트워크 ID 다.
각 클래스는 매우 다른 크기의 네트워크 주소를 갖는다.
클래스 A 는 총 24비트의 호스트 ID 공간을 가지기 때문에
2의 24승 16,777,216 개의 개별 주소를 갖는다.
클래스 C 와 비교를 하면 클래스 C는 8비트 256 개의 주소를 갖는다.
IP 주소 클래스는

첫번째 비트가 0 이면 클래스 A
첫번쨰 비트가 10 이면 클래스 B
첫번째 비트가 110 이면 클래스 C 에 속한다.
이진수로 보면 클래스 A는 0~ 127 이고
클래스 B는 128~ 191 이고
클래스 C 는 192~ 223 이다.
클래스 C 까지가 모든 IP를 포함하고 있지 않은 이유는
두개의 클래스가 더 있기 때문인데 ,그렇게 중요하진 않다.
클래스 D 주소는 비트 1110 으로 시작하고 224~239 로 시작하는데
멀티캐스팅에 사용이 되고 단일 IP 데이터 그램이 한번에 전체 네트워크로 전송 될 수 있는 방법이라 한다.
나머지 클래스 E 주소들은 모두 시험 목적으로 사용 된다.
ARP (Address Resolution Protocol )
이제 MAC 주소가 데이터 링크 계층에서 어떻게 사용되는지,
그리고 IP 주소르 어떻게 네트워크 계층에서 사용되는지를 봤다.
이제 이 두개의 분리된 주소 유형이 서로 어떻게 관련되어 있는지 토론 할 필요가 있다.
여기서 ARP 주소 결정 프로토콜이 사용된다.
ARP 는 특정 IP 주소를 가진 노드의 하드웨어 주소를 검색하는데 사용되는 프로토콜이다.
일단 IP 데이터그램이 형성되면 , 이더넷 프레임 안에 캡슐화 되어야 한다.
이건 송신 장치가 이더넷 프레임 헤더를 완성하기 위해 목적지 MAC 주소가 필요하다는 것을 의미한다.
모든 네트워크 장치는 로컹 ARP 테이블을 유지하고 있다.
ARP 테이블은 그 네트워크 장치와 관련된 MAC 주소들의 목록이다.

IP 주소 10.20.30.40 으로 데이터를 보내고 싶다고 가정하면,
이 목적지가 ARP 테이블에 없을 수 있다. 이럴땐 MAC 브로드캐스트 주소에 브로드캐스트 ARP 메시지를 보낸다.
이 ARP 메시지는 로컬 네트워크의 모든 컴퓨터에 전달 되고 10.20.30.40 IP 가 할당된 네트워크 인터페이스가
이걸 수신 하면 ARP 응답을 보낸다. 이 메시지에 해당 네트워크 인터페이스의 MAC 주소가 포함되어있다.
이제 송신 컴퓨터가 주소 필드에 어떤 MAC 주소를 넣어야 하는지 알게 되었고
배달 준비가 되었다.
또한 로컬 ARP 테이블에 해당 주소를 저장해서 다음번엔 ARP 브로드캐스트 방송을 하지 않게 할 것이다.
'프로그래밍 > 네트워크' 카테고리의 다른 글
[Coursera Google] The Network Layer - Routing (0) | 2020.12.07 |
---|---|
[Coursera Google] The Network Layer - Subnetting (0) | 2020.12.06 |
[Coursera Google] Datalink Layer (0) | 2020.07.19 |
[Coursera Google] Physical Layer (0) | 2020.07.07 |
[Coursera Google] 네트워크 device 장치들 (0) | 2020.07.07 |