[Network] 인터넷 프로토콜

dondonee·2023년 12월 9일
0
post-thumbnail

인터넷

인터넷이란

인터넷이란 데이터를 교환할 수 있도록 인터넷 프로토콜이라는 통신 규칙에 따라 연결된 글로벌 네트워크이다.


네트워크

컴퓨터 네트워크란 데이터를 교환할 수 있도록 연결된 컴퓨터들의 집합이다. 여기서 말하는 컴퓨터는 데스크탑이나 휴대폰 뿐 아니라 프로그램을 실행할 수 있는 모든 장치를 말한다.

가장 간단한 네트워크는 두 대의 컴퓨터를 연결한 것이다. 연결된 컴퓨터가 여러 대라면 연결 방식(topology)도 여러 가지가 존재한다.


네트워크의 종류

네트워크는 범위에 따라 LAN과 WAN으로 분류할 수 있다.

LAN (Local Area Network, 근거리 통신망)

LAN은 가정이나 사무실처럼 제한된 공간에서 사용하는 네트워크다. 컴퓨터가 두 대여도 하나의 네트워크로 연결되어 있다면 역시 LAN이라 할 수 있다.

WAN (Wide Area Network, 광역 통신망)

인터넷 서비스 제공자(ISP, Internet Service Provider)에 의해 구축된 네트워크이다. LAN과 LAN을 연결하는 광범위한 네트워크이며, 인터넷도 WAN이다.

  • ISP: KT, U+, SK 브로드밴드 등
  • 인터넷에 연결되어 있지 않은 네트워크도 인터넷 프로토콜을 사용해서 통신하는 경우가 많다. 인터넷 프로토콜이 잘 만들어진 규칙이기 때문이다.


인터넷 연결

인터넷 프로토콜 스위트

사람과 사람이 소통할 때 같은 언어를 사용해야 하듯이, 컴퓨터들이 소통하기 위해서는 동일한 통신 규칙(프로토콜)을 사용해야 한다.

인터넷은 인터넷 프로토콜이라는 공통의 규칙을 통해 서로를 연결한다. 인터넷이 사용하는 프로토콜은 많은 종류가 있고 이들의 모음을 인터넷 프로토콜 스위트(Internet Protocol Suite)라고 한다. 가장 대표적인 것이 TCP/IP이기 때문에 TCP/IP 모델이라고도 한다.

인터넷 프로토콜 스위트는 가장 물리적인 수준부터 사용자에게 가까운 가장 논리적인 수준까지 네 개의 계층으로 구분된다. 가장 밑의 링크 계층은 두 개의 계층으로 나누어 총 다섯 계층으로 설명되기도 한다.

송신 측이 보내는 데이터는 애플리케이션이 위치한 응용 계층부터 물리 계층까지 하나씩 내려가며 각 계층에서 필요한 부가 정보인 헤더(header)가 덧붙여진다. 이러한 과정을 캡슐화라고 한다.

송신 데이터는 최종적으로 전기 등의 물리적 신호로 변환되어 목적지 컴퓨터로 전달된다. 수신 컴퓨터는 이 물리적 신호를 받아 응용 계층까지 올라가며 헤더를 하나씩 해석하며 제거한다. 이것을 역캡슐화라고 한다.

이러한 캡슐화와 역캡슐화는 동일한 규칙(프로토콜)에 따라 이루어진다. 링크 계층부터 하나씩 살펴보자. (주로 수신 측의 입장에서 서술하겠다.)


링크 계층

링크 계층은 컴퓨터의 물리적 연결에 관한 것이다.

연결 매체

a. 동축 케이블

인터넷 등장 이전에 존재했던 일반 전화기 시스템은 구리 선으로 연결되어 있었다. 때문에 인터넷도 처음 등장했을 때 기존에 있던 것을 쓴 것이다. 랜선의 내부를 보면 서로 꼬아진 전선이 네 개의 쌍으로 이루어져서 트위스트 페어 케이블(twisted pair cable)이라고도 한다.

컴퓨터는 랜선을 통해 전기 펄스(맥박)으로 일련의 정보를 보낸다. 컴퓨터는 이 신호를 받아 0과 1로 된 바이너리 데이터로 변환한다.

랜선은 회사 등 소규모 네트워크(LAN)부터 대규모 네트워크(WAN)에서 모두 사용된다. 랜선도 종류가 많으며 가격과 성능도 천차만별이다.

b. 광섬유 케이블

