❗️혼자 보기 위해 작성한 글이다 보니 오역이 많습니다.
게시글 하단에 원문 링크 참조하시길 강력 권장드립니다.
🌐 Internet
개발자로서 인터넷이 무엇인지, 또 어떻게 작동하는지에 대한 확고한 이해가 필요하다.
가장 현대적인 소프트웨어 응용프로그램의 기반이기 때문이다.
효과적이고, 보안적이며 가변적인 응용프로그램과 서비스를 만들기 위해서는 인터넷이 어떻게 작동하고 인터넷의 힘과 연결성이 어떻게 영향력을 끼치는지에 대한 확고한 이해가 필요하다.
해당 글에서 우리는 이것이 어떻게 작동하는지, 어떤 기본 콘셉트들이 있는지, 그리고 인터넷에서 응용프로그램과 서비스가 만들어지기 위해 사용되는 흔한 프로토콜 및 전문용어들을 포함한 인터넷의 기본들을 다루게 될 것이다.
인터넷 소개 (Introduction to the Internet)
인터넷이 무엇인지 배우기에 앞서, 우리는 네트워크가 무엇인지에 대한 이해가 필요하다.
네트워크는 컴퓨터의 그룹이나 서로 연결되는 다른 기기들의 네트워크이다.
예를 들어, 당신은 집에 컴퓨터 네트워크와 기기를 갖고 있을 것이다.
당신의 옆집에 사는 친구도 기기에 유사한 네트워크를 갖고 있을 것이다.
그들의 이웃도 유사한 네트워크 기기를 갖고 있을 것이다.
이 모든 네트워크는 함께 연결되면 인터넷을 형성한다.
인터넷은 네트워크들의 네트워크다.
인터넷은 1960년대 후반에 미국 국방부에 의해 핵공격을 견딜 수 있는 분산적 통신 네트워크의 수단으로 개발되었다.
수 년동안, 전 세계에 걸쳐 복잡하고 정교한 네트워크로 진화해 왔다.
오늘날, 인터넷은 현대 삶의 주요한 부분이다. 세계적으로 10억 명의 사람들이 정보에 접근하기 위해, 친구나 가족과 통신하기 위해, 업무를 수행하기 위해 혹은 더 많은 다른 이유로 사용하고 있기 때문이다.
개발자로서 인터넷이 어떻게 작동하는지, 다양한 기술들과 그것을 뒷받침하는 프로토콜에 대한 확실한 이해를 갖는 게 중요하다.
인터넷은 어떻게 작동하는가: 미리 보기(How the Internet Works: An Overview)
높은 수준에서, 인터넷은 기기들과 컴퓨터 시스템들을 함께 연결하여 표준화된 프로토콜 세트를 사용하여 작동한다.
이 프로토콜은 데이터가 신뢰성 있고 보안적으로 전송되게끔 보장하고 기기들 간에 어떻게 정보가 교환되는지를 정의한다.
인터넷의 핵심은 서로 다른 장치와 시스템 간의 트래픽을 지시하는 역할을 하는, 상호 연결된 라우터의 글로벌 네트워크다.
당신이 인터넷을 통해 데이터를 전송할 때, 데이터들은 작은 패킷으로 분산되어 당신의 장치에서 라우터로 보내진다.
그 라우터는 패킷을 시험하고 다음 라우터에게 전달하고 목적지까지 계속 앞으로 전달한다.
이런 과정이 최종 목적지에 패킷이 도착할 때까지 계속된다.
패킷들이 정확하게 잘 보내지고 받아졌는지 확인하기 위해서, 인터넷은 인터넷 프로토콜(IP) 그리고 트랜스미션 컨트롤 프로토콜(TCP)을 포함한 다양한 프로토콜을 사용한다.
IP는 그들의 정확한 목적지로 패킷을 라우팅 하는 역할을 하고, 그동안 TCP는 패킷이 정확한 순서로 안정적으로 전송되는지 확인한다.
이런 핵심적인 프로토콜과 더불어, 도메인 네임 시스템(DNS), 하이퍼텍스트 전송 프로토콜(HTTP) 그리고 보안 소켓 계층/ 전송 계층 보안 (SSL/TLS) 프로토콜과 같이 인터넷을 통해 통신과 정보교환을 가능하게 하는 광범위한 다른 기술들과 프로토콜들이 있다.
기본 컨셉과 전문 용어 (Basic Concepts and Terminology)
인터넷을 이해하기 위해서는, 기본 콘셉트들과 전문용어에 익숙해지는 게 중요하다.
여기 주요 용어들과 알아야 하는 콘셉트 목록들이 있다.
- 패킷(Packet)
: 인터넷을 통해 전송되는 작은 데이터 유닛 - 라우터(Router)
: 다른 네트워크들간에 데이터 패킷을 지시하는 장치 - 아이피 주소(IP Address)
: 유니크한 식별자가 네트워크의 각 장치마다 할당되고, 데이터가 정확한 목적지로 라우팅하는데 사용 - 도메인 네임(Domain Name)
: google.com과 같이 사람이 읽을 수 있게 웹사이트를 식별하는 데 사용되는 이름 - 도메인 네임 시스템(DNS)
: 도메인 네임 시스템은 도메인 네임을 IP 주소로 변환하는 역할 - HTTP
: 하이퍼텍스트 전송 프로토콜은 클라이언트(웹 브라우저)와 서버(웹 사이트) 간에 데이터를 전송하는 데 사용 - HTTPS
: HTTP의 암호화된 버전으로 클라이언트와 서버 간에 안전한 통신을 제공하는 데 사용 - SSL/TLS
: 보안 소켓 계층과 전송 계층 보안 프로토콜은 인터넷으로 안전한 통신을 제공하는 데 사용
이런 기본 컨셉과 용어들을 이해하는 것은 인터넷 기반의 응용프로그램과 서비스를 개발하는데 필수적이다.
인터넷에서 프로토콜의 역할 (The Role of Protocols in Internet)
프로토콜은 인터넷을 통해 데이터 교환과 통신이 가능하게끔 주요한 역할을 한다.
프로토콜은 어떻게 기기와 시스템 간에 정보 교환이 이루어지는지에 대해 정의하는 규칙과 표준의 집합이다.
IP, TCP, UDP, DNS와 더불어 그 외에도 인터넷 통신을 위해 사용되는 많은 프로토콜이 있다.
TCP와 UDP가 패킷들을 안전하고 효율적으로 전송하는 동안 IP는 정확한 목적지로 데이터가 패킷화 되어 라우팅 될 수 있게 하는 역할을 한다.
DNS는 도메인 이름을 IP주소로 전환하는데 사용되고, HTTP는 클라이언트와 서버 간에 데이터를 전송하는 데 사용된다.
표준화된 프로토콜을 사용하는 주요 이점 중의 하나는, 서로 다른 제조사나 판매사의 기기와 시스템을 균일하게 통신할 수 있게 해 준다는 것이다.
예를 들어, 한 회사가 개발한 웹 브라우저는 HTTP 프로토콜을 준수하는 한 다른 회사가 개발한 웹 서버와 통신할 수 있다.
개발자로서, 인터넷 통신에서 다양한 프로토콜을 사용하는 법과 어떻게 그들이 인터넷을 통해 데이터를 전송하고 함께 일할 수 있는지를 이해하는 것은 굉장히 중요하다.
IP 주소와 도메인 이름의 이해 (Understanding IP Addresses and Domain Names)
IP 주소와 도메인 이름 둘 다 인터넷으로 일할 때 이해해야하는 중요한 콘셉트들이다.
IP 주소는 네트워크의 각 기기에 할당된 고유한 식별자이다.
이것은 정확한 목적지로 데이터를 라우팅 하고, 수신인에게 정보가 전달됐는지 확인하는 데 사용된다.
IP 주소는 일반적으로 "192.168.1.1"과 같이 마침표로 구분된 일련의 4개 숫자로 표시된다.
반면에 도메인 네임은, 웹사이트와 인터넷 리소스를 식별하는 데 사용되는 사람이 읽을 수 있는 이름이다.
도메인 네임은 일반적으로 두 개 이상의 부분으로 구성되고, 마침표로 분류된다.
예를 들어 "google.com"은 도메인 네임이다.
도메인 네임은 도메인 네임 시스템(DNS)을 이용해 IP 주소로 전환된다.
DNS는 인터넷 기반시설의 중요한 부분으로, 도메인 이름을 IP 주소로 바꾸는 역할을 한다.
웹브라우저에 도메인 이름을 입력하면, 컴퓨터는 DNS 쿼리를 DNS 서버로 보내고, 그에 해당하는 IP 주소를 반환한다.
그럼 컴퓨터는 해당 IP 주소를 사용하여 웹사이트나 또는 요청했던 다른 리소스를 연결한다.
HTTP와 HTTPS 소개 (Introduction to HTTP and HTTPS)
HTTP (Hypertext Transfer Protocol)와 HTTPS (HTTP Secure)는 인터넷 기반의 응용프로그램과 서비스에서 가장 흔하게 사용되는 프로토콜이다.
HTTP는 클라이언트(웹 브라우저와 같은)와 서버(웹 사이트와 같은)상에 데이터를 전송하는 데 사용된다.
웹 사이트를 방문했을 때, 웹 브라우저가 HTTP 요청을 서버에 보내고, 웹 페이지나 다른 리소스에게 요청한다.
서버는 요청했던 데이터를 포함한 HTTP 응답을 클라이언트에게 회신한다.
HTTPS는 HTTP의 가장 안전한 버전으로 클라이언트와 서버 간에 SSL/TLS 암호화를 통해 암호화된 데이터를 전송한다.
HTTPS는 보안 계층을 제공하고, 로그인 기밀정보, 지불 정보 그리고 기타 개인적인 정보와 같은 민감한 정보를 보호하는데 도와준다.
HTTPS를 통해 웹 사이트를 들어가면, 웹 브라우저가 연결이 보안화 돼있다는 걸 나타내기 위해 주소 창에 자물쇠 모양의 아이콘을 보여주고, 웹 사이트 주소의 시작 부분에도 "http"대신 "https"를 보게 될 것이다.
TCP/IP와 어플리케이션 생성 (Building Applications with TCP/IP)
TCP/IP (Transmission Control Protocol/Internet Protocol)는 인터넷 기반의 응용프로그램과 서비스에서 대부분 사용하는 근본적인 통신 규약이다.
서로 다른 장치에서 실행되는 응용프로그램간에 안정적이고 순서화되고 오류가 확인된 데이터를 제공한다.
TCP/IP를 이용해 응용프로그램을 생성할 때, 몇 가지 이해해야 할 주요 키 콘셉트들이 있다.
- 포트(Ports)
: 포트는 장치에서 서비스나 응용프로그램을 실행하는걸 식별하는 데 사용.
각 응용프로그램과 서비스는 고유한 포트 번호가 할당되어, 데이터를 정확한 목적지까지 전송할 수 있다. - 소켓(Sockets)
: 소켓은 IP 주소와 포트 번호의 조합으로, 통신을 위한 특정 엔드포인트를 나타낸다.
소켓은 기기와 응용프로그램간의 데이터를 전송하는 연결을 수립하는 데 사용된다. - 연결(Connections)
: 연결은 두 개의 기기가 서로 통신하길 원할 때 두 소켓 간에 생기는 연결을 의미한다.
연결 설정 과정에서, 기기는 연결하기 위해 데이터가 어떻게 전송될 것인지 결정하는 윈도우 사이즈나 최대 세그먼트 크기와 같은 다양한 파라미터들과 협상한다. - 데이터 전송(Data transfer)
: 연결이 성립되면, 데이터는 각 기기에서 실행되는 응용프로그램 사이에서 전송될 수 있다.
데이터는 일반적으로 세그먼트들로 전송되며, 각 세그먼트는 신뢰할 수 있는 전달을 보장하기 위해 시퀀스 번호와 다른 메타데이터를 포함한다.
TCP/IP를 이용해 응용프로그램을 생성할 때, 응용프로그램이 적합한 포트, 소켓 그리고 연결을 이용해 구성되었는지 확실히 할 필요가 있다.
또한, HTTP, FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), TCP/IP 같이 흔하게 사용되는 표준 프로토콜을 포함한 다양한 프로토콜과도 익숙해질 필요가 있다.
이런 컨셉들과 프로토콜을 이해하는 것은 효율적이고, 가변적이며 안정화되게 인터넷 기반의 응용프로그램과 서비스를 생성하는데 있어 주요한 요소이다.
SSL/TLS을 이용한 보안화된 인터넷 통신 (Securing Internet Communication with SSL/TLS)
앞서 얘기했던 것처럼, SSL/TLS 은 인터넷에서 데이터를 전송할 때 암호화하는 데 사용되는 프로토콜이다.
흔히 웹 브라우저, 이메일 클라이언트, 파일 전송 프로그램과 같은 응용프로그램들을 안전하게 연결하는데 제공되었다.
SSL/TLS을 이용하여 인터넷 통신을 보안할 때, 이해해야하는 주요 콘셉트들이 있다.
- 인증서(Certificates)
: SSL/TLS 인증서는 클라이언트와 서버간에 신뢰를 성립하는 데 사용된다.
서버는 서버의 ID에 대한 정보를 포함하며 신뢰할 수 있는 제 3자(인증기관)가 서명하여 인증여부를 확인한다. - 핸드셰이크(Handshake)
: SSL/TLS 핸드셰이크 프로세스 동안, 클라이언트와 서버는 보안 연결을 위한 암호화 알고리즘 및 기타 매개 변수를 협상하기 위해 정보를 교환한다. - 암호화(Encryption)
: 보안 연결이 설정되면 합의된 알고리즘을 사용하여 데이터를 암호화하고 클라이언트와 서버 간에 안전하게 전송할 수 있다.
인터넷 기반 응용프로그램과 서비스를 구축할 때, SSL/TLS의 작동 방식을 이해하고 로그인 자격 증명, 결제 정보 및 기타 개인 데이터와 같은 중요한 데이터를 전송할 때 응용프로그램이 SSL/TLS를 사용하도록 설계되었는지 확인하는 것이 중요하다.
또한 서버에 대한 유효한 SSL/TLS 인증서를 얻고 유지하고 SSL/TLS 연결을 구성하고 보안하는 모범 사례를 따라야 한다.
이렇게 하면 사용자의 데이터를 보호하고 인터넷을 통한 응용프로그램 통신의 무결성 및 기밀성을 보장할 수 있다.
[출처] How does the Internet Work? - cs.fyi
'이것저것 공부' 카테고리의 다른 글
API 게이트웨이(API Gateway) (1) | 2025.01.16 |
---|---|
자료구조 힙(Heap) 예제 및 개념 (0) | 2025.01.15 |
Swagger API 사용법 2탄 (0) | 2024.11.27 |
Swagger API 사용법 번외(CRUD 설명) (0) | 2024.11.25 |
Swagger API 사용법 1탄 (1) | 2024.11.25 |