Dev/인프라

[네트워크 이해하기 Part 1] 네트워크 기본 개념

싯벨트 2024. 11. 30. 10:49
728x90
 

[네트워크 이해하기 Part 2] 네트워크에서 데이터 흐름 살펴보기

[네트워크 이해하기 Part 1] 네트워크 기본 개념목적클라이언트, 서버, 라우터, 스위치로 연결된 네트워크에서 데이터가 어떻게 전달되는지 이해한다.전제3-way 핸드셰이크는 이미 완료되어 연결

seatbelt.tistory.com

 

 

[네트워크 이해하기 Part 3] 네트워크 통신 디테일 살펴보기

[네트워크 이해하기 Part 1] 네트워크 기본 개념네트워크 구성다음과 같은 기기들로 구성된 네트워크를 살펴볼 것이다.IP주소의 네트워크 아이디와 변동이 있는 호스트 아이디로 구분하여 살펴봤

seatbelt.tistory.com

 

네트워크 구성

네트워크 구성

다음과 같은 기기들로 구성된 네트워크를 살펴볼 것이다.

IP주소의 네트워크 아이디와 변동이 있는 호스트 아이디로 구분하여 살펴봤을 때, 총 3개의 네트워크로 구성됨을 알 수 있다.

네트워크 기기들의 OSI 모델 계층 전달

네트워크 기기들의 OSI 모델의 계층에 따른 데이터 전달 흐름을 나타낸 그림이다. 각 과정마다 캡슐화역캡슐화가 어떻게 이루어지는지 살펴볼 것이며, 이것을 이해하기 위한 개념들부터 먼저 살펴보도록 하자.

1. 네트워크 기초 지식

키워드

  • 네트워크
  • 패킷
  • 랜(LAN) & 왠(WAN)

네트워크

컴퓨터 간의 연결을 컴퓨터 네트워크라고 부른다. 인터넷은 전 세계의 모든 네트워크를 연결하는 거대한 네트워크다.
네트워크에서 데이터는 작은 데이터 조각인 패킷으로 분할하여 주고받는다.(계층별로 캡슐화된 데이터 조각의 이름이 다르며, 패킷은 네트워크 계층에서의 명칭이다)이때, 패킷에는 순서까지 담아서 전달된다.
대역폭이란 단위 시간 당 전송하는 데이터의 양으로, 네트워크에서 이용가능한 최대 전송속도이다.
데이터의 전송은 0,1의 잡합인 디지털데이터로 이루어진다. 0,1을 나타내는 정보의 최소 단위를 비트(bit)라고 하며, 1바이트(byte)는 8비트(bit)이다.

랜, 왠

랜(Local Area Network, LAN)은 건물이나 특정 지역을 범위로 하는 네트워크이고, 왠(Wide Area Network, WAN)은 랜과 랜을 연결한 범위가 넓은 네트워크로 인터넷 서비스 제공자(Internet Service Provider, ISP)가 제공하는 서비스를 사용하여 구축한 네트워크다.

2. 네트워크 기본 지식

키워드

  • 프로토콜
  • OSI 모델 & TCP/IP 모델
  • 캡슐화 & 역캡슐화
  • 프로토콜

OSI모델

각 계층은 다음과 같다. 앞서 봤던 그림처럼 데이터는 7계층에서 1계층으로 전달된 후, 다시 1계층에서 7계층으로의 이동이 반복으로 전달된다. 외우기 쉽게 아랫층부터 물데네전세표응 이라고 부르며, 세션 계층과 표현 계층은 주로 응용 계층에 포함해서 설명되곤 한다.

