달리는 두딘

그림과 작동 원리로 쉽게 이해하는 서버의 기초 - 2. 네트워크 기초 지식 본문

지식노트

그림과 작동 원리로 쉽게 이해하는 서버의 기초 - 2. 네트워크 기초 지식

디두딘 2023. 6. 6. 22:07

 

 

그림과 작동 원리로 쉽게 이해하는 서버의 기초 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

네트워크 기술 이해

  • 무선 LAN은 클라이언트의 연결에는 사용하지만, 서버 연결에는 사용하지 않음
  • OSI 7계층 : 네트워크에 연결 시 필요한 통신 기능을 계층적으로 분류

 

프로토콜

  • 네트워크 통신할 때의 약속
  • 데이터는 패킷이라 불리는 작은 단위로 나눠서 보냄
 

5분만에 이해하는 인터넷 통신의 기본 개념(IP, 패킷 개념 정리)

1. 인터넷이 통신하는 방법 만약 내가 컴퓨터로 멀리있는 친구에게 메시지를 보내야하는 상황이라고 가정해보자. 그렇다면 내가 메시지를 전송하면 어떻게 친구 컴퓨터까지 메시지가 도착할 수

chung-develop.tistory.com

 

OSI 참조 모델

  • 네트워크 종신의 전 과정을 7개의 계층으로 나누고,
    각 계층마다 특정한 역할을 수행하도록 하나의 네트워크의 통신을 완성함
  • 데이터 처리 방향
    • 송신 : 레이어의 위쪽 → 아래쪽
    • 수신 : 레이어 아래쪽 → 위쪽

 

OSI 7계층

 

  • 각 계층의 주요 기능

7. 응용 계층 (appliaction) : 사용자에게 애플리케이션을 제공(인터페이스 역할) 
- 주요 프로토콜 : DHCP, DNS, FTP, HTTP

6. 표현 계층 (presentation) : 애플리케이션 데이터를 통신 가능한 방식으로 변환
- 주요 프로토콜 : JPEG, MPEG, ASCII

5. 세션 계층 (session ) : 이론적인 통신로(세션) 관리
- 주요 프로토콜 : TLS, SSH

4. 전송 계층 (transport) : 애플리케이션 식별과 그에 대한 통신 제어 수행 (신뢰성 보장, 오류 복구, 흐름 제어)
- 주요 프로토콜 : TCP, UDP 등
- 데이터 전송 단위 : 세그먼트(Segment), 데이터그램(Datagram; UDP에서)
- 장비 : 게이트웨이

3. 네트워크 계층 (Network) : 다른 네트워크에 있는 컴퓨터와의 연결 확보(다중 네트워크에서)
- 주요 프로토콜 : IP, ICMP, IGMP, ARP 등
- 데이터 전송 단위 : 패킷(Packet)
- 장비 : 라우터

2. 데이터링크 계층 (data-link) : 같은 네트워크에 있는 컴퓨터와의 연결 확보 (정보 전송의 신뢰성 보장)
- 주요 프로토콜 : CSMA/CD, LLC, Token Ring 등
- 데이터 전송 단위 : 프레임(Frame)
- 장비 : 브릿지, 스위치

1. 물리 계층 (physical) : 데이터를 전기 신호, 광신호, 전파로 변환
- 장비 : 케이블, 리피터, 허브

 

이더넷과 MAC 주소

  • 이더넷 : 물리층, 데이터링크층에서 반드시 필요한 규격
  • 이더넷에서는 IP 패킷에 이더넷 헤더와 FCS를 추가해 이더넷 프레임을 만듦

이더넷 프레임? 이더넷 기반의 네트워크에서 데이터를 전송할 때 사용되는 기본 단위

 

  • MAC 주소 : 네트워크 통신을 하는 하드웨어에 할당된 주소
    • 네트워크에 붙는 각 장비들은 48bit(6octet)의 주소를 갖게 되는데, 이 주소는 컴퓨터의 하드웨어의 랜카드 또는 네트워크 장비에 이미 고정되어 있는 주소이고 유일한 주소

 

스위칭

