네트워크를 부분적으로 공부한 후 간결하게 정리하였습니다.
틀린 정보 혹은 보기에 불편한 점을 알려주신다면 적극 반영하겠습니다.
LAN
Local Area Network의 이름에서 알 수 있듯이, 소규모 통신망을 말한다.
HUB
근거리 통신에서, 컴퓨터 간의 소통을 위한 연결장치
허브의 단점
데이터 전송 시 연결된 모든 컴퓨터에 데이터를 전송하며(그림 1)
이미 누군가가 통신망을 사용중이라면 충돌 문제(Collision)가 발생한다.(그림 2)
허브의 단점 개선
Collision문제를 CSMA/CD 프로토콜을 사용해 해결하고자 했다.
CSMA/CD (Carrier Sense Multiple Access/Collision Detection:: 반송파 감지 다중 접속/충돌 감지)
쉽게 말해, 데이터 전송 전에 네트워크가 사용 중인지 확인하는 과정을 통해 사용 중이지 않다면 데이터를 전송하는 방법이다.
허브로 연결된 모든 장치에 데이터를 보낼 때, 프레임에 MAC 주소를 넣어 식별하였다.
데이터를 받은 장치에서는, 프레임의 수신 MAC 주소를 확인하여 수신지를 식별할 수 있었고 장치 내부에서 데이터를 수신 혹은 비수신처리 하였다.
MAC(Medium Access Control) 주소
NIC(Network Interface Card:: 랜카드)에 각인된 고유한 물리적 주소
6바이트 구조의 16진수로 구성되어 있으며(fe:1b:63:84:45:e6) 첫 3바이트는 IEEE에서 기업이나 단체 단위로 할당해준다.
프레임
데이터 링크 계층에서 전송되는 단위
크게 목적지 MAC 주소, 소스 MAC 주소, 데이터로 구분되며 자세한 프레임 형식은 여기에서 확인할 수 있다.
SWITCH
허브의 단점들이 보완된 연결 장치이다.
1.
스위치가 직접 프레임의 MAC 주소를 파악하여 데이터를 전송한다.
모든 장치에 데이터가 전송되지 않으며, 장치에서 불필요하게 데이터 수신에 대한 의사결정을 하지 않게 되었다.
2.
Collision이 발생하던 기존 문제를, 케이블이 송신용, 수신용으로 분리하여 더이상 충돌이 발생하지 않게 되었다.
WAN
WAN(Wide Area Network)는 먼 거리에 있는 장치들을 연결하는 대규모 네트워크다.
LAN-LAN, LAN-WAN 혹은 WAN-WAN을 라우터(Router)를 통해 연결한다.
인터넷을 생각해보면 쉽다. KT, SK등 업체에서 인터넷 연결을 위해 방문한 경험이 있을 것이다. 우리는 기사가 설치해준 랜선을 통해 인터넷에 연결되어 인터넷을 이용한다.
이 때 우리의 집이나 사무실에 컴퓨터들이 공유기를 통해 연결된 상태는 LAN이다. 이 LAN이 인터넷이라는 WAN을 통해 전 세계의 다른 LAN들과 연결된다.
Router
라우터는 WAN과의 연결을 위한 연결 장치로, 라우터끼리의 연결도 가능하다.
이 라우터는, MAC주소를 알 수 없고, IP주소만 할당되어 있는 상태이다.
위에서 설명한 LAN의 데이터 송,수신 방식에서 MAC주소를 언급했었다.
하지만, 이 라우터에는 MAC 주소는 없는데 어떻게 데이터를 전송할 수 있는 것일까?
ARP(Address Resolution Protocol:: 주소 결정 프로토콜)
주소 결정 프로토콜은 이처럼, 라우터와 같은 네트워크 계층에서 목적지의 MAC 주소를 알아내기 위해서 사용되는 프로토콜로
프레임의 데이터 안에 IP 패킷을 넣어 요청 - 응답 을 통해 MAC 주소를 알아낼 수 있다.
위의 구조에서, Target Hardware Address는, 목적지 MAC 주소를 모르기 때문에 0으로 채워진다.
ARP Cache
매 요청마다 무조건적으로 ARP를 브로드캐스팅하게되면, 트래픽이 과하게 발생할 수 있다.
그렇기 때문에, 새로 생긴 MAC 주소에 대해 20분의 유효기간을 가지는 캐시가 생성되어 ARP 요청 없이 사용할 수 있다.
패킷(Packet)
네트워크 레이어에서 사용하는 전송 단위로 서로 다른 LAN 간에 데이터를 주고 받을 때 사용된다.
패킷도 프레임과 마찬가지로 목적지 주소, 소스 주소, 데이터를 가지고있는데, 이 때 주소는 IP 주소를 말한다.
그렇다면, ARP로 어떻게 MAC 주소를 알아낼 수 있는걸까?
192.168.0.3을 나라고 가정하고, 목적지인 192.168.30.1로의 데이터 전송과정을 살펴보자.
ARP request
LAN영역에서, 데이터 전송을 위한 패킷이 생성되었지만, 목적지의 MAC 주소는 알지 못하고 있는 상태이다.
이럴 때, 목적지의 MAC 주소를 알아내기 위해 LAN의 모든 장치에 브로드캐스팅을 하는데,
이 때, 프레임의 목적지 MAC 주소는 브로드캐스팅에 사용되는 MAC 주소로 세팅되며
데이터는 ARP에 사용될 IP Packet이 들어가게 된다.
ARP Request Packet에는, 위의 그림 5번의 패킷 구조에서
받는 쪽의 MAC 주소를 모르기 때문에, 받는 쪽의 MAC 주소는 00:00:00:00:00:00로 세팅된다.
ARP reply
위의 ARP 요청에서, 같은 LAN에 목적지의 IP가 있다면, 바로 MAC 주소를 받을 수 있지만
만약 브로드캐스팅 후에 LAN에서 응답이 없을 경우 Default Gateway, 즉 LAN에 연결된 라우터의 MAC 주소를 가져온다.
라우터간 데이터 전송
요청이 라우터에 도달되면, 수신받은 프레임에서 IP 패킷을 추출한다. (디캡슐레이션)
이 때 라우터는, 다음 목적지를 알아내기 위해 라우팅 테이블을 확인하고, 다음 홉의 라우터를 결정한다.
라우터는 현재 라우터의 MAC 주소와, 다음 홉의 라우터의 MAC 주소 및 데이터에는 추출했던 IP 패킷을 담은 새로운 프레임을 생성하여 전송한다.
이 과정을, 목적지 네트워크에 도달할 때 까지 반복하게된다.
홉(hop)
컴퓨터 네트워크에서 출발지와 목적지 사이의 경로의 한 부분
위 그림은, 라우팅 과정에서, 라우터 간의 데이터 전송의 시작지점이다.
1.
위에서 셋팅했던 프레임에서 IP 패킷을 디캡슐레이션하여 목적지 IP 주소인 192.168.30.1를 추출한다.
2.
목적지에 해당하는 IP를 라우팅 테이블에서, 다음 홉을 결정한다.
3.
다음 홉의 위치를 확인했으니, 해당 홉의 라우터의 MAC 주소를 송신지로 하는 새로운 프레임을 만들어 IP 패킷을 감싼다.
4.
1.2.3.2 라우터에 전송한다.
5.
이 과정을, 다음 홉이 직접 연결된 곳인 라우터까지 반복한다.
그림 7에서, 만약 현재 홉이 1.2.3.2 라우터라면, 다음 홉은 1.2.3.5가 될 것이다.
1.2.3.2의 라우팅 테이블은 아래와 같다
192.168.0.0/24 - 1.2.3.1
192.168.10.0/24 - 직접 연결됨
192.168.20.0/24 - 1.2.3.5
192.168.30.0/24 - 1.2.3.5
6.
다시 ARP request를 보내 IP 주소에 해당하는 MAC 주소 요청을 브로드캐스팅하고
7.
ARP reply를 통해 받은 MAC 주소를 프레임에 담아 전송한다.
8.
LAN의 스위치 등의 연결장치에서 MAC 주소에 맞는 장치로 데이터를 보낸다.
참조
[유튜브] 크래프트맨 멘탈리티님의 네트워크 기초 무료강의
[인프런] 널널한 개발자님의 넓고 얕게 외워서 컴공 전공자 되기
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!