계층 이름 설명
7 응용 계층 (Application Layer) 이메일, 파일 전송, 웹사이트 조회 등 애플리케이션에 대한 서비스 제공
6 표현 계층 (Presentation Layer) 문자코드, 압축, 암호화 등의 데이터를 변환
5 세션 계층 (Session Layer) 세션 체결, 통신 방식 결정
4 전송 계층 (Transport Layer) 신뢰할 수 있는 통신 구현
3 네트워크 계층 (Network Layer) 다른 네트워크와 통신하기 위한 경로 설정 및 논리 주소 결정
2 데이터 링크 계층 (Data Link Layer) 네트워크 기기 간의 데이터 전송 및 물리 주소를 결정
1 물리 계층 (Physical Layer) 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어

 

다른 모델로는 TCP/IP 모델이 있다. 총 4개의 계층으로 이루어져 있으며, OSI 모델과 비교하면 다음과 같다.

OSI 모델 TCP/IP 모델
응용 계층 응용 계층
표현 계층
세션 계층
전송 계층 전송 계층
네트워크 계층 인터넷 계층
데이터 링크 계층 네트워크 접속 계층
물리 계층

 

프로토콜

프로토콜이란 통신을 하기 위한 규칙이다. 계층마다 다른 프로토콜을 가지며, 이 계층에서 정상적으로 데이터를 주고받으려면 어떠한 정보들이 필요한지 데이터에 추가적으로 입력하여 송수신이 가능하도록 하는 것이다. 마치 편지를 쓸 때 "우편번호, 받는 사람과 보내는 사람의 주소 및 연락처를 적자"고 규칙을 세우는 것과 같다.

캡슐화, 역캡슐화

캡슐화는 컴퓨터 통신에서 상위 계층(높은 계층 번호)의 통신 프로토콜 정보를 데이터에 추가하여 하위 계층(낮은 번호의 계층)으로 전송하는 기술이다. 반대로, 역캡슐화는 반대로 추가한 정보와 데이터를 분리하는 기술이다. 이때, 정보의 추가는 헤더나 트레일러를 통해 이루어지고, 역캡슐화는 이를 제거하는 것으로 구현된다.

3. 물리계층 - 데이터를 전기 신호로 변환

키워드

  • 랜 카드
  • 랜 케이블
  • 리피터
  • 허브

유선 통신에서 네트워크 기기들이 데이터를 주고받기 위해서는 데이터를 디지털 전기 선호로 변환하는 것이 필수적이다. 랜카드는 데이터와 전기 신호 사이의 변환을 담당한다.

랜케이블은 일반적으로 트위스트 페어 케이블을 말하며, 차폐 유무에 따라 UTP, STP로 나뉜다. UTP(Unshielded Twisted Pair)는 실드로 보호되어 있지 않아서 노이즈 영향 쉽게 받고, STP(Shielded Twisted Pair)는 실드가 있어서 노이즈 영향 적게 받는다. 내부 구조에 따라서 같은 번호끼리 연결되는 다이렉트케이블(컴퓨터 - 스위치 연결), 다른 번호끼리 연결되는 크로스 케이블(컴퓨터 - 컴퓨터 연결)로 구분된다. 송신을 보내는 기기는 동일한 번호로 정보를 전달할 것이므로, 크로스로 연결해야 조건에 대한 분기없이 충돌을 피해 통신이 가능할 것이다.

리피터는 네트워크를 중계하기 위한 장비로, 전송 간 약해지고 일그러진 전기 신호를 정형하여 증폭한다. 허브는 여러 개의 포트를 갖고 여러대의 컴퓨터를 연결하여 데이터를 전송한다. 리피터 역할도 수행하며, 특정 포트에만 데이터를 전송하진 못한다.

4. 데이터 링크 계층 - 랜에서 데이터 전송하기

키워드

  • MAC 주소
  • 이더넷
  • 프레임
  • 스위치
  • ARP

MAC 주소

물리 계층에서 전기신호로 변환된 데이터를 특정 목적지에 보내려면 식별할 수 있는 무언가가 필요할 것이다. 그래서 전기신호와 데이터 변환을 담당하는 랜카드는 물리적인 주소를 갖고 있는데, 이것을 MAC(Medium Access Control Address) 주소라고 한다. 48비트로 구성되며, 앞의 24비트는 랜카드를 만든 제조사 번호이고 뒤의 24비트는 제조사가 붙인 일련번호로 유일성을 보장한다.