스위치가 수행하는 프레임 전송으로, 이더넷 네트워크는 스위치를 중심으로 컴퓨터를 연결함

  • MAC 주소 테이블을 사용해서 스위칭
    • 스위치는 이더넷 프레임이 들어간 인터페이스 번호 & 송신원 MAC 주소를 테이블로 일정 기간 기억하면서, 통신 효율을 도모
      • MAC 주소 테이블 : 스위치가 스위칭에서 사용하는 인터페이스 번호 & 송신원 MAC 주소의 테이블
  • 스위칭 단계
    1. 이더넷 프레임을 받으면, 송신원 MAC 주소와 받은 인터페이스 번호를 MAC 주소 테이블에 기록
    2. 수신지 MAC 주소가 MAC 주소 테이블에 기록되어 있다면, 그것을 기반으로 전송
    3. 수신지 MAC 주소가 MAC 주소 테이블에 기록되어 있지 않다면, 받은 인터페이스 번호의 인터페이스의 프레임 사본을 송신 → 해당되는 컴퓨터만 프레임을 받고, 그 외의 컴퓨터 프레임은 파기
    4. 이후 이더넷 프레임을 받을 때마다 MAC 주소 테이블을 업데이트

 

IP와 IP 주소

  • IP : 네트워크 층에서 가장 중요한 프로토콜
    • IP는 트랜스포트층에서 받은 데이터에 IP 헤더를 붙여 IP 패킷을 만듦
    • IP 헤더 : IP 패킷 수신지를 나타내는 택배 전표와 같은 것

  • IP 주소 : 네트워킹이 가능한 장비를 식별하는 주소 
    • 서브넷 마스크라 불리는 32비트 값과 세트로 사용
    • 서브넷 마스크로 나눈 네트워크 / 호스트 부분으로 나눔
      • 1 : 네트워크 주소 / 0 : 호스트 주소 

  • 서브넷 마스크
    • IP 주소에서 네트워크 영역을 부분적으로 나눈 부분망, 부분 네트워크
    • 주어진 IP 주소를 네트워크 환경에 맞게 나누어 주기 위해 쓰이는 이진수의 조합
  • 용도에 따른 분류
    • 클래스란? 하나의 IP주소에서 네트워크 영역과 호스트 영역을 나누는 방법
      • 클래스 A : 통신 사업자 등
      • 클래스 B : 대기업 등
      • 클래스 C : 중소 기업이나 가정 등

  • 사용 장소에 따른 분류
    • 공인 IP : 인터넷에서 유일한 IP 주소
    • 사설 IP : 조직이나 가정 등의 LAN에서 자유롭게 할당할 수 있는 IP 주소클래스 주소 범위 서브넷 마스크
사설 IP 종류
사설 IP 범위 서브넷 마스크
클래스 A 10.0.0.0 ~ 10.255.255.255 255.0.0.0
클래스 B 172.16.0.0 ~ 172.31.255.255 255.240.0.0
클래스 C 192.168.0.0 ~ 192.168.255.255 255.255.0.0

 

라우팅

적절한 네트워크로 패킷을 전송하는 것

 

 

  • 라우터
    • 인터넷으로 만든 네트워크 - 네트워크를 연결할 때 사용하는 기기
    • OSI 7 계층의 3계층(Network Layer)에서 동작
    • 패킷의 목적지 IP 주소를 확인하고, 해당 주소의 경로를 지정해주는 것
    • 라우터는 미리 만들어진 라우팅 테이블을 사용하여 IP 패킷의 전달 대상자를 관리
  • 라우팅 테이블
    • 수신 네트워크 / 넥스트 홉으로 구성
    • 라우팅 테이블을 만드는 방법
      • 정적 라우팅 : 수동으로 만드는 방법
      • 동적 라우팅 : 근처에 있는 라우터 사이에서 경로 정보를 교환하며 자동으로 만드는 방법
  • 라우팅 프로토콜 : 경로 정보를 교환하기 위한 프로토콜

 

ARP(Address Resolution Protocol)

  • MAC 주소(물리)와 IP 주소(논리)의 가교 역할을 하는 프로토콜
  • 처음 통신을 시작할 때는 상대방의 MAC 주소를 모르게 되는데, 그때 수신지의 MAC 주소를 알아내기 위하여 사용하는 프로토콜
  • ARP 테이블 : IP주소와 MAC 주소를 일대일 대응하여 정리한 테이블
    • ARP 테이블 생성 과정

[그림 1] ARP Table 생성 과정

[그림 1]과 같은 상황에서 A가 B에게 데이터를 전송하고 싶다고 하자.
A는 B의 IP 주소는 알지만, MAC 주소를 몰라 데이터를 보내지 못하고 있다.
이때 ARP를 진행하여 ARP Table을 생성하면 B의 IP 주소와 MAC 주소를 기록해 둘 수 있다.

 

[그림 2] ARP query 브로드캐스팅

A는 B의 IP 주소는 알지만 MAC 주소를 모르기 때문에 B의 IP 주소 등을 담은 ARP query를 브로드캐스팅 한다.
즉, LAN 안의 모든 호스트가 ARP query를 받게 된다. 

 

