네트워크가 네트워크이기 위해서는
결국은 컴퓨터와 컴퓨터 간의 연결, 전기 신호의 전달
- 연결된 컴퓨터들 간에 데이터 전달 / 교환
- 이 연결에 대한 인프라와 약속들이 '컴퓨터 네트워크'
Q. 두 컴퓨터가 연결된다는 것은 어떤 개념?
A. 데이터를 주고 받는 것! (데이터의 송수신)
송신과 수신, 송신자와 수신자
- 송신(Send) : 데이터를 보내는 행위, 데이터를 생성해 네트워크로 보냄 → Sender
- 수신(Recieve) : 데이터를 받는 행위, 네트워크로부터 데이터를 받음 → Receiver
네트워크에서 데이터의 입출력을 담당하는 말단 장치(위 사진에선 양 끝단의 컴퓨터)를 호스트(Host) 혹은 단말(Terminal) 이라고도 부름
전달되는 데이터는 Message, Text, Payload 등으로 부르기도 한다.
Q. 최초의 연결 그 자체는 어떻게 이루어지는가?
A. 서버 / 클라이언트 모델
내가 전화를 받기 위해서는 내 전화기는 켜져있어야 한다.
- 클라이언트(Client) : 네트워크를 이용하여 서버 측에 서비스 요청을 하는 단말
- 서버(Server) : 네트워크에서 클라이언트에게 서비스를 제공하는 컴퓨터
- 서버 대기 → 클라이언트가 연결 요청 → 서버 승낙 → 데이터의 교환
- 내 전화기가 전화 기다리다가 → 친구가 전화를 걸면 → 벨이 울려 전화 받고 → 통화 시작
Q. 그럼 두 호스트 사이의 데이터는 어떻게 전달 되는가?
- 데이터는 결국 0과 1의 전기적 신호
- 전기는 전선을 통해 흐른다 !
- 전송 매체 (Transmission Media)
- 데이터 송수신을 위한 물리적인 경로
- 유선 (구리선, 광케이블 등)
- 무선 (마이크로파, 라디오파 등)
- 데이터 송수신을 위한 물리적인 경로
아직 해결해야할 문제들 ...
- 거리가 멀어지면 저항도 강해지고, 신호도 약해질 것이고...
- 더 많은 단말들을 연결하기 위해선,,?
- 데이터들이 수신처를 어떻게 알고 찾아가는 거지..!?!
네트워크들을 구성하는 시스템들
신호들을 다음으로 전달시켜주는 친구들
- 네트워크 장치들 (Network Devices)
- 매체들 사이에서 데이터의 중간 중계(Relay)를 담당하는 시스템들
- 라우터, 스위치, 허브 등... (c.f., 단말들도 네트워크 장치로 포함하기도 한다!)
- 이렇게 네트워크에 연결된 각 기기 / 시스템들을 노드(Node)라 부르기도 함 (상황에 따라 달라요)
Q. 전송 매체들과 장치들은 어떻게 연결되는 것이여..
A. 네트워크 인터페이스 (Network interface)
- 네트워크에서 장치와 장치, 시스템과 시스템을 연결하기 위한 표준화된 접근 지점.
- 하드웨어적 관점
- RJ - 45, NIC(Network Interface Card), 동축 케이블, 광 케이블 등...
- 소프트웨어적 관점
- 어떻게 데이터를 규정하는가? 어떤게 데이터인가? → 프로토콜 (e.g., TCP / IP)
프로토콜의 의미
Protocol : 규약 ( 규칙과 약속 )
Q. 왜 필요한가?
A. 매체를 통해 전달되는 전기적 신호의 0과 1,, 그 신호가 무엇을 뜻하는 지 모른다면..?
- 아무런 약속없이 0과 1이 전달되면 그건 그냥 잡음..
So, 전기적 신호로 데이터를 교환하기 위해 둘 사이의 약속에 따라 전달.
그것이 프로토콜이다 !
프로토콜의 3요소
- Syntax ( 구문 )
- 데이터의 형식, 구조 및 순서 정의, 송수신자가 데이터를 올바르게 해석할 수 있도록 !
- e.g., IP 헤더는 20bytes로 버전, 길이, TTL, 출발지, 목적지 주소 등으로 이뤄져있다.
- 데이터의 형식, 구조 및 순서 정의, 송수신자가 데이터를 올바르게 해석할 수 있도록 !
- Semantic ( 의미 )
- 데이터의 의미와 각 필드의 역할을 정의, 수행해야할 작업을 규정 !
- e.g., 라우터는 수신한 패킷의 IP-목적지 주소를 보고 다음 전달지로 패킷을 전달
- 데이터의 의미와 각 필드의 역할을 정의, 수행해야할 작업을 규정 !
- Timing ( 타이밍 )
- 데이터의 전송 및 응답시간, 순서들을 정의
- e.g., 100Mbps에서는 25MHz의 속도로 전달 / TCP에서 SYN다음에 ACK가 기대됨.
- 데이터의 전송 및 응답시간, 순서들을 정의
정리하자면..
네트워크가 네트워크이기 위해 필요한 것
- 노드 (가장 일반적인 용어)
- 네트워크 단말들 (컴퓨터, 호스트 등..)
- 전송 매체와 인터페이스
- 네트워크 장치들 (스위치, 라우터 등..)
- 이러한 용어들이 확정적으로 항상 사용되는 것이 아님.. 적당히 맥락을 보고 이해하자
그리고 이 네트워크 속에서 데이터들은 프로토콜에 따라 전달 !
- Network order에 따라
- 프로토콜은 Syntax, Semantic, Timing이 맞아야 한다 !
가장 중요한 것은 결국 전기 신호를 전달하기 위해 이 모든 것이 필요하다는 것!
데이터 교환 방식
네트워크는 얼기설기 엮인 그물
많고 많은 경로중에 어디로 어떻게 메시지를 보낼까..
- 회선 교환 방식 (Circuit Switching)
- 데이터 전송 전 미리 경로를 설정하고 할당함 (독점, 전용선), 데이터는 연속적으로 전송됨.
- pos. 안정적이고 고전된 성능이 보장, neg. 비효율적인 자원의 사용, 회선 장애에 대한 대응이 어렵다..
- e.g., 전화에 가까운 방식 !
- 패킷 교환 방식 (Packet Switching)
- 전달할 데이터를 일정한 단위(Packet)으로 나누어 전송 (이 단위는 부르는 호칭이 상황마다 달라짐..)
- 각각의 패킷들은 서로 다른 경로로 전달될 수 있다.. (유동적임!)
- 경로가 제각각이므로, 패킷들에 경로 정보를 표시하기 위한 '헤더(Header)' 추가
- pos. 경로를 공유해서 사용하므로 자원의 낭비가 적음.. 회선 장애시에도 우회 가능!
- neg. 성능 불안정.. 패킷의 일부가 누락 가능하다..
- 수신처에서는 패킷의 도착 순서가 다를 수 있어 조립 매커니즘 필요
- 전달할 데이터를 일정한 단위(Packet)으로 나누어 전송 (이 단위는 부르는 호칭이 상황마다 달라짐..)
데이터를 부르는 여러가지 용어들
네트워크에 쪼개진 데이터 단위를 보편적으로 패킷 이라고 부르지만, 사실 이 단위는 상황마다 다르다..
- Packet, Segment, Datagram, Frame, Bitstream ......
앞으로 배워나갈 것임 !
용어정리!
- 데이터 : 네트워크를 통해 전달되는 정보 그 자체들 (헤더를 포함한)
- 메시지 : 네트워크를 통해 전달될 전체 실제 전달 내용들 (헤더를 제외한)
- 페이로드 : 각 패킷들이 싣고다니는 전달 데이터(Packet payload의 합 == 메시지)
- c.f., 우편, 편지와 편지 봉투
용어들은 꼭 그런 게 아니라, 문맥과 상황에 따라 적절히 이해하면 된다..
Endian
네트워크에서 데이터가 전달될 때, Big Endian으로 하기로 약속됨..
그래서 이를 Network order라고도 부른다!
사실 이게 네트워크에서 굉장히 헷갈리는 부분이다..
- 0xCAFEBABE 의 데이터를 네트워크로 보낸다고 하면...
- 앞에서부터 순서대로 이야기 해주는 게 자연스럽다..
- 자연스럽게 앞부분부터 한글자씩 전달 ! → Big Endian
- CA / FE / BA / BE (실제로는 비트 단위)
- 하지만 대부분의 x86기반 컴퓨터가 메모리에 데이터를 저장할 때는?
- 바이트를 역순으로 저장 → Little Endian
- BE / BA / FE / CA
- 바이트를 역순으로 저장 → Little Endian
네트워크 성능의 각종 지표들
- Bandwidth (대역폭) - 이론상 속도
- 네트워크에서 전송될 수 있는 최대 용량, 주로 초당 비트 전송량 (Bit/sec = bps)으로 표기
- 100Mbps 대역폭은 초당 100메가 비트의 데이터를 최대로 전송 가능
- 주로 네트워크 장치 및 매체에 의존적이다!
- 네트워크에서 전송될 수 있는 최대 용량, 주로 초당 비트 전송량 (Bit/sec = bps)으로 표기
- Throughput (처리량) - 현실적인 속도
- 실제 전송된 데이터의 양, 실제로 얼마나 효율적인가를 뜻함. 수율!
- 100Mbps 대역폭에서 80Mbps만 전송된다면, 쓰루풋은 80Mbps (80%).
- 특정 시간동안 성공적으로 전송된 데이터의 양 : 네트워크 혼잡도, 손실, 프로토콜 오버헤드 등에 영향을 받음
- Loss rate (손실률) : 데이터가 전송 과정에서 손실되는 비율
- 실제 전송된 데이터의 양, 실제로 얼마나 효율적인가를 뜻함. 수율!
- Latency (지연시간)
- 데이터가 송신지에서 수신지로 이동하는 데 걸리는 시간. 네트워크 반응 속도, 주로 밀리초(ms) 단위.
- Jitter(지터) : 레이턴시의 변동성 (eg., Latency 1 ~ 5 ms인 경우, jitter는 4ms)
🚨 주의! : 대역폭이 높다고 지연시간이 항상 좋은 것은 아님!
- 대역폭과 지연시간은 다른 벡터의 요소임.
- 스포츠카 vs 트럭
- 실제 사례 : 블랙홀 관측 데이터 수집
- 약 5 Peta bytes의 데이터.
- 인터넷은 느리다... 그래서 비행기로 하드를 들고가서 데이터를 옮김..
- 100Mbps 네트워크를 가정한다면
- T = Datasize / Bandwidth = 400,000,000sec = 약 4,629일
- 반면 비행기는 시속 약 900km/h를 가정한다면
- T = Distance / speed = 지구둘레 40075km, 반대편이라 해도 20037km : 22시간
- 100Mbps 네트워크를 가정한다면
- 모든 5PB의 데이터가 22시간만에 일제히 도착.. 이를 대역폭으로 환산하면 505Gbps
동시에 여럿에게 전달하기
- Unicast - [일대일] 통신
- Broadcast - [일대모두] 통신 / Flooding이라고도 함..
- Multicast - [일대다] 통신
토폴로지(Topology)
네트워크 장치들이 어떻게 연결되어 있는 지를 나타내는 물리적 / 논리적 배열
- Bus topology : 모든 장치가 하나의 중앙 케이블 (버스)에 연결
- 구성이 간단. 적은 비용
- 버스가 고장나면 동작 x, 충돌 빈번 (성능 저하)
- Ring topology : 각 장치가 두 개의 인접한 장치와 연결
- 데이터 전송 빠름, 충돌 적음
- 하나의 장치/연결의 고장이 전체 네트워크에 영향을 준다. 비효율적인 리소스 사용
- Star topology : 모든 장치가 중앙 장치를 중심으로 연결 (가장 일반적인 형태임)
- 말단 장치의 고장은 영향 x, 관리가 쉽다!
- 중앙 장치가 고장나면 모든 네트워크가 영향..
- Tree topology : Star의 파생형. 중앙 노드가 하위를 연결, 하위가 다시 여러 장치를 연결
- 계층적 구조 : 관리 용이, 확장성 용이 (데이터센터등의 환경에서 주로 사용됨)
- 중앙 노드의 고장이 모든 네트워크에 영향..
- Mesh topology : 모든 장치가 서로 직접 연결
- 네트워크의 신뢰성과 가용성 높음. 고장시 우회 가능, 속도도 좋음
- 설치와 유지보수가 비싸고 복잡하다..
- Hybrid topology : 위의 토폴로지들을 적절히 혼합한 형태
간단한 네트워크의 역사
- 봉화 / 깃발 / 연 등등.... - 옛날 옛적
- 처리량 : Several bits / Several hours
- 전달범위 : 가시거리
- 세마포어 텔레그래프 (Semaphore telegraph) - 근대
- 풍차같은 것에 알파벳을 매칭
- 처리량 : Character / 32min (200km(파리 -릴)을 보낼 때)
- 전신(전보)와 모스 부호 (1831, 1844년)
- 전자기파의 데이터 전송 시작!
- 처리량 : +100 codes / min
- Circuit Switching 기반이었다.. 철도를 중심으로
- 1858년, 미국과 영국의 해저케이블이 깔리기 시작
- 전화, 음성의 전달! (1876년), 무선통신!
- 그레이엄벨의 전화기 발명 → 전자기파를 이용한 음성 전달
- 대역폭 : 약 2400 - 9600bps
- 무선전신은 1896년 발명!
- 1914년 세계 1차 대전 발발 후 무선 기술의 세계 보급
전쟁 이후, 무선은 도청(해킹)의 위험이 있다는 것을 알아냄...
더 광범위한 데이터 전달과 공유도 앞으로 계속해서 필요하다!!
- Internet!!! (1969년)
- ARPAnet, 현대 인터넷의 모태
- 핵전쟁 등의 위협으로부터 안전한 네트워크
- UCLA, UCSB, SRI, 유타 대학교의 연결
- Packet Switching의 등장!!
- 대역폭 : 7Kbps - 56Kbps.
- 이때 나온 기술 기반으로 TCP/IP 등의 기술이 등장함
- ARPAnet, 현대 인터넷의 모태
단순한 신호 → 조금 복잡한 신호 → 문자 → 음성 → 영상 → 광범위한 데이터 전달
결국 데이터를 더 멀리 더 빠르게 더 많이 보내기 위한 결실
현대 컴퓨터 네트워크 구조도 이러한 고민에 따라서 계속 발전 되었다.
- 더 많은 컴퓨터들과 어떻게 통신할까...
- 작은 네트워크와 큰 네트워크 !!
그래서 나온 것이 OSI 7 model
OSI 7 Layer
네트워크 통신을 여러 계층으로 나눠 각 계층이 특정 기능을 담당하도록 설계!
- 각 계층별 기능 분리, 설계의 독립성 (재활용성) 및 유지보수의 이점을 확보함
- 네트워크 양단에 있는 호스트가 수행하는 프로토콜들은 각 계층 단위로 통신 (n계층 프로토콜)
- L2 ↔ L2, L3 ↔ L3
- 각 계층마다 전용 인터페이스가 정의, 하위 계층이 상위 계층에 서비스를 제공하는 방식 (상위 계층은 하위계층에 서비스를 요청)
- Service primitive 개념
캡슐화와 역캡슐화
캡슐화 : 상위계층으로부터 받은 페이로드에 해당 계층의 제어 정보인 '헤더'를 붙여 하나의 블록으로 만드는 것
역캡슐화 : 헤더를 떼어내어 상위계층의 페이로드를 얻어내는 것
상위계층의 데이터 블록이 하위계층으로 전달될 때, 전체 데이터 블록은 하위계층에 서 페이로드로 취급된다 !
→ 하위계층은 상위계층을 이해하지 못한다. ( 그냥 데이터 덩어리 )
오늘날의 OSI
대부분 TCP / IP 모델로 대변되어서 설명된다.
- 4-5 계층으로 구성
- OSI 7은 이론적이고 포괄적인 접근을 제공
- TCP / IP는 인터넷의 실제 작동 원리를 바탕
OSI 7에서 L5-7은 대부분 통합되어 설명된다 (결국 TCP/IP 모델로 수렴된다는 것)
L1 - L4까지의 동작은 운영체제에 의해 관리 ( == 추상화 )
L5 - L7은 사용자가 작성해야함 ( == 애플리케이션 ) : 구분이 애매하다...