새싹 2일차(네트워크)

고유진·2024년 5월 14일

새싹

목록 보기
1/9

네트워크란

  • 노드들이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나이다.

  • 즉 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 말한다.

  • 네트워크에서 여러 장치들은 노드 간 연결을 사용하여 서로에게 데이터를 교환한다.

  • 노드 : 네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말

네트워크 분류

1. 개인 영역 네트워크 (PAN)

  • 비교적 작은 지리적 범위 내에서 개인적인 기기 간에 통신 및 데이터 공유를 위한 네트워크 형태를 말한다.
  • 각종 블루투스, NFC와 같은 기술들을 활용하여 형성된다. 이러한 기술을 이용하여 스마트폰, 노트북, 태블릿, 헤드셋 등의 기기들이 서로 연결되어 데이터를 공유하거나 서비스를 이용할 수 있다.

2. 근거리 네트워크 (LAN)

  • 가까운 거리에 위치한 비교적 소규모의 네트워크를 말한다.
  • 사무실, 가정 등과 같이 지리적으로 제한된 공간에서 네트워크로 연결한 것을 말한다.

3. 도시 지역 네트워크 (MAN)

  • LAN보다는 큰 규모를 가지지만 WAN보다는 지리적으로 작은 규모의 네트워크를 말한다.
  • DSL 전화망, 케이블 TV 네트워크를 통한 인터넷 서비스 제공이 대표적인 예이다.

4. 광역 네트워크 (WAN)

  • 두 개 이상의 근거리 네트워크 지역(LAN)에 걸쳐 연결하는 것을 말한다.
  • 인터넷 서비스 제공자(ISP)로부터 제공받은 회선을 이용해 네트워크를 구축할 수 있다.

네트워크 토폴로지

  • 네트워크의 요소들을 물리적으로 연결해 놓은 것 또는 연결 방식을 의미한다.

1. 버스형

특징

  • 네트워크 상의 모든 장치가 하나의 케이블로 연결되어 있다.
  • 케이블에 연결되어 있는 하나의 노드가 전송하면 그것이 브로드캐스트 되어 다른 모든 노드가 수신할 수 있다.

장점

  • 설치가 간단하고 케이블 비용이 적게 든다.

단점

  • 케이블에 장애가 발생하면 전체 네트워크가 멈추게 되며, 복구하는데 시간과 비용이 많이 든다.
  • 데이터를 동시에 양방향으로 보낼 수 없다.

2. 스타형

특징

  • 네트워크 중앙에 위차한 노드가 모든 노드를 연결한다.

장점

  • 각각의 노드는 중앙 허브왕 연결되어 있어서 노드 하나에 장애가 발생하더라도 나머지 네트워크는 여향을 받지 않는다.
  • 중앙 노드만이 다른 노드와의 통신을 제어하므로 데이터 충돌을 방지할 수 있다.

단점

  • 중앙 노드에 문제가 생기면 전체 네트워크가 마비된다.
  • 최초로 네트워크를 구성할 때 소요되는 비용과 노력이 든다.

3. 트리형

특징

  • 부모-자식 계층 구조로 연결되어 있어서 계층적인 네트워크에 적합하다.

장점

  • 확장이 용이하며, 관리나 네트워크 확장이 쉽다.
  • 여러 컴퓨터를 분리하거나 우선순위를 부여할 수 있다.

단점

  • 중앙에 트래픽이 집중되어 병목현상이 발생할 수 있다.
  • 중앙의 장치에 문제가 생기면 전체 네트워크에 장애가 발생한다.

4. 메쉬형

특징

  • 중앙에서 제어하는 장치 없이 모든 노드가 점 대 점으로 상호 연결한 구조이다.
  • n(n-1)/2개의 물리적 채널이 필요하다.

장점

  • 모든 메시지를 전용선으로 보내기 때문에 원하는 수신자만 받을 수 있다. 따라서 보안에 유리하다.
  • 특정 노드의 장애가 발생하더라도 전체 시스템에 영향을 주지 않는다. 일부 회선에 장애가 발생하면 다른 경로를 통하여 데이터를 전송하면 된다.

단점

  • 구성이 복잡하고 많은 케이블이 필요하다.

  • 새로운 노드 투가시 비용부담이 발생한다.

5. 링형

