on my way
네트워크 기초 이해하기: 소켓과 TCP, UDP, TLS/SSL, 포트 번호, NAT 본문
소켓(Socket)이란?
소켓은 네트워크 통신의 출발점입니다.
쉽게 말해, 소켓은 컴퓨터가 네트워크를 통해 데이터를 주고받기 위해 사용하는 '문'이라고 할 수 있습니다.
소켓은 네트워크에 연결된 다른 컴퓨터와 데이터를 주고받을 수 있도록 해줍니다.
- 소켓 생성: 컴퓨터는 네트워크 통신을 위해 소켓을 생성합니다.
- 연결: 소켓은 다른 컴퓨터의 소켓과 연결됩니다.
- 데이터 송수신: 연결된 소켓을 통해 데이터가 송수신됩니다.
- 연결 종료: 통신이 끝나면 소켓 연결을 종료합니다.
TCP(Transmission Control Protocol)란?
TCP는 신뢰할 수 있는 데이터 전송을 보장하는 프로토콜입니다. 다음과 같은 특징이 있습니다.
- 연결 지향적: 데이터 전송 전에 송신자와 수신자가 연결을 설정합니다.
- 데이터의 순서 보장: 송신한 순서대로 데이터가 도착하도록 보장합니다.
- 데이터 무결성 보장: 전송 중에 데이터가 손실되거나 손상되면 재전송합니다.
예를 들어, 친구에게 편지를 보낼 때 TCP는 편지가 정확한 순서대로 도착하고, 중간에 분실되면 다시 보내주는 역할을 합니다.
UDP(User Datagram Protocol)란?
UDP는 TCP와 달리 신뢰성을 보장하지 않는 프로토콜입니다. 다음과 같은 특징이 있습니다.
- 비연결 지향적: 송신자와 수신자가 연결을 설정하지 않고 데이터를 전송합니다.
- 빠른 전송: 신뢰성을 보장하지 않아 속도가 빠릅니다.
- 데이터 순서 보장 없음: 데이터가 송신된 순서대로 도착하지 않을 수 있습니다.
UDP는 실시간 스트리밍 같은 상황에서 사용됩니다.
예를 들어, 동영상을 스트리밍할 때 약간의 데이터 손실이 있어도 문제되지 않는 경우 UDP가 유용합니다.
TLS/SSL이란?
TLS(Transport Layer Security)와 SSL(Secure Sockets Layer)은 데이터를 암호화하여 안전하게 전송하는 프로토콜입니다. 주로 웹사이트의 보안에 사용됩니다.
- 데이터 암호화: 데이터를 암호화하여 중간에 누군가가 데이터를 가로채더라도 내용을 알 수 없도록 합니다.
- 데이터 무결성: 데이터가 전송 중에 변조되지 않았음을 보장합니다.
- 인증: 데이터가 올바른 송신자로부터 왔음을 확인합니다.
예를 들어, 온라인 쇼핑몰에서 결제 정보를 입력할 때 TLS/SSL이 사용됩니다.
이를 통해 결제 정보가 안전하게 전송됩니다.
포트 번호란?
포트 번호는 컴퓨터 내에서 실행되는 특정 프로세스와의 통신을 식별하기 위한 숫자입니다.
각각의 프로세스는 고유한 포트 번호를 통해 데이터를 송수신합니다.
- 80번 포트: HTTP(웹 페이지) 통신에 사용됩니다.
- 443번 포트: HTTPS(암호화된 웹 페이지) 통신에 사용됩니다.
- 3306번 포트: MySQL 데이터베이스 통신에 사용됩니다.
예를 들어, 웹 브라우저가 웹 서버에 접속할 때 80번 포트를 사용하여 HTTP 요청을 보냅니다.
NAT(Network Address Translation)란?
NAT는 내부 네트워크의 사설 IP 주소를 공인 IP 주소로 변환하여 인터넷에 접속할 수 있도록 해주는 기술입니다. 이를 통해 여러 장치가 하나의 공인 IP 주소를 공유할 수 있습니다.
- IP 주소 절약: 사설 IP 주소를 사용하여 공인 IP 주소의 수를 절약합니다.
- 보안 강화: 내부 네트워크의 IP 주소를 숨겨 외부 공격으로부터 보호합니다.
예를 들어, 가정용 라우터는 NAT를 사용하여 여러 대의 컴퓨터와 스마트폰이 인터넷에 접속할 수 있도록 합니다.
URI와 URL의 차이
URI(Uniform Resource Identifier)와 URL(Uniform Resource Locator)은 웹 주소를 지칭할 때 사용하는 용어입니다.
둘 다 자원을 식별하는 데 사용되지만, 약간의 차이점이 있습니다. 쉽게 설명하면 다음과 같습니다:
URI (Uniform Resource Identifier)
URI는 인터넷 상의 자원을 식별하는 문자열입니다. URI는 두 가지 주요 유형으로 나뉩니다: URL과 URN(Uniform Resource Name).
- URL: 자원의 위치를 알려줍니다. 즉, 어디에 있는지(예: 웹 페이지의 주소).
- URN: 자원의 이름을 식별합니다. 위치와 무관하게 유일한 이름을 가집니다.
예시
- https://www.example.com/page.html: 이 주소는 URL입니다. 웹 페이지의 위치를 나타냅니다.
- urn:isbn:0451450523: 이 주소는 URN입니다. 특정 책의 국제 표준 도서 번호(ISBN)을 나타냅니다.
URL (Uniform Resource Locator)
URL은 URI의 한 유형으로, 인터넷 상의 자원의 위치를 나타냅니다.
URL은 특정 프로토콜을 사용하여 자원의 주소를 지정합니다.
예시
- https://www.example.com: HTTPS 프로토콜을 사용한 웹 페이지의 URL.
- ftp://ftp.example.com/file.txt: FTP 프로토콜을 사용한 파일의 URL.
요약
- URI: 자원을 식별하는 모든 문자열입니다. URL과 URN을 포함합니다.
- URL: 자원의 위치를 지정하는 URI입니다. 웹 주소로 자주 사용됩니다.
비유로 이해하기
- URI는 집 주소나 전화번호를 포함한 '연락처 정보'와 같습니다.
- URL은 집 주소처럼 '구체적인 위치'를 나타냅니다.
- URN은 전화번호처럼 '고유한 식별자'를 나타냅니다.
결론
모든 URL은 URI이지만, 모든 URI가 URL인 것은 아닙니다.
URL은 자원의 위치를, URN은 자원의 이름을 식별하는 방식입니다. 이를 통해 자원을 찾거나 식별하는 데 사용됩니다.
'Computer Science > CICD' 카테고리의 다른 글
CI/CD-03: Podman을 사용한 컨테이너 관리 및 포트 설정 1 (13) | 2024.07.23 |
---|---|
CI/CD-02: Podman과 Docker를 활용한 Kubernetes 클러스터 구성 및 컨테이너 관리 (0) | 2024.07.18 |
CI/CD-01: CI/CD와 컨테이너 기술의 이해 및 구축 (0) | 2024.07.18 |
웹 서버와 애플리케이션 서버의 차이와 함께 알아보는 Nginx, Apache, Tomcat, MySQL의 역할 (0) | 2024.07.18 |
Nginx를 이용한 배포 설정, Jenkins, Docker (0) | 2024.07.09 |