HTTP

Dev.Shinny·2023년 1월 30일
0

네트워크

목록 보기
1/1

인터넷

인터넷(Internet)은 인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신망을 일컫는 말이다.

인터넷 통신

  • 클라이언트에서 다른 클라이언트(혹은 서버)로 데이터를 보낼 경우 위치에따라 위성, 해저 광케이블, 기타 통신서버와 같은 노드들을 거쳐서 상대 클라이언트에 도달한다.
  • 이렇게 복잡한 과정을 거쳐서 어떻게 상대 클라이언트에 찾아갈 수 있는지 알기 위해선 IP(인터넷 프로토콜)에 대해 이해해야 한다.

IP(Internet Protocol)

인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미한다.

컴퓨터의 경우 사용하는 운영체제도 서로 다르고, 프로그램의 경우 아예 구현된 언어가 다르기 때문에 네트워크에서 이들이 통신할 수 있도록 하려면 공통된 통신 규약(프로토콜)이 필요하다.

방대한 네트워크 세상에서 특정 호스트에 데이터를 보내기 위해서는 주소가 IP라는 주소가 필요하다.

역할

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

IP 패킷 정보

패킷은 헤더(Header)+데이터(Payload)+옵션으로 구성된다. 헤더에는 패킷 길이, 프로토콜, 보낸/받는 사람의 IP 주소 등이 담긴다.

클라이언트 패킷 전달


클라이언트에서 상대 클라이언트로 패킷을 전달한다.

서버 패킷 전달

상대 클라이언트(서버)에서는 패킷을 잘 받았다고 응답을 할 수 있으며 해당 응답 패킷을 전달한다.

IP 프로토콜의 한계

  • 비연결성
    ⇒ 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 그냥 전송한다.
  • 비신뢰성
    ⇒ 패킷이 중간에 소실될 경우 문제가 생긴다.
    ⇒ 패킷이 순서가 보장되지 않는다.
  • 프로그램 구분
    ⇒ 같은 IP를 사용하는 서버에서 통신하는 어플리케이션을 구분하지 못 한다.
    Ex) 인터넷 게임을 하면서, 넷플릭스를 본다면?

TCP, UDP

인터넷 프로토콜 스택의 4계층

  • 애플리케이션 계층 - HTTP, FTP

    • 사용자와 가장 가까운 계층으로 사용자-소프트웨어 간 소통을 담당하는 계층이다
    • 애플리케이션 계층은 데이터가 올바른 애플리케이션 프로세스로 전달되도록 한다.
    • 애플리케이션 서비스에는 이메일, 파일 전송, 원격 로그인 및 World Wide Web이 포함된다.
    • 데이터 단위는 Data이고 응용계층 프로토콜은 FTP, HTTP, HTTPS 등이 있다.
  • 전송 계층 - TCP, UDP

    • 데이터가 손실이나 중복 없이 오류 없이 순서대로 응용 프로그램 간에 전달되도록 한다.
    • 이 계층에서는 방화벽이 사용된다.
    • 데이터 단위는 Segment이고 프로토콜은 TCP와 UDP다.
    • 애플리케이션에 종단간 통신 서비스를 제공한다.
    • 또한 흐름 제어 및 오류 제어를 수행하여 신뢰성을 제공한다.

    TCP : 모든 데이터가 올바르게 전달되도록 하는 신뢰할 수 있는 연결 지향 프로토콜.
    UDP : 배달을 보장하지 않거나 패킷이 순서대로 수신되도록 보장하지 않는 신뢰할 수 없는 연결 없는 프로토콜.

  • 인터넷 계층 - IP

    • IP 주소 지정 및 라우팅을 제공한다.
    • 데이터 단위는 패킷이며 프로토콜에는 IP 프로토콜, ICMP 등이 있다.
    • TCP/IP 네트워크에서 각 호스트를 고유하게 식별 하는 IP 주소 지정 체계를 담당한다.
    • 긴 데이터그램의 조각화 및 재조립을 제공한다.
    • 오류 처리, 혼잡 제어 및 QoS(서비스 품질)도 수행한다.
    • IP 데이터그램 헤더에 TTL(Time-to-Live) 필드를 제공한다.
    • 여러 네트워크 세그먼트에 걸쳐 중간 라우터를 통한 라우팅을 포함하여 패킷의 소스-목적지 전달을 담당

      Time To Live
      패킷의 유효기간을 나타내는 값. 패킷의 무한 루프 방지를 위한 기능으로 만들어졌다. 최대값 255를 가지며 라우터를 거칠 때마다 1씩 차감되고, 0이 되면 해당 패킷은 폐기된다. 패킷이 폐기될 경우 패킷 송신처에 폐기 통지가 발송된다.

  • 네트워크 액세스 계층

    • OSI 모델의 물리 계층과 데이터 링크 계층의 기능을 결합한다.
    • 케이블, 리피터, 허브, 스위치 및 브리지를 사용하여 장치를 네트워크에 물리적으로 연결하고 동일한 네트워크 서브넷 내에서 데이터를 전달한다.
    • 데이터 단위는 비트(1과 0)와 프레임이다.
    • 사용되는 프로토콜은 이더넷, RS232 등이다.
    • 동일한 네트워크에 있는 장치 간에 데이터를 물리적으로 전송하는 메커니즘을 정의한다.
    • MAC 주소 지정 및 논리적 IP 주소와 물리적 MAC 주소의 매핑을 제공한다.

    참고 자료 : What are the 4 layers of the TCP IP model in networking?

    프로토콜 계층

  1. 프로그램에서 Payload 작성
  2. Socket 라이브러리를 통해 전달한다.
  3. TCP정보 생성, 메세지 데이터(Payload)포함
  4. IP 패킷 생성, TCP 데이터 포함

