[네트워크] Ch 19

은개·2025년 5월 31일

[CS] 네트워크

목록 보기
2/8
post-thumbnail

19.0 Position of Network Layer

  • 2계층의 미션: next to hole (다음 칸으로 감)
    • node → node

3계층의 미션

: end to end (끝에서 끝으로 Delivery)

  • End → node → node → End
  • 즉, 전체를 아우르는 주소 체계(Addressing) 필요

Addressing

: IP 주소 체계

  • 글로벌하고, 유니크 함 (IP 주소는 전세계에 하나 뿐임)

Routing

: 어느 노드로 갈지 결정

Fragmenting

: IP 패킷이 네트워크를 지나갈 때 전송 단위(MTU)를 초과하면 쪼개는 과정

라우터가 데이터를 보낼 때 데이터 전송 크기가 큰 경우, 데이터를 쪼개서 전송 후 다시 Reassembly 하는 과정

  • 중간 라우터 또는 송신 측 IP 계층서 데이터를 자름
  • 수신 측 IP 계층에서 fragment들을 다시 조립 (reassembly)

Packetizing

: 애플리케이션 데이터에 헤더를 붙여 전송 단위(패킷)를 만드는 과정

  • header: end to end delivery를 하기 위해 정보를 저장해 놓는 것
    • 주소, 포트, 제어 정보 등이 담긴 헤더를 붙임
  • 전송 계층에서 시작, IP 계층에서 완성
  • 패킷을 만들어지면 패킷 타이징을 해서 올려줌

HTTP → TCP 헤더 추가 → Segment

Segment → IP 헤더 추가 → Packet

Internetworking

: 네트워크와 네트워크 사이를 건너 데이터 통신

Address resolution

: IP 주소와 2계층 주소와 매핑

Routing Protocols (별로 안 중요)

  • 라우팅 프로토콜은 라우팅 테이블을 보고 결정
  • 라우팅 프로토콜에 의해서 설정한 방식에 따라서 자동으로 라우팅 테이블이 구성됨
  • 라우터 같은 거 배우게 되면 프로토콜 라우팅 프로토콜이 있는데 세팅해 놓으면 알아서 라우팅 테이블을 자동으로 설정함

Multicasting

  • 멀티 캐스팅은 소스가 한 개인데 수신하는 놈이 여러 개임
  • 멀티캐스팅은 1~5계층 모두 지원 가능
    • 여기서는 3계층(IP계층)에서 멀티캐스팅을 지원하는 것을 배움

3계층에서 멀티캐스팅 하는 건 예전에 문제가 많아서 막힘

→ 5계층(응용 프로그램 계층)에서 멀티캐스팅 해줌 (ex. 아프리카TV, 트위치 등)

→ 그치만 3계층에서도 멀티캐스팅을 지원하긴 한다! (막혔을 뿐)

구분송신자:수신자예시
Unicast1:1웹사이트 접속, 이메일
Broadcast1:모두 (같은 네트워크 안의 모든 장치)ARP 요청
Multicast1:선택된 여러 명 (가입자 그룹)IPTV, 실시간 스트리밍
Anycast1:가장 가까운 하나DNS 요청 시 가장 가까운 서버 응답

19.1 Internetworks

데이터 전송 흐름

송신 측: Encapsulation 과정

5계층 (응용 계층)
+----------------------------+
|           Data             |
+----------------------------+

        ↓

4계층 (전송 계층)
+----------------------------+
| TCP Header |     Data      |
+----------------------------+

        ↓

3계층 (인터넷 계층)
+--------------------------------+
| IP Header  | TCP Header | Data |
+--------------------------------+

        ↓

2계층 (데이터링크 계층)
+---------------------------------------------+
| MAC Header | IP Header | TCP Header | Data  |
+---------------------------------------------+

        ↓

1계층 (물리 계층)
→ 0과 1로 인코딩된 bit stream 형태로 전송

수신 측: Decapsulation 과정

2계층 (데이터링크 계층)
+---------------------------------------------+
| MAC Header | IP Header | TCP Header | Data  |
+---------------------------------------------+
				| (에러 있는지 없는지 검출 후 3계층으로 전송)
        ↓ (MAC Header 제거)

3계층 (인터넷 계층)
+--------------------------------+
| IP Header  | TCP Header | Data |
+--------------------------------+

        ↓ (IP Header 제거)

