[Network] 네트워크 기초 개념 정리

기초 지식

네트워크

네트워크란 두대 이상의 컴퓨터가 연결된 환경이며, 단순히 컴퓨터 2대를 케이블로 연결해도 그것은 네트워크이다.

인터넷은 전 세계의 네트워크가 연결된 환경으로 인공 위성과 광케이블 등 전 세계의 데이터를 통신하기 위한 물리적 환경과 ISP(Internet Service Provider)에 의해 구축되었다. 

ISP의 예시로 SKT, KT, U+와 같은 통신사가 있다.

 

패킷

패킷은 네트워크를 통해 전송되는 데이터의 조각이다.

큰 데이터를 한번에 보내지 않고 패킷으로 작게 나눠 보내는 이유는 너무 큰 데이터를 그대로 보내면 네트워크의 대역폭을 너무 많이 점유하기 때문에 다른 패킷의 흐름을 막을 수도 있기 때문이다.

작은 조각으로 나눠서 보내기 때문에 데이터를 받는 목적지(라우터)에서는 패킷을 하나로 합치는 작업이 필요하며, 패킷 전송 과정에서 일부 패킷이 소실될 수 있기 때문에 소실된 패킷은 다시 요청해서 받아온다.

따라서 패킷의 순서는 보장되지 않으며 패킷 안에는 목적지에서 합치기 위한 패킷의 순서 정보가 들어있어야 한다.

 

LAN, WAN

LAN은 로컬 네트워크로 가정이나 사무실 같은 좁은 범위의 네트워크 환경이며, WAN은 그 이상의 넓은 범위를 가진 네트워크로 ISP를 통해 여러 LAN을 연결한다.

 

사무실에서 사내 메신저를 통해 메세지를 전송한다면 LAN만 사용해서 데이터를 전달할 수 있다.


인터넷을 사용하는 경우는 보통 LAN(공유기)에 연결된 컴퓨터가 데이터를 요청하면 공유기가 WAN을 통해 데이터를 받아와서 컴퓨터에게 전달한다. 

 

 

 

 

 

 

 

 

회사의 LAN 구성

회사의 네트워크 구성은 일반 가정과 다르게 DMZ(외부에 공개하기 위한 네트워크)라는 영역이 있다.

그 이유는 회사 네트워크 내부의 중요한 영역에는 접근하지 못하게 막고 DNS 서버, 웹 서버, 메일 서버 등을 외부에서 접근할 수 있도록 따로 제공한다.

일반적인 가정에서는 서버를 외부로 공개할 필요가 없기 때문에 DMZ 영역이 존재하지 않는다.

 

회사에서는 보통 사내 서버 또는 데이터센터를 운영하거나, 클라우드 서비스를 사용하는데 이때 사내 서버나 데이터센터를 운영하는 것을 "온 프레미스"라고 한다.

 

 

네트워크의 기본 규칙

프로토콜

네트워크는 컴퓨터들 간의 소통을 위한 환경이기 때문에 소통에 대한 규칙이 있어야하며, 이 규칙을 프로토콜이라고 한다.

 

OSI 7Layer

예전에는 같은 회사의 컴퓨터끼리만 통신이 가능한 시절이 있었는데, 이런 일들을 해결하기 위해 공통으로 사용할 수 있는 표준을 정해야했다. 그래서 ISO 국제표준화기구에서 OSI 모델이라는 표준 규격을 정리하였다.

 

 

7계층: 이메일, 파일 전송, 웹 사이트 조회 등의 어플리케이션에 대한 서비스를 제공

 

6계층: 문자 코드, 압축, 암호화 등의 데이터를 변환

 

5계층: 세션 체결, 통신 방식을 결정

 

4계층: 신뢰할 수 있는 통신을 구현

 

3계층: 다른 네트워크와 통신하기 위한 경로 설정 및 논리 주소를 결정

 

2계층: 네트워크 기기 간의 데이터 전송 및 물리 주소를 결정

 

1계층: 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어

 

 

 

 

 

TCP/IP 

TCP/IP는 7계층을 4계층으로 바꿔서 생각할 수 있다.

 

데이터 송수신 과정

7to1, 1to7

데이터 송신 시 패킷이 각 계층을 지나면서 헤더 정보를 포함하여 다음 계층으로 이동하며, 아래와 같이 캡슐화된다.

7계층 중 2계층인 데이터 링크 계층에서는 패킷 뒤에 트레일러라는 추가 정보도 포함한다.

 