기존 IP 패킷정보의 한계인 비신뢰성과 비연결성을 TCP 정보를 추가함으로써 한계를 극복한다.

TCP 특징

전송 제어 프로토콜 (Transmission Control Protocol)

  • 연결형 서비스로 가상 회선 방식을 제공
    • TCP 3-way Handshak

TCP 3-way Handshake
주로 장치 간에 안정적으로 데이터를 전송하기 위해 TCP 소켓 연결을 만드는 데 사용된다. 예를 들어 사용자가 인터넷을 탐색할 때마다 클라이언트 측 웹 브라우저와 서버 간의 통신을 지원한다. 1. SYN(Synchronizer) 접속 요청 메세지 전송
2. SYN + ACK 요청 수락
3. ACK (with 데이터 전송 가능)

참고 자료 : Three-Way Handshake

  • 데이터 전달 보증

  • 흐름 제어(Flow control)

    • 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
  • 혼잡 제어(Congestion control)

    • 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식

  • 순서 보장

  • 높은 신뢰성을 보장

    • 신뢰성이 높은 전송을 하기 때문에 UDP보다 속도가 느림

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

  • TCP의 모든 신뢰성 기능이 없는 포로토콜이라 볼 수 있다.
    • 순서 보장 X , 데이터 전달 보증 X
  • 비연결형 프로토콜
  • TCP보다 속도가 일반적으로 빠르고 오버헤드가 적다.
  • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
  • 신뢰성보다는 연속성이 중요한 서비스 예를 들면 실시간 서비스(streaming)에 자주 사용된다.

Port


> TCP나 UDP와 같은 전송 계층 프로토콜에서 어플리케이션이 상호구분을 위해서 사용하고 각 포트는 번호로 구별된다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다.

클라이언트의 요청이 해당 IP 서버에서 도착했을 때 서버에서 두 개 이상의 애플리케이션이 돌아가고 있다면 서버는 이를 어떻게 구분해서 데이터를 전송할 지 구분할 수 있어야 한다. IP가 클라이언트(컴퓨터)를 구분짓기 위한 Port는 애플리케이션을 구분하기 위한 수단이다.

포트 번호는 크게 세 종류로 구분된다.
0번 ~ 1023번: 잘 알려진 포트 (well-known port)
ex) FTP - 20, 21 / TELNET - 23
      HTTP - 80 / HTTPS - 443
1024번 ~ 49151번: 등록된 포트 (registered port)
49152번 ~ 65535번: 동적 포트 (dynamic port)

List of TCP and UDP port numbers

DNS


도메인 네임 시스템(Domain Name System)
IP 네트워크에서 사용하는 시스템이다. DNS는 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환해준다.

IP는 변경될 수 있고, 모든 웹사이트를 도메인이 대신 아이피 주소로 기억해야 하는 것은 어렵다. 이를 해결하기 위한 것이 DNS다.

  1. 도메인명을 DNS에서 검색한다.
  2. DNS 서버(Name Server)에서는 해당 도메인명의 IP를 응답한다.
  3. 해당 IP로 접속한다.

참고 자료 : DNS란_cloudflare
      DNS란_AWS


URI

통합 자원 식별자(Uniform Resource Identifier, URI)

  • Uniform : 리소스를 식별하는 통일된 방식
  • Resource : URI로 식별이 가능한 모든 종류의 자원.
  • Identifier : 다른 항목과 구분하기 위해 필요한 정보
  • URL + URN를 총칭한다. ( 모든 URL은 URI이지만 모든 URI가 URL은 아니다.)

URL

URL(Uniform Resource Locator)은 인터넷에서 웹 페이지, 이미지, 비디오 등 리소스의 위치를 알려주기 위한 규약이다.

https://www.google.com/search?q=url&hl=ko scheme://[userinfo@]host[:port][/path][?query][#fragment]

  • 프로토콜 : https
    • 일반적인 URI 스키마에는 HTTP, HTTPS, FTP, mailto 및 파일이 포함
  • userinfo
    • 사용자 이름과 암호를 포함
    • 거의 사용하지 않음
  • 호스트명 : www.google.com
    • IP 주소 또는 등록된 이름(도메인 명)으로 구성
  • 포트번호
    • 서버 연결에 사용되는 프로토콜.
    • 선택적 하위 구성 요소.
    • http 80, https 443 포트를 주로 사용
  • 패스 : search
    • 리소스 경로(path)
    • 계층적 구조
      ex) /home/file1.jpg
  • 쿼리 : ?q=hello&hl=ko
    • key=value 형태
    • ?로 시작, &로 추가 가능
    • query parameter, query string 등으로 불림
  • fragment
    • html 내부 북마크 등에 사용
    • 서버에 전송하는 정보 아님
    • 선택적 요소

웹 브라우저 요청 흐름


  1. DNS 조회하여 IP주소를 찾는다.
  2. HTTPS PORT 생략(443)
  3. HTTP 요청 메세지를 생성한다.

  1. 웹 브라우저가 HTTP 메세지를 생성
  2. SOCKET 라이브러리를 통해 TCP/IP계층에 전달한다.
  3. TCP/IP 패킷을 생성한다. HTTP 메세지도 포함된다.
  4. 서버는 패킷이 도착하면 패킷의 내부 HTTP 메서드를 해석해서 정보에 맞는 동작을 한다.
  5. 서버에서 HTTP 응답 메세지를 생성한다.
  6. 클라이언트에서는 응답메세지를 받아 맞는 동작(ex: 렌더링)을 한다.




참고 자료 : 웹 브라우저에 URL을 입력하면 어떤 일이 생기나요?
      김영한_HTTP 강의

profile
Hello I'm Shinny. A developer who try to enjoy the challenge.

0개의 댓글