4계층 (전송 계층)
+----------------------------+
| TCP Header |     Data      |
+----------------------------+

        ↓ (TCP Header 제거)

5계층 (응용 계층)
+----------------------------+
|           Data             |
+----------------------------+

        ↓ (사용자에게 전달)

  1. 4계층(Transport Layer)에서 Data가 옴
  2. Packetizer가 3계층 IP header 추가
  3. Routing module이 라우팅 테이블을 참고해서 목적지를 결정하고 헤드를 만듦
  4. Fragmentation module에서 데이터를 쪼갤 필요가 있으면 쪼갬
  5. 2계층 (Link Layer)로 전송
  • 2계층에서 에러 검출 하고 header를 추가해서 1계층으로 전송
  • 데이터 자체는 바뀌지 않고 header 부분은 계속 바뀜

  • 데이터는 소스나 라우터나 데스테네셜 같은데 쪼개지는 거는 경로상에 어디서나 쪼개질 수 있음
  • 쪼개진 게 다시 쪼개질 수도 있음

쪼개진 데이터는 마지막 목적지 노드에서 복구됨!!

Switching

Circuit switching

: 데이터를 보내기 전에 고정적으로 미리 설정하고, 그 회선을 통해 데이터를 연속적으로 전송하는 방식

  • 전화는 회선이 있으면 교환기가 처리해 줌
    • 옛날에 교환기 역할은 사람이 직접 회선을 연결해서 전화를 연결해주었음
  • 사람 교환기 → 기계 교환기 →전자 교환기로 점차 발전
    • 전자교환기가 보급되기 시작한 게 반도체가 나오면서임
  • 연결된 회선은 연결을 시작할 때부터 통화가 끝날 때까지 계속 점유됨
  • 장점 - 회선을 독점하기 때문에 품질이 뛰어남
  • 단점 - 회선 자원 효율적인 측면에서는 굉장한 낭비
항목내용
연결 방식통신 전에 회선 설정 필수
자원 점유통신하는 동안 경로 자원 독점
지연초기 연결 시간 필요, 이후에는 지연 거의 없음
품질지속적이고 안정적 (전용 회선이므로)
예시전화 통화(유선 전화망)

즉, Circuit Switching은 데이터 보내기 전에 반드시 연결부터 설정하고, 연결을 유지하면서 신뢰성 있게 데이터를 전송하는 Connection-oriented 방식임

Packet Switching

: 연결 없이 패킷을 각각 따로 전송하는 방식

  • Virtual Circuit Approach : Packet switching을 하는데 Circuit switching을 하는 효과를 내는 방식
    • 연결이 끊어질 수는 있지만 기존에 Circuit Switching처럼 해줌
  • Datagram Approach : 기존의 패킷 스위칭을 그대로 쓰는 방식

- 패킷 순서를 보장하지 않기 때문에 Reordering 할 필요할 수 있음

Switching

  • 전자교환기는 Circuit Switching (ex. 전화기)
    • Conection Oriented
  • 데이터 교환기는 Packet Swtiching (ex. 인터넷)
    • Conectionless

19.2 Addressing

IP Address

  • IP 주소는 32bit
  • IP 주소는 unique하고 universal함
    • 전세계에서 공통적으로 사용하는 주소체계이며, 유일한 주소임
  • Doted-decimal notation
    10000000 00001011 00000011 00011111
    => 128.11.3.31
    • 2진수 → 10진수
  • binary notation
    111.56.45.78
    => 01101111 00111000 00101101 01001110
    • 10진수 → 2진수

Address Class

  • 0이 첫 번째로 오면 Class A 0이 두 번째로 오면 Class B … 0이 없으면 Class E

Address Class의 decimal notation

  • Class A: 0 ~ 127
  • Class B: 128 ~ 191
  • Class C: 192 ~ 223
  • Class D: 224 ~ 239
  • Class E: 240 ~ 255

B의 시작 : A의 시작 + 128 (0 + 128 ⇒ 128)

C의 시작 : B의 시작 + 64 (128 + 64 ⇒ 192)

D의 시작 : C의 시작 + 32 (192 + 32 ⇒ 224)

E의 시작 : D의 시작 +16 (224 + 16 ⇒ 240)

