TIL 9.13

Hong·2021년 9월 13일
0

TIL 9.13

IP주소(Internet Protocol address)

컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호입니다. 만약 서버가 들어가지 않으면 IP가 안전하지 않다고 합니다. 네트워크에 연결된 장치가 라우터이든 일반 서버이든, 모든 기계는 이 특수한 번호를 가지고 있어야 합니다. 이 번호를 이용하여 발신자를 대신하여 메시지가 전송되고 수신자를 향하여 예정된 목적지로 전달됩니다. IP 주소를 줄여서 IP라고 부르기도 하나 IP는 인터넷 규약 자체를 가리키는 말이기 때문에 엄밀하게는 구별해야 합니다. IP 와 IP 주소는 다른 개념입니다.

IP(Internet Protocol)

IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터 전달을 합니다.

Internet Protocol의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    • 중간에 패킷이 사라질 수 있음
    • 패킷의 순서를 보장할 수 없음

IP패킷(IP Packet)

우체국 송장처럼 전송 데이터를 무사히 전송하기 위해 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있습니다.
그림 출처: https://velog.io/@gparkkii/HTTPIP

  • 패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달합니다. 이를 통해 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있습니다.

TCP(Transmission Control Protocol)

컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종이며 연결 지향적 프로토콜입니다. 연결 지향 프로토콜이란 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미합니다. TCP는 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약으로, 보통 하위 계층에서 사용하는 IP와 엮어서 TCP/IP로 표현하는 경우가 많습니다.

  • TCP 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함합니다.

TCP 특징

  • 연결지향 - 3 way handshake (가상연결)
    • 먼저 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸 후 서버는 클라이언트에게 요청을 수락한다는 ACK 와 SYN가 설정된 패킷을 발송합니다. 다시 클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되며 데이터를 전송할 수 있습니다. 만약 서버가 꺼져있다면 클라이언트가 서버에서 응답이 없기 떄문에 데이터를 보내지 않습니다.
      • * SYN은 Syncronize, ACK는 Acknowledgment의 약자
  • 데이터 전달 보증
    • TCP는 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려줍니다.
  • 순서 보장
    • 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있습니다.

따라서 TCP는 IP패킷의 한계를 보완한 신뢰할 수 있는 프로토콜입니다.

UDP(User Datagram Protocol)

컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종이며 비연결 지향적 프로토콜입니다. 비연결 지향적이란 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식을 의미합니다. UDP는 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약입니다.

UDP 특징

  • 기능이 많이 부족함
  • 비 연결지향 - TCP 3 way handshake (X)
  • 데이터 전달 보증 (X)
  • 순서 보장 (X)
  • 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠름
  • 신뢰성보다는 연속성이 중요한 서비스(실시간 스트리밍 등)에 자주 사용

HTTP 알아보기

HTTP 역사

  • HTTP/1.1, HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 프로토콜입니다.

HTTP 특징

  • 클라이언트 서버 구조

    • 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 클라이언트 서버 구조로 이루어져 있습니다.
  • 무상태 프로토콜(Stateless), 비연결성(Connectionless)

    • 서버가 클라이언트의 상태를 보존하지 않습니다.
    • 비 연결성을 가지는 HTTP에서는 실제로 요청을 주고 받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊습니다.
      이를 통해 최소한의 자원으로 서버 유지를 가능하게 합니다.
      (현재는 HTTP 지속연결(Persistent Connection)로 문제를 해결합니다.)
  • HTTP 메세지
    헤더와 바디로 구분

    • header : HTTP 전송에 필요한 모든 부가정보를 담기 위해 사용합니다. 헤더 형식은 < field-name >:< field-value >로 대소문자를 구분하지 않습니다

    • body : 데이터를 실어 나르는 부분의 페이로드(Payload)를 포함

  • 단순함, 확장 가능

profile
코딩 배우기

0개의 댓글