1.1 분산 컴퓨팅

- 분산 컴퓨팅이란 다수의 컴퓨터가 공통의 문제를 해결하기 위해 협업하도록 만드는 방법이다.
- 여러 대의 컴퓨터에서 프로세스들은 메시지를 주고 받으며 협업한다.
- 이 프로세스들끼리 네트워크를 통해 통신하며, 이때 사용하는 규약이 프로토콜이다.
💡 프로토콜 : 통신 규약
1.2 OSI 7계층

- OSI 7계층이란 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것이다.
- 계층을 나눈 이유는 통신이 일어나는 과정에서 단계별로 파악할 수 있기 때문이다.
- 만약 7단계 중 특정한 곳에 이상이 생기면 그 이상이 생긴 단계만 고칠 수 있기 때문이다.
1.2.1 단말 시스템간 소통구조

- 각 단말 시스템들은 서로 소통을 해야한다.
- 가까운 거리라면 직접 소통하면 되지만, 먼 거리라면 중개장치를 거쳐야만 한다.
- 보통 단말시스템은 OSI 7계층을 모두 갖고 있지만 중개장치는 3계층이하만을 갖는다.
- 라우터 : 1~3계층까지, 브릿지 : 1,2계층만, 리피터 : 1계층만을 갖는다.
- 시스템간엔 전송매체라고 하는 전선, 공기, 광섬유 등으로 이어져있다.
1.2.2 계층별 핵심 기능

- 물리계층
- 전선등의 물리 매체를 통해 0 또는 1의 비트를 데이터로 전달하는 역할을 한다.

- 물리매체 : 전선(전기적신호를 통해), 광섬유(0/1을 빛으로 바꿔서), 공기(무선, 전파를 통해)
- 물리매체에선 여러 부분에 대한 정의를 내려야 한다.
- 전기적 정의 : 전압( 몇 V?), 주파수(몇 Hz ?) ,인코딩 방식 등
- 기계적 정의 : 커넥터(암/수), 25핀/9핀
- 기능적 정의 : +/-/접지(GND). Tx/Rx, Clock, DTR/DSR
- 데이터링크 계층
- 인접 시스템간 신뢰성있느 정보 전달의 역할
- 즉, 물리계층을 통해 0 / 1의 정보를 보내는데, 내가 보낸 정보를 올바르게 전달하는 역할을 한다. (0을 보냈는데 1이 도착하면 안되니까)
- 데이터링크 : 데이터가 흐르는 시스템간의 물리적 연결을 의미한다.
- 데이터를 바이트 단위 혹은 프레임으로 구성하여 전달한다. (이더넷의 경우 1500byte를 하나의 프레임으로 묶어서 전송한다.) 이러한 것들을 통째로 신뢰성을 검사하고 전송한다.
- 신뢰성 보장을 위한 기능
- 연결제어 : 데이터를 보내기 전에 미리 연결을 맺고, 맺어지면 데이터를 보내고 이후에 연결이 종료된다.
- 오류제어 : 데이터를 보내면서 데이터가 오류없이 잘 들어갔나 검출하고, 오류가 생겼다면 어떻게 복구하며 정정할 것인지 정해야한다.
- 흐름 제어 : 데이터 전달 속도가 너무 빠르거나 느리지 않게 조절한다. 수신자가 처리 가능한 속도로 데이터를 전달한다.
-
네트워크 계층
- 전 세계에 수 억개의 컴퓨터가 서로 직접적으로 연결되는 것은 불가능하다. 컴퓨터간 소통시 중간매체 역할로서 네트워크가 그 기능을 수행한다.
- 시스템의 수가 적고 가까이 있다면 하나의 네트워크로 구성하여 모든 컴퓨터들이 직접 데이터를 교환할 수 있다.
- 그러나 여러 개의 컴퓨터가 지리적으로 떨어져있으므로 지역별로 네트워크를 구성하고, 이것들을 서로 연결한다. (Internet : 전 세계의 모든 네트워크를 연결한 네트워크)
- 데이터가 향하는 목적지의 네트워크 주소를 보고 상대 시스템에게 데이터를 전달하는 역할을 한다.
- Addressing: 각 시스템에 주소를 부여한다. (전화시스템이라고 하면 전화번호가 Addressing)
- Routing: 목적지로 갈 수 있도록 경로를 찾아주는 것이다.
-
전송계층/수송계층
- 종단 시스템 간 (end-to-end, Sender to Destination) 신뢰성 있는 정보 전달.
- 인접시스템간 신뢰성 있는 정보 전달은 데이터링크 계층에서 한다. 그러네 전송계층에선 종단간의 추가적인 신뢰성 보장이 필요하다.
- Source ↔ Network ↔ Destination
- 신뢰성 보장 : 연결제어, 오류제어, 흐름제어 +) 네트워크 상태도 고려한 흐름제어가 필요하다.
-
세션계층
- 응용 프로세스간의 연결제어
- Sender 시스템의 프로세스, Destination 시스템의 프로세스 사이의 가상적인 연결을 맺고, 데이터를 전달하고, 연결을 끊어주고, 문제가 생기면 재 시작을 하는 등의 역할을 한다.
- 즉, 세션의 수립, 관리 해제의 역할을 한다.
-
표현 계층
- 데이터를 보낼 때 어떻게 표현해야 정확한 정보를 받을 것인가 정해준다.
- Syntax, 데이터 형식, 암호화, 압축 등을 고려한다.
- ASCII/Binary, gpf/gif, mpg/avi 등등..
-
응용 계층
- 응용 프로세스에게 네트워크 서비스를 제공한다.
- 네트워크 서비스의 종류
- 웹 데이터 전달 (HTTP)
- 파일 전송 (FTP)
- 이메일 (SMTP)
- 원격 접속 (Telnet)
- 네트워크 관리 (SNMP)
1.3 데이터 전달