Netid and hostid

  • IP 주소 다음 2가지 영역으로 구분
    +------------------------------+
    |   Network Id   |   Host Id   |
    +------------------------------+
    • 클래스에 따라 각 영역의 범위가 다름
  • Netid 필드의 범위 : 해당 클래스에서 만들 수 있는 네트워크(망)의 개수
  • Hostid 필드의 크기 : 각 네트워크에서 hostid가 차지할 수 있는 byte의 수 n을 2에 제곱한 만큼 컴퓨터를 연결 가능 (2nbit2^{nbit})
    • Hostid가 255로 채워진 주소는 Broad Cast를 의미! ex) A.255.255.255 B.B.255.255 C.C.C.255

Network Id와 Network Address는 다른 개념

  • Network Address: Netid + Hostid 필드를 0으로 채운 것
    • 네트워크 주소는 항상 크기가 동일
    • 네트워크 아이디는 Class에 따라 크기가 다름
클래스IP 주소 범위Netid 비트 수Hostid 비트 수Netid 개수Hostid 개수용도
A0.0.0.0 ~ 127.255.255.2558 (앞 1비트는 0) → 실질 724272^7 = 1282242^{24} = 16,777,216대규모 네트워크
B128.0.0.0 ~ 191.255.255.25516 (앞 2비트는 10) → 실질 14162142^{14} = 16,3842162^{16} = 65,536중규모 네트워크
C192.0.0.0 ~ 223.255.255.25524 (앞 3비트는 110) → 실질 2182212^{21} = 2,097,152282^8 = 256소규모 네트워크
D224.0.0.0 ~ 239.255.255.255----Multicast (멀티캐스트)
E240.0.0.0 ~ 255.255.255.255----Reserved (실험용)

Class A

  • Class A: 0 ~ 127 ⇒ 272^7(= 128)개의 네트워크 기관만이 Class A 주소를 가질 수 있음
  • Class A의 Hostid 필드는 총 3byte = 24bit
    • 2242^{24}(1600만)개의 컴퓨터에 연결 가능
    • 수백만개의 Class A 주소가 낭비됨

Class B

  • Class B의 Hostid 필드는 총 2byte = 16bit
    • 2162^{16}(65,536)개 컴퓨터 연결 가능
    • 많은 Class B의 주소가 낭비됨

Class C

  • Class C의 Hostid 필드는 총 1byte = 8bit
    • 282^8(256)개 컴퓨터 연결 가능
    • 주소가 부족함 → Class C 주소를 많이 받음 ex) 192.0.0.- 주소와 200.11.8.- 주소를 받아서 연결 가능한 컴퓨터 개수를 늘림

Network Address

: Netid에다가 Host id가 모두 0인 주소

예제 1

132.6.17.85의 network address는?

  1. Class를 먼저 파악 ⇒ Class B
  2. Netid 영역을 제외한 나머지 Hostid들 모두 0으로 채우기

→ 132.6.0.0

예제 2

17.0.0.0의 class는?

→ A (Netid 영역이 1byte이기 때문)

Subnetwork

: 하나의 IP 네트워크를 여러 개의 더 작은 네트워크로 나눈 것

→ 즉, 큰 네트워크의 Netid 일부 비트를 잘라서 여러 서브네트워크로 나누는 방식

  • Netid에서 추가적인 bit를 얻고 Netid를 제외한 나머지 부분은 모두 0으로 채워서 기존 Address에 &연산을 취해서 Subnetwork Address를 구할 수 있음

Default Mask

ClassIn BinaryUsing Slash
A11111111 00000000 00000000 00000000/8
B11111111 11111111 00000000 00000000/16
C11111111 11111111 11111111 00000000/24
  • 앞에서부터 /숫자 까지 전부 1로 채우고 나머지는 0 ex) Class A: 11111111 00000000 00000000 00000000

예제 1

