이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[Data Communication] 공유기와 네트워크

  • 2025.06.02 21:21
  • Computer Science/Computer Network
반응형

 

 

 

스위치 - OSI 2계층에서 작동해 Local Area Network 내의 여러 기기들간의 연결을 처리한다. (유니캐스트)

라우터 - OSI 3계층에서 작동해 LAN - WAN 간의 연결을 처리한다. 

 

가정용 공유기는 스위치 + 라우터 + 무선AP 역할을 모두 수행하고, 네트워크를 탈 때는 여러 라우터를 거치게 된다. 

 

LAN을 구성하는 방식에는 여러 가지가 있다.

이더넷 - 유선 통신 방식으로 이더넷 프레임 단위로 데이터를 전송한다. 

와이파이 - 무선 통신 방식으로 WI-FI 프레임 단위로 데이터를 전송한다. 

 

무선 통신을 수행할 때는 무선 단말기가 유선 LAN에 접속할 수 있도록 중계해주는 Access Point를 사용한다.

즉, 와이파이를 사용하더라도 이더넷에 연결되어야하고, 이더넷을 통해 라우터로 연결된다.

 

전화망은 Circuit-Switched Network로 구현 되어 있고, 통신 시작 전 고정된 경로를 설정하고 그 경로를 독점적으로 사용한다.

연속적이고 지연이 없어 일정한 대역폭이 필요할 때 유용하다.

통신 시작 전 송신자 -> 수신자 까지의 연결 경로를 완전히 설정해야 한다.

 

반면 Packet-Switched Network는 데이터를 작은 패킷으로 나눠서 전송하는 방식으로, 각 패킷은 독립적으로 목적지까지 전송된다. 

전송은 스위치나 라우터를 통해 이루어지고 목적지에 도착한 패킷들을 순서대로 정렬하고 재조립한다.

전용 회선이 없어도 통신할 수 있어 비용이 저렴하고 네트워크 자원을 여러 사용자가 동시에 공유할 수 있어 효과적이다. 

 

인터넷은 계층 구조로 이루어진다.

Internet Backbone은 전 세계 인터넷을 연결하는 네트워크로, 고성능 라우터 사이의 경로를 의미한다.

가정용 와이파이 및 5G도 인터넷이지만, Backbone처럼 빠르지 않다. 

 

컴퓨터 - 가정용 공유기 - ISP 센터 - 국내 Backbone(KT) - 국제 Backbone(해저케이블) - 해외 ISP - 웹서버 

대충 이런 순서로 통신된다.

 

인터넷에는 수많은 ISP, 데이터센터가 있고 각각은 독립적인 Autonomous System으로 동작한다.

Border Gateway Protocol은 이 AS간에 IP 경로 정보를 주고받고 가장 좋은 경로를 선택해서 패킷이 목적지까지 갈 수 있도록 도와주는 네비게이션 역할을 수행한다. 

 

 

 


 

 

 

 

IP는 3계층의 식별자로 데이터를 목적지까지 전달하기 위한 주소 지정 및 라우팅 프로토콜이다.

전 세계 장치에 고유한 주소를 부여하지만, 단순히 전달만 하기에 TCP와 UDP가 IP 위에서 동작해 신뢰성을 보장한다. 

 

IPv4 주소는 32비트로 구성된 숫자로, 우리는 4개의 10진수로 구분된 표기법을 보게 된다. (192.168.1.10)

 

Classless Inter-Domain Routing 표기법은 기존의 A/B/C 클래스 주소 방법 대신 주소 공간을 더 유연하게 표현하기 위한 방식이다.

168.188.0.0/16 은 앞의 16비트가 네트워크 주소이고, 나머지 16비트가 호스트 주소임을 의미한다. 

라우터는 /16같은 서브넷 마스크를 사용해 같은 네트워크인지 판단하고 경로를 결정한다.

 

첫 주소는 네트워크, 마지막은 브로드캐스트용 주소로 사용되니 유효한 호스트 범위를 계산할 때 제외해야한다.

192.168.1.0 은 네트워크 주소 / 192.168.1.255 는 브로드캐스트 주소

 