데이터 수신 시에는 반대로 역캡슐화를 통해 헤더를 분리하여 정보를 읽고 분리된 패킷을 다음 계층으로 전달한다.

 

 

물리 계층 (1계층)

물리 계층에서는 컴퓨터의 랜 카드(메인보드에 포함 또는 별도로 존재)가 네트워크 장비와 연결되어 0과1을 전기 신호로 변환한다.

또한 비트 속도와 대역폭이나 잡음 관리, 주파수 등 물리적인 요소들을 제어한다.

 

허브

허브는 전기 신호를 증폭하는 기능과 여러 포트를 통해 여러 PC를 연결하는 기능을 한다. (wifi 공유기를 보면 랜선을 연결하는 포트가 여러 개 있는 것을 보았을 것이다. 대부분 허브가 아닌 스위치를 사용하지만 외형은 허브와 유사하다.)

허브는 받은 데이터를 연결된 모든 컴퓨터에 전송하는 역할을 하는데, 예를 들어 A PC가 B, C에게만 데이터를 보냈을 때 같은 허브에 연결된 D,E PC에도 데이터가 전달된다.

 

 

 

데이터 링크 계층 (2계층)

데이터 링크 계층은 기기 간의 신호를 주고받는 규칙을 정하는 계층으로, 랜에서 데이터를 정상적으로 주고받기 위해 필요한 계층이다.

가장 일반적으로 사용되는 규칙이 바로 이더넷 규칙이다.

이더넷 규칙은 허브와 PC 같이 연결된 장비 간에 데이터를 주고받을 때 사용하며, 컴퓨터의 인터넷 연결을 확인할 때 나오는 이더넷이라는 단어가 여기서 말한 이더넷이다.

 

이더넷 

이더넷은 앞선 허브 개념에서 설명한 연결된 모든 기기에 데이터를 전송할 때 목적지 이외에는 데이터를 받더라도 무시하게 되어있다.

또한 여러 대의 PC가 동시에 데이터를 보내면 충돌이 발생할 수 있는데, 이더넷은 충돌이 발생하지 않는 구조로 되어있다.

충돌하지 않는 이유는 데이터를 보내는 시점을 늦추는 CSMA/CD 방식을 사용하기 때문이다.

 

CSMA/CD(Carrier Semse Multiple Access with Collision Detection)는 데이터를 보내기 전에 여러 장치가 하나의 채널을 공유하여 다른 장치들이 채널을 사용 중인지 확인하여 충돌을 감지하고 충돌이 발생한다면 모든 장치는 일정 시간 대기 후 데이터를 전송하는 방식이다.  (성능상의 이유로 지금은 잘 사용하지 않는다.)

 

MAC 주소

랜 카드에는 MAC 주소가 있다. 제조할 때 새겨지는 물리주소이며 전 세계에서 유일한 번호로 할당된다.

48비트 숫자로 구성되어 있으며 앞 24비트는 제조사 번호, 뒤 24비트는 제조사가 랜 카드에 붙인 일련번호로 구성된다.

 

프레임

데이터 링크 계층 또는 네트워크 계층에서 이더넷 헤더트레일러를 붙이는데 헤더에 목적지 MAC주소와, 출발지 MAC 주소, 유형 정보가 들어간다. (유형 정보는 IPv4, IPv6와 같은 이더넷으로 전송되는 상위 계층 프로토콜 종류를 나타낸다.)

트레일러에는 FCS라고 불리는 데이터 전송 중 오류 체크를 위한 정보가 들어간다.

 

이렇게 만들어진 데이터 링크 계층의 패킷을 프레임이라고 한다.

허브는 프레임을 통해 목적지 MAC 주소가 자신의 MAC 주소와 다르다면 데이터를 파기하는 방식으로 목직지로만 데이터를 전송한다.

DA = Destination Address, SA = start Address

 

스위치

스위치는 허브와 똑같이 생겼지만, 허브와 달리 충돌이 발생하지 않는다. 

그 이유는 스위치 내부에 MAC 주소 테이블이 존재하여 스위치의 포트 번호와 해당 포트에 연결되어 있는 컴퓨터의 MAC 주소를 찾을 수 있기 때문이다. 

처음부터 MAC 주소 테이블이 생성되는 방식은 아니고, 프레임을 까서 목적지 MAC 주소가 없다면 테이블에 등록하는 방식으로 MAC 주소를 학습한다.

이때 MAC 주소를 등록하기 위해 ARP라는 프로토콜을 사용하여 네트워크에 브로드캐스트(모든 컴퓨터에 요청)하여 MAC 주소를 응답받는다.

 