[그림 3] ARP Request

ARP query를 받은 호스트들은 ARP query에 들어있는 IP 주소와 자신의 IP를 비교하여 동일하다면 응답하게 된다.
즉, B가 ARP Request에 자신의 MAC 주소를 담아 A로 유니캐스팅하게 된다.
ARP request를 받은 A는 ARP Table에 B의 IP 주소와 MAC 주소를 대응시켜 저장해 놓는다.
이후 A는 B에게 데이터를 전송할 때 ARP Table의 MAC 주소를 이용하게 된다.

 

TCP / UDP

트랜스포트층은 통신 제어와 서비스 식별을 수행하는 레이어

통신 요건을 신뢰성 / 즉시성(실시간성)으로 나눠 각각에 대한 프로토콜을 제공

트랜스포트층의 프로토콜에는 이 두 가지 중 하나를 사용

 

 

1. TCP(Transmission Control Protocol)

  • 데이터를 중요하게, 확실하게 전달 시 사용
  • 통신하는 컴퓨터 사이에서 서로 확인하는 메세지를 보내며 데이터를 전달함으로 통신 신뢰성을 높임
  • 신뢰성을 요하는 서비스는 TCP를 사용
  • 상위층으로부터 전달받은 애플리케이션 데이터에 TCP 헤더를 붙여 TCP 세그먼트를 만듦

2. UDP(User Datagram Protocol)

  • 신뢰성은 떨어지더라고, 빠르게 전달하고 싶을 때 사용
  • 데이터를 계속 보내기만 하기 때문에 확인 응답 절차를 생략함으로써 통신의 즉시성을 높임
  • 실시간성이 필요한 서비스에 사용
  • 상위층으로부터 전달받은 애플리케이션 데이터에 UDP 헤더를 붙여 UDP 다이어그램을 만듦

 

포트 번호 : TCP와 UDP가 컴퓨터 안에서 작동하는 애플리케이션을 식별하기 위한 숫자

 

Well-known 포트

 

포트 분류 포트 번호 범위 설명
기정 포트 0 ~ 1023 일반적인 서버(웹서버, 메일 서버) 소프트웨어가 클라이언트의 서비스 요청을 대기할 때 사용
등록 포트 1024 ~ 49151 메이커 특유의 서버 소프트웨어가 클라이언트의 요청을 대기할 때 사용
동적 포트 49512 ~ 65535 서버가 클라이언트 소프트웨어를 식별하기 위해 사용

 

포트 번호 사용 방법

클라이언트 → 서버 (Request)

클라이언트에서 웹브라우저를 이용해서 서버로 Request를 보내게 되면,
- 출발지 포트에는 동적 포트 중 랜덤으로 선택한 숫자를 할당 (ex. 50000)
- 목적지 포트에는 웹 서버 포트인 80을 입력
와 같이 세그먼트(Segment)를 만들어서 전송

 

서버 → 클라이언트 (Response)

웹 서버에서는 클라이언트에게 Response를 보내게 되는데,
이 때
- 출발지 포트에는 웹 서버 포트인 80을 입력
- 목적지 포트에는 클라이언트에게 받은 포트(ex. 위에서 사용한 50000번 포트)
를 이용해서 데이터를 전송

 

NAT와 NAPT

사설 IP 주소를 인터넷에서 사용하는 공인 IP 주소로 변환하는 기술

라우터나 방화벽에서 수행

 

1. NAT(Network Address Translation)

  • 사설 IP 주소와 공인 IP 주소를 1:1로 묶어서 변환
  • LAN 인터넷 연결 : 송신원 IP 주소를 변환
  • 인터넷  LAN 연결 : 수신지 IP 주소를 변환 

2. NAPT(Network Address Port Translation)

  • 사설 IP 주소와 공인 IP 주소를 n:1로 묶어서 변환
  • LAN  인터넷 연결 : 송신원 IP 주소 & 포트 번호도 변환
  • NAPT 처리 예시
    1. 라우터는 클라이언트로부터 받은 송신원 IP 주소를 사설 IP 주소  공인 IP 주소로 변환 & 송신원 포트 번호도 변환하고, 그 변환 정보를 기록한 뒤 서버에 전송
    2. 서버는 클라이언트로부터 패킷을 받고, 그 처리 결과를 클라이언트에 반환
    3. 라우터는 받은 패킷의 수신지 IP 주소와 포트 번호를 1에서 만든 변환 정보에 기반해 원래대로 되돌린 뒤 클라이언트에 반환