- 전반적으로 위 그림과 같은 구조를 통해 프로세스끼리 데이터를 전달한다.
- 각 프로세스의 Layer 7은 프로토콜을 통해 서로 통신하며 데이터를 전송하는데, Layer 7 끼리는 직접적으로 통신이 불가하기 때문에 점점 하위Layer로 데이터를 내려보내게 된다.
- peer(Process A의 Layer N)와 peer(Process B의 Layer N)은 서로 직접적인 소통이 불가하다. 따라서 하위 Layer로 데이터를 내려 보내고, 이는 네트워크를 통해 상대 프로세스 최하위 계층으로 도달하게 된다.
1.3.1 캡슐화

- 상대 peer 계층에 바로 데이터를 보낼 수 없는 경우, 하위 계층으로 데이터를 내려 보낸다.
- 이때 하위 계층에 쌩 데이터를 그대로 보내줄 순 없고, PCI라는 헤더를 앞에 붙여 캡슐화 하여 내려보낸다.
- 이제 peer 계층에 바로 데이터를 보낼 수 있는 Layer에 도착하면, 캡슐화한 데이터 PDU를 보내고, peer 계층은 다시 자신의 상위 계층으로 데이터를 올려보낼 때 역캡슐화를 하여 데이터를 올려보낸다.
cf) **패킷은 무엇이고 프레임은 무엇인고?**
PDU(Protocol Data Unit) : 계층별로 헤더와 데이터를 합친 부분을 일컫는 단어.
각 계층마다 이 PDU를 부르는 이름이 다르며 다음과 같다.
- 1계층: 비트(Bits)
- 2계층: 프레임(Frame)
- 3계층: 패킷(Packet)
- 4계층: 세그먼트(Segment)
- 그밖에 애플리케이션에 속하는 3개 계층(5,6,7)은 데이터(Data)라 부른다.
1.3.2 TCP/IP 프로토콜 데이터 단위
- TCP 계층은 보통 Layer 4에 해당한다.

- 상위 계층에서 TCP 계층(L4)으로 Data를 내려 보낸다.
- 그럼 TCP 계층에선 TCP 헤더를 붙여 TCP segment라는 PDU를 IP 계층(L3)으로 내려보낸다.
- IP 계층(L3)에서도 IP 헤더를 붙여 IP packet이라는 PDU를 만든다.
- lan에선 ethernet이 Layer 2이다. Layer 2에선 특별히 에러처리를 위해 헤더와 trailer를 붙여 양 끝에 Ethernet header, Ethernet footer을 붙여준다.
1.4 프로토콜 유형
1.4.1 분류 방식
- 연결처리 방식에 따른 분류
- Connection - Oriented protocol (연결 지향) 데이터를 주고 받기 전에 먼저 연결을 맺는다. 가) Connection establishment phase (연결 수립) 나) Data transfer phase (데이터 송수신) 다) Disconnect phase (연결 끊기)
- Connectionless protocol (비연결형) 오로지 data transfer phase만 가진다.
- 프로토콜의 종류에 따른 분류
- 거리/기술에 따른 분류
- WAN/LAN/PAN/BAN 등
- WAN (Wider area network, 수 킬로 ~ 수십 킬로) > LAN (Local area network, 수십미터 ~ 100m)> PAN (personal area network, 10~15m 이내)> BAN (body area network, 수십센치 이내)
1.4.2 TCP/IP Protocol Stack
- 인터넷, 컴퓨터를 통해서 서로 연결할 땐 LAN/WAN 프로토콜을 이용하는데, 이를 계층적으로 분류한 것이 아래 그림 모습이다.