특징

  • 좌우의 인접한 노드와 연결되어 잇는 단 반향 전송 형태이다.
  • 한번에 하나의 컴퓨터에 데이터를 전송하기 때문에 충돌이 발생하지 않는다.

장점

  • 구조가 단순하여 설치와 재구성이 쉽고, 장애가 발생해도 복구 시간이 빠르다.
  • 각 노드는 바로 이웃하는 장치에만 연결되어 있고, 장치를 추가하거나 삭제할 때 연결선 두 개만 움직이면 된다.

단점

  • 하나의 노드에 문제가 발생하면 전체 네트워크를 사용할 수 없다.
  • 노드를 재설정하거나 추가 또는 제거하기 위해서는 절차가 복잡하고, 전체 네트워크를 중단해야 된다.

네트워크 통신방식

1. 유니캐스트

  • 서버와 클라이언트 간의 일대일(1:1) 통신방식을 말한다.
  • 데이터는 목적지 주소를 가진 단일 수신자에게 보내진다.
  • 자신의 MAC 주소와 목적지 MAC 주소가 동일하다면 전송된 데이터를 수신하고, 일치하지 않으면 해당 프레임은 버린다.
  • 웹 브라우징, 이메일 전송 등에 사용된다.

2. 멀티캐스트

  • 그룹 내의 여러 수신자에게 동시에 데이터를 전송하는 방식이다.
  • 유니캐스트 처럼 반복해서 보낼 필요가 없고, 브로드캐스트와 같이 전송받을 필요가 없는 노드에 보내지 않아도 된다.
    -IPTV, 온라인 동영상 스트리밍 등에 사용된다.

3. 브로드캐스트

  • 서버와 클라이언트 간의 일대 모두(1:모두)로 통신방식을 말한다.
  • 브로드캐스트 주소는 FF-FF-FF-FF-FF-FF 로 미리 정해져 있다.
  • 불특정 다수에게 전송되는 서비스라서 수신을 원치 않는 노드도 수신하게 되므로 네트워크 성능이 저하를 가져올 수 있다.

4. 애니캐스트

  • 여러 개의 대상 중에 가장 가까운 대상하고 데이터를 전송하는 방식이다.
  • 유니캐스트는 출발지와 목적지가 모두 하나이지만 애니캐스트는 같은 목적지 주소를 가진 서버가 여러 대여서 통신 가능한 다수의 후보군이 있다.

프로토콜

  • 컴퓨터 및 네트워크 간에 통신하기 위해 정의된 규칙과 규약의 집합이다.

OSI 모델, TCP/IP 모델

1. OSI 7 Layer 모델

  • OSI 모델은 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신할 수 있도록 국제표준화기구에서 만든 개념 모델이다.

1-1. 물리 계층

  • 네트워크에서 데이터를 전기 신호 또는 광신호로 변환하여 전송하는 역할을 담당한다.

1-2. 데이터 링크 계층

  • 물리 계층에서 받은 정보를 잘못된 정보 없이 안정라게 전달하는 역할을 한다.
  • 데이터의 프레임화, 물리 주소(MAC 주소)를 이용한 통신, 오류 검출 등의 기능을 수행한다.

1-3. 네트워크 계층

  • 데이터 패킷의 전송 경로를 결정하는 역할을 한다.
  • 주요 프로토콜로는 IP가 있으며, 패킷의 출발지와 목적지를 식별하게 해준다.
  • 네트워크 내의 여러 라우터를 통한 패킷의 경로를 관리 및 패킷 손실, 중복, 지연 등의 문제를 처리한다.

A. IP

  • 네트워크 계층에서 프로토콜로, 두 장치 간의 패킷 전송을 담당한다.
  • IP는 네트워크상에서 컴퓨터(노드)를 식별하기 위해 부여된 위치주소다.
  • IP는 네트워크 주소와 호스트 주소로 구분되며 하나의 네트워크 상에 여러 호스트 주소가 있을 수 있다.
  • IP는 32비트 2진수로 표현이 가능하며 2^32개가 IP가 가질 수 있는 최대 갯수이다.
  • IP의 각 자릿수(8비트 2진수 혹은 10진수 3자리)를 옥텟이라 부르며 dot(.)으로 구분한다.

B. IPv4

