2 계층에서 하는 일
하나의 네트워크 대역(LAN) 안에서 같은 네트워크 상에 존재하는 노드(여러 장비들) 중에서 어떤 장비에게 보내는 데이터를 전달함. 추가적으로 오류제어(보내는 데이터에 오류는 없는지), 흐름제어(누가 누구에게 데이터를 보내는지)를 수행. 즉 2계층은 하나의 네트워크 대역 LAN에서만 통신할 때 사용한다. 다른 네트워크와 통신할 때는 항상 3계층이 도와주어야 한다. 3계층의 주소와 3계층의 프로토콜을 이용해야만 다른 네트워크와 통신이 가능함.
LAN에서 통신할 때 사용하는 식별 주소는 MAC 주소. 물리적인 주소라고도 부름. 물리적 주소는 16진수로 쓰고 앞에 6바이트는 OUI(IEEE에서 부여하는 일종의 제조회사 식별 ID), 뒤 6바이트에는 고유번호(제조사에서 부여한 고유번호)
이더넷 프로토콜 헤더
- 이더넷 프로토콜의 헤더를 보면 Destination Address가 6바이트이고 여기에 목적지의 MAC주소를 적는다. 마찬가지로 Source Address가 6바이트이고 출발지의 MAC 주소가 들어간다.
- Ethernet Type은 상위 프로토콜이 무엇인지(IP인지 ARP인지 등등) 미리 알려주는 것. IPv4가 온다면 0x0800, ARP가 온다면 0x0806. 전기적 신호로 패킷을 주고 받기 때문에 이더넷 타입이 따로 알려주지 않으면 컴퓨터 입장에서 페이로드 안에 있는 상위 프로토콜이 어떻게 이루어져있는지 모름. (다른 프로토콜에도 이렇게 상위 프로토콜 종류를 알려주는 주소 공간 존재)
3계층에서 하는 일
3계층은 서로 다른 네트워크 대역과 통신을 담당한다. 서로 다른 LAN과 통신하기 위해선 3계층 장비가 필요함. WAN에서 통신할 때는 IP 주소가 필요. Ipv4 주소에서는 IPv4뿐만 아니라 서브넷 마스크와 게이트웨이 주소도 필요함. 3계층에서는 IPv4 외에도 ICMP, ARP 프로토콜도 있다.
IP 프로토콜
Classful IP
이전에는 필드가 총 4개로 구분되어 있었음. 각 필드를 옥텟이라고 함. 처음에는 classful하게 class를 나눠서 사용함. 이 경우 맨 앞 옥텟의 주소가 무엇인지만 보면 구분할 수 있음.
💡 옥텟(Octet) 먼저 사전적인 의미로는 컴퓨터에서 8개의 비트가 한데 모인 것을 말한다. 초기 컴퓨터에서는 1바이트가 꼭 8비트만을 표현하지는 않았기 때문에 옥텟이라는 용어를 생성하게 되었다. IPv4 주소에서의 옥텟이라는 말의 의미는 32비트의 IP 주소를 8비트로 나누는 단위라고 할수 있다. IP 주소는 32비트로 이루어져 있고, 그것을 옥텟(Octet)단위로 끊어서 표현한다. 각 옥텟은 10진수로 0~255의 값을 가지게 된다. 그리고 나누어진 옥텟을 마침표(.)단위로 나누어서 표기하는 것이다. IPv4 주소는 총 32비트로 이루어져 있는데 4구간으로 나누어서 사용된다. 그래서 8비트씩 4구간으로 나누어서 사용하게 되는데 8비트씩 나누어진 것을 옥텟이라고 한다. |
Classless IP와 서브넷 마스크
기존 필드 단위로 할 경우 낭비되는 IP가 너무 많아진다는 단점 발생. 첫번째 필드로 하면 뒤에 세 필드가 모두 호스트 구분 주소가 될 수 있으니까. 따라서 각 단위마다 자르는 방식으로 변경함. 서브넷 마스크를 사용해서 쓰는 것이 Classless IP.
클래스풀한 네트워크 대역을 나눠주는데 사용하는 값 어디까지가 네트워크 대역을 구분하는데 사용하고 어디서부터 호스트를 구분하는데 사용하는지 지정 (ex. 255.255.255.192 -> 11111111.11111111. 11111111 . 11000000) 2진수로 표기했을 때 1로 시작, 1과 1사이에는 0이 올 수 없다는 규칙을 가지고 있다.
Q. 192.168.100.68 / 255.255. 255.192 와 같이 IP주소와 서브넷마스크를 쓰면? 192.168.100. 0와 같이 C클래스에 해당하는 네트워크를 192. 168.100.0, 192.168. 100. 64, 192.168.100.128, 192.168.100.192와 같이 4개의 작은 네트워크 대역으로 나눈 것이고 해당 IP 주소는 2번째 네트워크에 해당하는 것 |
사설IP와 공인IP
사설 IP와 공인 IP라는 개념이 추가로 도입됨. 공인IP는 실제 인터넷과 통신할 때 쓰는 IP, 사설 IP는 같은 네트워크 대역에서 사용하는 IP. 이렇게 될 경우 사설 IP 내의 노드는 인터넷과 통신할 때 공인IP로 변환하여 통신하게 됨. 네트워크 주소를 사설 IP에서 공인 IP로 변환하는 것을 NAT(Network Address Translation)라고 함. (물론 정확히는 사설IP → 공인IP에만 해당되는 것은 아니고 조금 더 일반적인 기술 용어)
실제 인터넷의 관점에서 볼 때 공인IP로만 통신을 한다 → 외부 네트워크 대역에서는 사설IP 대역이 보이지 않음. 사설IP 대역은 공유기가 알아서 처리해주는 것. 사설IP 대역에서 외부에 어떤 요청을 하게 되면 NAT 테이블에 기록이 남고, 공유기로 요청이 들어오면 공유기는 NAT 테이블을 보고 요청을 한 특정 노드에게 요청 결과를 전달. 만약 NAT 테이블에 기록되지 않은 노드로 요청의 결과값이 들어온다면 그것은 그냥 공유기가 가짐.
내부에서 외부로 요청이 가능하지만, 반대로 외부에서 내부로 직접적인 요청은 불가능하다. 만약 내부로 바로 접속하고 싶다면 포트포워딩을 한다면 가능!
💡 핸드폰 3G, 4G 등은 지역에 있는 3G, 4G망으로 들어갈 때마다 사설IP를 기기가 할당받는 것. 전화망이랑 유선망이 다른 경우에는 전화하면서 인터넷하는 것이 가능, 미국의 경우 둘이 합쳐져 있는 경우가 있어서 전화할 때 인터넷을 사용 못하는 경우가 있음. |
ARP 프로토콜
같은 네트워크 대역에서 노드끼리는 IP주소가 아닌 MAC 주소를 기반으로 통신을 한다. 하지만 사용자가 보는 것은 보통 IP 주소. IP 주소를 입력하면 컴퓨터들끼리 서로의 MAC 주소를 ARP 프로토콜을 활용해 알아오게 된다.
ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC주소를 IP주소를 이용해서 알아오는 프로토콜이다. 같은 네트워크 대역에서 통신을 한다고 하더라고 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP주소와 MAC주소가 모두 필요하다. 이 때 IP주소는 알고 MAC 주소는 모르더라도 ARP를 통해 통신이 가능하다. |
- Hardware Address: MAC 주소, Protocol Address: IP 주소. 출발지와 도착지의 MAC 주소와 IP 주소 기재.
- Hardware type: 많은 타입이 있지만 거의 이더넷 프로토콜에 해당되는 바이트만 보인다 (0 0 0 1)
- Protocol Type: Source Protocol Address에서의 타입 (보통 IPv4 프로토콜값 0 8 0 0 )
- Hardware Address Length: MAC 주소의 길이 0 6
- Protocol Address Length: IPv4 길이 0 4
- Opcode: Operation Code - 요청 or 응답 중인지를 나타나내는 것 (1이 요청, 2가 응답)
ARP 요청을 하고자 할 때 ARP 프로토콜에서 도착 IP주소는 적고, MAC주소는 비워둔다. 이더넷 프로토콜에서는 FF FF FF FF FF FF, 즉 브로트캐스팅 주소를 적어서 보낸다. 이렇게 되면 같은 LAN 대역에 있는 모든 노드에게 패킷이 전달되는 것. 각 노드에서는 3계층까지 다시 헤더와 페이로드를 까보고 자신의 IP 주소가 적혀 있지 않은 경우 해당 패킷을 버린다. 만약 자신의 IP가 적혀 있는 경우 자신의 MAC주소를 비롯한 정보와 Opcode를 2로 변경한 ARP 프로토콜을 작성한 후 다시 보낸다. 요청을 보낸 입장에서는 이 정보를 까보고 자신의 ARP 캐시 테이블 위에 이 내용을 적는다 ⇒ 최초 통신에서 ARP 통신이 먼저 있은 후에 통신이 진행됨.
'CS > 네트워크' 카테고리의 다른 글
네트워크 스터디 1주차 - 네트워크 전반, 데이터 송수신 (0) | 2024.02.11 |
---|