Coder Social home page Coder Social logo

study_http's Introduction

title tags Author
네트워크 및 HTTP 기초
IP, TCP, UDP, DNS, URI, URL, HTTP, Cache, HEADER, proxy
Jung

네트워크 및 HTTP 기초


Studying "HTTP 웹 기본 지식" by inf-Learn


My Goal


  • 웹앱 개발자로서 알아야할 기본 네트워크 지식
  • HTTP에 대한 이해도
  • API 설계시 URL 전략 습득
  • 추후 더 깊게 자습 후 수업 내용 외의 개인 지식 업데이트 계획.

Table of contents






IP


지정한 IP Address에
패킷 단위로 데이터 전달

IP패킷 정보


  • 출발지 IP
  • 목적지 IP
  • ...

IP 한계


  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 전송
  • 비신뢰성
    • 패킷이 소실 되거나
    • 순서를 보장해주지 않음
  • port 구분?
    • 같은 IP 내의 여러개의 어플리케이션이 통신하는 경우 보장X

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


인터넷 프로토콜 스택 4계층
애플리케이션 계층 : 프로세스간 통신 - HTTP, FTP
전송 계층 : 송수신자 간의 연결 서비스에 대한 정보- TCP, UDP
인터넷 계층 : 패킷을 목적지로 전송하기 위한 정보 - IP
네트워크 인터페이스 계층 : 물리적 전송

전송 flow


  • 애플리케이션에서 전송 메시지 생성
  • socket library를 통해 os에 전송
  • TCP에서 정보 생성 및 전송 메시지 첨부
  • IP 패킷 생성, TCP 데이터 첨부
  • 네트워크 인터페이스에서 인터넷 통해 서버로 송신

TCP


TCP 특징


  • 연결 지향 - TCP 3 way handshake(개념적 연결)
  • 신뢰성
    • 데이터 전달 보장
    • 패킷의 순서 보장

UDP


UDP 특징


  • 비연결성
  • 비신뢰성
  • port 정보, 체크섬 추가
  • 필요한 부분 애플리케이션에서 추가 조작 필요

PORT


하나의 IP에서 여러개의 어플리케이션이 통신할 경우
같은 IP내에서 프로세스 구분


DNS


도메인 네임을 IP 주소로 변환 IP 주소를 바꾼다 하더라도 새로운 IP에 지정할 필요 X


URI


  • 하나의 리소스를 가리키는 문자열 정보
  • URL과 URN을 포함

URL


  • 리소스가 있는 위치를 지정
  • 문법
    • 프로토콜
    • 호스트 네임
    • 포트 번호
    • path
    • 쿼리

ex) https://www.google.com/search?q=URL

프로토콜 호스트 네임 포트번호 path 쿼리
https www.google.com 443(생략 가능) search ?~~~~
웹 브라우저 요청 흐름
  • DNS와 Port 조회
  • HTTP 요청 메시지 생성
  • Sokcet Library를 통해 전달
  • TCP/IP 연결(IP, PORT 정보) 후 전달
  • TCP/IP 패킷 생성, HTTP 요청 메시지 첨부

URN

  • 리소스에 이름을 부여
  • URN만으로 리소스 찾는 방법 보편화 X

HTTP

  • 웹 상에서 데이터를 주고 받을 수 있는 규약
  • 클라이언트 - 서버 구조

특징

  • stateless

    • 서버가 클라이언트의 상태를 보존 X
      • 서버 확장성 증가
      • 클라이언트 추가 데이터 전송 늘어남.
      • 클라이언트와 서버의 독립적인 개발 가능
    • 요청이 증가해도 서버 증설이 가능
    • 항상 같은 서버 연결이 유지 될 필요 X
    • 서버 수평 확장 용이
  • 비 연결성

    • 요청과 응답시에만 유지하고 연결 종료
      • 한정된 서버 자원을 효율적으로 사용 가능
    • TCP/IP 3 way handshake 시간 추가
    • html 이외의 많은 자원 함께 다운
  • HTTP 1.1 이후 지속 연결 지원

    • 서버 단일 시간 내 TCP 연결의 수 최소화 가능 -> 자원 절역
    • 네트워크 혼잡 및 지연 축소
  • HTTP 2에서 지속 연결

    • 멀티 플렉싱 사용
    • 단일 TCP 연결을 통해 다수 HTTP 요청 응답이 응답 지연없이 stream 형태로 주고 받을 수 있음

메시지 구조


  • 공식 스펙
HTTP-Message 내용
start-line request-line/status-line
*(header-field CRLF) field-name":" OWS field-value OWS
CRLF empty line
message-body HTML 및 byte로 표현 가능한 모든 데이터
  • CRLF : empty line
  • OWS : 띄어쓰기 허용

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.