IPv4는 3자리 숫자가 4마디로 표기되는 방식이다. 각 마디는 옥텟(octet)이라고 부른다. 위 주소는 내부적으로 32비트, 각 마디당 8bit로 처리된다. 예를 들어 192.168.123.123은 11000000.10101000.1111011.1111011으로 표시된다.

B-1. IPv4 클래스

- Class A

  • 하나의 네트워크가 가질 수 잇는 호스트 수가 가장 많은 클래스

  • IP주소를 바이너리로 표시할 때 맨 앞자리수가 항상 0인 경우

    0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx

  • 0.0.0.0 ~ 127.255.255.255 까지 를 A클래스라 한다.

  • 네트워크 주소는 1.0.0.0과 126.0.0.0까지로 규정되어 있다.

  • 호스트 갯수는 2^24 - 2

- Class B

  • IP주소를 바이너리로 표시할 때 맨 앞자리수가 항상 10인 경우

    10xx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx

  • 128.0.0.0 ~ 191.255.255.255까지를 B클래스라 한다.

  • 네트워크 범위는 10xx xxxx. xxxx xxxx 에서 x가 가질 수 있는 경우의 수이다(2 ^ 14)개

  • 호스트 범위는 뒤의 xxxx xxxx. xxxx xxxx 에서 x가 가질 수 있는 경우의 수이다.(2 ^ 16) -2개
    ⇒ 네트워크 및 브로드캐스트 주소사용으로 2개를 호스트 주소에서 제외해야 한다.

- class C

  • IP주소를 바이너리로 표시할 때 맨 앞자리 수가 항상 110으로시작한다.

    110x xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx

  • 192.0.0.0 ~ 223.255.255.255 까지를 C클래스라 한다.

  • 네트워크 범위는 110x xxxx.xxxx xxxx.xxxx xxxx 에서 x가 가질 수 있는 경우의 수이다(2 ^ 21)개

  • 호스트 범위는 뒤의 xxxx xxxx 에서 x가 가질 수 있는 경우의 수이다.(2 ^ 8) -2개
    ⇒ 네트워크및 브로드캐스트 주소사용으로 2개를 호스트 주소에서 제외해야 한다.

C. IPv6

  • IPv4는 32bit의 이진수로 이루어져있지만, IPv6 주소체계는 총 128bit로 각 16bit씩 8자리로 각 자리는 :(콜론)으로 구분하고 있다.

C-1. IPv6 개념 및 특징

  • IP주소의 부족 현상을 해결하기 위한 차세대 IP주소체계
  • IPv4의 주소 공간을 4배 확장한 것으로 128bit 체계의 16진수로 표기하며, 4개의 16진수를 콜론(:)으로 구분
  • IPv4에서는 옵션 필드의 구성이 제한적인데 비해 IPv6에서는 확장헤더를 이용하여 IPv4보다 훨씬 다양하고 안정된 옵션을 사용할 수 있음
  • 라우터의 부담을 줄이고, 네트워크 부하를 분산시킴
  • 보안, 인증, 라벨링, 데이터 무결성, 데이터 비밀성 제공
  • 특정 흐름의 패킷들을 인식하고, 확장된 헤더에 선택사항들을 기술할 수 있음
  • IPv6 종류: 유니캐스트, 애니 캐스트, 멀티 캐스트