랜선이 전기 펄스를 전송하는것과 달리 광케이블은 빛 펄스를 통해 바이너리 데이터를 전달한다. 랜선보다 초당 전송할 수 있는 데이터가 훨씬 많다.

해저 케이블. Image source: OIST, Flickr

해외간 네트워크는 해저 케이블로 연결되어 있는데 이때 광케이블이 사용된다. 광케이블의 가격이 저렴해지면서 지역 네트워크에서도 보편화되고 있다.

c. 무선 전파

무선 공유기를 사용하면 케이블 없이 무선 전파로 컴퓨터들을 연결할 수 있다. 물론 공유기 장치는 케이블로 연결되어있어야 한다.

무선 전파는 사무실과 같이 장애물이 많은 환경에서는 20~30 미터, 장애물이 없는 넓은 곳에서는 최대 300미터 정도까지 연결할 수 있다.


관련 프로토콜 - Ethernet, Wi-Fi

a. 이더넷(Ethernet)

송신 컴퓨터가 보낸 물리 신호들은 수신 컴퓨터의 메인보드에 내장된 LAN 카드에서 0과 1로 이루어진 바이너리 데이터로 변환된다. 이 때 랜에서 사용하는 프로토콜이 이더넷이다.

컴퓨터는 랜선으로 직접 연결되는 것은 아니고 허브나 스위치를 통해 연결된다. 이러한 중간 장치를 통해 여러 대의 컴퓨터가 연결될 수 있는데, 이더넷은 MAC 주소를 통해 목적지를 찾아주고 여러 컴퓨터의 통신이 충돌하지 않도록 하기도 한다.

  • MAC 주소(Media Access Countrol Address): 랜 카드가 제조될 때 부여받은 물리적 주소. 전세계에서 유일한 번호로 되어있다.

b. 와이파이(Wi-Fi)

와이파이는 근거리 무선 통신망에서 많이 사용되는 프로토콜이다. 무선 랜(WLAN)에 연결하기 위해서는 와이파이 프로토콜을 이해할 수 있는 랜 카드가 있어야 한다.

케이블로 연결되어있지 않기 때문에 침입자가 데이터를 가로채기 쉬워 이더넷에 비해서 안전성이 떨어진다.


인터넷 계층

인터넷 계층은 네트워크 간의 통신을 담당하는 계층이다.

링크 계층은 동일 네트워크 내에서의 통신만을 담당한다. 다른 네트워크의 컴퓨터와 통신하기 위해서는 라우터(router)라는 추가적인 장치와 라우터에서 사용할 프로토콜이 필요하다.

LAN 통신의 경우 동일한 네트워크이기 때문에 MAC 주소 만으로도 목적지 컴퓨터를 찾을 수 있었다. 하지만 다른 네트워크에 정보를 보내려면 어떤 네트워크의 어떤 컴퓨터인지를 구분할 수 있는 별도의 주소 체계가 필요하다. 이것이 IP 주소이다.

송신 컴퓨터는 목적지 IP 주소 뿐 아니라 응답을 받을 수 있도록 자신의 IP 주소와 다른 부가 정보도 함께 보낸다. 이러한 정보를 생성하고 해석하기 위해 필요한 규칙이 IP(Internet Protocol)이다.


IP 주소 - IPv4, IPv6

IP 프로토콜은 두 가지 버전이 있다.

  • IPv4 : 기존 버전
  • IPv6 : IPv4와 호환되는 새 버전

IPv4

우리에게 익숙한 IPv4 부터 살펴보자.

74.125.20.113

위 예시처럼 IPv4의 주소는 .으로 구분된 네 부분으로 구성되어 있고, 각 부분은 10진수로 0~255까지의 범위를 갖는다.

IPv6

2001:0db8:0000:0042:0000:8a2e:0370:7334

IPv4는 2의 32승, 약 43억 개의 IP를 할당할 수 있지만 전세계적으로 인터넷이 보급되자 사용 가능한 주소가 고갈되기 시작했다. 때문에 IPv6라는 새로운 버전이 개발되었다.

IPv6는 16진수를 사용하며 8개의 부분으로 구성되어 있다. IPv6이 할당할 수 있는 IP 주소는 2의 128승으로, 실질적으로 무한대에 가까운 주소를 할당할 수 있다.

아직은 두 버전을 병용하고 있는데, 이후에는 IPv6을 사용하게 될 것이다.


IP 주소 - 동적 IP 주소, 정적 IP 주소

동적 IP 주소

