인터넷 통신 방법(IP, TCP, UDP ..)

ㅎㅎ·2022년 12월 19일
0

인터넷 통신

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

  클라이언트와 서버의 물리적 거리가 매우 멀다면 인터넷 망을 통해 메시지를 보내야 함
  이때 수많은 노드를 연결하는 케이블을 거쳐서 메시지가 전달됨
  이 방식을 이해하기 위해 IP(인터넷 프로토콜)에 대한 이해가 필요

1️⃣ IP(인터넷 프로토콜)

  • 복잡한 망에서 데이터를 전달하는 방법
    ⇒ IP 주소 부여

  • IP의 역할
    1) 지정한 IP 주소에 데이터 전달
    2) 패킷이라는 통신 단위로 데이터 전달

  • IP 패킷 정보
    출발지 IP, 목적지 IP, 기타...
    전송 데이터

  • 각 노드(서버)들은 IP 규약을 따라서 목적지로 도달 가능한 곳으로 패킷을 전송
    최종적으로 목적지에 도착하도록 함, 데이터를 받은 목적지에서도 출발지로 메시지를 동일한 방식으로 전송
  • 전송 경로는 상이할 수 있음
  • IP 프로토콜의 한계
    1) 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    2) 비신뢰성: 중간에 패킷이 사라지면? 패킷이 순서대로 안 오면?
    -> 메시지가 약 1500byte가 넘으면 메시지를 끊어서 전송
    1.hello 2.world!를 보낸다고 했을 때 각 패킷이 서로 다른 노드를 거쳐갈 수 있음
    2번 패킷이 먼저 도착하는 경우 발생 world! hello
    IP 프로토콜은 순서보장을 하지 않음 ⇒ TCP가 해결
    3) 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이면?

2️⃣ TCP, UDP

인터넷 프로토콜 스택의 4계층(데이터 전송 흐름)

  • TCP 세그먼트
    출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보...로 구성

    • IP만으로 해결이 되지 않았던 순서 제어 등의 문제가 해결됨

  • TCP(Transmission Control Protocol) 특징 ⭐

    1) 연결지향: 연결 가능 여부를 확인하고 전송 ⇒ TCP 3 way handshake (가상 연결)

➡️ TCP 3 way handshake?
ACK 응답이 없으면 데이터를 전송하지 않음

* 가상연결? 두 노드가 물리적으로 연결된 것이 아니라 요청과 수락 메시지를 성공적으로 수신함으로써 논리적으로 연결이 성공했다고 생각하는 것, 과거 전화 통신을 중개할 때 실제로 연결 되는 포트를 올바른 위치에 꽂아준 것과 대비됨

2) 데이터 전달 보증: 데이터 정상 수신 메시지를 답신하므로써 패킷이 전송 중 누락되었을 때 인식 가능

3) 순서 보장: 순서가 섞인 패킷을 폐기하고 다시 보내라고 요청

  • 위 모든 것이 가능한 이유는 전송 제어, 순서, 검증정보 등이 TCP 세그먼트에 포함되어 있기 때문
    -> 신뢰할 수 있는 프로토콜
    -> 현재는 대부분 TCP 사용

UDP(User Datagram Protocol) 사용자 데이터그램 프로토콜

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결지향 -> TCP 3 way handshake
  • 데이터 전달 보증 X
  • 순서보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • 정리: IP와 거의 같다 + PORT + 체크섬 정도만 추가, 어플리케이션에서 추가 작업 필요
  • UDP를 사용하는 이유? TCP의 여러 기능들은 패킷의 용량도 크고 느리지만 규약이므로 수정할 수 없음 -> 최적화 불가, 어플리케이션 레벨에서 최적화를 위해 UDP를 사용, 최근 HTTP3에서는 UDP를 이용하여 SYN / ACK 과정을 생략하고 최적화하는 방식을 선보임

PORT

하나의 IP에서 여러 어플리케이션이 동작하고 있을 때 각 어플리케이션으로 송수신 되는 여러 패킷을 구분하기 위한 식별번호

PORT 번호

  • 0 ~ 65535 할당가능
  • 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
  • FTP - 20, 21
  • TELNET- 23
  • HTTP - 80
  • HTTPS - 443

DNS

DNS(Domain Name System): 전화번호부, 도메인 명을 IP 주소로 변환

  • IP는 기억하기 어렵다
  • IP는 변경될 수 있다
  • 기억하기 쉬운 고정 주소인 DNS를 사용

출처: 모든 개발자를 위한 HTTP 웹 기본 지식(김영한) - 인프런

profile
Hello World

0개의 댓글

관련 채용 정보