A PC에서 C PC에 데이터를 전송한 시점에 C PC의 MAC 주소가 등록되어 있지 않다면, 스위치에 연결된 모든 PC에 프레임이 전송된다. 이것을 Flooding이라고 부른다.

반대로 주소가 등록되어 있다면 C PC에만 프레임을 전송한다. 이를 MAC 주소 필터링이라고 한다.

 

스위치는 통신 방식에서도 허브와 차이가 있다.

허브는 송수신을 구분하지 않기 때문에 송수신을 번갈아가면서 처리하는 반이중 통신을 사용하고, 반이중 통신은 번갈아서 처리하다보니 동시에 데이터가 전송되면 충돌이 발생한다.

하지만 스위치는 송수신을 구분하여 전이중 통신을 사용하여 충돌이 발생하지 않는다.

 

 

 

 

네트워크 계층 (3계층)

2계층인 데이터 링크 계층에서는 물리적으로 연결된 같은 네트워크에 있는 컴퓨터로는 데이터를 전송할 수 있지만, 인터넷이나 다른 네트워크로는 데이터를 전송할 수 없다.

네트워크 계층에서는 이런 문제를 해결하기 위해 네트워크 간의 통신을 가능하게 하는 역할을 한다.

 

라우터

네트워크 간의 통신이 가능하려면 라우터(대표적으로 공유기가 있다.)라는 장비가 필요하다. 

라우터는 경로 정보가 등록된 라우팅 테이블을 활용하여 데이터 전송 시 목적지까지 어떤 경로로 가는 것이 좋은지를 알려주는 역할을 하는데, 이것을 라우팅이라고 한다. (라우팅에 대한 자세한 내용은 따로 찾아보는 것이 좋을 것 같다.)

 

IP

랜에서는 MAC 주소만으로 통신이 가능하지만 MAC 주소는 고유한 주소로 로컬 네트워크 내에서만 사용되는 주소이기 때문에 다른 네트워크로는 MAC 주소를 보낼 수 없기 때문에 IP 주소를 사용해서 목적지와 출발지를 구분한다.

네트워크 계층에서는 IP 프로토콜을 사용하여 데이터 링크 계층의 프레임IP 패킷으로 캡슐화 한다.

 

 

 

IP주소는 ISP로부터 제공받을 수 있으며, 현재 주로 사용되는 IPv4는 방식은 32비트로 약 43억 개의 주소를 만들 수 있는데, 사용할 수 있는 주소 범위가 부족하여 128비트인 IPv6를 사용하여 문제를 해결하였다.

IPv6로 만들 수 있는 주소 범위는 매우 커서 절대 다 쓸 수 없기 때문에 무한이라고 봐도 무방하다.

MAC 주소는 16진수로 표현하고 IP는 10진수로 표현하며, IPv4 기준 32비트는 8비트 씩 4개로 끊어서 각각을 옥텟으로 구분한다.

 

DHCP

IP주소에는 공인 IP 주소사설 IP 주소가 있다. (공인 IP 주소는 ISP가 제공한다.)

두 종류의 IP로 구분한 이유는 IPv4에서 주소 개수가 한정적이기 때문에 인터넷에 직접 연결되는 컴퓨터나 라우터는 공인 IP를 회사나 가정의 랜에는 사설 IP 주소를 할당하는 정책을 사용하고 있다.

네트워크의 모든 컴퓨터에 공인 IP 주소를 부여하기에는 IPv4에서 주소가 부족한 문제가 있었기 때문에 라우터에만 주소를 할당하고 라우터에 연결된 PC는 DHCP(Dynamic Host Configuration Protocol) 기능을 사용하여 주소를 동적으로 할당하고 있다.

 

서브넷

IPv4의 IP 주소는 주소의 개수가 부족하기 때문에 효율적으로 사용해야하기 때문에 서브넷을 사용한다.

서브넷은 네트워크 아이디와 호스트 아이디를 구분하는 IP 주소 클래스를 사용했을 때 IP 주소가 부족한 문제를 해결하기 위해 하나의 네트워크를 분할하여 나누어진 작은 네트워크 그룹이다.

분할하는 행위를 서브네팅이라고 하며 서브네팅은 서브넷 마스크를 통해 수행된다.

 

서브넷 마스크는 123.123.123.123/24와 같이 /로 구분하여 앞에서부터 비트 수를 나타낸다. 