네트워크 주소는 해당 IP가 어떤 네트워크에 속해있는지를 나타내는 식별자로 호스트 주소 부분이 모두 0이다.

호스트 주소는 네트워크 내의 개별 장치를 식별하는 부분으로 같은 네트워크 주소를 공유하는 여러 장치들이 서로 다른 호스트 주소를 가지는 방식으로 구분된다. 

브로드캐스트 주소는 네트워크 내의 모든 장치에게 한 번에 메세지를 보낼 때 사용하는 주소이다.

 

CIDR 기반의 서브넷 마스크 Prefix를 기반으로 Trie자료구조와 해싱을 결합해 IP 주소에 대한 Longest Prefix Matching을 효과적으로 수행한다. 

 

몇 가지 특수 IPv4 주소만 정리하자.

 

0.0.0.0/8 : 자신이 속한 네트워크의 호스트

10.0.0.0/8 : 내부망 IP - 대기업 서버에서 사용됨 

127.0.0.0/8 : 자기 자신을 가리키는 루프백 IP 

169.254.0.0/16 : DHCP 실패 시 할당되는 IP 

172.16.0.0/12 : 내부망 IP - 중소기업 서버에서 사용됨

192.168.0.0/16 : 내부망 IP - 공유기에서 사용됨

 

내부망 IP 는 규모에 따라 선택할 수 있게 하기 위해 세 가지로 구분해서 제공된다. 

 

공인 IP 주소는 전 세계에서 유일한 주소로 ISP가 할당해준다.

사설 IP 주소는 내부 네트워크에서만 사용되는 IP 주소로 외부 인터넷에서는 절대 통신되지 않고, NAT를 통해 외부와 통신한다. (공유기)

 

위에서 언급한 내부망 IP가 사설 IP 주소이고, DHCP가 기기에 내부망 IP 주소를 할당하고, 무선 기기들은 AP를 통해 내부 네트워크에 연결된다.

DHCP (Dynamic Host Configuration Protocol) 는 사설 IP, 서브넷마스크, DNS 등 네트워크 설정을 자동화하는 프로토콜이다.

핫스팟, 공유기를 쓰면 자동으로 IP를 받아오고, 회사에서는 거의 모든 장비가 DHCP로 관리된다. 

 

원래는 부족한 IPv4 주소의 개수를 보완하기 위해 공유기를 도입해 NAT와 내부망을 사용했는데, IPv6으로의 전환이 느리다 보니 NAT와 공유기는 거의 모든 곳에서 표준으로 사용된다. 

 

실제 패킷을 전송할 때는 이더넷 주소가 필요한데, Address Resolution Protocol 을 통해 IP 주소를 MAC 주소로 변환한다.

 

도커를 사용할 때는 내부에 가상 네트워크를 생성해 호스트 머신을 라우터처럼 사용한다.

컨테이너에서 외부 인터넷과 연결할 때는 호스트 머신의 NAT를 사용한다.

 

NAT를 통해 사설 IP를 ISP에게 할당받은 공인 IP로 변환할 때 포트번호도 함께 변환한다.

 

포트포워딩은 사설 IP 주소의 장치에 접근할 수 있도록 공유기가 특정 포트 요청을 지정된 내부 IP로 전달하는 기능이다.

기본적으로 트래픽은 공유기의 공인 IP 까지만 도착하고, 공유기에 연결된 여러 장치까지 도달하려면 포트포워딩이 필요하다. 

사실 포트포워딩도 NAT의 확장 기능으로.. 내부 <-> 외부 방향의 트래픽을 수신 및 송신하기 위한 설정으로 이해하자. 

 

 

 

 


 

 

 

 

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
	inet 127.0.0.1 netmask 0xff000000
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
	nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
anpi0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 22:5c:eb:e2:37:60
	media: none
	status: inactive
anpi1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 22:5c:eb:e2:37:61
	media: none
	status: inactive