C-2. IPv4와 IPv6의 주요 차이점

  1. 보안강화
    IPv6는 보안을 염두에 두고 구축되었기에 기밀성, 인증 및 데이터 무결성을 제공. IPv4 구성 요소인 인터넷 제어 메시지 프로토콜(ICMP)은 맬웨어를 전달할 가능성이 있으므로 회사 방화벽에서 이를 종종 차단한다. 반면 IPv6 ICMP 패킷은 IPSec를 사용해 훨씬 더 안전하고 손쉽게 이를 막을 수 있다.

  2. 지리적 제한 없음
    IPv4 주소와 달리 IPv6 주소는 전 세계 어느 곳에서도 사용할 수 있다. IPv4 주소의 50%는 생성될 때 미국에서 사용하는 용도로 예약되었다.

  3. 보다 효율적인 라우팅
    IPv4 헤더는 길이가 가변적이지만 IPv6에는 일관된 헤더가 있다. 즉, 이러한 주소로 라우팅하기 위한 코드가 더 간단해지고 하드웨어 처리도 덜 필요하다. 이는 결과적으로 IPv6는 더 나은 서비스 품질과 사용자 경험을 갖게 되는 것을 뜻한다.

  4. 끝과 끝 연결
    기술자들은 IP 주소 부족을 해결하기 위해 네트워크 주소 변환(NAT) 방법을 만들었다. 하지만 IPv6는 모든 장치에 대해 충분한 IP 주소를 생성하므로 NAT가 더 이상 필요하지 않게 되었다. 이제 각 장치가 인터넷에 연결되어 웹사이트와 직접 통신할 수 있게 되었다.

  5. 자동 구성
    IPv6의 가장 좋은 기능 중 하나는 상태 비상태 유지 자동 저장 구성일 것이라고 한다. 이를 통해 장치는 서버 없이도 자체 IP주소를 할당할 수 있다. 대신 사용자가 소유한 모든 휴대폰, 태블릿 또는 노트북에 고유한 장치의 MAC 주소를 사용하여 IP주소가 생성된다. 이렇게 하면 동일한 네트워크에 연결된 장치가 서로를 더 쉽게 검색할 수 있다

D. 네트워크 주소와 브로드캐스트 주소란?

  • IP 주소에는 네트워크 주소와 브로드캐스트 주소가 있는데, 이 두 주소는 컴퓨터나 라우터가 자신의 IP로 사용하면 안 되는 주소이다.

호스트 ID가 10진수고 첫 번째 숫자가 0이면 네트워크 주소

호스트 ID가 10진수고 마지막 숫자가 255면 브로드캐스트 주소

E. 특수 네트워크 대역

F. 서브넷이란?

  • A 클래스 네트워크는 호스트 ID가 24비트여서 IP 주소를 1677만 7214개 사용할 수 있다고 했다.
  • 그 많은 수의 컴퓨터가 브로드캐스트 패킷을 전송하면 모든 컴퓨터에 패킷이 전송되고 네트워크가 혼잡해진다.

  • 그림과 같이 A 클래스의 대규모 네트워크를 작은 네트워크로 분할하여 브로드캐스트로 전송되는 패킷의 범위를 좁힐 수 있다.
  • 이렇게 하면 더 많은 네트워크를 만들 수 있어서 IP 주소를 더 효과적으로 활용할 수 있다.

네트워크를 분할하는 것을 서브넷팅(subneting)이라고 하고, 분할된 네트워크를 서브넷(subnet)이라고 한다.

  • 네트워크 ID가 8비트고, 호스트 ID가 24비트인 상태를 서브넷팅하여 작은 네트워크로 분할하는 것.
  • 그러면 호스트 ID에서 비트를 빌려 서브넷으로 만들 수 있다

F-1. 서브넷 마스크란?

  • IP 주소를 서브넷팅하면 어디까지가 네트워크 ID고 어디부터가 호스트 ID인지 판단하기 어렵다. 그럴 때 서브넷 마스크라는 값을 사용한다.

서브넷 마스크는 네트워크 ID호스트 ID를 식별하기 위한 값이다.

32비트의
A 클래스의 서브넷 마스크는 11111111 00000000 00000000 00000000 = 255.0.0.0
B 클래스의 서브넷 마스크는 11111111 11111111 00000000 00000000 = 255.255.0.0
C 클래스의 서브넷 마스크는 11111111 11111111 11111111 00000000 = 255.255.255.0

  • 프리픽스(prefix) 표기법으로도 사용할 수 있다.
  • 프리픽스 표기법은 서브넷 마스크를 슬래시(/비트 수)로 나타낸 것을 말한다. 예를 들어 255.255.255.0은 /24가 된다.

F-2. 서브네팅

  • 네트워크를 더 작고 효율적인 부분으로 나누는 프로세스이다. 대형 네트워크를 여러 개의 작은 네트워크, 서브넷으로 분할함으로써 IP 주소 공간을 더 효율적으로 사용할 수 있다.
  • IP 주소를 2진수로 표현한다.
  • 서브 마스크를 2진수로 표현한다.
  • AND 연산으로 네트워크 주소를 알아낸다.
  • 호스트 부분을 모두 1로 변경하여 브로드캐스트 주소를 알아낸다.
  • 사용 가능한 IP 주소 범위를 파악한다. 서브넷팅한 네트워크 주소 +1은 사용 가능한 가장 작은 IP 주소이다.
  • 브로드캐스트 주고 -1은 사용 가능한 가장 큰 IP 주소이다.