190.240.33.91의 subnetwork address는?

  1. Class 구하기

    → 190이니까 Class B

  2. Class B의 Default Mask에 3bit 111을 추가하여 Subnet mask를 만듦

    • 11111111 11111111 11100000 00000000
  3. 190.240.33.91의 2진수와 Subnet Mask를 &연산

    • 1~2byte: & 연산하면 그대로 → 190.240.
    • 3byte: 33을 2진수로 바꾸고 Subnet mask의 11100000과 & 연산 → 190.240.32
    • 4byte: & 연산하면 전부 0 → 190.240.32.0
  • GPT
    1. “Netid에서 추가적인 bit를 얻고”

      → 정확히는 Hostid 일부를 Netid처럼 사용해서 Subnetid로 확장하는 것

      → 즉, Netid + Subnetid + Hostid 구조로 나눠짐

    2. “나머지 부분은 모두 0으로 채워서 … & 연산”

      → 이건 Subnet Mask와 IP 주소를 & (AND) 연산하여 서브넷 주소를 구한다는 뜻인데,

      “나머지를 0으로 채운다”는 표현보다는 “서브넷 마스크를 사용한다”가 더 정확함


Dynamic Address Configuration 동적 주소 할당

Public IP

  • 전세계적으로 사용되는 유일한 주소
  • 일반적으로 IP는 public IP를 의미
    • Static함 (Global하고 Unique함)

private IP

  • 같은 망 내에서만 유효, 같은 IP가 여러개 존재 가능
    • private address는 각 클래스별로 정해짐

private netwerks의 주소

RangeTotal
10.0.0.0 ~ 10.255.255.2552242^{24}
172.16.0.0 ~ 172.16.255.2552202^{20}
192.168.0.0 ~ 192.168.255.2552162^{16}
  • 왜 private IP가 필요할까?
    • IP 주소는 제한적이기 때문
    • 네트워크를 옮기더라도 알아서 동적 주소 할당을 받기 위해
  • 다른 네트워크로 이동 시 IP 주소를 어떻게 매번 할당 받을까? → DHCP가 동적으로 IP를 할당해줌!
  • private network에서 어떻게 Internet에 접근할까? → NAT가 내부 → 외부 접속을 가능하게 해줌!
  • 컴퓨터가 인터넷을 사용하기 위해서는 다음 4가지 정보가 포함되어야 함
    1. IP 주소
    2. subnetwork mask
    3. Router의 IP 주소 (Gateway - 라우터 주소)
    4. name server의 IP 주소 (DNS 주소)

DHCP (Dynamic Host Configuration Protocol)

  • 미리 IP주소들을 갖고 있다가 요청을 받으면 DHCP가 소유하던 IP 주소를 할당해주는 프로토콜
  • 이를 사용하기 위해서는 DHCP Server라는 소프트웨어 설치 필요
  • 고정 IP 혹은 고정 IP가 아닌 주소를 할당 해줄 수 있음

DHCP가 private IP를 할당하는 과정

  1. hostDHCP discover 메세지를 broadcast
    • 이 때, 랜덤으로 생성한 transition ID를 활용하여 요청을 식별함
  2. DHCP serverDHCP offer 메세지로 responds
    • Liftime(주소 유효 시간)을 포함
  3. hostDHCP request 메세지로 IP address를 요청
  4. DHCP serverDHCP ack 메세지로 IP address를 전송

NAT (Network Address Translation)

: 내부의 IP와 Port 번호를 외부로 접속 가능하도록 바꿔줌

  • 외부로 나가는 모든 패킷을 public 주소로 바꿔서 전송
    • IP만 바꾸는 게 아니라 Port도 임의로 바꿈
  • 외부 ← 내부 통신은 가능! 외부 → 내부 통신은 불가능!!
    • private 주소는 여러개 존재하기 때문에 외부에서 내부로 직접 접근할 때 어느 주소를 사용해야 할지 결정할 수 없기 때문

변환 과정

  1. 내부 →워크(예: 집, 회사)에서 각각의 컴퓨터는 private IP 주소를 사용함

    예: 192.168.0.2, 192.168.0.3 …

  2. 이 네트워크의 공유기(라우터)public IP를 하나 가지고 있음

    예: 203.0.113.10

  3. 내부 장치가 인터넷으로 나가려고 하면, NAT는

    • 내부 IP + 포트 번호 → 외부 IP + 변환된 포트 번호로 매핑
    • 응답이 오면 다시 포트 번호를 보고 어떤 내부 장치에 보낼지 결정

NAT의 한계

  • 1개의 주소로 최대 약 6만개 connection이 가능 but 이는 미래를 생각하면 부족할 수 있음
  • 외부에서 내부로 접근이 불가능함

IP datagram format

  • 뒤에 챕터에서 계속 나옴

0개의 댓글