Computer Network — 1. The Internet

이 글은2018년 2학기 아주대학교 Paul Rajib 교수님의 Computer Network 수업을 듣고 작성한 수업노트입니다. 일부 빠진 내용이나 오류가 있을 수 있습니다.

The Internet

인터넷(Internet)이란 서로 연결된 네트워크(Inter-connected Network)를 의미한다. 또 인터넷(the Internet)이란 용어는 일반적으로 표준 인터넷 프로토콜(TCP/IP) 기반으로 전세계 네트워크가 연결된 상태를 의미한다.

네트워크(Network)란 여러 인터넷기기가 서로 거미줄처럼 연결된 상태를 의미한다. 예를 들어 집에서 공유기 하나에 TV, 스마트폰, 노트북 등이 연결됐다면 공유기를 중심으로 하나의 네트워크가 형성된 것이다. 한 네트워크는 다른 네트워크의 요소와도 연결되서 통신이 가능하다. 우리집 컴퓨터에서 다른 사람들과 게임을 할 수 있는 것처럼 말이다. 인터넷을 통해 다른 네트워크와 통신할 수 있게 해주는 기능을 제공하는 게 ISP(Internet Service Provider)이다.

ISP는 서로 연결되어있으며 해당 ISP에 속한 장치가 같은 ISP나 다른 ISP와 통신할 수 있게 해준다. 또 A라는 ISP의 기기가 B라는 ISP의 기기와 통신이 가능하도록 중계해주기도 한다. 예를 들어 우리집 인터넷이 SKT라고해도 KT, LG 혹은 다른 나라의 네트워크에도 연결할 수 있게되는 것이다.

Protocol

프로토콜(Protocol, 통신 규약)이란 네트워크 상에서 두 기기가 통신을 할 때, 서로의 통신 내용을 이해하기위해 정한 규칙을 의미한다. 예컨데 두 사람이 만났을 때 한 사람은 한국어로, 한 사람은 중국어로 이야기한다면 서로 언어를 모를 때 대화할 수 없을 것이다. 그렇지만 서로 알고있는 언어인 영어를 사용하면 이 둘은 대화가 가능할 것이다.

프로토콜에는 세가지 중요한 요소가 있다. 바로 Syntax, Semantics, Timing이다.

Syntax

어느나라 말을 쓸 지에 해당한다고 보면 된다. 영어가 주어-동사-서술어같은 문법이 존재하듯, 기기간의 대화에서도 규칙과 문법이 존재하게 된다.

Semantics

해당 규칙과 문법 안에서 실제로 전달하고자 하는 내용을 의미한다. 이메일 서비스와의 통신이라면 “내 이메일 목록을 보여줘”(명령)이나, “이메일 목록이 없습니다”(메시지), 실제 이메일 내용 등이 Semantic에 해당한다.

Timing

두 사람이 서로 자기 할 말만 하거나, 서로의 말을 듣고있기만 한다면 대화는 불가능할 것이다. 어느 시점에서 누가 말하고 누가 들을 지 정하는 것이 바로 Timing이다. 한쪽이 먼저 말하면 반드시 대답을 해주어야 하거나, 주기적으로 말을 걸어서 확인하거나, 상대가 말을 걸 때까지 마냥 기다리거나, 프로토콜에 따라 타이밍 규칙이 정해져있다.

Layered Reference Model

서로간의 통신을 할 때 실제 통신 내용은 여러 단계를 거쳐 전달되지만 그 과정은 계층(Layer)로 나뉘고 추상화된다. 한국인이 중국인과 대화하는 예시를 들어보자.

한국인이 ‘철학적 사고’라는 말을 중국인에게 전달하려고 한다. 이 말은 Translation Machanism을 통해 중국인에게 ‘哲学思想’(사진과는 좀 다르지만…)로 바뀌어서 전달된다. 실제로 한 단계 더 내려가 보자 철학적 사고는 중국인이 알아들을 수 있는 언어인 ‘Philosophical thought’로 번역된다. 이를 중국인에게 전달하면 중국인은 이 영어문장 중국어로 바꿔서 이해할 수 있게 된다.

하지만 이 영어문장은 전화기를 통해서 목소리를 전기신호로 바꾼 후, 전파를 타고 중국인에게 전달된다. 전파라는 물리적인 수단을 통해서 실제로 중국인의 전화기로 전달되는 것이다. 이처럼 서로가 대화하기 위해서 한국인의 대화는 영어로 바뀌고, 이후에 전기신호로 다시 변경된다. 이후에 중국인이 이 전기신호를 이해하기 위해선 다시 전기신호를 영어로 바꾸고 영어를 중국어로 변경해야한다. 즉 정확한 대화를 위해선 서로가 같은 단계(계층)을 거쳐야 한다는 의미이다.

각 계층은 바로 위 계층 혹은 아래 계층으로 내용을 바꾸어 전달할 수 있으며, 전달할 상대의 같은 계층이 이해할 수 있는 내용을 갖고있게 된다. 위에서 영어 계층은 영어 말을, 전화계층은 전자신호를 상대와 주고받을 수 있다.