F-3. CIDR

  • 클래스 기반 네트워킹을 대체하기 위해 개발된 방식으로, 더욱 유연한 IP 주소 할당을 가능하게 한다.
  • 슬래시(/) 뒤에 숫자를 사용하여 네트워크 부분의 비트 수를 표현한다. (ex: 192.168.56.0/24)
  • 슬래시(/) 뒤에 오는 숫자는 네트워크 부분의 비트 수를 나타낸다. 이 비트 수는 해당 네트워크에서 호스트를 구분하는 데 사용된다.
  • 예를 들어, "192.168.56.0/24"는 24비트가 네트워크를 나타내고 나머지 8비트가 호스트를 나타낸다는 의미이다.

F-4. VLSM (Variable Length Subnet Mask)

  • VLSM은 IP 주소를 서로 다른 크기의 서브넷으로 나눌 때 사용하는 네트워크 설계 기술
  • 기존의 고정 길이 서브넷 마스크(Subnet Mask)와는 달리, VLSM은 서로 다른 서브넷에 다양한 크기의 IP 주소 범위를 할당

F-5. CIDR & VLSM 비교

G. 공인 IP란?

-전 세계에 유일하게 할당받은 하나의 IP

  • ISP(Internet Service Provider)로부터 제공받는 IP로 외부에 공개된 IP 주소
  • 인터넷 상에 연결된 서로 다른 네트워크 상의 컴퓨터끼리 접근할 때 사용
  • 해킹의 위험이 존재하기 때문에 방화벽 or 보안 프로그램 설치 필요

G-1. 사설 IP란?

-로컬 IP, 가상 IP라고도 불리며, 외부에서 접근할 수 없는 IP

  • IPv4 주소 부족 현상을 해결하기 위해 로컬 네트워크 상, PC나 장치에 할당
  • 일반가정 or 회사 내부에서 사용하는 목적
  • 라우터/공유기를 통해 사설 IP 할당
  • 사설 IP만으로 외부에서 접근 불가

사설 IP 대역
A 클래스: 10.0.0.0 ~ 10.255.255.255
B 클래스: 172.16.0.0 ~ 172.31.255.255
C 클래스: 192.168.0.0 ~ 192.168.255.255

G-2. NAT란?

-NAT는 Network Address Translation의 약자로 네트워크 주소를 변환하는 기술이다.

위 그림을 보면 네트워크의 흐름을 이해할 수 있겠지만 다음과 같이 진행된다.

내부로 들어오는 경우
공인 IP > NAT를 통해 공인 IP to 사설 IP로 변환 > 사설 IP
외부로 나가는 경우
사설 IP > NAT를 통해 사설 IP to 공인 IP 변환 > 공인 IP

NAT를 통해 얻는 이점은 외부와 통신하는 관점에서 내부 사설 IP를 노출하지 않아도 되기 때문에 보안에 유리하다는 점이다.

1-4. 전송 계층

  • 네트워크 계층이 데이터를 전달받아 이를 세그먼트로 분할하고, 이를 목적지까지 안전하게 전송하는 역할을 한다.
  • 통신 세션을 관리하며, 에러 복구와 흐름 제어 기능을 담당한다.
  • 가장 대표적인 전송 게층의 프로토콜은 TCP, UDP가 있다.

A. TCP

  • 네트워크 상에서 데이터를 안정적으로 전송하기 위한 프로토콜 중 하나이다. TCP는 신뢰성 있는 연결을 제공하며, 데이터의 순서를 보장하고 오류 복구를 수행한다.
  • 하나의 송신 측과 하나의 수신 측이 통신하는 1:1 통신이다.(point-to-point)
  • 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다.
  • 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다.

- TCP 연결은 어떻게?

  • TCP 연결을 맺을 때는 3-ways handshake를 사용하게 되고 연결을 끊을 때는 4 ways handshake를 사용한다

