HTTP 와 네트워크 기본지식(2) - IP, DNS, HTTP messages 등

jellyjw·2022년 12월 1일
0

IP(Internet Protocol)

인터넷 프로토콜의 약자로, 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미한다. 네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 IP address (IP 주소) 라고 한다.
인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분된다.

IPv4(Internet Protocol version 4)

네덩이의 숫자로 구분된 IP 주소체계를 IPv4라고 하며, IP 주소체계의 4번째 버전을 뜻한다.
터미널에서 nslookup 명령어와 도메인을 입력해 해당 주소의 IP를 알 수 있다.

IPv4는 각 덩어리마다 0부터 255까지 나타낼 수 있어 약 2^(32)인 43억개의 IP주소를 표현할 수 있다.

  • localhost, 127.0.0.1 현재 사용중인 로컬 PC
  • 0.0.0.0, 255.255.255.255 : brodcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소로 접근 가능 주소를 brodcast address로 지정하면 모든 기기에서 서버에 접근이 가능하다.

IPv6(Internet Protocal version 6)

개인 PC의 보급으로 누구나 PC를 이용해 인터넷에 접속하고, 서비스를 위한 서버를 생산하면서 IPv4로 할당할 수 있는 PC가 한계를 넘어서게 되자 세상에 나오게 된 것이 IPv6이다. IPv6은 2^(128) 개의 IP주소를 표현할 수 있다.


PORT


터미널에서 리액트를 실행하면 로컬 PC의 IP주소인 127.0.0.1 뒤에 :3000 과 같은 숫자가 표현되는데 이 숫자는 IP주소가 가리키는 PC에 접속할 수 있는 통로(채널)를 의미한다.
이미 사용중인 포트는 중복해서 사용할 수 없어서 3000번 포트가 사용중인 경우 3001번 포트로 리액트가 실행된다.
포트 번호는 0~65535 까지 사용할 수 있으며, 0~1024번 포트의 경우 주요 통신규약에 따라 이미 정해져 있다.

  • 22 : SSH
  • 80 : HTTP
  • 443 : HTTPS

위 예시처럼 이미 정해진 포트 번호라도 필요에 따라 자유롭게 사용할 수 있다. HTTP(:80), HTTPS(:443)과 같이 잘 알려진 포트의 경우, https://naver.com:443이 아닌 https://naver.com처럼 포트 번호를 URI에 생략할 수 있지만 그 외 잘 알려지지 않은 포트(3000과 같은 임시 포트)는 반드시 포트 번호를 포함해야 한다.

도메인(Domain)

도메인이란 IP에 이름을 부여한 것으로, 외우거나 식별하기 어려운 IP주소를 naver.com처럼 기억하기 쉽게 만들어 주는 네트워크 호스트 이름을 의미한다.

  • 도메인 : google.com
  • IP 주소 : 142.251.220.14

DNS(Domain Name System)


DNS란 호스트의 도메인 이름을 IP주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템이다.
모든 PC에는 IP주소가 있지만 모든 IP주소가 도메인을 가지는 것은 아니다. 모든 도메인 이름은 일정 기간동안 대여하여 사용하는데, 브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서는 해당 도메인 이름과 매칭된 IP주소를 확인하는 작업이 반드시 필요하다.
네트워크에는 이것을 위한 서버가 별도로 존재하고, 이를 DNS 라고 한다.


HTTP Messages

클라이언트와 서버 사이에서 데이터가 교환되는 방식이다. 두가지 유형으로 이루어져 있다.

  • 요청(Requests)
  • 응답(Responses)

구성 파일, API, 기타 인터페이스에서 HTML Messages를 자동으로 완성하며, start lineHTTP header를 묶어 요청이나 응답의 헤드(head) 라고 하고, payloadbody라고 칭한다.

    1. start line : 요청이나 응답의 상태를 나타내며 항상 첫번째 줄에 위치한다. 응답에서는 status line 이라고 부른다.
    1. HTTP headers : 요청을 지정하거나 메시지에 포함된 본문을 설명하는 헤더의 집합이다.
    1. empty line : 헤더와 본문을 구분하는 빈 줄
    1. body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함한다. 요청과 응답의 유형에 따라 선택적으로 사용한다.

Stateless

HTTP의 큰 속성인 무상태성이라는 뜻으로 말 그대로 상태를 가지지 않는다는 뜻이다. HTTP로 클라이언트와 서버가 통신을 주고받는 과정에서 HTTP가 클라이언트나 서버의 상태를 확인하지 않는다.
HTTP는 통신 규약일 뿐이므로 상태를 저장하지 않기 때문에, 다른 방법(쿠키, 세션, API 등)을 통해 상태를 확인할 수 있다.

profile
남는건 기록뿐👩🏻‍💻

0개의 댓글