이더넷

데이터 링크 계층의 프로토콜이다. 랜에서 데이터를 정상적으로 주고받기 위한 규칙으로, 허브와 같은 네트워크 장비와 연결된 컴퓨터 사이에 데이터를 주고받을 때 사용된다. 우편을 보내듯이 데이터를 물리신호로 전달할 때, 목적지와 수신지의 주소(MAC 주소)를 명시하고 데이터의 충돌을 방지하기 위한(CSMA/CD 방식) 규칙이다.

  • CSMA/CD (반송파 감지 다중 접속 및 충돌 탐지)
    • CS(Carrier Sense) - 데이터를 보내려고 하는 컴퓨터가 케이블에 신호가 흐르고 있는지 확인하는 규칙
    • MA(Multiple Access) - 케이블에 데이터가 흐르고 있지 않으면 데이터를 보내도 된다는 규칙
    • CD(Collision Detection) - 충돌이 발생하고 있는지 확인하는 규칙

프레임

이더넷 헤더와 트레일러가 추가되어 캡슐화된 데이터이다. 물리 계층에서 전기 신호로 변환하는 데이터가 바로 프레임이다. 다른 계층과 다르게 데이터 링크 계층의 캡슐화에서만 트레일러가 붙는다. 트레일러FCS(Frame Check Sequence)라고도 하며, 데이터 전송 도중에 오류가 발생하는지 확인하는 용도로 쓰인다.

전기 신호로 프레임을 받은 기기는 역캡슐화를 통해 이더넷 헤더의 정보를 파악한다. 목적지 MAC 주소를 확인하여 일치하지 않을 경우 데이터를 파기한다.

  • 이더넷 헤더(14바이트)
    • 목적지 MAC 주소(6바이트 = 48비트), 출발지 MAC 주소(6바이트), 유형(2바이트)
    • 유형번호: 0800 IPv4/ 0806 ARP/86DD IPv6

스위치

반이중 통신 방식(회선 한 개로 송수신 번갈아가며 진행)을 취하는 허브와 다르게, 스위치는 데이터의 송수신을 동시에 진행하는 전이중 통신 방식을 취하기 때문에 충돌이 발생하지 않는다. 스위치는 스위치의 포트 번호와 그 포트에 연결되어 있는 컴퓨터의 MAC 주소가 등록되어 있는 데이터베이스인 MAC 주소 테이블을 가지고 있다. 프레임 전송 시, MAC 주소 테이블을 확인하고 송신 측의 MAC 주소가 등록되어 있지 않은 경우 테이블에 정보를 등록하는 MAC 주소 학습 기능도 있다. 포트와 매칭된 주소가 없을 경우, 수신한 데이터를 모든 포트에 보내는데 이를 플러딩이라 하며, 매칭된 주소가 있을 경우에는 해당 컴퓨터에만 데이터를 보낸다.

  • 충돌 도메인(Collision domain) - 데이터 충돌이 발생하고 그 충돌 영향이 미치는 범위
    • 스위치 - 각 포트별로 충돌 도메인
    • 허브 - 연결된 모든 포트가 충돌 도메인

ARP(Address Resolution Protocol)

