[전공 시리즈] 0. 소개
🔰작성 동기 예전에 정말 열심히 공부했었지만.. 시간이 지날수록 까먹어서 복습을 위해 시리즈를 계획했다. 전공 공부를 하면서 필기한 내용을 바탕으로 이야기하듯 풀어나갈 예정이다. 주로
nan-noo.tistory.com
🔰서론
브라우저에 URL을 입력했을 때..
"브라우저에 URL을 입력했을 때 어떤 일이 일어날까요?"라는 유명한(?) 면접 질문이 있다. 그래도 네트워크 공부를 해 봤다면 DNS를 통해 IP 주소를 알아내고, IP 주소를 통해 HTTP, TCP, IP 등등의 프로토콜을 거쳐서 서버와 통신하고.. 어쩌구저쩌구.. 이런 것이 떠오를 것이다. 앞에서 말한 것 말고도 많은 개념을 알아야 이 질문에 대해 어느 정도 답할 수 있다!
이번 포스팅에서는 인터넷이 무엇인지, 프로토콜이 무엇인지, 또 계층화 원칙은 무엇인지 알아볼 것이다.
🔰인터넷이란?
Inter(사이) + Net(네트워크)
인터넷은 한마디로 네트워크들의 네트워크다. 앞의 네트워크는 Wifi, LTE, Ethernet, PPP 등의 통신 기술들(LAN)을 의미한다. 이 통신 기술들은 서로 호환되지 않는다. Wifi만 쓰던 기기에 Ethernet 을 연결해봤자 작동이 안 된다는 말이다. (지금 시리즈에서는 데이터 통신 영역은 다루지 않을 예정이라 간단히 넘어갑니당) 따라서 하나의 통신 기술로는 전 세계를 연결할 수 없다!
이 문제를 해결하기 위해서는 모든 통신 기술들 간에 번역기가 있어야 한다. 그렇지만 한국어와 영어, 한국어와 일본어, 영어와 일본어 번역기, 등과 같이 모든 통신 기술 쌍에 대해서 번역기가 필요하다. 또 새로운 통신 기술이 추가된다면 그에 대한 번역기도 모두 추가해야 한다. 이 방법은 O(n^2)의 복잡도를 가지고 따라서 scalability 문제가 발생한다.
가장 간단한 방법은 공통 기술을 개발하는 것이다. 공통 기술이 있으면 공통 기술과만 호환되면 되므로 O(n)의 복잡도로 줄어든다. scalability 문제 해결! 이 공통 기술이 바로 IP(Internet Protocol)다. IP(3계층)는 모든 통신 기술(2계층) 위에서 동작한다. 그리고 router(라우터)에서 IP를 통해 서로 다른 통신 기술 간에 연결할 수 있도록 한다. (IP에 관한 구체적인 설명은 IP 챕터에서..!)
엄밀히 말하면 IP는 번역기가 아니다. IP 데이터그램을 통신 기술 A 프레임에 싣고 라우터에 오면, 라우터가 다음 통신 기술 B에 해당 데이터그램을 실어 보내는 것이다. 이 과정에서 통신 기술의 프레임에 IP 데이터그램이 실려 있음을 표시해야 하므로 캡슐화(encapsulation)가 필요하다.
이제 어떤 기술이든 모두 연결이 가능해졌다! 모두가 인터넷을 통해 소통할 수 있게 되었다 :D
여담으로, 인터넷 직경은 약 30 링크(hops)라 한다. 콘솔에 tracert나 traceroute <URL>로 확인할 수 있다.
🍎 인터넷의 구조
인터넷은 많은 데이터들이 오가는 Internet Backbone과 ISP(Internet Service Provider)들로 이뤄져 있다. 사용자들은 ISP에 접속하여 인터넷을 사용한다.
이 ISP들도 계층 구조로 되어 있으며, Tier 1 ISP는 Internet Backbone과 연결되어 있고 그 외 ISP는 Tier 1 ISP와 연결되어 있다. ISP는 라우터들로 구성되어 있다.
Internet Backbone과 가까울수록 Network core라 부르고, 가장자리에 있으면(인터넷 사용자와 가까우면) Network edge라 부른다. 엣지에는 호스트(클라이언트와 서버) 등이 속한다.
🔰프로토콜
특정 목적 + 둘 이상의 당사자 + 엄밀한 약속
표준 국어 대사전에는 이렇게 써져 있다. '컴퓨터와 컴퓨터 사이, 또는 한 장치와 다른 장치 사이에서 데이터를 원활히 주고받기 위하여 약속한 여러 가지 규약(規約)' 이 규약에는 신호 송신의 순서, 데이터의 표현법, 오류 검출법 따위가 있다.' 간단하게 통신을 위해 정한 약속, 규약이라 생각하면 될 것 같다.
인터넷에서 사용되는 여러가지 프로토콜들은 IETF(Internet Engineering Tast Force)에서 표준화하고 IESG(Internet Engineering Steering Group)에서 승인하고, RFC(Request For Comment) 문서로 아카이빙한다.
프로토콜은 제대로 된 소통을 위해서 메시지 형식(format), 메시지 교환 순서(correct orders of message exchange), 내부적 행동(internal action) 세가지를 정의해야 한다. 각각 설명하면, 메시지 형식은 언어에서 문법처럼 프로토콜의 문법을 의미한다. "사과가 필요해요."라는 말을 "필요 가 사과 하다요"라고 말하지 않듯이 말이다. 메시지 교환 순서는 말 그대로 메시지 형식은 잘 지켰어도 아무렇게나 보내면 안되고 순서에 맞게 보내야 한다는 것을 의미한다. 누군가 "지금 몇시죠?"라고 물으면 "8시에요."가 적절하지 반대는 말이 안 된다. 마지막으로 내부적 행동은 어떤 메시지를 받으면 내부적으로 어떤 동작을 해야 한다는 것을 의미한다. 아무 의미 없이 메시지를 보내는 경우는 없다!
프로토콜 분류 기준
양방향(duplex)과 단방향(simplex)
동시 양방향(full-duplex)은 LTE, 5G 등이 있고, half-duplex(일정 시점에는 한 방향인 것을 의미한다.)는 Ethernet 등 대부분의 무선 통신이 속한다. 단방향은 공중파 방송 등이 있다.
연결지향(connection-oriented)과 비연결(connectionless)
연결지향은 데이터 교환 전에 '연결(connection)'이 필요한 것을 의미한다. 비연결은 그 반대다. IP 등이 비연결 프로토콜에 속한다.
패킷 교환(packet switching)과 회선 교환(circuit switching)
패킷 교환은 데이터가 패킷(frame, datagram, segment, message, ...)으로 전송되는 것을 의미하고, 회선 교환은 데이터가 전기 신호처럼 연속적으로 전송되는 것을 의미한다. 이 방식은 end-to-end 회선이 모두 한 사용자에게 할당된다는 특징(no sharing)이 있다. 인터넷은 패킷 교환 방식이다.
패킷 교환 방식(인터넷) | 회선 교환 방식(과거 전화 교환 방식) |
리소스가 한정적이면 서비스 퀄리티를 보장하기 어렵다. best-effort |
서비스 퀄리티를 보장한다. |
라우팅 속도는 물리 계층의 스피드에 달려 있다(line speed). | 전화가 도착하고 통화 시작까지 라우팅 시간이 더 오래 걸린다. |
필요할 때만 네트워크 자원을 사용한다. | 통화 내내 리소스를 차지하고 있다. |
따라서 효율이 높고 파일 전송과 같은 bursty 트래픽에 유용하다. | 따라서 비효율적이지만, 원만한 트래픽일 때는 유용하다. |
패킷 로스가 발생할 수 있다. | 할당받은 리소스 내에서 로스가 발생하지 않는다. |
우리는 앞으로 TCP/IP suite(또는 IP suite)라 불리는 'IP를 중심으로 한 인터넷에서 사용되는 프로토콜들의 집합'을 공부할 것이다.
그런데, 이 수많은 프로토콜을 어떻게 조직할까?
🔰계층화 원칙
한 주체가 모든 과정을 책임질 수 없다.
계층화 원칙(layering principle)은 하나의 프로토콜이 모든 통신 과정을 책임질 수 없기 때문에 필요하다. 프로토콜들을 여러 계층으로 나누어 자기 계층의 바로 위/아래 계층과만 소통하도록 인터페이스를 구성한다. 이렇게 하면 모듈화가 가능하다. 어떤 프로토콜의 사양이 변경되면 해당 프로토콜이 속한 계층만 수정하면 된다. 또한 각각의 계층 역할이 분리되어 있으므로 설계도 편리하다.
생활 속 계층화 예를 들어보면 이해가 쉽다. 해외 쇼핑몰에서 옷을 구매했을 때 해당 쇼핑몰이 배송 과정을 모두 담당하지 않는다. 쇼핑몰은 해외 배달 업체에 상품을 맡기는 역할이다. 해외 배달 업체는 국내로 배달하고, 국내 배달 업체를 통해 비로소 상품이 소비자에게 도착한다. 소비자와 해외 쇼핑몰은 상품 소비/판매 계층이고 해외 배달 업체와 국내 배달 업체가 배달 계층이라 볼 수 있다.
인터넷 계층 모델에는 두 가지가 있다. 교과서적인 모델인 OSI(Open Systems Interconnect) 7 Layer와 실제 사용되고 있는 TCP/IP 5 Layer이다. 실제 쓰이고 있는 게 더 중요하기 때문에 TCP/IP 모델을 설명할 것이다.
TCP/IP가 5계층이 아니라 4계층으로 설명하는 곳도 있는데, 이 시리즈는 내가 전공 수업 때 배운 내용을 바탕으로 정리하는 것이기 때문에 5계층으로 설명할 것이다.
🔰TCP/IP 5 Layer
물리 계층, (데이터) 링크 계층, (인터)네트워크 계층, 트랜스포트 계층, 응용 계층이 있다. 앞에서부터 차례대로 1계층, 2계층, 3계층, 4계층, 5계층이다.
1계층 - 물리 계층(Physical Layer)
말 그대로 물리적인 요소를 포함한다. 링크의 물리적 매개체(physical medium)에 자연 현상을 이용해서 이진 정보를 표현하는 계층이다.
매개체와 자연현상 예시) 구리선(전압), 공간(전자기파), 광섬유(빛), 물(음파), 등등
HW(통신 NIC - Network Interface Card)로 처리한다.
2계층 - (데이터) 링크 계층(Data Link Layer)
한 링크(두 통신 장비 사이)에서 프레임을 전달하는 역할이다. 앞에서 설명한 것처럼 Ethernet 등은 인터넷보다 먼저 존재한 기술이다(인터넷의 '넷(net)'이 이 계층에 속한 기술들을 의미한다). 흐름 제어, 에러 제어, 프레임 구성(framing), 매체 접근 제어(MAC - Media access Control) 등의 기능을 한다.
CRC(Cyclic Redundancy Check)나 MAC 프로토콜 등은 HW(통신 NIC)에서 처리하고, 나머지는 SW(OS kernel)로 처리한다. 아래 절반은 하드웨어, 위에 절반은 소프트웨어라 생각하면 된다.
3계층 - 네트워크 계층(Network Layer), 인터넷 계층(Internet Layer)
'넷(net)'간의 호환성 문제를 해결하고 각각의 '넷'을 연결한 계층이다. 임의의 기기 A에서 임의의 기기 B까지 연결(connectivity)을 제공한다. 또, A에서 B까지의 경로를 계산한다. A부터 B까지 배달하는 역할은 IP가 하고, 경로 계산은 라우팅 프로토콜(routing protocol)이 한다.
역시 OS kernel에서 처리한다.
4계층 - 트랜스포트 계층(Transport Layer)
데이터를 전송하는 계층이다. 3계층의 IP와는 배달 구간이 다른데, 4계층의 프로토콜은 A 기기의 a 프로세스부터 B 기기의 b 프로세스간 통신을 담당한다. 다시 말하면 프로세스 간 통신(IPC - InterProcess Communication) 툴이다.
OS kernel에서 처리한다.
5계층 - 응용 계층(Application Layer)
요청, 응답, 정보 제공 등 애플리케이션이 필요로 하는 처리를 담당한다.
애플리케이션 SW 내부에 함께 구현되어 있다. 커널 프로그램과 애플리케이션 프로그램은 별도의 프로그램이기 때문에 소통하기 위한 인터페이스가 필요하다.
🔰캡슐화와 멀티플렉싱
각각의 계층의 역할에 관해선 위에서 알아보았다. 그런데 계층마다 공통으로 해줘야 하는 역할이 있다. 바로 캡슐화(encapsulation)와 멀티플렉싱(multiplexing)이다.
캡슐화
각각의 프로토콜은 자신이 맡은 배달 구간의 배달을 시작할 때(송신) 자신만의 헤더(header)를 붙인다. 이를 encapsulation이라 한다. 그리고 배달 구간의 배달이 끝나면(수신) 앞서 붙인 헤더를 제거하고 페이로드(payload)만 상위 계층에 전달한다. 이를 decapsulation이라 한다.
왜 이런 과정을 거칠까? 배달이 시작되는 곳에서 헤더를 붙이고 그 헤더를 계속 사용하면 안 될까? 사실 불가능하다. 우선 하위 계층은 상위 계층에서 받은 데이터의 구체적인 내용을 해석할 수 없다. 그냥 데이터 '덩어리'로 인식한다. 굳이 알 필요 없이 자기 계층의 역할만 수행하면 된다. 편지에 주소 적듯이 수신측 프로토콜(자신과 같은)이 해석할 때 필요한 정보를 헤더에 넣어(encapsulation) 보낸다. 각각의 계층마다 필요한 정보가 다르기 때문에 헤더도 다르다. 수신측 프로토콜들은 수신한 패킷의 헤더로부터 필요한 정보를 얻고 적절한 상위 계층 프로토콜에 헤더를 제거한(decapsulation) 데이터를 올려보낸다.
각 계층의 패킷을 위에서부터 차례로 message, segment, datagram, frame이라 부른다.
🍎 패킷(packet)이란?
패킷은 데이터를 전송하는 단위(transmission unit)이다. 이진 데이터를 n bits의 작은 조각으로 쪼갠 것이 바로 패킷이다.
네트워크 전송률(transmission rate; = link capacity, link bandwidth)을 R이라 했을 때, 패킷 전송 딜레이는 n/R [sec]이다.
패킷을 전송할 때 세가지 특징이 있다(패킷 교환 방식).
1. store & forward: 라우터에 패킷의 모든 비트가 온전히 도달한 후에야 다음 링크로 전달될 수 있다.
2. queueing & loss: 패킷이 라우터에 도달하는 것이 다음 링크로 전달되는 것보다 많을 때 두 가지가 가능하다. 큐에서 대기할 수 있고, 메모리 버퍼가 가득 찼을 경우엔 패킷을 잃어버릴 수 있다.
3. routing & forwarding: 라우팅 알고리즘에 의해 라우팅 테이블을 결정하고, 패킷 정보와 라우팅 테이블을 이용해서 아웃풋 링크를 알아낸다. 그리고 라우터 인풋에서 아웃풋으로 패킷을 이동시킨다.
패킷 캡처(packet capture)를 사용해서 패킷 내용을 직접 볼 수도 있다! Wireshark라는 프로그램이 유명하다.
멀티플렉싱
각 계층마다 프로토콜이 하나만 존재하는 것이 아니다. 그리고 하위 프로토콜은 상위 프로토콜 여럿을 서비스하고 있다. 하나의 하위 프로토콜을 통해서 여러 상위 프로토콜 데이터를 보내는 것을 multiplexing이라 한다. 그리고 하위 프로토콜이 여러 상위 계층 프로토콜에 데이터를 배달하는 것을 demultiplexing이라 한다.
그런데, A 프로토콜이 전송한 패킷은 A 프로토콜이 수신해야 한다(peering). 이를 위해 송신할 때 헤더에 상위 프로토콜의 번호를 적어 배달한다. 수신측에서는 헤더의 프로토콜 번호를 보고 적절한 상위 프로토콜로 올려보낸다.
🔰정리
- 인터넷은 네트워크들의 네트워크다.
- 라우터에서 공통 기술(IP)을 통해 서로 다른 통신 기술을 연결해주기 때문에 인터넷이 가능해졌다.
- 프로토콜은 통신을 위해 정한 규약이고, 메시지 형식과 교환 순서, 내부적 행동을 정의해야 한다.
- 모듈화의 이점을 위해 프로토콜은 계층 모델에 따라 분류된다.
- 캡슐화와 멀티플렉싱을 거쳐서 데이터를 배달한다.
첫 블로그 포스팅이어서 열심히 써 봤다! 그림도 직접 그렸다 :D
다음장은 데이터 링크 계층과 인터페이스, 그리고 ARP다.
'CS > Network' 카테고리의 다른 글
[전공 시리즈] 4. 라우팅 프로토콜(Routing Protocol) (0) | 2023.04.17 |
---|---|
[전공 시리즈] 3. IP(Internet Protocol) (0) | 2022.12.23 |
[전공 시리즈] 3.1. IP 주소 체계 (0) | 2022.12.12 |
[전공 시리즈] 2. 데이터 링크 계층과 인터페이스, ARP(Address Resolution Protocol) (0) | 2022.12.06 |
[전공 시리즈] 0. 소개 (0) | 2022.12.01 |