IP(Internet protocol)

인터넷 프로토콜의 역할

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

인터넷 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 대상이 패킷을 받을 수 있는 상태인지 모른다.
  • 비신뢰성
    • 중간에 패킷이 사라지는 경우
      • 여러 노드를 거쳐 패킷이 전달되는 와중 특정 노드에서 문제가 발생할 수 있다.
    • 패킷의 순서가 바뀌는 경우
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우

TCP, UDP

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

  • 애플리케이션 계층 - HTTP, FTP
    • 웹 브라우저, 네트워크 게임, 채팅 프로그램 (소켓 라이브러리)
  • 전송 계층 - TCP, UDP
    • OS
  • 인터넷 계층 - IP
    • OS
  • 네트워크 인터페이스
    • LAN 장비

TCP 패킷 정보

  • 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보

TCP의 특징

  • 전송 제어 프로토콜 (Transmission Control Protocol)
  • 연결 지향
    • TCP 3 way handshake(가상 연결)
  • 데이터 전달 보증
    • 데이터를 전송하면 받은 측에서 데이터를 받았음을 전송한다.
  • 순서 보장
    • 패킷이 전송 중 순서가 달라진 경우 해당 부분부터 다시 보내도록 요청한다.
  • 신뢰할 수 있는 프로토콜
    • 위와 같은 특징들로 신뢰할 수 있다고 보통 표현한다.
  • 현재는 대부분 TCP 사용

연결지향 - TCP 3 way handshake

  • SYN - 접속 요청
  • ACK - 요청 수락

[ 데이터 전송 전 아래와 같은 세번의 연결 과정이 일어난다. ]

  1. 클라이언트에서 서버로 SYN 메시지를 보냄
  2. 서버에서 클라이언트로 ACK + SYN 메시지를 보냄
  3. 클라이언트에서 서버로 ACK 메시지를 보냄

UDP의 특징

  • 사용자 데이터그램 프로토콜 (User Datagram Protocol)
  • 기능이 거의 없음.
  • 순서를 보증하지 않는다.
  • 데이터 전달을 보증하지 않지만, 단순하고 빠르다.
  • IP와 거의 같다 + PORT + 체크섬
  • 애플리케이션에서 추가 작업이 필요하다.

PORT

한번에 둘 이상 연결해야 하는경우

  • 클라이언트가 애플리케이션 별 각기 다른 서버에 요청을 하는 경우
    • 게임, 디스코드, 웹 브라우저 등을 동시에 동작
  • IP만 이용하는 경우 애플리케이션 별 각기 다른 패킷을 구분하는 문제가있음.

같은 IP 내에서 프로세스를 구분한다.

  • IP는 목적지 서버를 찾는일을, 애플리케이션을 구분하는것은 PORT가 한다.
    • 애플리케이션 별 각기 다른 포트를 가짐으로 패킷을 구분해서 받거나 보낼 수 있다.
  • IP는 아파트라 하면 PORT는 호수로 비유가 가능

대표적인 PORT

0 ~ 65535 할당이 가능하며, 0 ~ 1023은 잘 알려진 포트로써 사용하지 않는 것이 좋다.

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

DNS

도메인 네임 시스템 (Domain Name System)

  • IP는 기억하기 어려우면서 변경될 수 있다.
  • 전화번호부에 비유한다. (실제 번호를 기억하지 않고 이름을 기억해도 되는것처럼)
  • 도메인 명을 IP 주소로 변환
    • ex) 도메인 - raindragnn.com, IP - 200.200.200.2