ARP는 목적지 컴퓨터의 IP주소를 이용해서 MAC 주소를 찾기 위한 프로토콜이다. 네트워크 통신을 할 때, "https://www.google.com" 와 같은 Url을 통해 IP주소는 알지만 서버의 MAC 주소를 모르는 상황이 다수일 것이다. 이때, ARP 요청으로 목적지 MAC 주소를 알아내기 위해 네트워크에 브로드캐스트를 하고, ARP 요청에 지정된 IP주소를 가진 컴퓨터는 MAC 주소를 응답으로 보내는 것을 ARP 응답이라 한다. 이렇게 응답을 받은 송신측 컴퓨터는 이더넷 프레임을 만들 수 있게 된다. 이후 송신측 컴퓨터는 ARP 테이블에 MAC 주소와 IP 주소의 매핑 정보를 메모리에 보관하고, 자신이 보관하고 있는 ARP 테이블을 참고해서 데이터를 전송한다. 그치만 IP 주소가 변경되는 경우도 있기 때문에, 보존 기간을 ARP 캐시로 지정하고, 일정 시간이 지나면 삭제하고 다시 ARP 요청을 통해 ARP 테이블을 최신화한다.

5. 네트워크 계층 - 목적지에 데이터 전달하기

키워드

  • IP 주소
  • 서브넷
  • 라우터

IP 주소

서로 다른 네트워크와 통신을 하기 위해서는 어떤 네트워크의 어떤 컴퓨터에 데이터를 보낼 것인지를 식별하는 목적지 주소가 필요하다. IP 주소는 네트워크 통신 간 사용되는 주소로 IPv4 주소는 32비트, IPv6 주소는 128비트로 이루어져 있으며, 네트워크 계층의 대표 프로토콜인 IP(Internet Protocol)를 따른다. 네트워크 계층에서 캡슐화된 데이터를 IP 패킷이라 한다. 패킷을 이루는 헤더에는 출발지와 목적지의 IP 주소가 포함된다.

공인 IP & 사설 IP

IP 주소는 WAN과 연결된 컴퓨터나 라우터에만 할당되는 공인IP와 LAN에서 자유롭게 할당 가능한 사설IP로 나뉜다. 아파트로 예를 들면, 아파트의 주소는 각기 다르지만 어디나 모두 동일하게 몇동 몇호를 사용하는 것과 같다. 사설 IP는 101동 1203호와 같은 역할을 하며, 어떤 네트워크인지가 정해졌을 때 목적지가 어디인지 정해진다. 사설 IP는 네트워크 관리자가 자유롭게 할당 가능하며, 라우터의 DHCP(Dynamic Host Configuration Protocol)을 통해 자동으로 할당할 수도 있다.

IP 주소의 클래스

IP 주소는 어떤 네트워크인지를 나타내는 네트워크 ID, 어떤 컴퓨터인지 나타내는 호스트 ID로 나뉜다. 네트워크 ID 크기에 따라 IP 주소의 크기를 구분하는 데 이를 클래스라고 한다. IP 주소는 A~E 클래스로 나뉘며, 일반적으로 A~C 클래스를 사용한다.

클래스 구분 사용 공인IP 사설 IP
A 클래스 대규모 네트워크 주소 1.0.0.0 ~ 9.255.255.255 11.0.0.0 ~ 126.255.255.255
10.0.0.0 ~ 10.255.255.255
B 클래스 중형 네트워크 주소 128.0.0.0 ~ 172.15.255.255 172.32.0.0 ~ 191.255.255.255
172.16.0.0 ~ 172.31.255.255
C 클래스 소규모 네트워크 주소 192.0.0.0 ~ 192.167.255.255 192.169.0.0 ~ 233.255.255.255
192.168.0.0 ~ 192.168.255.255
D 클래스 멀티캐스트(multicast) 주소 - -
E 클래스 연구 및 특수용도 주소 - -

 

네트워크 주소 & 브로드캐스트 주소

특정 기기에 IP 주소로 할당이 불가능한 주소로 네트워크 주소와 브로드캐스트 주소가 있다. 먼저, 네트워크 주소는 네트워크의 대표 주소로, 호스트 ID가 0인(모든 비트 0) 주소이다. 예를 들어, 192.168.1.1, 192.168.1.6은 192.168.1.0의 네트워크에 있다고 표현한다. 반면, 브로드캐스트 주소는 네트워크 내부 장비 전체에 데이터를 전송할 때 사용되는 IP 주소로, 호스트 ID가 255인(모든 비트 1) 주소이다. 앞선 예시에서 브로드캐스트 주소는 192.168.1.255이다.

