on my way

네트워크 기초 이해하기: 소켓과 TCP, UDP, TLS/SSL, 포트 번호, NAT 본문

Computer Science/CICD

네트워크 기초 이해하기: 소켓과 TCP, UDP, TLS/SSL, 포트 번호, NAT

wingbeat 2024. 7. 18. 19:46
반응형

소켓(Socket)이란?

소켓은 네트워크 통신의 출발점입니다.

쉽게 말해, 소켓은 컴퓨터가 네트워크를 통해 데이터를 주고받기 위해 사용하는 '문'이라고 할 수 있습니다.

소켓은 네트워크에 연결된 다른 컴퓨터와 데이터를 주고받을 수 있도록 해줍니다.

  1. 소켓 생성: 컴퓨터는 네트워크 통신을 위해 소켓을 생성합니다.
  2. 연결: 소켓은 다른 컴퓨터의 소켓과 연결됩니다.
  3. 데이터 송수신: 연결된 소켓을 통해 데이터가 송수신됩니다.
  4. 연결 종료: 통신이 끝나면 소켓 연결을 종료합니다.

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는 두 가지 주요 유형으로 나뉩니다: URLURN(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은 자원의 이름을 식별하는 방식입니다. 이를 통해 자원을 찾거나 식별하는 데 사용됩니다.

반응형