Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • koa
  • 알고리즘
  • html
  • mysql
  • redis
  • PostgreSQL
  • Flutter
  • html5
  • Haskell
  • javascript
  • 문자열
  • Rust
  • Java
  • Til
  • CSS
  • React
  • go
  • 하스켈
  • 프로그래머스
  • 데이터 타입

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

웹개념_HTTP통신
웹개념

웹개념_HTTP통신

2021. 8. 24. 23:51
728x90

0. 웹 통신 

 

1) 웹 통신 & Protocol 

  • 인터넷 상에서의 통신을 말함
  • 많은 정보들이 주고 받기에 인터넷에 엄격한 규약이 존재함. 이것을 Protocol 이라 말함

2) 웹 Protocol 종류

  • 일반적인 프로토콜  

   Http: Hyper Text Transer Protocol

  Https: secure Hyper Text Transer Protocol

 

  • TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜  

  FTP: File Transfer Protocol

 

  • 파일 전송 프로토콜

   Talnet : Terminal Network

   SSH: Secure Shell

 

  • 보안된 소켓 통신을 위한 프로토콜 

  SMTP: Simple Mail Transfer Protocol

 

  • 기타

   TCP/UDP : Transmission Control Protocol/ User Datagram Protocol

   IP : Internet Protocol 

 

 

1. Http 프로토콜

 

1) Hyper Text Transfer Protocol

  • Hyper Text를 전송하기 위한 프로토콜
  • Hyper Text란, 웹 문서를 구성하고 있는 언어, 즉 HTML을 말한다.

2) HTML

  • Hyper Text Markup Language 
  • Hyper Text: text를 넘어서 링크, 이미지 등 다양한 것들을 표현할 수 있는 것.
  • HTML: 웹 문서의 뼈대를 구성하는 언어, 브라우저를 통해서 웹문서를 읽어올 수 있다.

3) Http 통신 - Requst & Response 

  • 요청 Request, 응답 Response로 이루어짐
  • 클라이언트가 서버에게 요청을 보냄
  • 서버는 클라이언트에 요청에 대한 응답을 보냄
  • 클라이언트 사용자에게 응답 받은 결과를 보여줌

 그림으로 설명한 웹 브라우저 client와 server의 응답 방식 

 

  • request / response 의 구조 

4) Http 통신 - stateless

  • Http 통신은 state 개념이 존재하지 않음
  • 통신을 주고 받아도 클라이언트와 서버는 연결되 있지 않고 각각 통신은 독립적이다.
  • 상태를 저장하지 않는다는 뜻( 서로 요청하는 것들을 기억하지 못한다.)
  • 로그인 같은 경우에 세션 / 저장소 같은 방식을 이용해 기억하는 것 처럼 보이게 함.

5) Http 패킷

  • Http 통신에 요청을 보내고 응답을 받을때에 그 정보들은 패킷(Packet)에 넣어 보낸다.
  • 패킷 구조 : Header / Body
  • Header: 보내는 사람의 구조, 받는 사람의 주소, 패킷 생명시간
  • Body: 실제 전달하고자 하는 내용

  • 요청과 응답에 담겨 있는 정보

  • General: 요청 url 정보와 메소드, 상태 코드를 확인할 수 있다.
  • Response Heaers: 응답 헤더, 응답 온 패킷의 헤더를 확인할 수 있다. 서버의 종류, 연결 상태 등 이 담겨있다.
  • Request Headers : 요청 헤더. 요청을 보낸 패킷의 헤더를 확인할 수 있다. 보낸 클라이언트의 종류, 요청한 파일의 종류를 알수 있다.

6) Http Request 구조

 

1) Start Line(요청내용) :

  • Http 메소드 :
  • Requst target : 요청한 의도를 담고있다(GET,POST,DELETE,UPDATE)
  • Http ver : HTTP 버전에 따라 요청 메세지 구조나 데이터가 다를 수 있기 때문에 버전을 명시함

2) Header : HTTP 요청이 전송되는 목표 주소

3) Body 

 