서브넷

서브넷은 분할된 네트워크다. 서브넷팅을 하는 것의 장점은 브로드캐스트로 전송되는 패킷의 범위를 좁혀 통신의 효율성을 높인다는 것이다. 서브넷을 구성하는 방법은 네트워크ID + 호스트ID 로 구성된 기존 네트워크 주소 중 호스트 ID 에서 비트를 빌려 네트워크ID + 서브넷ID + 호스트ID 로 구성하는 것이다. 그래서 서브넷을 표현할 때는 어디까지가 서브넷 ID가 포함된 네트워크 주소인지를 서브넷 마스크를 이용하여 나타낸다. IPv4 주소 기준 총 32개의 비트 중, 앞에서부터 1이 채워진 것을 10진법으로 나타내는 방법과 프리픽스표기법으로 1이 채워진 갯수를 / 뒤에 써서 표현하는 방법이 있다.

  • ABC 클래스 서브넷 마스크
    • A 255.0.0.0 /8
    • B 255.255.0.0 /16
    • C 255.255.255.0 /24

라우터

서로 다른 네트워크와 통신할 때 반드시 필요한 장비다. 각 포트별로 다른 IP주소를 가지면서 네트워크를 분할한다. 컴퓨터에서 다른 네트워크로 데이터를 전송하기 위해 기본 게이트웨이를 설정한다는 것은 라우터의 IP 주소를 설정하여 네트워크의 출입구를 설정한다는 의미이다.

라우팅

경로정보를 기반으로 현재 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송하는 방식이다. 경로 정보가 등록되이 있는 라우팅 테이블을 활용하여 동작한다. AWS 라우팅 테이블을 예로 들면, 목적지가 192.168.0.0/16, 타겟이 local인 경우는 같은 VPC 내의 통신이기 때문에 트래픽이 로컬 네트워크에서 직접 라우팅된다는 의미다. 그리고 목적지가 0.0.0.0/0, 타겟이 NAT 게이트웨이인 경우는 외부로 나가는 트래픽이 NAT 게이트웨이를 통해 라우팅된다는 의미다.

6. 전송계층 - 신뢰할 수 있는 데이터 전송하기

키워드

  • 연결형 통신 & 비연결형 통신
  • TCP
  • UDP
  • 포트번호

연결형 통신 프로토콜, TCP(Transmission Control Protocol)

전송계층은 보낸 데이터가 제대로 도착했는지, 오류는 없었는지 확인하고 만약 오류가 있다면 다시 보내달라는 요청을 해서 온전한 데이터를 주고받기 위한 계층이다. 또한 도착한 컴퓨터에서 어떤 어플리케이션이 목적지인지도 확인하는 역할을 한다. 신뢰성과 정확성을 우선시하는 통신인 TCP를 먼저 살펴보자. TCP 헤더로 캡슐화된 데이터를 세그먼트라고 한다. TCP 헤더에서 중요하게 살펴볼 정보는 출발지 포트번호, 목적지 포트번호, 일련번호, 확인응답번호, 코드비트, 윈도우 크기이다.

코드 비트

코드 비트는 3-way 핸드셰이크를 통해 가상의 독점 통신로인 연결(connection)을 확립할 때 사용된다. 6비트로 구성되어 있으며, 그중에서 SYN(연결요청), ACK(연결 응답), FIN(연결 종료)의 비트를 사용하여 연결 확립과 종료를 위한 패킷 교환을 한다.

일련번호 & 확인 응답 번호

보통의 경우, 데이터는 작은 조각들로 쪼개져서 전달된다. 일련번호와 확인 응답 번호는 몇 번째 데이터를 주고받았는지를 알려준다. 송신 측에서 데이터를 보낼 때 일련번호에 보내는 데이터의 순서를, 확인 응답 번호에 마지막 순서를 전송한다. 이후 수신 측에서 일련번호에 마지막 순서를, 확인 응답 번호에 이어서 받을 순서를 전송한다.

