HTTP 정리 - 인터넷 네트워크

JoongHyeok.Velog·2022년 4월 6일
0

HTTP

목록 보기
1/3
post-thumbnail

인프런 - 모든 개발자를 위한 HTTP 웹 기본지식 강의를 수강하며 수강섹션에 따라 총 8개의 파트로 분리하여 정리해 보려 합니다.

  1. 인터넷 네트워크
  2. URI와 웹 브라우저 요청흐름
  3. HTTP 기본
  4. HTTP 메서드
  5. HTTP 메서드 활용
  6. HTTP 상태코드
  7. HTTP헤더1 - 일반 헤더
  8. HTTP헤더2 - 캐시와 조건부 요청

이번에는 그 첫번째 섹션인 인터넷 네트워크에 대해 정리하겠습니다.

인터넷 네트워크

인터넷 통신

클라이언트와 서버는 인터넷을 통해서 서로 통신을 하게 됩니다. 인터넷은 수많은 노드를 통해 이루어져 있는데 이렇게 복잡한 인터넷망을 통해서 어떻게 클라이언트와 서버가 통신을 할 수 있는 지에 대해 알아보려 합니다.

IP

인터넷 프로토콜 역할

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


IP 프로토콜의 한계

  • 비연결설
    패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송합니다
  • 비신뢰성
    중간에 패킷이 사라질 수 있습니다
    패킷이 순서대로 도착하지 않을 수 있습니다.
  • 프로그램 구분
    같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 혼동됩니다.

IP프로토콜의 한계를 극복하기 위해 나온것이 TCP입니다.

TCP/IP 패킷 정보는 아래와 같이 생겼습니다.

TCP

전송제어 프로토콜(Transfer Control Protocol)로 특징은 다음과 같습니다.

  • 연결지향 - TCP 3 way handshake(가상연결)을 통해 연결을 확인합니다.
  • 데이터 전달을 보증합니다.
  • 패킷의 도착 순서를 보장합니다.
  • 신뢰할 수 있는 프로토콜입니다.
  • 그래서 현재는 대부분 TCP를 사용합니다.

TCP 3 way handshake

  1. 클라이언트가 서버에게 SYN(접속요청)을 보냅니다.
  2. 서버가 다시 클라이언트에게 SYN(접속요청)과 클라이언트가 보낸 SYN(접속요청)에 대한 ACK(요청수락)을 함께 보냅니다.
  3. 클라이언트가 서버에게 서버가 보낸 SYN(접속요청)에 대한 ACK(요청수락)을 보냅니다.

데이터 전달 보증

클라이언트와 서버간에 데이터가 유실되진 않았는지 확인하여 데이터 전달을 보증합니다.

패킷의 도착 순서 보장

클라이언트가 패킷1,패킷2,패킷3 순서로 전송했는데 서버가 패킷1,패킷3,패킷2 순서로 도착하여 받게 된다면 서버가 클라이언트에게 이를 확인하고 패킷2번부터 다시 보내달라고 클라이언트에게 요청하여 패킷의 도착 순서를 보장하게 됩니다.

UDP

사용자 데이터그램 프로토콜(User Datagram Protocol)로 특징은 다음과 같습니다.

  • 하얀 도화지에 비유(기능이 거의 없음)합니다.
  • TCP의 3 way handshake와 같은 기능이 없어 연결지향프로토콜이 아닙니다.
  • 데이터 전달을 보장하지 않습니다.
  • 순서를 보장하지 않습니다.

이와같이 전달 및 순서가 보장되지 않지만 단순하고 빠른것이 UDP의 특징입니다.

정리

  • IP와 거의 같지만 PORT가 추가되고 체크섬 정도가 추가된 것이 특징입니다.
  • 애플리케이션에서 추가 작업이 필요합니다.

PORT

하나의 컴퓨터는 하나의 IP주소를 가지고 있습니다. 그런데 하나의 컴퓨터에서 게임이나, 화상통화 등 여러 작업을 동시에 진행하고 싶을때는 여러서버에서 보낸 응답들이 하나의 IP로 응답되기 때문에 게임에 대한 응답인지, 화상통화에 대한 응답인지 클라이언트는 구분할 수 가 없습니다. 이를 해결하기 위해 나온 것이 PORT입니다.

위의 사진을 보면 출발지 PORT와 목적지PORT라는 항목이 있습니다. 이렇게 PORT를 사용하여 게임에 대한 요청과응답, 화상통화에 대한 요청과 응답을 하나의 IP를 사용하여 구분할 수 있게 됩니다.

DNS

정의 : 도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었습니다.

DNS가 나온 배경은 다음과 같습니다.

우선 IP주소는 사용자가 기억하기 쉽지 않습니다. 100.100.100.1 같은 주소를 사용자가 모두 기억하기는 굉장히 어렵습니다.
또한 IP는 쉽게 변경될 수 있습니다.
이를 해결하기 위해 나온것이 DNS입니다.
예를 들어 구글은 DNS서버에 IP주소와 도메인 명인 www.google.com을 등록해 놓고 클라이언트가 www.google.com을 입력하면 DNS서버로 요청을 하게 됩니다. 그럼 DNS서버는 등록된 도메인명에 맞는 IP주소를 응답하게 되고 클라이언트는 구글IP주소 서버로 접속하게 됩니다.

profile
영차영차

0개의 댓글