컴퓨터/네트워크

| 니앙팽이 - 네트워크 | HTTP | 개요 / 구성 / 매서드 / 상태 | 404가 뭐죠?

객체지향

🌐 클라이언트-서버


1. 용어

여기서 컴퓨터라함은 CPU, RAM이 있는 하드웨어다.

클라이언트
  • 서버에 요청하는 컴퓨터
  • GET, POST 등등..
    HTTP 메서드를 이용해 request 한다.
서버
  • 클라이언트 요청을 늘 Listen 하는 컴퓨터.
  • 요청에 대해 응답을 해주는 프로그램
  • 데이터를 요구하면 데이터 보내주는프로그램

클라이언트-서버 Example

> 카카오톡 <
1. 클라이언트 요청
    채팅방에 메세지를 입력하고 전송 버튼을 누르는것
2. 서버 요청 응답
    채팅방에 쓰여질 http 데이터를 제공(응답)해줌

🌐 URL

정의

Uniform Resource Locator : URL은 웹에 게시된 어떤 자원을 찾기위해 브라우저에서 사용된다.


URL의 구조

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

1. http://                  | 프로토콜    : 데이터를 교환하는 방법을 나타냄
2. www.example.com          | 도메인이름 :  IP address를 사용하는 것도 가능합니다 {도메인 :IP} 
3. :80                      | 포트번호   : 웹서버에서 자원을 접근하기 위해 사용하는 "관문(gate)"
4. path/to/myfile.html      | 자원의 경로 
5. ?key1=value1&key2=value2 | URL Parameter(QueryString) : key-value 형식 리스트
                                URL 중에서 물음표 ‘?’ 이후 문자열
                                쿼리 : _key_=_value_
                                And  : &으로 쿼리를 잇기
6. #SomewhereInTheDocument  | anchor

DNS

DNS는 전세계구급 서버로, IP와 도메인을 대응시켜주어 URL 주소값을 가져온다.


HTTP 프로토콜

실제 웹 브라우저에서 응답 받는 HTTP의 내용 구성이다.

① 하이퍼 텍스트 전송 프로토콜

하이퍼 텍스트 : text인데 사진, 동영상, 참조 URL 경로도 첨가할 수 있는 문서 형태

  1. 웹기반 Struct / 어플리케이션
  2. 클라이언트(컴퓨터) - 서버(컴퓨터)간에 데이터 교환 (서버-클라이언트 등등..)을 위한 메세지
    • 이미지, 비디오, 오디오 Doc 등등..
  3. TCP/IP 에 기반한 프로토콜이다.
  4. http(하텍전프)를 아는 컴퓨터간 소통만이 유효하다만, 사실 모든 컴퓨터(클라,서버)는 Http라는 통신규약을 사용할 줄 안다..

② HTTP의 세가지 핵심

  1. http is connectonless : 요청을 받고, 한번 전송이 끝나면 연결을 끊기때문이다
  2. http can deliver any sort of data -> and computer can able to read it
  3. http is stateless : 연결되는 동안 서버-클라이언트는 서로의 상태를 잘 알고 있다. 그래서 상태를 동기화 해주지 않는다는점에서 stateless

③ 왜 HTTP를 사용하나?

  • Http는 클라이언트한테 html 문서를 fetch(가져오기)
    아니면 send(전송하기)에 특화되도록 디자인 했기 때문이다.

  • 가장 편리하고 빠르게 웹으로 이동가능하다.

  • 어떻게 작동하나? 그리고 어떻게 가능하게 하나?


흐름

  • 메세지 구성 : 더 나아가서 Http 메세지의 구성요소는 어떻게 되어 있나?
    1. Start Line : contain text based infomation
    2. Headers : contain text based infomation
      1. request 메세지의 보조 정보
      2. key:value로 구성
        Host : "google.com"
        {key = HOST, value = "google.com"}
        
      3. 호스트 정보, 클라이언트 정보, 컨텐츠 형식(JSON XML?)
    3. Body : contain text based infomation
      1. request 메세지의 메인 정보
      2. 단, GET을 사용하면 body가 없을수도 있는데..
        • 이유는 GET은 이미 URL에 담아서 보내므로 body가 없어도 된다.
  • Request VS Response
    • 메세지의 구성은 Req냐 Res에 따라도 바뀐다.
    1. Requset
      ________________________________________________________________
                |Method  |   URL : path to file   | HTTP Version|
      StartLine  GET     /products/myproduct.html  HTTP/1.0
      Headers    Host: ww.mywebsite.com
                 Accept:test/html (MEME 타입) 
                 Accept-language: en-us 
      Body       ㅡ (Get이라서 없는것이지, 나머지 메소드였으면 내용이 있다.) 
      ________________________________________________________________
      메서드 : 서버에게 요청하고 싶은 커맨드
      URL : way to locate the resource
      MEME : 웹에서 파일의 확장자를 나타내는 방법 
             https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
      
    2. Response
      ___________________________________________
                 |HTTP Version | State code |
      StartLine   HTTP/1.0         200: OK
      Header      Host : ww.mywebsite.com
                  Accept-language : en-us
                  Accept : text/html
      Body        Product/myproduct.html (Requested File)
      

HTTP Status Codes
1XX : Infomation

2XX : Success

  • ★ 200 : OK
  • ★ 201 : Created (Building API Request) your build success
  • ★ 204 : Every thing Work way Well but noting to return anything
    • 통신은 문제가 없는데 그냥 아무것도 안주겠다고 하는것

3XX : Redirection

  • ★ 304 : 너가 알고있는 정보가 바뀌었는지 아닌지 안심해라~ 바뀐게 없으니
    • 모니터링 할떄 사용

4XX : Client Error (여기서부턴 내잘못)

  • ★ 400 : Bad Request (가장 일반적으로 일어남)
    • Request 정보가 뭔가 이상할때 / 작성똑바로 안했을때 / 잘못된 매개변수 전달
  • ★ 401 : API key를 전달 안했을때 주로 뜬다 (니 API 안줬으니 응~ Res도 없어)
  • ★ 403 : (API key 줘서 니가 누군지는 아는데 어딜 핵폭탄 비번을달래? 꺼져 ㅋ)
  • ★ 404 : 니가 누군지는 알겠는데 너가 요청하는게 우리한테 없어요.. 404

5XX : Server Error


메서드 (개발상식 : RESTful API 에서 참조 가능)

① GET : 읽기 : 서버로 받아오기만함

② POST : 생성/수정/삭제
상위호완 메서드

③ PUT / DEL : 생성/삭제 POST에 밀림

GET POST 자세히 알아보자

데이터크기, 담는방식, 목적으로 나누자면..

___ GET POST
데이터 크기 제한
담는방식 URL Body
목적 서버 값, 상태
참조
서버 값, 상태
수정, 조작