반응형

인터넷 네트워크

강의 모든 개발자를 위한 HTTP 웹 기본 지식 와 개인적으로 공부한 내용을 정리하였습니다.


웹이나 HTTP도 인터넷 네트워크 안에서 일어난다. 인터넷 망을 통해 두 컴퓨터가 통신하기 위해서 여러 노드를 거치는 데, 이 요청을 잘 전달하기 위한 방법에 IP(인터넷 프로토콜)이다.

IP 인터넷 프로토콜 역할

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

IP 패킷 정보

  • 패킷 : 수화물을 뜻하는 패키지와 덩어리라는 의미의 버킷의 합성어
  • 출발지IP, 목적지IP, 기타 정보
  • 전송할 데이터
  • 전송 데이터가 너무 많으면 1500 바이트 정도의 단위로 끊어서 보냄

IP 프로토콜의 한계

  1. 비연결성
    • 클라이언트는 서버가 존재하는지, 서비스 가능 상태인지 모름 (일단 요청함)
  2. 비신뢰성
    • 패킷 소실 : 결국 여러 서버를 거쳐서 전달되는 것. 중간 노드가 여러가지 이유로 작동하지 않는다면 내가 전달판 패킷 소실
    • 패킷 전달 순서 문제 발생 : 1500 바이트가 넘으면 패킷 단위를 쪼개서 보내는데, 나뉜 패킷들이 모두 동일한 경로로 가지 않기 때문에 최종적으로 두번째 순서의 패킷이 먼저 도착할 수도 있음
    • 이런 문제를 해결해주는게 바로 TCP 프로토콜이다.
  3. 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상일 경우 어떤 어플리케이션인지 구분이 어렵다.

TCP와 UDP

IP 프로토콜의 문제(패킷의 소실, 순서 보장 X)을 TCP를 통해 해결할 수 있다. UDP는 이런 IP 프로토콜의 문제를 해결해주지는 않지만 도움되는 게 있으니 함께 정리한다.
TCP에는 언급한 것 보다 더 많은 기능이 있지만 일단 이 정도만 정리한다.

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

  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층 - 랜 카드, 랜 드라이버 등 실제 물리적 네트워크 인터페이스도 포함


프로토콜 계층

  • 내가 만든 메시지(=HTTP)을 OS 계층에서 TCP 정보를 넣어서 감쌈
  • IP에서 패킷으로 다시 감쌈
  • 네트워크 인터페이스 계층에서 진짜 물리적 랜 카드에 등록된 맥주소 등을 포함해서 이더넷 프레임이라는 걸로 감쌈


TCP(Transmission Control Protocol)

IP 프로토콜 위에 TCP를 얹어서 보완한 것을 TCP/IP라고 표현하는 듯 하다.


이제 IP 패킷 내에 TCP 세그먼트(초록)이 포함된다.
TCP 정보에는 Port와 전송제어, 순서, 검증 정보를 포함하기 때문에 IP 프로토콜에서 발생했던 문제를 해결할 수 있다.

TCP 특징

  • 전송 제어 프로토콜(Transmission Control Protocol)
    • 먼저 연결을 한 후 데이터를 전송함
    • 요즘에는 많이 최적화되서 3번 ACK를 보낼때 함께 데이터도 전송하기도 함
    • 개념적으로만 연결된거지 실제로 연결된 것은 아님. 서로 살아있음을 점검하는 거고, 응답을 서로 주고받는 걸 성공하면 논리적으로 연결됐다고 가정하는 것연결지향 - TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증
    • 패킷이 중간에 소실될 경우 클라이언트가 해당 사실을 인지할 수 있게 알려줌
    • 요청을 정상적으로 받을 경우, 응답 서버에서 클라이언트에 데이터 잘 받았다고 알려줌
  • 순서 보장
    • 응답받는 곳에서 패킷이 순서대로 도착하지 않는다면, 클라이언트에 얽힌 곳부터 다시 순서대로 보내라고 요청함
    • 서버에서 내부적으로 최적화도 가능하지만, 기본적으로는 클라이언트에 재요청하는 방식으로 함
    • 이게 가능한 이유는 TCP 세그먼트 정보를 이용하기 때문임


UDP(User Datagram Protocol)

UDP 특징

  • 사용자 데이터그램 프로토콜
  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름 정리
  • IP와 거의 같다. +PORT +체크섬 정도만 추가 애플리케이션에서 추가 작업 필요

어떨 때 사용할까?

  • 원래는 영상같은 데이터를 통신할 때 사용했는데, 요즘에는 영상조차 TCP/IP로 통신함(TCP 점유율 90%이상)
  • TCP 계층은 이미 네트워크 표준이라 더 이상 최적화 불가. 하지만 UDP를 직접 어플리케이션 레벨에서 무언가 만들어내면 된다.
  • 최근에 HTTP 3 통신할 때 더 최적화하고 비용을 줄이기 위해 UDP 프로토콜을 채택하게 되면서 각광을 받게 됨.

PORT

  • TCP/IP 패킷 내 출발지 Port, 목적지 Port 정보가 있음.
  • 같은 IP 내에서 프로세스 구분하기 위해 사용
  • 0 ~ 65535 할당 가능
  • 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
  • FTP - 20, 21 TELNET - 23 HTTP - 80 HTTPS - 443 등...

DNS(Domain Name System)

왜 DNS(Domain Name System)?

  • IP는 기억하기 어렵다.
  • IP는 변경될 수 있다.

DNS(Domain Name System)

  • 도메인 네임 시스템

[질문]

  • 클라이언트는 어떤 DNS에 요청할 지 어떻게 알까? => 글로벌 DNS는 몇 개 없다.
반응형