LAN 통신에서 컴퓨터를 식별하기 위해 사용되는 MAC 주소는 랜 카드가 제조될 때 부여받은 물리적 주소이기 때문에 변하지 않는다. 반면 IP 주소는 같은 컴퓨터를 사용해도 오늘과 내일의 IP 주소가 다를 수 있다. 또한 와이파이를 변경해도 새로운 IP 주소를 부여받게 된다. 각 와이파이 공급자는 자신이 할당할 수 있는 IP 주소 범위가 있기 때문이다.

인터넷 회사(ISP)는 사용자 컴퓨터에게 동적으로 주소를 부여한다. IP 주소는 A, B, C, D, E 클래스로 나누어져 대상의 특성에 맞게 부여된다.

  • 현재 필자는 도서관에 있는데 IP 주소를 확인해보니 대규모 네트워크인 A클래스로 확인된다 😀

또한 IP 주소는 공인 IP 주소와 사설 IP 주소로 나누어져 있다. 각 네트워크의 모든 컴퓨터마다 IP 주소를 부여할 수 없기 때문에 ISP는 네트워크마다 공인 IP 주소를 부여하고, 각 네트워크는 사설 IP 주소 범위를 사용하여 자신에게 연결된 컴퓨터에 IP 주소를 부여한다.

  • 예를 들어 소규모 네트워크를 위한 C클래스의 경우 공인 IP 주소로 사용할 수 있는 범위가 192.0.0.0 ~ 192.167.255.255, 192.169.0.0 ~ 233.255.255.255이고, 사설 IP 주소의 범위는 192.168.0.0 ~ 192.168.255.255이다. 따라서 일반 가정에서 접속한 경우 네트워크의 공인 IP 주소는 알 수 없지만 로컬 네트워크 장비에 의해 컴퓨터에 부여된 사설 IP 주소는 192.168.x.x일 것이다.

정적 IP 주소

Google.com를 작동시키는 구글 서버처럼, 서버 컴퓨터들은 정적 IP 주소를 사용한다. 고정된 주소를 사용하여 다른 컴퓨터들이 빠르게 접근할 수 있게 하기 위해서다.


라우팅 경로

인터넷에서 데이터는 직행이 아니라 여러 노드(컴퓨터)를 경유하므로 목적지까지의 경로는 여러 가지가 있을 수 있다. 라우터는 목적지 IP 주소까지의 경로를 정해준다.

이러한 인터넷의 경로 중복성(redundancy) 덕분에 인터넷 시스템의 불완전성과 실제로 시스템을 파괴하고자 했던 몇 번의 시도에도 불구하고 지금까지 누구도 인터넷을 완전히 파괴하지 못했다.


관련 프로토콜 - IP

전송 데이터는 아주 작을 수도 있고 거대한 정보일 수도 있다. 그러나 물리적 연결에서 한 번에 전송할 수 있는 양은 한계가 있기 때문에 대부분의 프로토콜은 데이터를 작은 단위로 분할하여 전송한다.

IP(프로토콜)는 데이터를 IP 패킷(packet)이라는 작은 단위로 쪼개서 전송한다. 모든 패킷은 헤더(header)라는 패킷 라우팅에 도움이 되는 여러 정보를 함께 담아 보내진다. 목적지 IP 주소 뿐 아니라 응답을 받기 위해 송신 측의 IP 주소, 패킷 길이 등이 포함된다.


전송 계층

IP 주소를 통해 데이터는 목적지 컴퓨터에 도달할 수 있다. 그런데 두 가지 문제가 있다.

  1. IP는 목적지를 찾는 기능을 할 뿐 데이터를 정확히 전송하는 기능은 없다.
  2. 목적지에 도달한 데이터는 사용자의 어느 애플리케이션을 위한 데이터인지 알 수 없다.

이러한 문제를 해결하는 것이 전송 계층의 역할이다. 첫 번째 문제부터 하나씩 살펴보자.

관련 프로토콜 - TCP

IP는 메시지를 어떻게 패킷으로 나누고 어떻게 자신의 네트워크를 뛰어넘어 목적지로 전송할 것인지에 대한 규칙이었다.

그러나 IP는 패킷이 잘 도달했는지에 대해서는 보장하지 못한다. IP 패킷은 전송 도중에 순서가 뒤바뀔 수도 있고, 손상될 수도 있고, 유실될 수도 있지만 수신 측 컴퓨터로서는 데이터가 올바르게 도착했는지 알 도리가 없다.