7) Http Request 구조 - Http 메소드

  • GET : GET [request-url]?query-string

       GET 요청 방식은 URl(URL)이 가진 정보를 검색하기 위해 서버 측에 요청하는 방식이 GET 방식이다.


 

 

전송방식:

GET [request-url]?query_string
Host:[Hostname] 혹은 [IP] \r\n

  • POST: 

  POST 요청 방식은 요청 URl(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP,PHP,JSP 등) 혹은 GGI 프로그

  램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보를 포함하지 않고 데이터 부분에 요청 정보가 들어간다.


전송방식 :

POST [request-uri]?query_string
HOST:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Lenght in Bytes] \r\n
[query-string] 혹은 [데이터]

  • PUT:

   POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메시지(데이터) 가  함께 전송된다.

 

 

전송방식 :
PUT [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Length in Bytes] \r\n
Content-Type:[Content Type] \r\n
[데이터]

  • DELETE: 원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT과는 반대 개념의 메소드
   전송방식:
DELETE[request-url]
Host:[Hostname] 혹은 [IP] \r\n

8) Http Response의 구조 - 응답 코드 종류

 

 

2. REST API

  • REST(REpresentational State Transfer)
  • 웹에 장점을 최대한 활용할 수 있는 아키텍쳐

1) REST에 4개의 속성

속성1 

  • 서버에 있는 모든 resource는 각 resource 당 클라이언트가 바로 접근 할 수 있는 고유 URL이 존재한다.

속성2 

  • 모든 요청은 클라이언트가 요청할 때 필요한 정보를 주기 때문에 서버에서 세션정보를 보관할 필요가 없다. 그렇기 때문에 서비스에 자유도가 높아지고 유연한 아키텍쳐 적응이 가능하다.

속성3

  • HTTP 메소드를 사용한다.
  • 모든 resource는 일반적으로 http 인터페이스인 GET,POST,PUT,DELETE 4개의 메소드로 접근 되어야한다는 뜻

속성4

  • 서비스 내에 하나의 Resource 가 주변에 연관 된 리소스들과 연결되어 표현되어야 한다.

 

2) REST의 3가지 구서

  • 자원(resource), method, message

Resource

  • REST에서는 자원에 접근 할때 URl(Uniform Resource Identifier)로 접근한다.
  • Resource: 자원은 저장된 데이터(DBMS)는 물론, 이미지/동영상/문서(pdf 등)와 같은 파일, 서비스 (이메일 전송, 푸쉬 메시지 등)을 모두 포함

HTTP 메소드 : POST / GET / PUT / DELETE

 

  • POST : POST를 통해 해당 URl을 요청하면 리소스를 생성한다.
  • GET: GET을 통해 해당 리소스를 조회, 리소스를 조회하고 문서에 대한 자세한 정보를 가지고 온다. 예) 영화 리스트 정보 배우정보
  • PUT: PUT을 통해 해당 리소스를 수정한다.
  • DELETE: DELETE를 통해 해당 리소스를 삭제한다.

메시지

  • 메시지는 HTTP header와 body, 응답상태 코드로 구성되어 있으며 header와 body에 포함된 메시지는 메시지를 처리하기 위한 충분한 정보를 포함한다.

* GET과 POST만 주로 쓰지만, 실제로는 요청을 보낼때, PUT, PATCH, DELETE등 더 자세한 동작을 정의 할 수 있따. 보통 PUT은 전체 수정(대체), PATCH는 부분 수정, DELETE는 제거시 요청할때 사용한다. 주소를 자원이라 판단하고,메서드를 동사라고 보는 개발 방식이 바로 REST 이다.

'웹개념' 카테고리의 다른 글

[Server] Cache(캐시)란?  (0) 2021.10.09
SSR과 CSR  (0) 2021.10.09
[GraphQL] GraphQL과 REST API의 차이점  (0) 2021.10.09
    '웹개념' 카테고리의 다른 글
    • 동기와 비동기 개념과 차이
    • [Server] Cache(캐시)란?
    • SSR과 CSR
    • [GraphQL] GraphQL과 REST API의 차이점
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바