HTTP - IP / TCP / DNS

ryan·2022년 7월 25일

학습자료 : 모든 개발자를 위한 HTTP 웹 기본 지식

IP

: Internet Protocol

  • 인터넷을 통해 통신하기 위해 사용되는 규칙

IP의 역할

  • 지정한 IP 주소에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 전달 (패킷 ? package + bucket의 합성어)

IP 패킷 구성 정보

  • 출발지 IP, 목적지 IP, 기타, 전송 정보 등이 포함됨

패킷의 전달 예시(클라이언트 <-> 서버)


IP의 한계

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 대상 서버가 패킷을 받을 수 있느 상태인지 모름.
  • 비신뢰성 : 중간에 패킷이 사라지거나 패킷이 순서대로 안오는 경우
    • 패킷 소실 : 인터넷 노드가 중간에 꺼지거나 문제가 발생할 경우, 패킷도 함께 소실됨.(소실된 걸 알 수 없음)
    • 패킷을 여러개 보냈는데 순서대로 가지 않을 수 있음.
      • 용량이 크면 데이터를 끊어서 보내는데, 인터넷 노드 경로에 따라 보내는 순서와 받는 순서가 달라질 수 있음.
  • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우

TCP(Transmisson Control Protocol)

: 전송 제어 프로토콜 / IP의 한계점을 해결할 수 있음.

TCP의 특징

연결지향 - TCP 3 way handshake(가상 연결)

  • 연결을 한 뒤 데이터 전송을 함. (IP 프로토콜의 비연결성을 해소)


    1) 클라이언트에서 서버에 SYN을 보냄
    2) 서버가 클라이언트에 SYN,ACK를 보냄.
    3) 클라이언트는 그 때 다시 ACK와 함께 데이터를 전송

    SYN : 접속 요청
    ACK : 요청 수락

데이터 전달 보증 (패킷 소실 해소)

  • 클라이언트에서 데이터를 보내면 서버에서 응답을 해줌.

순서 보장

  • 전송한 패킷 순서와 전달된 패킷 순서가 다른 경우 다른 지점부터의 재요청 응답을 보냄 (서버에서 자체적으로 최적화 가능)

etc

  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

위와 같이 여러가지 기능이 가능한 이유는 TCP 세그먼트 내에 전송 제어, 순서, 검증 정보가 포함되기 때문.

인터넷 프로토콜의 4계층

1) 애플리케이션 계층 - HTTP,FTP
2) 전송 계층 - TCP,UDP
3) 인터넷 계층 - IP
4) 네트워크 인터페이스 계층 (LAN 드라이버, 장비 등)

데이터를 전달하는 예시(채팅 메시지를 보낼 때)

  • 채팅 프로그램에서 Hello 메세지 생성하고 socket 라이브러리를 통해 전달 (애플리케이션 계층)
  • TCP 정보 생성, 메세지 데이터를 포함시킴 (전송 계층)
  • IP 패킷 생성, TCP 데이터를 포함시킴 (인터넷 계층)
  • 네트워크 인터페이스에서 Ethernet Frame를 씌워서 전송

TCP/IP 패킷 정보 (TCP 세그먼트를 IP 패킷이 감싸는 구조)

  • IP 패킷 : 출발지 IP, 목적지 IP, 기타
  • TCP 세그먼트 : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보

UDP(User Datagram Protocol)

  • 기능이 거의 없음
  • 연결지향 , 데이터 전달 보증, 순서 보장 x
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름(3 way handshake 등의 추가 작업이 없기 때문에)
  • IP와 거의 같지만, PORT과 체크섬(검증) 추가됨.

http3가 나오면서 표준화되어 각광받고 있음.


PORT

1개의 IP로 두 개 이상의 서버와 통신해야 하는 경우

  • IP와 별개로 PORT라는 개념이 더해짐
  • IP는 목적지 서버를 찾는 것.
  • 같은 IP 내에서 돌아가는 애플리케이션(프로세스)을 구분하는게 PORT

프로세스 구분

  • 클라이언트에서 구동되는 프로세스마다 포트를 구분하고 TCP/IP 패킷에 출발지 IP,PORT 정보를 통해 서버와 통신함.

포트 사용

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

DNS

  • IP는 기억하기 어려우며, 변경될 수 있음.
  • 도메인 명을 IP 주소로 변환

DNS 사용

  • 클라이언트에서 도메인 명 입력(ex. google.com)
  • DNS 서버에서 IP 주소를 응답함
  • 클라이언트는 전달받은 IP주소로 연결 요청

profile
프론트엔드 개발자

0개의 댓글