앞서 언급한 IP 주소 클래스 방식은 A, B, C 클래스로 나누어 A부터 순서대로 앞에서부터 8비트, 16비트, 24를 네트워크 ID(네트워크 구분)로 나머지를 호스트 ID(개인 PC 구분)로 사용한다. 

3가지로 고정된 범위를 가지기 때문에 중간 크기만큼만 필요한 경우에는 나머지 IP 범위가 낭비된다. 하지만 서브넷 방식을 사용하면 /25와 같이 사용하여 8,16,24 3가지의 범위가 아닌 다양한 범위를 적용할 수 있게되어 효율적이다.

 

 

 

전송 계층 (4계층)

1~3계층에서 목적지 컴퓨터까지 패킷을 전달하는 역할을 했다면, 전송계층에서는 패킷 전달 과정에서 데이터가 유실되거나 손상되었을 경우 오류 감지를 통해 재전송 시켜 데이터의 신뢰성을 보장한다.

또한 목적지 PC에 패킷이 도달했더라도 PC의 어떤 애플리케이션에서 해당 데이터를 사용할 것인지 모르기 때문에 어떤 애플리케이션에서 데이터를 사용하는지 식별할 수 있다.

 

연결형 통신과 비연결형 통신

아래 사진과 같이 연결형 통신은 계속해서 확인을 하기 때문에 신뢰성이 있고, 비연결형은 일방적으로 데이터를 보내기 때문에 효율적이다.

일반적으로 동영상을 시청하는 것처럼 빠르게 데이터를 보내야할 때 비연결형을 사용하며, 연결형 통신이 TCP이고 비연결형 통신이 UDP이다.

 

TCP

TCP 헤더가 붙은 패킷을 세그먼트라고 한다. 아래 사진이 TCP 헤더의 구조이다.

포트

출발지와 목적지 포트 번호를 통해 애플리케이션을 구분한다.

 

코드 비트

URG, ACK ... FIN이라고 적힌 부분은 코드 비트부분으로 연결제어 정보가 기록된다.

예를 들어 SYN은 연결 요청이고, ACK는 확인 응답이다. 이를 통해 연결 상태를 파악한다.

 

일련번호

Sequence Number(일련번호)는 송신 측에서 수신 측에 이 데이터가 몇 번째 데이터인지 알려주는 역할을 한다.

반대로 Acknowledgement Number(확인 응답번호)는 수슨 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 한다.

 

윈도우 크기 

세그먼트를 보낼 때마다 응답을 받아야하면 효율이 너무 안좋기 때문에 세그먼트를 연속해서 보내고 난 다음 확인 응답을 해서 효율을 높히는데 버퍼에 세그먼트를 저장한다.

이때 세그먼트를 너무 많이 보내면 오버플로우가 발생하게되기 때문에 버퍼의 크기를 알고있어야한다. 

버퍼의 크기 정보를 가진 부분이 Window Size이다.

 

UDP

UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.

UDP 헤더에는 정보가 많이 필요없기 때문에 포트 정보와 길이, 체크섬으로 구성되어 있다.

UDP는 응답이 필요없기 때문에 일방적으로 데이터를 보낼 수 있고, 여러 PC 또는 네트워크에 일괄적으로 데이터를 보낼 수 있다. 이것을 브로드캐스트라고 한다.

 

 

HTTP, TCP, UDP에 대한 내용은 해당 포스팅에 따로 정리해두었다.

 

 

 

응용 계층(5, 6계층)

응용 계층은 애플리케이션이 실제 동작하는 계층으로 5계층 세션 계층과 6계층의 표현 계층을 포함한다.

클라이언트 측 애플리케이션과 서버 측 애플리케이션이 서로 통신하기 위해서는 응용 계층의 프로토콜을 사용해야한다.

웹 사이트를 볼 때는 HTTP, 파일을 보낼 땐 FTP, 메일을 보낼 땐 SMTP, 이름을 기반으로 IP를 찾을 땐 DNS 같은 프로토콜이 있다.

 

 

 

Reference

모두의 네트워크

 

모두의 네트워크

저자 미즈구치 카츠야는 ㈜리눅스 재팬의 대표이사다. 서버와 네트워크 구축/운용 등의 인프라 관련 사업 및 자바와 PHP 시스템 구축 사업을 한다. 리눅스와 네트워크 등의 IT 세미나도 정기적으

books.google.co.kr

 

'개념 정리 > Network' 카테고리의 다른 글

[네트워크] HTTP 기초 개념 정리  (0) 2023.09.15