- OSI 7 Layer에선 각 계층이 정확히 분리되지만, TCP/IP 프로토콜에선 Layer 5~7은 명확히 구분되지 않고 적당히 섞여있다.
- 인터넷에서 가장 주요한 계층은 Layer3, Layer 4이다.
- 마지막 Layer 1~2가 어떤 네트워크냐에 따라 LAN/WAN 프로토콜 중 하나를 이용하게 된다.
- TCP는 연결지향형 프로토콜이고, UDP는 비연결형 프로토콜이다.
- 비연결형은 에러가 생길 확률도 있지만 훨씬 간편한 프로토콜이기 때문에 TFTP, SNMP, DNS 등 응용계층 내에서 에러를 복구할 능력이 있는 경우 비연결형인 UDP를 사용한다.
1.4.3 Web Server & Client

- End System
- 브라우저안 HTTP 프로토콜 (L5 ~ L7) > 유닉스, 리눅스 등 OS (L3 ~ L4) > Ethernet (L1~L2)
- 웹 서버
- 브라우저안 HTTP 프로토콜 (L5 ~ L7) > 유닉스, 리눅스 등 OS (L3 ~ L4) > Ethernet(L1~L2)
1.4.4 LAN Protocol

-
LAN Protocol은 주로 L1, L2로 구성되어있다.
-
L1은 물리계층으로, 물리 매체를 통해 0/1을 주고받는다
-
L2는 신뢰성있는 정보전달을 한다.
- LAN은 여러 컴퓨터가 하나의 물리매체에 접속하는 구조이기 때문에 동시에 데이터를 주고받으려면 충돌이 날 수 있다.
- LAN 프로토콜에서 Layer 2는 또 2개의 계층으로 구분했는데,
- MAC Sublayer (Media Access Control) : 프레임 단위로 송수신을 하며 충돌 방지 역할을 한다.
- LLC Sublayer (Logical Link Control) : 연결제어, 오류제어, 흐름제어
-
LAN Protocol Standard
- IEEE 802 표준
- IEEE 802.3 : CSMA/CD (우리가 주로 사용하는 프로토콜이다 !)
- IEEE 802.11 : Wireless LAN (무선의 경우 이 프로토콜을 많이 사용한다. ex) 핸드폰, 노트북)
- IEEE 802.15 : Wireless PAN (블루투스 등)
- IEEE 802.2 : LLC (Logical Link Control)
- IEEE 802.1 : Management, 상위 계층 접속, Spanning Tree, VLAN
-
Ethernet Protocol
- 유선 랜카드를 사용하는 컴퓨터등 기기에 모두 구현되어있는 프로토콜이다.
- Ethernet 랜카드 안에 MAC Protocol + Physical Protol이 구현돼있다.
- Ethernet Protocol은 CSMA/CD라고 얘기한다.
- 하나의 물리매체 안에 여러 개의 컴퓨터를 구성해서 데이터를 주고받는데 충돌이 생길 수 있다.
- 따라서 물리매체를 사용하는 지 아닌 지 신호를 통해 확인해 데이터를 주고받는다.
- 그럼에도 불구하고 충돌이 생기게 된다면 CSMA/CD 프로토콜을 통해 해결한다.
- 과거엔 10Mbps, FastEthernet : 1000Mbps, GigaEthernet : 1Gbps
-
Frame 구조
- Ethernet 안에선 data는 Frame이라는 단위를 사용한다.

- 여기서 DA(Destination Address), SA(Source Address) ,Type(데이터의 유형, 주로 IP 유형)이 헤더이고, FCS(Frame Check Squence, 오류 체크를 위한 코드)가 Footer이다.
- L2 프로토콜은 IEEE 802.3과 약간 다르다. (Type이냐 Length냐의 차이)
1.5 네트워크 장비

- 보통 end system에선 L1 ~ L7까지 전부 있다.
- 그러나 중간에 매개해주는 역할을 하는 장비는 보통 router, bridge, repeater을 많이 이용한다.
- repeater (L1), bridge(L1~L2), router(L1~L3)이다.
1.5.1 Repeater
- Layer1만 구현되어있다.
- 포트가 여러 개 있어서 데이터가 들어오면 데이터를 0/1로 복원해서 다시 보내주는 역할을 한다.
- 포트 A에서 들어온 신호는 멀리 갈 수록 약해진다. 이때 중간에 repeater을 끼워줌으로서 다시 신호를 증폭시켜 멀리 보내도 신호의 세기를 유지해줄 수 있다.
- 즉, 신호 재생기 역할을 한다. Signal → 0/1 → Signam (cf. Amplifier)
- 1 segment의 최대 길이 : 125m
- Segment 확장 : Repeater 4개 → segment 5개 → 500m 확장 가능
1.5.2 Bridge

