딸기말차
[MSA] 3. Network 본문
엔코아 플레이데이터(Encore Playdata) Backend 2기 백엔드 개발 부트캠프 (playdata.io)
백엔드 개발 부트캠프
백엔드 기초부터 배포까지! 매력있는 백엔드 개발자 포트폴리오를 완성하여 취업하세요.
playdata.io
1. 서브넷
1. 서브넷의 등장 배경 ?
기존에는 A Class, B Class, C Class 와 같이 클래스 단위로 네트워크를 분류하였다.
하지만 이 경우 어떤 곳에서는 적은 양의 Host 주소가 필요한데 B Class 네트워크를 할당 받아 IP 주소에 여유가 생기고, 어떤 곳에서는 많은 Host 주소가 필요한데, C Class 네트워크를 할당 받아 IP 주소가 부족해지는 현상이 생겼다.
때문에 클래스 단위로만 네트워크를 분류하는 것보단 좀 더 세부적으로 네트워크를 분할하기위해 서브넷이라는 개념이 등장하였다.
2. 서브넷 (Subnet) ?
서브넷은 하나의 네트워크가 분할되어 나누어진 작은 네트워크로, 이렇게 네트워크를 분할하는 것을 서브네팅 (Subnetting) 이라고 한다.
이 서브네팅은 서브넷 마스크 (Subnet Mask) 를 통하여 수행할 수 있다.
11001101 00000000 00000001 xxxxxxxx
다음과 같은 IP 주소가 있다고 가정해보자. 해당 IP는 최상위 비트가 11 이기 때문에 C Class 네트워크이다.
(A Class의 최상위 비트는 0, B Class의 최상위 비트는 1 이다. 즉, 비트가 1씩 늘어나면 다음 클래스로 분류된다.)
때문에 11001101 00000000 00000001 까지의 24비트는 네트워크의 주소이고, 뒷 부분의 8비트는 Host 주소이다.
이를 보면 C Class 네트워크는 기본 서브넷 마스크로 /24 를 가지고 있다는 것을 알 수 있다.
즉, 서브넷 마스크 값은 네트워크 주소를 나타내는 비트의 수를 나타낸 값이다. 이를 2진수로 표현하면 다음과 같이 표현할 수 있다.
11111111 11111111 11111111 00000000
여기서 이 네트워크가 가질 수 있는 Host 주소의 수는, 네트워크의 주소를 나타내는 24비트를 제외한 8비트 내에서 표현되야 하기 때문에 총 256개 이다.
만약 이 Host 주소를 128개씩 가지는 두개의 네트워크로 분할하고 싶은 경우, 서브넷으로 분할하게 된다.
11001101 00000000 00000001 1xxxxxxx
11001101 00000000 00000001 0xxxxxxx
만약 이와같이 네트워크를 분할하고 싶다면, 네트워크의 주소를 나타내는 부분이 기존에 24자리였다가 한자리가 늘어 총 25자리가 된 상황이다. 만약 이렇게되면 서브넷 마스크는 /25라고 표현할 수 있다.
여기서 11001101 00000000 00000001 1xxxxxxx 라는 서브넷 마스크 값을 활용해 서브넷을 구별해보자.
여기서 주의할 점은, 서브넷 마스크가 IP 주소와 비슷하게 생겼다고 헷갈리면 안된다는 점이다.
서브넷 마스크 값은 내 네트워크가 어디까지, 몇 자리까지 네트워크 주소를 표현할 지 명시해주는 값일 뿐이다.
* 네트워크 IP 주소
200.0.1.129
* 서브넷 마스크 값
255.255.255.128
위의 서브넷 마스크 값을 보면, 앞에서 25개의 비트는 네트워크 주소임을 알 수 있다.
11001000 00000000 00000001 10000001 -> IP
11111111 11111111 11111111 10000000 -> 서브넷 마스크
이를 AND 연산을 하면 11001000 00000000 00000001 10000000 이 되고,
때문에 해당 IP 주소는 200.0.1.129 ~ 200.0.1.255 사이에 속한 Host의 IP 주소임을 알 수 있다.
이 경우, IP주소를 다음과 같이 표현할 수 있다.
200.0.1.129/25
2. NAT (Network Address Translation)
IPv4 가 더이상 할당할 수 없음에도 우리가 IPv4 서비스를 계속 사용할 수 있는 이유는, Private Network (사설망) 덕분이라 볼 수 있다.
사설망이란, IPv4 중 특정 IP 대역을 공인 인터넷이 아닌 가정 내 등 한정된 공간에서 사용할 수 있는 네트워크를 의미한다.
사설망에 소속된 사설 IP 대역은 사설망 내부에서만 사용 가능하기 때문에, 공인망에서는 사용할 수 없다.
이렇게 사설망과 공인망이 사용하는 IP에 따라 분리되며, 공인망과 사설망의 사이에서 별도의 조치를 취해야 할 필요성이 생겼다.
즉, 사설망에서 공인망으로 나가려 할 때 자신의 출발지 IP (Source IP) 를 사설 IP 그대로 쓸 수 없기 때문에, 이를 공인 IP로 변환할 필요가 생겼다. 여기서 IP를 변환하는 방법을 NAT 이라고 한다.
3. OSI 7계층
1. 계층을 분리하는 이유
각 계층은 독립적인 역할을 한다. 즉, 계층별로 역할이 분리되며 문제가 생겼을 때 어떤 계층에 문제가 생긴 것인지 파악할 수 있다.
또한, 각 계층은 하위 계층을 사용하고 자신의 계층을 포함한 기능을 상위 계층에 제공해준다.
2. 동작 원리
1. OSI 7계층은 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리계층으로 나뉜다.
2. 전송 시 7계층에서 1계층으로 각각의 층마다 인식을 위해 필요한 헤더를 붙인다. 이를 캡슐화 라고 한다.
3. 수신 시 1계층에서 7계층으로 헤더를 떼어낸다. 이를 디캡슐화 라고 한다.
4. 출발지에서 데이터가 전송될 때 헤더가 추가되는데, 2계층에서만 오류제어를 위해 tail 부분에 추가된다.
5. 물리계층에서 1, 0 의 신호가 되어 전송매체 (동축케이블, 광섬유 등)을 통해 전송한다.
3. 계층별 요약
1) 물리(Physical) 계층
상위 계층에서 전송된 데이터를 물리 매체(허브, 라우터, 케이블 등)를 통해 데이터 전기적인 신호로 변환해서 주고받는 기능을 진행한다. 즉, 데이터를 전송하는 역할만 진행한다.
전송 단위 : bit
사용하는 프로토콜 : Modem, Cable, Fiber, RS-232C
사용 장비 : 리피터, 케이블, 허브
2) 데이터 링크(Data Link)
물리적인 연결을 통하여 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당한다. (Point-To-Point 전송)
즉, 신뢰성 있는 정보 전송을 통해 오류나 재전송하는 기능이 존재한다.
이 때 Mac 주소를 통해 통신하는데, 프레임에 Mac 주소를 부여하고 에러검출, 재전송, 흐름제어를 진행한다.
전송 단위 : 프레임(Frame)
사용하는 프로토콜 : 이더넷, MAC, PPP, ATM, LAN, Wifi
사용 장비 : 브릿지, 스위치
3) 네트워크(Network)
IP주소를 제공하는 계층으로, 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당한다.
즉, 라우터를 통해 최적의 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 데이터 전달한다.
이 때 전송되는 데이터는 패킷단위로 분할하여 전송한 후 다시 합쳐진다.
전송 단위 : 패킷(Packet)
사용하는 프로토콜 : IP, ICMP
사용 장비 : 라우터, L3 스위치
4) 전송(Transport)
사용자들이 데이터를 주고 받을 수 있게 하는 계층으로, 데이터 전송을 위해서 Port 번호를 사용한다.
이 때 TCP와 UDP 프로토콜을 통해 통신을 활성화한다. 포트를 열어두고, 프로그램들이 전송을 할 수 있도록 제공해준다.
- TCP : 신뢰성, 연결지향적
- UDP : 비신뢰성, 비연결성, 실시간 통신
전송 단위 : 세그먼트(Segment)
사용하는 프로토콜 : TCP, UDP , ARP, RTP
사용 장비 : 게이트웨이, L4 스위치
5) 세션(Session)
통신 세션을 구성하는 계층으로, 포트(Port)번호를 기반으로 연결하여
통신장치 간의 상호작용을 설정하고 유지하며 동기화한다.
이 때 연결 세션에서 데이터 교환과 에러 발생 시의 복구를 관리하고, 데이터가 통신하기 위한 논리적 연결을 담당한다.
즉, TCP/IP 세션을 만들고 없애는 책임을 지니고 있다.
사용하는 프로토콜 : NetBIOS, SSH, TLS API, Socket
6) 표현(Presentation)
송신측과 수신측 사이에서 데이터의 형식을 정해주고 데이터 표현에 대한 독립성을 제공하고 암호화하는 역할을 담당한다.
즉, 받은 데이터를 코드 변환, 구문 검색, 암호화, 압축의 과정을 통해 올바른 표준방식으로 변환한다.
사용하는 프로토콜 : JPEG, MPEG, SMB, AFP
7) 응용(Application)
최종 목적지로, 사용자와 바로 연결되어 있으며 응용 SW를 도와주는 계층이다.
사용자로부터 정보를 입력받아 하위 계층으로 전달하고, 하위 계층에서 전송한 데이터를 사용자에게 전달해준다.
즉, 사용자에게 파일 전송, DB, 메일 전송 등의 서비스를 제공한다.
사용하는 프로토콜 : DHCP, DNS, FTP, HTTP
4. 50일차 후기
백엔드 개발자라고 스프링 같은 프레임워크에서만 개발하는 것이 아니라, 어떻게 데이터가 흘러가는지, 어떤 주소를 통해 전송되는지에 관한 네트워크에 대한 지식도 필요하다고 생각한다.
왜냐하면, 해당 지식이 없다면 모놀리식이 아니라 MSA 환경을 구축했을 때 각 서비스 별로 어떻게 통신을 하는지 이해하기 힘들 수 있기 때문이다.
특히 IP에 관한 내용의 경우, 추후 프로젝트 진행 시 AWS를 사용하기 전 설정 시 필요한 개념이기 때문에 꼭 알아야한다고 생각이 들었다.
'Bootcamp > MSA' 카테고리의 다른 글
[MSA] 6. Docker 활용, SQL 예제 (0) | 2023.10.12 |
---|---|
[MSA] 5. Docker 활용, Compose (0) | 2023.10.11 |
[MSA] 4. Docker 활용, Image Build (0) | 2023.10.10 |
[MSA] 2. Docker Image, Container (0) | 2023.09.27 |
[MSA] 1. Ubuntu, Docker (1) | 2023.09.26 |