A-1. 3 way handshake

  • TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말한다.

  • 클라이언트가 서버에 연결 요청 (SYN)
    → 클라이언트가 초기 시퀀스 번호(seq=0)를 갖는 SYN 패킷을 보냄
    → 서버는 SYN + ACK 패킷으로 응답하고, 초기 시퀀스 번호를 알려줌

  • 클라이언트가 응답 및 데이터 요청 (ACK 및 HTTP 요청)
    → 클라이언트가 ACK 패킷을 보내고, HTTP GET 요청을 서버로 전송
    → 클라이언트의 ACK 패킷에는 초기 시퀀스 번호, 확인 응답 번호가 포함됨

  • 서버가 응답 및 데이터 전송 (ACK 및 HTTP 응답)
    → 서버가 클라이언트에게 ACK 패킷으로 응답하고, HTTP 응답을 클라이언트로 전송
    → 서버의 ACK 패킷에는 초기 시퀀스 번호, 확인 응답 번호가 포함됨

  • 클라이언트가 서버의 응답 확인 (ACK)
    → 클라이언트가 서버의 HTTP 응답에 대한 확인으로 ACK 패킷을 보냄
    → 클라이언트의 ACK 패킷에는 초기 시퀀스 번호, 확인 응답 번호가 포함됨

A-2. 4 way handshake

3way handshake가 연결확립을 위해 진행했다면 4way handshake는 세션을 종료하기 위해 수행되는 절차를 말한다.

  1. [Client -> FIN -> Server]

    Client가 연결을 종료하겠다는 FIN플래그를 전송한다. 보낸 후에 FIN-WAIT-1 상태로 변한다.

  2. [Server-> ACK -> Client]

    FIN 플래그를 받은 Server는 확인메세지인 ACK를 Client에게 보내준다. 그 후 CLOSE-WAIT상태로 변한다. Client도 마찬가지로 Server에서 종료될 준비가 됐다는 FIN을 받기위해 FIN-WAIT-2 상태가 된다.

  3. [Server -> FIN -> Client]

    Close준비가 다 된 후 Server는 Client에게 FIN 플래그를 전송한다.

  4. [Client -> ACK-> Server]

    Client는 해지 준비가 되었다는 정상응답인 ACK를 Server에게 보내준다. 이 때, Client는 TIME-WAIT 상태로 변경된다.

TCP는 크게 3가지 제어 기능이 있다.

  • 전송되는 데이터의 양을 조절하는 흐름 제어
  • 데이터가 유실되거나 잘못된 데이터가 수신되었을 경우 대처하는 방법인 오류 제어
  • 네트워크 혼잡에 대처하는 혼잡 제어

B. 흐름제어

  • 송신 측과 수신 측의 데이터 처리 속도가 다를 수 있다.
  • 송신 측이 빠를 때 수신 측 버퍼가 넘치는 오버플로우 문제가 발생한다.
  • 이러한 문제를 줄이기 위해 윈도우 크기로 송신 측의 데이터 전송량을 조절한다.
  • 윈도우 크기 : 자신이 처리할 수 있는 데이터의 양

흐름제어에는 크게 두 가지의 방법이 있는데 Stop and wait, Sliding window 방식이 있다.

B-1. Stop and wait

  • 단순하게 일정량의 패킷만 보내고 처리했다는 응답이 올 때까지 다음 packet을 보내지않고 기다리는 방식이다.
  • 굉장히 원시적인 방법이고 비효율적인 방식이다. 실제로 해당 방식을 사용하지는 않고 아래 기술할 Sliding window를 사용한다.

B-2. Sliding window

  • 슬라이딩 윈도우는 앞서 Stop and wait와 다르게 수신측이 감당할 수 있는 윈도우의 크기를 피드백해주기 때문에 송신측에서 이를 기준으로 송신을 하는 차이가 있다. 따라서 일일이 ACK를 기다릴 필요 없이 해당 윈도우 크기에 맞춰서 request를 보내주면 되는 것이다.
  • 송신 측이 수신 측에서 받은 윈도우 크기를 참고해서 데이터의 흐름을 제어하는 방식
  • 수신 측이 한 번에 처리할 수 있는 데이터의 양(윈도우 크기)을 3 way handshake할 때 송신 측에 전달한다.
  • 상대방에게 응답을 받지 않아도 범위 내에서 데이터를 보낼 수 있다.
  • 패킷의 왕복 시간(RTT)이 크다면 네트워크가 혼잡하다고 생각하여 윈도우 크기를 실제 버퍼의 크기보다 작게 설정한다.
  • 통신 과정 중에도 네트워크 혼잡 등의 조건을 통해 윈도우 크기는 유동적으로 설정된다.