- L1 ~ L2 장비이다.
- 프레임 중계기이다.
- 스테이션 증가 → 충돌이 늘어났기 때문에 성능감소 → 브릿지로 분리하여 충돌 감소
- MAC 주소를 보고 포워딩/블럭킹을 한다.
- 주로 소규모 네트워크를 연결할 때 주로 사용한다.
- MAC 주소는 Flat한 주소 개념이다. 계층적인 개념이 아니기때문에 너무 많이 연결하면 성능이 떨어진 다.
- MAC 주소 테이블에 목적지주소, 목적지의 포트, 시간정보가 있다.
- 브릿지를 처음 켤 때는 테이블이 텅비어있지만 시간이 지남에 따라 수십, 수백개가 만ㅇ들어진다.
- Promiscuous Mode 동작을 한다. 즉, 모든 프레임을 수용해서 만든다.
- 만일 목적지 정보를 잘 모르거나 없을 때, 수신포트를 제외하고 모든 포트로 전송한다. (Flooding)
- 만일 목적지가 여러 개일 경우, Flooding을 통해 모든 포트로 전달된다.
- 브릿지 종류
- Transparent Bridge (최근에 많이 사용된다)
- Source Routing Bridge (최근엔 잘 사용하지 않는다)
1.5.3 Router

- 패킷의 목적지 주소를 보고 해당 포트로 다시 데이터를 보내는 역할을 한다. 때문에 패킷 중계기라고도 한다.
- L1 ~ L3까지 구현되어있다.
- IP 주소를 보고 보낸다.

- 최적의 경로로 데이터를 전달한다.
- IP 주소는 계층적인 개념을 갖고있기 때문에 확장성이 있다.
- 또한 대규모 네트워크를 구성한다고 해서 성능이 떨어지지 않는다.
- Routing Table을 갖고 있다. 이 안엔 destination address, metric, next router에 대한 정보가 들어있다.
- 목적지 정보가 없다면 default routing을 하거나 폐기한다.
1.5.4 Gateway

- L1~L7까지 구현되어있다.
- 프로토콜 사이에서 중개하는 역할을 한다.
- TCP/IP ↔ OSI 인 경우 OSI Gateway, TCP/IP ↔ SNA 인경우 SNA Gateway라고 칭한다.
1.5.5 Switch
- 고속으로 패킷, 프레임처리는 시간이 오래 걸리지만 하드웨어화하여 이를 처리하면 속도가 향상된다.

- 또한 포트도 많이 사용한다.
- L2 Switch : MAC 주소 및 다수 포트로 데이터를 처리한다.
- L3 Switch : IP 주소로 데이터를 처리하며 고속 스위칭
- L4 Switch : 포트 번호 이용 트레픽 제어. 로드 밸런싱.
- L7 Switch : 로드밸런싱, QoS 지원. 보안, 바이러스/웜 차단
1.5.6 Hub

- 초창기에는 멀티포트 Repeater을 지칭했다. 이때는 단순 플러딩이었고, 충돌 시 모든 포트에 영향을 준다.
- 현재는 많은 포트가 있는 장치를 일컫는다.
1.5.7 기타 네트워크 장치

-
Layer 7
-
Web Proxy (보안, 캐싱), E-mail Proxy
-
프락시 서버를 중간에 두게되면 단말기들이 컨텐츠서버나 웹서버로부터 데이터 (특히 멀티미디어) 를 가져오는 것이 아니라, 프락시 서버에서 가져오게 된다.
-
프락시 서버는 데이터를 캐싱해두기 때문에 직접 서버에 접근하여 데이터를 조회하는 것보다 속도가 더 빠르다
-
서버에 프락시를 두는 경우 (reverse proxy)

웹 서버의 load balancing을 돕는다. 예를들어 구글서버라하면 전세계에서 많은 클라이언트들이 서버에 접속하는데, 이는 load가 많기 때문에 proxy를 두면서 load balancing을 한다.
-
LAN Card (ethernet 카드, 무선 랜카드)
-
L1, L2

-
공유기
- Static Routing 지원. NAT 기능
- 스위치 내장
- 유/무선 인터페이스
- DCHP 서버 내장
- 다양한 기능이 탑제된 저가형 장비이다.
-
Transceiver