실제 네트워크 통신도 위 예시처럼 각 계층으로 나뉘어있으며, 실제로 상대에게 전달되기 전에 한 단계 낮은 계층으로 내려가며 전송할 내용이 상대 계층이 이해할 수 있는 내용으로 바뀌게 된다. 아래 계층으로 내려가는 것을 Encapsulation, 상위 계층으로 보내는 것을 Decapsulation이라고 한다.

이 계층 모델에는 OSI 7계층 모델과 TCP/IP 계층 모델이 있는데, 요즘에는 비교적 간단한 TCP/IP 계층 모델을 사용한다고 한다.

TCP/IP 5 Layer Model

http://www.dcs.bbk.ac.uk/~ptw/teaching/IWT/transport-layer/notes.html

상위 계층부터 살펴보자. Application Layer는 실제로 우리가 사용하는 응용 프로그램들이 데이터를 보내는 최상위 레이어이다. 이메일을 전송하는 예시를 생각해 보자. 이메일 텍스트, 사진 등이 보낼 내용에 해당하며 Application Layer에서는 이를 데이터(Data)라고한다. 이 데이터가 상대에게 전송되기 위해서는 Transport Layer로 내려가야 한다.

Transport Layer는 데이터의 Multiplexing, Demultiplexing을 지원하고 TCP를 이용해 순서제어, 손실관리 기능을 제공한다. TCP 기능은 추후 다른 글에서 서술

Transport Layer: Multiplexing, Demultiplexing

컴퓨터에는 네트워크 기능을 사용하는 여러 응용프로그램들이 동작하고 있다. 웹 브라우저, 이메일, 게임, 메신저 등 여러 프로그램이 다른 기기와 네트워크 통신을 할 때, 도달한 기기의 어떤 프로그램에게 데이터를 전송할지 구분할 수단이 필요하다. 아파트로 따지면 기기는 101동이며, 해당 프로그램이 몇 호에 있는 지 알 수 있어야 한다. 이를 포트 번호(Port Number)라고 한다. 0번부터 65535번까지 존재하며 0~1023번은 중요한 시스템 포트번호로 예약되어있다.

내가 메일 프로그램으로 메일을 전송할 때, Transport Layer를 거치면서 상대 기기의 메일 프로그램이 사용하는 포트번호(상대 아파트 호수), 그리고 내 메일 데이터가 나가는 포트번호(내 아파트 호수)가 추가된다. 이를 Multiplexing이라고 한다. 반대로 상대 아파트 경비아저씨가 내 메일을 받았을 때 포트 번호를 보고 내가 원한 주소로 메일을 갖다주게된다. 이를 Demultiplexing이라고 한다.

Transport Layer를 거치며 응용 프로그램이 보내는 Data에는 2개의 포트 번호가 추가되며, 전송되는 데이터는 이제 Segment라는 이름으로 불리게 된다.

Internet Layer

아파트 호수가 포트번호라면, 몇 동인지 어느 시 어느 구 동네인지 알 수 있어야 한다. 즉 보다 정확한 주소가 필요하다. 인터넷에서는 이를 IP주소(Internet Protocol Address)라 하며 이를 이용해서 상대방에게 찾아간다. Internet Layer에서 IP주소와 관련 데이터들이 Segment에 추가되며 패킷(Packet)으로 불리게된다.

Network Interfac: Data Link Layer, Physical Layer

주소가 서울시 종로구 창신동이라고 해도, 서울시는 어디고 종로구는 어디에 있는건지 알 수는 없을 것이다. 이런 주소를 논리적 주소(Logical Address)라고 한다. 이 주소는 가상의 주소이므로 언제든 사라지거나 바뀔 수 있다. 하지만 전달하려면 실제 위치, 즉 물리적 주소를 알아야 한다. 현실세계에서는 위경도가 이에 해당하며, 컴퓨터는 MAC주소(Media Access Control Address)가 이에 해당한다.

Data Link Layer는 Internet Layer에서 내려온 패킷의 IP주소를 보고 이를 실제로 MAC주소를 찾아서 다른 기기로 전달해주는 역할을 한다. 관련 데이터가 추가되며 Data Link Layer에서는 이름이 프레임(Frame)으로 불린다. 마지막으로 Physical Layer는 이러한 데이터가 실제 2진 전기 신호(Bit)로 바뀌며 케이블이나 전파로 전달되는 것을 말한다. 이 두 레이어를 Network Interface Layer라고 한다.

내가 보내는 이메일은 이렇게 레이어를 거치며 포트 번호가 추가되고, IP 번호가 추가되고 여러 네트워크 기기를 통과하며 상대방에게 전달되게 된다. 택배로 따지면 IP주소까지는 집주소고, Network Interface는 택배가 트럭을 타고 여러 택배 집하장을 경유하며 도달하는 예시로 생각하면 될 것 같다.

네트워크 상의 여러 기기들은 위 사진처럼 IP, MAC주소를 이용해 최종적으로 알맞은 기기를 찾아간다. 그렇게 전달된 패킷은 포트 번호를 통해 응용 프로그램으로 전달되고 상대방이 내 이메일을 볼 수 있게 된다.

Written by

2020.12.8 ~ 2022.6.9 군복무중 Serving in the South Korean Military Service

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store