C. 혼잡 제어

  • 네트워크 내에 패킷의 수가 과도하게 증가하는 현상을 혼잡이라고 한다.
  • 혼잡 제어는 혼잡 현상을 방지하고 제거하기 위한 기능이다.
  • 흐름 제어는 송신 측과 수신 측의 전송 속도를 다루고, 혼잡 제어는 라우터를 포함한 넓은 범위의 전송 문제를 다룬다.

C-1. AIMD (Additive Increase / Multiplicative Decrease)

  • 처음에 패킷을 하나씩 보내고 문제가 발생하지 않으면 윈도우 크기를 1씩 증가하는 방법

  • 패킷 전송에 실패하거나 일정 시간을 넘으면 패킷 전송 속도를 절반으로 줄인다.

  • 네트워크에 늦게 들어온 호스트가 처음에는 불리하지만, 시간이 흐르면서 평형상태로 수렴한다.

    단점

  • 처음에 전송 속도를 올리는 데 시간이 오래걸린다.

  • 네트워크가 혼잡해지는 상황을 미리 감지하지 못한다. 즉, 네트워크가 혼잡해지고 나서야 대역폭을 줄인다.

C-2. Slow Start (느린 시작)

  • AIMD와 같이 패킷을 하나씩 보내고 문제가 발생하지 않으면 각 ACK 패킷마다 윈도우 크기를 1씩 늘려준다. 즉, 한 주기가 지나면 윈도우 크기는 2배가 된다.
  • AIMD와 달리 전송 속도를 지수 함수 꼴로 증가시켜서 윈도우 크기를 더 빠르게 증가시킨다.
  • 혼잡이 감지되면 윈도우 크기를 1로 줄인다.
  • 처음에는 네트워크 수용량을 예상할 수 있는 정보가 없지만, 한 번 혼잡 현상이 발생한 후에는 네트워크의 수용량을 어느 정도 예상할 수 있다.
  • 그래서 혼잡 현상이 발생하는 윈도우 크기의 절반가지는 지수 함수 꼴로 윈도우 크기를 증가시키고 그 이후에는 완만하게 1씩 증가시킨다.

C-3. Fast Retransmit (빠른 재전송)

  • TCP는 지금가지 받은 데이터 중 연속되는 패킷의 마지막 순번 이후를 ACK 패킷에 실어서 보낸다.
  • 그래서 송신 측이 아래처럼 3, 4번을 보내더라도 ACK 2 를 중복해서 받는다.
  • 그러면 timeout이 발생하기 전이라도 송신 측은 문제가 되는 2번 패킷을 재전송한다.
  • 그리고 혼잡한 상황이라고 판단해서 윈도우 크기를 줄인다.
  • 3 ACK Duplicated : 송신 측이 3번 이상 중복된 ACK 번호를 받은 상황

C-4. Fast Recovery (빠른 회복)

  • 혼잡한 상태가 되면 윈도우 크기를 1이 아니라 반으로 줄이고, 선형 증가시킨다.
  • 혼잡 상황을 한번 겪은 이후로는 AIMD 방식으로 동작한다.

D. 오류 제어

  • TCP는 통신 중에 오류가 발생하면 해당 데이터를 재전송한다.
  • 즉, 재전송 기반 오류 제어 ARQ(Automatic Repeat Request)를 사용한다.
  • 재전송은 비효율적이므로 적을수록 좋다.

D-1. Stop and Wait

  • ACK를 받고 나서 다음 데이터를 보내는 방식이다.
  • 일정 시간을 지나 timeout이 발생하면 이전 데이터를 재전송한다.
  • 흐름 제어에서의 슬라이딩 윈도우를 사용할 수 없으므로 더 효율적인 ARQ가 필요하다.

D-2. Go Back N

  • 연속으로 데이터를 보내다가 오류가 발생한 지점부터 재전송하는 방식이다.
  • 아래처럼 4번 데이터에서 에러가 발생했다면 4번 이후의 데이터는 모두 삭제한다.
  • 성공적으로 전송된 데이터까지 재전송하기 때문에 조금 비효율적이다.

