모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의 수강 후 정리한 자료입니다.

❗인터넷은 어떤 방식으로 통신할까?❗

✨ IP (인터넷 프로토콜)

정의

  • 지정한 IP 주소를 전달할 수 있도록 정해 놓은 규칙
  • IP 주소에 데이터를 전달한다.
  • IP 패킷 규칙을 사용
    -> 출발지 IP, 목적지 IP, 데이터 등을 포함
  • 패킷 통신 단위로 전달

cf) 패킷이란?
-> 패키지 + 버킷의 합성어로, 데이터가 들어 있는 박스라고 생각하면 쉽다

IP 프로토콜의 한계

  1. 비연결설
  2. 비신뢰성
  3. 프로그램 구분의 모호성

# 비연결성

  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    -> 상대방의 PC가 꺼져 있는 경우 등에도 전달

# 비신뢰성

  • 중간에 패킷이 손실되는 경우
    -> 노드를 통해 전달되므로 소실 가능성 존재
  • 패킷이 순서대로 오지 않는 경우
    -> 용량이 큰 경우 1500 바이트 단위로 끊어서 보내므로 순서대로 오지 않을 수 있다

# 프로그램 구분의 모호성

  • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우
    ex) 하나의 PC에서 노래도 듣고 게임도 하며 둘 이상의 프로그램에서 요청을 보내는 경우

이를 “TCP 프로토콜”을 통해 해결할 수 있다.

TCP/UDP를 이해하기 위해서는 인터넷 프로토콜 4계층을 알아야 한다.

✨ 인터넷 프로토콜 4계층

protocol

세부적인 전달 과정

  1. 프로그램에서 메시지 생성
  2. 애플리케이션 계층 내부의 socket 라이브러리를 통해 메시지 전달
  3. OS 계층 내부의 TCP에서 메시지 데이터를 포함한 TCP 정보 생성
  4. OS 계층 내부의 IP에서 TCP 데이터를 포함한 IP 패킷 생성

✨ TCP/UDP

  • IP 프로토콜의 한계를 극복하기 위해 TCP/UDP로 감싸준다.
    -> PORT, 전송 제어, 순서 등의 정보를 담고 있다.

TCP

: 전송 제어 프로토콜 (Transmisson Control Protocol)

특징

  1. 연결 지향 - TCP 3 way handshake (가상 연결)
    -> 연결 후 메시지를 보냄
  2. 데이터 전달 보증
    -> 누락 확인이 가능
  3. 순서 보장
  • 이러한 특징으로 인해, TCP는 신뢰할 수 있는 프로토콜이라고도 불리며, 대부분의 애플리케이션에서 TCP를 사용하고 있다.

TCP 3 handshake

  • 데이터 전달 보증을 위해 서버-클라이언트 간 세 번의 통신을 보낸다.
  1. 클라이언트 -> 서버 (SYN)
  2. 서버 -> 클라이언트 : SYN + ACK
  3. 클라이언트 -> 서버 : ACK
    -> SYN: 접속 요청, ACK: 요청 수락
  4. 데이터 전송
  • 요즘은 최적화되어 3번 과정과 동시에 데이터 전송도 가능하다
  • 개념적으로 연결된 것일 뿐, 물리적인 연결이 아니라는 사실을 알아두자!


순서 보장의 경우 다음과 같은 과정을 거친다.

  1. 여러 개의 패킷 전송
  2. 순서가 잘못된 경우 서버에서 클라이언트로 재요청

UDP

: User Datagram Protocol

  • TCP와 같은 계층에 존재
  • TCP의 세 가지 특징 모두 지원 X (TCP 3 way handshake, 데이터 전달 보증, 순서 보장)
  • 단순하고 빠름
  • IP에서 port + 메시지 확인 여부 기능만 추가된 프로토콜이라고 생각하면 된다.

왜 쓰는가? 이러한 의문이 들 수도 있다.
그러나 최대의 장점은 단순하고 빠르다는 것. 요즘은 백지 상태의 UDP에서 필요 없는 부분을 추가하지 않은 채 커스텀하여 많이 사용되는 추세이다. (최적화와 관련)

✨ PORT

정의

: 논리적인 접속 장소

  • 여러 애플리케이션에서 요청을 보낼 때 구분하기 위해 사용한다.
  • IP가 목적지를 찾는 용도로 사용된다면, PORT는 하나의 서버 안 여러 개의 애플리케이션을 구분하는 데 사용된다.

대표적인 포트 번호

  • FTP : 20, 21
  • TELNET - 23
  • HTTP - 80
  • HTTPS - 443

✨ DNS

정의

: Domain Name System

  • 우리가 흔히 볼 수 있는 “인터넷 링크”가 바로 도메인 이름이다.
  • 그렇다면 Domain Name System이란? 도메인명과 IP를 저장하는 일종의 전화번호부
  • DNS가 없다면 많은 IP 번호를 외워야 할 것이다. 뿐만 아니라, IP가 변경된다면 접근이 불가능하다는 단점이 있다.
    -> 이를 해결하기 위해 DNS 사용

사용

  • DNS는 도메인명을 IP 주소로 변환해준다.
  • DNS 서버에 도메인을 등록해두고 요청 시 IP 주소를 반환하는 방식으로 진행된다.
    ex) 도메인명 : google.com, IP: 200.200.200.2

과정

  1. 클라이언트에서 DNS 서버에 도메인으로 요청
  2. DNS 서버 -> 클라이언트로 도메인을 IP로 전환하여 응답
  3. 클라이언트 -> 서버로 IP를 통해 접근

카테고리:

업데이트: