2024. 1. 11. 02:24ㆍBackend/Internet
인터넷이란 무엇인가?
인터넷을 이해하기 위하여는 먼저 네트워크를 정의해야 한다.
네트워크는 매우 복잡하고 어려운 개념일 수 있지만, 간단하게 말하면 ‘컴퓨터간의 연결’이다.
그리고 그 네트워크들은 인터넷이라는 개념으로 연결되어 있다.
인터넷은 어떻게 동작하는가
Overview
인터넷은 컴퓨터 사이에서 데이터를 주고받기 위해 연결되어 있는 것을 의미한다.
먼저 전송하려는 데이터를 패킷 단위로 쪼개고, 라우터에 태운다. 데이터는 다음 라우터를 계속 거쳐 목적지에 도착하게 된다.
인터넷을 이해하기 위해 알아야 할 용어들
- 패킷 (Packet) : 인터넷을 이용해 전송되는 데이터의 단위
- 라우터 (Router) : 네트워크상의 패킷의 목적지를 정해주는 장치
- IP 주소 (IP Address) : 라우터가 목적지를 정하는 데 사용되는 각 장치의 고유 주소
- 도메인 (Domain Name) : IP 주소를 인간이 읽을 수 있는 형태로 변환한 것 (ex. 000.000.000.000 → gigyesik.com)
- DNS (Domain Name System) : 도메인을 다시 IP 주소로 변환하는 체계
- HTTP (Hypertext Transfer Protocol) : 클라이언트(ex. 브라우저. 크롬)와 서버(ex. 웹사이트. gigyesik.com) 사이의 데이터 교환 규약(프로토콜)
- HTTPS (HTTP Secure) : HTTP를 암호화하는 규약
- SSL/TLS (Secure Socket Layer, Transport Layer Security) : 암호화된 HTTP의 통신 규약
Protocol
- 우리가 전송하는 데이터는 매체(전기선)을 통해 전송되므로, 데이터 그대로가 아닌 전기적 신호로 변환되는 과정을 거쳐야 한다.
- 이때 이용되는 것이 프로토콜 스택이다. 각 계층에서 데이터를 전송하기 알맞은 크기의 패킷으로 변환한다.
- Application Protocols Layer : WWW, e-mail과 같이 프로토콜의 종류를 특정한다.
- Transmission Control Protocol (TCP) Layer : 패킷이 이동할 포트를 특정한다.
- Internet Protocol (IP) Layer : 패킷이 이동한 IP 주소를 특정한다.
- Hardware Layer : 2진 패킷 신호를 전기 신호로 변환한다.
데이터를 전달할 때는 ‘확실하게 전달할 수 있는가’ 와 ‘안전하게 전달할 수 있는가’를 고려하여야 하므로, 표준화된 ‘프로토콜’ 즉 통신 규약을 사용하게 된다.
프로토콜은 서로 다른 장치들 간의 균일한 통신을 보장하기 위한 것이다.
패킷을 ‘확실하게 전달할 수 있는가’ 에 초점을 맞춘 프로토콜로는 IP(Internet Protocol)와 TCP(Transmission Controll Protocol)가 있다. 줄여서 TCP/IP.
IP 는 패킷을 올바른 방향으로 라우팅하기 위한 프로토콜이고, TCP는 패킷의 올바른 순서를 보장하기 위한 프로토콜이다.
위에서 용어를 정의하였듯 DNS, HTTP, SSL, TLS 와 같은 프로토콜도 존재한다.
IP, DNS
IP주소는 네트워크 상에 위치하는 장치(컴퓨터)의 고유 주소이다. ‘192.168.1.1’ 과 같이 점으로 구분되는 4개의 숫자열로 수정되어 있다.
도메인은 웹 사이트와 같은 데이터가 위치한 곳을 인간이 읽을 수 있는 이름으로 표현한 것이다. ‘gigyesik.com’ 처럼 점으로 구분된다.
DNS는 사람이 읽는 도메인 이름을 컴퓨터가 읽을 IP 주소로 변환하는 체계를 의미한다.
브라우저에 웹 사이트 주소를 입력하게 되면, 컴퓨터가 DNS 서버에 쿼리를 날리고 IP주소를 응답받는다. 그 IP주소에 접속하여 웹 사이트를 볼 수 있다.
HTTP, HTTPS
HTTP와 HTTPS 는 인터넷 기반의 서비스에서 가장 널리 쓰이는 프로토콜이다.
HTTP는 클라이언트(웹 브라우저)와 서버(웹사이트) 간의 통신을 정의한다.
웹사이트를 방문했을 때, 브라우저는 웹사이트에 HTTP 요청을 보내 웹 페이지를 보여달라고 한다.
서버는 HTTP 응답과 요청받은 데이터를 브라우저에 제공한다.
HTTPS는 HTTP의 암호화 버전으로, SSL/TLS 암호화를 사용한다.
이로서 보안 계층을 형성해 로그인 비밀번호, 결제 정보와 같은 민감 데이터들을 보호한다.
TCP/IP
TCP/IP 또한 인터넷 기반의 통신에 핵심이 되는 프로토콜이다. 안전하게, 순서대로, 에러 없이 데이터를 전송하자는 규약이다.
이를 이해하기 위해 몇 가지 용어 정리가 필요하다.
- 포트 (Ports) : 포트는 컴퓨터 상에서 실행되고 있는 앱 또는 서비스의 고유번호이다. IP 주소로 컴퓨터를 찾고, 포트로 그 컴퓨터에서 실행중인 서비스를 찾아 데이터를 전송하게 된다.
- 소켓 (Sockets) : 소켓은 IP 주소와 포트의 결합으로 통신의 엔드포인트, 즉 인간의 의사소통으로 치면 귀와 같은 역할을 담당한다. 서로 다른 컴퓨터 간에 커넥션을 형성한다.
- 커넥션 (Connections) : 커넥션은 두 소켓이 서로 통신할 때 형성되는 연결을 의미한다. 커넥션이 형성될 때 두 장치는 데이터의 크기나 창의 크기와 같은 데이터의 규격들을 어떻게 주고받을 지 정의한다.
- 데이터 전송 (Data transfer) : 커넥션이 형성되면, 미리 약속한 데이터 규격에 맞춰서 데이터 교환이 일어난다. 이 때 안정적 전송을 위해 일련번호, 메타데이터 등도 같이 전송된다.
어플리케이션을 개발할 때는 TCP/IP 프로토콜을 준수하기 위해 포트, 소켓, 커넥션을 알맞게 정의해야 한다.
다양한 프로토콜을 이해하여야 데이터 전송에 안정적인 서비스를 만들 수 있다.
SSL/TLS
위에서 정의한 것과 같이 SSL/TLS는 인터넷을 통해 전송되는 데이터의 암호화 프로토콜이다.
주로 어플리케이션과 브라우저, 이메일, 파일 전송 프로그램을 연결하는 정보를 암호화하는데 사용된다.
이를 이해하기 위해 몇 가지 용어 정리가 필요하다.
- 인증서 (Certificates) : 인증서는 클라이언트와 서버 사이의 신뢰관계를 형성한다. 인증서에는 서버와 클라이언트의 정의, 저명한 인증기관에서 공인하는 서명이 포함되어 있다.
- 핸드쉐이크 (Handshake) : 핸드쉐이크는 클라이언트와 서버가 암호화 알고리즘을 선정하고, 암호화에 필요한 여러 정보들을 정의하는 과정이다.
- 암호화 (Encryption) : 커넥션이 형성되면 클라이언트와 서버는 합의된 알고리즘을 사용하여 데이터를 암호화하여 전송한다.
요약
- 인터넷은 서로 연결된 컴퓨터들 사이에서 표준화된 프로토콜로 데이터를 주고받기 위한 네트워크의 집합이다.
- 인터넷은 TCP/IP 와 같은 표준화된 프로토콜을 사용하여 서로 연결됨으로써 동작한다.
- 인터넷 동작의 핵심은 데이터가 패킷화되어 라우터를 통해 목적지를 향해 이동한다는 것이다.
- 패킷, 라우터, IP, 도메인 이름, DNS, HTTP, HTTPS, SSL/TLS 와 같은 용어에 친숙해져야 한다.
- 프로토콜은 서로 다른 장치들이 인터넷 상의 의사소통에 표준화된 규격을 사용하게 함으로써 핵심적인 역할을 담당한다.
마치며
개발자로서 인터넷이 무엇이고 어떻게 동작하는지는 알아야 하지만, 아직은 개괄 수준이다.
다른 주제들을 함께 공부하다 보면 통합적인 이해를 할 수 있는 날이 오겠지.
Resources
'Backend > Internet' 카테고리의 다른 글
호스팅이란 무엇인가 (1) | 2024.01.22 |
---|---|
도메인 이름은 무엇인가 (1) | 2024.01.22 |
DNS는 어떻게 동작하는가 (0) | 2024.01.22 |
브라우저는 어떻게 동작하는가 (0) | 2024.01.18 |
HTTP란 무엇인가 (1) | 2024.01.15 |