D-3. Selective Repeat

  • 오류가 발생한 데이터만 재전송하는 방식이다.
  • Selective Repeat의 단점은 수신 측 버퍼의 데이터가 순차적이지 않다는 것이다.
  • 정렬의 과정이 추가로 필요하고 별도의 버퍼가 필요하다.
  • Go Back N과 비교하여 상황에 따라 더 유리한 방법을 선택하면 된다.

E. UDP

  • 비연결형, 신뢰성이 없는 전송 프로토콜이다.
  • 흐름 제어, 오류 제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다.
  • 따라서 내용이 전송 중에 손실될 수 있고, 전송되는 세그먼트의 순서가 바뀔 수 있다.
    UDP는 TCP보다 간단하고 빠르다.
  • 흐름 제어를 하지 않기 때문에 전송 속도를 최대한 빠르게 할 수 있다.

F. 잘 알려진 포트 번호

1-5. 세션 계층

  • 응용 프로그램 간의 대화를 유지하기 위한 구조 제공 + 이를 처리하기 위해 프로세스들의 논리적 연결을 담당
  • 통신 중 연결이 끊어지지 않도록 유지시켜주는 역할을 수행
    TCP/IP 세션의 연결 확립/중단/해제, 서션 메세지 전송 기능 수행
  • 포트 번호를 기반으로 연결
  • 송수신을 위한 프로세서들을 서로 논리적으로 연결
  • 통신 장치 간 상호작용 + 동갈허룰 제공
  • 세션을 종료할 필요가 있을 경우, 적절한 시간을 수신측에게 알려준다.
  • Data 단위: 메세지
  • 토큰: 두 프로세스 간의 대화를 관리하는 특수 메세지
  • 대표적 프로토콜: SSH, TLS
  • 전이중 통신/ 반이중 통신/ 단방향 통신이 존재한다.

1-6. 표현 계층

  • 표현 계층은 응용 계층과 세션 계층 사이에서 정보를 넘겨주는 역할을 한다.
  • 응용프로그램이나 네트워크를 위해 데이터를 ‘표현’하는 부분이다.
  • 표현 계층의 변환을 통해 하드웨어/OS에 따른 차이를 없앤 데이터 교환이 가능해진다.
  • 암호화, 복호화의 과정이나 압축이 해당 계층에서 처리된다.
  • 데이터가 텍스트인지 이미지 파일인지 구분하여 우리가 볼 수 있는 형태로 표현(인코딩, 디코딩)하는게 표현계층의 역할이다.

예를들어 유니코드(UTF-8)로 인코딩 되어있는 문서를 ASCII로 인코딩 된 문서로 변환하려고 할 때 표현 계층에서 변환이 이루어진다.

표현계층의 대표적인 프로토콜

  • SSL(디지털 인증서)
  • ASCII
  • JPEG(이미지)
  • MPEG(멀티미디어(비디오, 오디오))

1-7. 응용 계층

응용계층의 대표적인 프로토콜

  • HTTP (인터넷 상에서 정보를 주고받는 프로토콜. 주로 HTML문서를 주고받는데 쓰인다)
  • FTP (서버와 클라이언트 사이의 파일을 전송하기 위한 파일 전송 프로토콜)
  • SMTP (인터넷에서 이메일을 보내고 받기 위한 우편 전송 프로토콜)
  • Telnet (원격 접속을 위해 원격지 서버의 실행창을 얻어내는 프로토콜)
  • DNS (도메인 이름을 IP 주소로 변환시켜주는 프로토콜)
  • POP3 (이메일 클라이언트가 메일 서버에서 메일 메시지를 가져오는데 사용하는 프로토콜)
  • IMAP(이메일 클라이언트와 메일 서버 간에 메일 메시지를 동기화하는 데 사용되는 프로토콜)
  • DHCP(네크워크에서 컴퓨터와 장치에 자동으로 IP 주소 및 기타 네트워크 설정을 제공하는 프로토콜)

참고) https://nice-engineer.tistory.com/

1개의 댓글

comment-user-thumbnail
2024년 5월 28일

제목이 조금 더 자극적이었으면 좋겠네요

답글 달기