network
: 상호 연결되어 있는 것으로 이루어진 그룹이나 시스템.
상호 연결되어 있는 것을 점, 그들간의 관계를 선으로 표시한 것
Ex) 뉴런과 시냅스(neural network), 사람과 친분관계(social network) 등등..
내가 공부할 것은 이중에서도 컴퓨터
와 랜선
으로 이루어진 컴퓨터망!
inter-net
: inter-(사이)
+ network(점들을 선으로 연결한 덩어리)
(점들을 선으로 연결한) 덩어리 간의 연결!
Internet Protocol
: 네트워크를 연결하는 프로토콜(약속)
IP
는 Hourglass
모델의 허리 역할을 한다. 어떤 물리적 연결 기술이든 IP
만 구현하면 다양한 서비스(소프트웨어)를 돌릴 수 있고, 어떤 서비스를 구현하더라도 IP
위에서만 구현하면 다양한 물리적 연결 기술로 된 네트워크에서 동작 가능하다는 의미
단순화: 각 계층은 자기가 제공할 기능만 생각하면 된다.
문제 해결의 편의성: 문제가 있는 계층만 해결해주면 되고, 문제를 단순화 할 수 있음.
진화의 편의성: 각 계층은 바로 위 계층에 알려준 "어떻게 쓰는지"만 유지하면 됨. 이외에는 자유롭게 기능을 개선/추가할 수 있음
컴퓨터 네트워크에서 표준화된 프로토콜을 계층적으로 나누어 설명하는 개념적인 모델(실재X)
계층 구조에서 데이터를 처리하는 방법은 몇 겹의 포장 박스를 연상하면 쉽다. 데이터를 송신하는 측은 보내는 사람, 받는 사람을 기재한 더 큰 박스에 반복적으로 포장하여 큰 박스 형태로 송신하고, 수신하는 사람은 바깥쪽 박스를 제거하고 작은 박스를 꺼내 위 계층에 전달하는 방식으로 수신한다.
그렇다면 포장 시 각 박스에 기재하는 내용인 Port
, IP
, MAC
은 어떻게 알아내야 할까? Port
는 미리 정해놓고 쓰고, IP
는 정해진 IP
를 사용하거나 서버의 이름으로부터 알아낸다. MAC
주소는 ARP
라는 프로토콜을 사용하여 알아냄
입출입을 위한 관문! 접속할 서버가 다른 네트워크에 있다면? -> Gateway에 던져 놓고 맡긴다.
각 구간끼리 어떠한 데이터를 적어서 포장해주고, 포장한 박스를 게이트웨이에 던져주는 것은 OK. 그렇다면 A 게이트웨이는 어떻게 B 게이트웨이로 보내는 선택을 할까? -> Routing 과 Forwarding
Routing
: 길찾기! 내가 선택 가능한 경로가 어떤 게 있나? -> 속도만을 고려X 정책 기반!
Forwarding
: 전송하기! 선택 가능한 경로 중 하나를 골라서 데이터를 전송한다.
Latency
: a.k.a 지연, 딜레이 등등.. 높아지면 반응이 늦어진다는 느낌 줌
Jitter
: Latency
의 변화 정도 높아지면 자꾸 핑이 튄다는 느낌을 줌
네트워크에서의 Switch
는 근거를 통해 "이리로 가라" 명령-> 트래픽의 방향을 전환하는 것! 판단 근거는 해당 계층의 Header
가 됨. 또한 해당 계층의 숫자를 붙여서 L(계층 숫자) 스위치
라고 한다.
Ex) IP Packet 의 목적지 정보에 따라 출력 포트를 선택하는 장비가 있다. 이
장비는 같은 목적지라도 해당 패킷의 출처(=송신자) 가 사내인지 아니면
사외인지에 따라 다시 출력 포트를 조정한다. 이 장비는 넓게 봐서 어떻게
부르면 좋을까?
A. L3 switch
부연. 방화벽 장비 혹은 침입 탐지 시스템 (IDS; Intrusion Detection System)
등이 여기에 해당한다. 그들이 크게는 L3 스위치 기능을 가지고 있는 것이라는
것에 주목할 것
Switch
는 기능을 의미하는 것이지 물리적인 장치를 뜻하는 것이 아님을 유의! Cloud에선 대부분 소프트웨어를 통해 스위칭 기능을 제공한다.각 계층의 프로토콜이 할 수 있는 것과 할 수 없는 것은 무엇에 의해 결정될까? -> 헤더
검은색 부분이 Header
로, 각 프로토콜에서 전달하는 데이터는 헤더+데이터 형태
포장 박스에 쓰는 내용인 송신자 주소, 수신자 주소가 헤더에 들어간다. 이외에도 다른 정보도 포함!
Ethernet Frame
: 데이터 링크 계층에서 사용되는 네트워크 프레임 형식으로, 가장 널리 사용되는 유선 LAN 기술 중 하나이다.
동기화를 위한 프리앰블, 목적지와 출발지 MAC주소, 유형/길이, 전송 데이터, 패딩, 오류 검출을 위한 체크섬 값으로 이루어져 있다.
최대 데이터는 1500B
, 최대 용량을 초과한 데이터는 상위 계층에서 쪼개서 보낸다.
IP Packet
: 네트워크 계층에서 사용되는 네트워크 프레임 형식으로,
IP Packet
의 최대 길이는 Header
포함 64KB
-> 64KB
이상의 데이터는 상위 계층에서 쪼개서 보낸다.
Header
영역의 에러에 한해 제한적으로 에러 검출이 가능하고(효율성 문제), 전송을 보장하지 않는다.
하위 프로콜인 IP
를 전송 계층에서 사용하는 프로토콜로, IP 패킷 내부에 포함된 데이터를 전송하는 역할을 담당한다.
속도와 대역폭에서 이점
전송과 순서를 보장하지 않음
UDP
와 같이 전송 계층에서 데이터를 전송하기 위한 프로토콜이다.
전송과 순서를 보장 (손실 검사, 손실시 재전송)
흐름 제어와 혼잡 제어(속도를 천천히 늘려가며 전송) 내장
연결 확인과 종료 작업 필요 (연결 기반)
느린 속도
요약하면,
누락 되어도 상관없고 가급적 빨리 전송되어야 하는 것 -> UDP
(대신 패킷에 충분한 데이터를 넣어줌)
누락되면 안되는 데이터를 안정적으로 전송해야 한다? -> TCP
사용자들이 서비스를 요청하는 클라이언트와 해당 요청을 처리하고 콘텐츠를 제공하는 서버로 구성
서버는 대개 고성능의 컴퓨터로 구성되고, 클라이언트는 널리 보급된 장치들을 사용된다. P2P방식보다 보편적으로 널리 사용되는 방식
사용자들 간에 직접적인 연결을 통해 데이터를 공유하는 방식, 각각의 사용자는 동시에 클라이언트와 서버 역할을 수행할 수 있다.
토렌트 파일 공유가 대표적인 P2P 방식
Network Address Translation
: 이름에서 알 수 있듯 네트워크 주소를 통역해주는 것
사설 IP는 특정 네트워크 안에서만 유효하기에, 이 IP를 달고 있는 IP Packet
이 해당 네트워크를 벗어나기 위해서는 공용 IP or 목적지의 사설 IP로 변환해 줄 필요가 있다.
그 역할을 하는 것이 NAT 장치(소프트웨어도 가능)이고, NAT는 사설 네트워크와 공용 네트워크 간의 통신을 용이하게 하고, IP주소 부족 문제를 완화하는 데에 쓰인다.