윈도우 크기

수신측에서 세그먼트를 일시적으로 저장할 수 있는 장소를 버퍼라고 하며, 버퍼의 한계 크기를 윈도우 크기라고 한다. 3-way 핸드셰이크를 할 때 송수신 측이 서로 윈도우 크기를 알게 되고, 그 크기 이내의 데이터를 연속으로 보내며 통신을 할 수 있다.

포트번호

어떤 어플리케이션인지 구분하는 역할을 한다. 수신측 컴퓨터에 도착한 데이터는 포트번호를 통해 어플리케이션에 도착한다. 번호는 0~65536번을 사용하며, 0~1023번은 웰노운포트(well-known ports)로 주요 프로토콜이 사용하는 포트이고, 1025번 이후는 랜덤포트이다. 주요 어플리케이션 중 일부 포트의 번호는 다음과 같다.

어플리케이션 포트번호
SSH 22
SMTP 25
DNS 53
HTTP 80
POP 110
HTTPS 443

비연결형 통신, UDP(User Datagram Protocol)

동영상 서비스와 같이 효율적이고 빠르게 데이터를 보낼 때 사용되는 프로토콜이다. TCP 헤더에 비해 간단한 헤더를 가지며, UDP 헤더로 캡슐화된 데이터를 UDP 데이터그램이라고 한다. UDP는 랜에서 불특정 다수에게 브로드캐스트로 데이터를 일괄 전송하며, 상대방을 확인하지 않고 연속해서 데이터를 보낸다.

7. 응용계층 - 애플리케이션에 데이터 전송하기

키워드

  • 웹 서버 구조
  • DNS 이름 해석 구조
  • 메일 송수신 구조

클라이언트 & 서버

서비스를 요청하는 측을 클라이언트, 서비스를 제공하는 측을 서버라고 한다. 클라이언트에서 사용하는 애플리케이션과 서버에서 사용하는 서버 프로그램 간의 통신은 응용계층의 프로토콜을 사용한다.

주요 프로토콜 사용
HTTP 웹 사이트 접속
FTP 파일 전송
DNS 이름 해석
SMTP 메일 송신
POP3 메일 수신

 

웹 서버 구조

WWW (웹)은 html, url, http 3가지 기술이 사용된다. HTML은 하이퍼텍스트를 작성하는 마크업 언어로 ‘태그’를 사용하여 문장 구조나 이미지 파일을 표시한다. HTML로 작성된 웹 페이지는 웹 브라우저로 볼 수 있다. 일반적으로 웹서버의 80번 포트를 통해 HTTP통신을 한다. HTTP/1.1 버전은 keepalive 기능이 있어서 데이터를 교환하는 동안에는 연결을 유지하고, 데이터 교환이 끝나면 연결을 끊는다. 데이터를 한 번 전달할 때마다 연결을 수립하고 끊는 과정 제거한 기능이다. HTTP/2 버전은 요청을 보낸 순서대로 응답을 반환하지 않아도 된다.

DNS 서버 구조 - 이름 해석

DNS 서버는 이름 해석을 사용하여 도메인 이름을 IP주소로 변환한다. URL을 IP주소로 변환하는 시스템이다. DNS 서버는 전 세계에 흩어져 있어, 연계하면서 동작한다. 요청받은 DNS 서버가 해당 도메인 이름의 IP주소를 모르는 경우, 다른 DNS 서버에 질의하여 주소를 얻는다.

메일서버

메일 송신은 SMTP 프로토콜 25번 포트 사용하고, 메일 수신은 POP3 프로토콜 110번 포트 사용한다. 메일 서버 사이에도 SMTP 사용하여 메일 전송하고 메일 서버에 있는 메일박스에 메일 보관한다.

 

참고자료

- 모두의 네트워크, 길벗