이러한 문제를 해결하기 위해 IP는 TCP(Transmission Control Protocol)와 함께 사용된다. 그래서 TCP/IP처럼 묶여서 불리기도 한다.

연결형 통신

연결형 통신은 정확한 데이터 전달을 위해 상대 컴퓨터와의 연결을 확인하면서 통신하는 것을 의미한다. TCP는 3-way-handshake를 통해 연결을 확인한다.

  1. 클라이언트는 서버에게 동기화 여부(SYN)를 묻는다.
  2. 서버는 연결 확립 응답(ACk)과 함께 클라이언트에게도 동기화 여부(SYN)를 확인한다.
  3. 클라이언트도 확인 응답(ACk)을 보내면 연결이 완전히 연결된 것이다.

연결을 종료할 때는 서버가 FIN을 보내고 클라이언트는 확인 응답(ACK)을 보내면 완료된다.

TCP 세그먼트

TCP는 IP 패킷에 자신이 필요한 정보(헤더)를 덧붙인다. 이렇게 TCP 통신을 위해 만들어진 하나의 캡슐을 TCP 세그먼트(segment)라고 한다. 3-way-handshake에 사용되는 SYN, ACk와 같은 정보도 여기에 포함된다.


관련 프로토콜 - UDP

TCP는 신뢰할 수 있는 데이터를 전달하지만 과정이 매우 복잡하기 때문에 속도가 느리다.

UDP(User Datagram Protocol)는 TCP와 대비되는 가벼운 프로토콜이다. TCP처럼 기능이 많지 않기 때문에 연결을 매번 확인하지도 않고 패킷의 순서를 보장하지도 못한다. 따라서 UDP를 신뢰할 수 없는 데이터 프로토콜(Unreliable Data Protocol)이라고도 한다.

그러나 UDP는 빠르다. 실시간 스트리밍 등 데이터의 정확성보다 속도가 중요한 경우에 사용된다.


포트 번호

IP를 이용한 첫 번째 문제였던 정확성은 TCP를 통해 해결했다. 정확성보다 속도가 중요한 경우 더 빠른 UDP를 사용했다.

이제 두 번째 문제가 남았다. 도착한 데이터는 어떤 애플리케이션에 필요한 것인지 어떻게 알 수 있을까? 사용자는 하나의 애플리케이션만 사용하는 것이 아니기 때문에 세그먼트는 자신이 최종적으로 도착해야 할 애플리케이션 주소가 필요하다. 이것이 포트(port) 번호이다.

TCP/UDP 세그먼트는 출발지 포트 번호와 목적지 포트 번호를 가지고 있다. 각 헤더는 16비트이므로 포트 번호의 범위는 0~65535이다.

잘 알려진 포트(well-known ports)

0~1023번 포트는 일반적으로 사용되는 네트워크 시스템을 위해 미리 지정되어 있는 포트이다. IP 주소 등 인터넷 할당 번호를 관리하는 기관인 IANA(Internet Assigned Numbers Authority)에서 지정한 것으로 강제되지는 않지만 사용하지 않는 것이 좋다.

  • FTP : 20, 21
  • TELNET : 23
  • HTTP : 80
  • HTTPS : 443

등록된 포트(registred ports)

1024~49151번 포트는 IANA에 등록된 포트이다. 혼선을 막기 위해 지정된 기본 포트이며 필요에 따라 변경 가능하다.

  • MySQL : 3306
  • Tomcat : 8080

응용 계층

응용 계층은 사용자와 가장 가까운 계층이다. 전송 계층에서 전달 받은 데이터를 애플리케이션에 맞는 형태로 변환한다.

가장 대표적인 프로토콜로 웹 통신에서 사용하는 HTTP가 있다. 사용자가 웹 브라우저를 통해 데이터를 요청하고 응답받기 위해 HTTP 헤더를 포함하는 HTTP 메시지가 사용된다.

  • HTTP는 주로 TCP 기반으로 동작하며 HTTP/3 버전 부터는 UDP를 사용한다.

그 외에 파일을 전송하고 받기 위해서 사용되는 FTP, 메일을 전송할 때 사용되는 SMTP와 메일을 받을 때 사용되는 POP3 등이 있다.


OSI 7계층

인터넷 프로토콜 4계층은 OSI 7계층과 비교되기도 한다. OSI 참조 모델은 국제표준화기구(ISO)에서 제안한 네트워크 통신의 개념적 모델이기 때문에 IP 스위트와는 차이가 있다.

  • OSI model(Open Systems Interconnection Reference Model)



🔗 References

0개의 댓글