en3: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 22:5c:eb:e2:37:40
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 22:5c:eb:e2:37:41
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=460<TSO4,TSO6,CHANNEL_IO>
	ether 36:bd:45:c2:6a:80
	media: autoselect <full-duplex>
	status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=460<TSO4,TSO6,CHANNEL_IO>
	ether 36:bd:45:c2:6a:84
	media: autoselect <full-duplex>
	status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=63<RXCSUM,TXCSUM,TSO4,TSO6>
	ether 36:bd:45:c2:6a:80
	Configuration:
		id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
		maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
		root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
		ipfilter disabled flags 0x0
	member: en1 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 8 priority 0 path cost 0
	member: en2 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 9 priority 0 path cost 0
	nd6 options=201<PERFORMNUD,DAD>
	media: <unknown type>
	status: inactive
ap1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6460<TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 0a:10:a8:92:75:62
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (none)
	status: inactive
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6460<TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether ae:37:0c:93:c9:88
	inet6 fe80::1818:50f5:e77d:420%en0 prefixlen 64 secured scopeid 0xb 
	inet 10.22.193.164 netmask 0xffff0000 broadcast 10.22.255.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
awdl0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6460<TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 5a:ff:0d:a2:b6:be
	inet6 fe80::58ff:dff:fea2:b6be%awdl0 prefixlen 64 scopeid 0xd 
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
llw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 5a:ff:0d:a2:b6:be
	inet6 fe80::58ff:dff:fea2:b6be%llw0 prefixlen 64 scopeid 0xe 
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (none)
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
	inet6 fe80::7244:1310:a099:5aab%utun0 prefixlen 64 scopeid 0xf 
	nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
	inet6 fe80::3f7b:1fcf:8aca:32ea%utun1 prefixlen 64 scopeid 0x10 
	nd6 options=201<PERFORMNUD,DAD>
utun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
	inet6 fe80::ecb6:8201:a724:bf9f%utun2 prefixlen 64 scopeid 0x11 
	nd6 options=201<PERFORMNUD,DAD>
utun3: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1000
	inet6 fe80::ce81:b1c:bd2c:69e%utun3 prefixlen 64 scopeid 0x12 
	nd6 options=201<PERFORMNUD,DAD>

 

 

en0 lo0 utun0 은 각 네트워크 인터페이스를 식별하는 이름이다. 

lo0 은 루프백, en0은 유선 / 무선 네트워크, bridge0 가상 인터페이스.. 인터페이스마다 특징이 붙어 있음.

 

flags는 인터페이스의 동작 상태를 나타낸다.

UP - 활성화 / BROADCAST - 브로드캐스트 가능 등등.. 

 

mtu (Maximum Transmission Unit)는 하나의 패킷이 가질 수 있는 최대 크기.

options는 인터페이스의 세부 기능을 나타냄.

inet / inet6은 IPv4나 IPv6 주소를 표시함. 

ether는 말그대로 MAC 주소를 표시함. 

 

 

 

 

 

 

 

반응형
저작자표시 (새창열림)

'Computer Science > Computer Network' 카테고리의 다른 글

[Data Communication] Media Access Control과 Ethernet  (4) 2025.06.12
[Data Communication] 에러 제어와 ARQ  (0) 2025.06.11
[Data Communication] 물리 계층에서의 다중화  (0) 2025.04.16
[Data Communication] 물리 계층에서의 데이터 전송  (0) 2025.04.02
[Data Communication] Layer Packet Signal  (0) 2025.04.01

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Data Communication] Media Access Control과 Ethernet

    [Data Communication] Media Access Control과 Ethernet

    2025.06.12
  • [Data Communication] 에러 제어와 ARQ

    [Data Communication] 에러 제어와 ARQ

    2025.06.11
  • [Data Communication] 물리 계층에서의 다중화

    [Data Communication] 물리 계층에서의 다중화

    2025.04.16
  • [Data Communication] 물리 계층에서의 데이터 전송

    [Data Communication] 물리 계층에서의 데이터 전송

    2025.04.02
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (666) N
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (16)
    • 👥 모각코 (6)
    • 💬 기록 (4)
    • 📚 공부 (2) N
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바