인터넷 네트워크

xxziiko·2024년 12월 13일

[Network]

목록 보기
1/6
post-thumbnail

김영한님의 모든개발자를 위한 HTTP 웹 기본 지식을 수강 후 해당 내용을 기반으로 작성한 글입니다.



인터넷에서 컴퓨터들은 어떻게 통신할까?

  • 컴퓨터끼리 통신을 하기 위해서는 최소한의 규칙이 존재해야 한다 → IP 주소


IP(Internet Protocol Address)

  • 인터넷에 연결된 각 기기를 식별하기 위한 고유한 숫자 값
  • 지정한 IP 주소에 데이터를 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달
  • 데이터를 송신자에서 수신자로 전달하기 위해 컴퓨터의 위치 정보를 제공 (엔드투엔드 통신)


🧐 엔드투엔드 통신이란?

네트워크의 두 종단(endpoints), 즉 클라이언트와 서버 또는 두 장치 간의 데이터가 중간 노드의 개입 없이 직접적이고 신뢰성 있는 방식으로 이루어지는 것



🧐 패킷(Packet)이란?

  • Package와 Bucket의 합성어로, 데이터를 작은 조각으로 나누어 전송하는 단위
  • 데이터가 한 번에 전송되기 어려운 경우를 대비해 쪼개진 데이터 조각.
  • 각 패킷은 출발지와 목적지 정보를 포함하며, 전송 중 다양한 경로를 통해 전달될 수 있음.


IP 패킷 정보

  • 헤더: 출발지 IP, 목적지 IP, 기타
  • 전송 데이터


클라이언트 패킷 전달

서버 패킷 전달

  • 인터넷 망이 복잡하기 때문에 요청과 응답이 서로 다른 호스로 전달될 수도 있다.


IP 프로토콜의 한계

  • 비연결성
    송신자와 수신자가 미리 연결 상태를 확인하지 않고 데이터를 보내는 방식으로, 데이터가 수신되지 않아도 송신자는 이를 알 수 없음

  • 비신뢰성

    • 많은 서버를 거쳐서 전달되기 때문에 중간에 서버에 문제가 생긴다면 패킷 소실의 가능성이 있다.
    • 패킷의 순서를 보장할 수 없다.

  • 패킷의 전송 데이터 크기가 크다면 여러개로 나누어서 전송되는데, 이 때 순서를 보장할 수 없다.
  • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 구분하기 어렵다.

🧐 이런 IP 프로토콜의 한계를 보완할 수는 없을까?



TCP/UDP

인터넷 프로토콜 스택의 4계층

  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층


프로토콜 계층

  1. 애플리케이션 계층
  • 웹 브라우저, 네트워크 게임, 채팅 프로그램등 애플리케이션이 동작하는 레이어
  • 프로그램이 사용자가 보낸 데이터(그림에서는 'Hello, world!')를 생성
  • SOCKET 라이브러리를 통해 하위 계층(운영체제 레벨)으로 데이터를 전달
  1. OS 계층(운영체제)
    데이터가 전송될 수 있도록 다양한 프로토콜(TCP/IP)을 추가하여 데이터를 처리
  • SOCKET 라이브러리, TCP/IP
  1. 네트워크 인터페이스 계층
  • LAN 드라이버 및 LAN 카드
    • 데이터 전기 신호로 변환하여 LAN 장비를 통해 인터넷으로 송신
    • IP 패킷에 물리적인 주소(MAC 주소)를 포함하여 이더넷 프레임 생성
  • 이더넷 프레임
    TCP/IP 데이터를 물리적인 네트워크 상에서 전송하기 위한 마지막 계층


TCP

  • 전송 제어 프로토콜
  • 연결 지향 - TCP 3 way handshake(가상 연결)

1. 클라이언트가 SYN 패킷을 서버에 전송해 연결 요청.
2. 서버가 SYN-ACK 패킷으로 응답.
3. 클라이언트가 ACK 패킷을 보내 연결이 설정됨.
4. 최근에는 최적화가 잘 되어있어 3번의 과정에서 데이터 전송이 함께 되기도 함.
  • 순서 보장 순서가 올바르지 않게 온다면 그 부분부터 다시 요청됨



TCP/IP 패킷 정보

  • 헤더
    • IP 헤더: 출발지 IP , 도착지 IP, 기타
    • TCP 헤더: 출발지 PORT, 도착지 PORT, 체크섬, 전송제어, 순서, 검증정보 등등
  • 전송 데이터

UDP

  • 사용자 데이터그램 프로토콜
  • 연결 지향이 아니므로 지연이 적다.
  • 데이터 전달 보증과 순서 보장이 되지 않지만 단순하고 빠르다.
  • 실시간 성능이 중요한 애플리케이션(스트리밍, 온라인 게임)에 적합
  • IP와 거의 동일한 기능을 수행하면서 PORT, 체크섬 정도 추가된 기능

PORT

  • PORT는 같은 IP 주소를 사용하는 여러 애플리케이션을 구별하기 위한 식별자로 볼 수 있다.
  • 예를 들어, 한 컴퓨터에서 웹 서버(HTTP: 80)와 데이터베이스 서버(MySQL: 3306)를 동시에 실행할 수 있다.
  • 클라이언트는 IP 주소와 PORT를 함께 사용하여 정확히 어떤 애플리케이션과 통신할지 지정
  • 0 ~ 65535 할당이 가능하며 0 ~ 1023은 잘 알려진 포트이므로 사용하지 않는 것이 좋다.
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443


DNS

  • 도메인 네임 시스템
  • DNS는 도메인 이름을 IP 주소로 변환하는 분산 데이터베이스 시스템
  • 사용자는 www.example.com과 같은 도메인을 사용해 쉽게 접근할 수 있지만, 실제 통신은 해당 도메인의 IP 주소로 이루어진다.
  • DNS는 이를 자동으로 변환하여 사용자가 IP를 기억하지 않아도 되도록 도와준다.


ref.
그림으로 배우는 네트워크 원리
모든 개발자를 위한 HTTP 웹 기본 지식(김영한)
이미지 출처 - 모든 개발자를 위한 HTTP 웹 기본 지식(김영한)

0개의 댓글