1 분 소요

IP (Internet Protocol)

지정한 IP 주소에 데이터를 전달합니다. 패킷이라는 통신 단위로 데이터를 전달합니다.

  • IP 패킷 정보
    • 출발지IP, 목적지IP, etc…
    • 전송 데이터

패킷 전달과정

  • 클라이언트 패킷 전달 -> 인터넷 망의 라우터에서 라우팅과 포워딩을 통해 목적지 서버로 패킷을 전달
  • *서버 패킷 전달 -> 같은 방식으로 확인 패킷을 전달

IP 프로토콜의 한계

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송하는 이슈가 있습니다.
  • 비신뢰성 : 패킷 Loss 이슈, 패킷 전송 순서 이슈가 있습니다.
  • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 구분 이슈가 있습니다.
    이를 해결하기 위해 TCP, UDP 프로토콜이 등장

TCP (Transport Control Protocol)

  • 인터넷 프로토콜 스택의 4계층
  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층

특징

  • 연결지향 - TCP 3 way handshake (가상연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP를 사용

TCP 3 way handshake connect 연결 과정

  1. 클라이언트는 서버로 SYN 을 통해 접속을 request
  2. 서버는 SYN + ACK 을 통해 접속 request 를 수락 response 및 연결 request
  3. 클라이언트는 다시 서버로 ACK 를 통해 response

TCP 통신 (rdt 3.0)

  • 데이터 전달 보증
  • 클라이언트가 서버로 데이터를 전송하면 서버는 클라이언트에게 잘 받았다는 응답 메세지를 보냅니다.
  • 순서보장
    • 만약 클라이언트가 서버로 패킷 1->2->3 순서로 보냈고 서버가 패킷 1->3->2 순서로 받았다면 서버는 클라이언트에게 패킷2를 재요청 합니다.
      위의 보장들은 TCP segment 에 출발PORT 목적PORT 전송제어, 순서, 검증 정보 등을 담고 있기에 가능합니다.

UDP (User Datagram Protocol)

IP와 거의 동일합니다. PORT 정보와 checkSUM 정보정도를 추가적으로 포함합니다. 애플리케이션에서 추가적인 작업이 필요합니다.

PORT

클라이언트와 서버가 둘 이상의 프로세스를 연결하기 위해 사용됩니다. 즉, 패킷들을 구분하기 위해 사용됩니다. 같은 IP내에서 프로세스를 구분하기 위해 PORT 를 이용합니다. 클라이언트와 서버는 해당 프로세스의 PORT NUMBER 를 공유합니다. 이는 TCP/IP 패킷 정보에 출발 목적 IP 및 PORT 정보를 담고 있기에 가능합니다.

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

DNS (Domain Name System)

IP를 기억하기 어렵고 변경될 수 있으므로 DNS 를 이용합니다. 예를들어 DNS 서버에 도메인 명과 IP number 를 등록해놓습니다. 클라이언트가 DNS 서버에 도메인 명을 요청하면 서버로부터 해당 IP를 응답 받습니다. 이후 응답받은 IP를 이용해 원하는 서버에 접속합니다.

업데이트: