-
HTTP 통신 기본 & Rest APICS 지식/○ Web 2021. 4. 12. 15:24
■ 웹 & 통신 protocol
1) 정의 :
인터넷 상에서 통신 규약, protocol 이라고 지칭
> 웹서버와 웹 사용자의 브라우저 사이에 Hyper Text문서를 전송하기 위한 규약 (문자 그대로 text 전송)
+ encrypted(암호화) 된 media 파일도 포함(아마 [표현계층 암호화과정]에서 text로 변환되는 듯..?)
※HTTP란
HTTP(Hyper Text Transfer Protocol) 란 한마디로 HTML(웹문서를 만들기 위한 언어) 문서를 주고 받는데 쓰이는 통신프로토콜(통신규약)이며, TCP 와 UDP 를 사용하여 통신하며 80번 포트를 사용하는 통신프로토콜(통신규약)이다.
※HTTPS란
Secure HTTP - 보안요소가 추가된 것
비대칭방식 사용, 더 찾아볼 것- TCP / IP 를 이용한 응용프로토콜( 응용계층에 위치하고 있어서 )
- HTTP(S) 는 연결상태를 유지하지 않는 비연결성 프로토콜(클라이언트의 이전 상태, 요청등을 기억하지 않음)
- Cookie, Session 등을 도입하여 유지(Cookie - 클라이언트, Session - 클라이언트 상태 in server)
- more info
- 비연결성이기 때문에, 요청/응답 의 형식으로 동작
- 도메인 + 자원위치(url : link) + 자원의 식별자(uri)
> url, uri 차이 : link → 식별자의 유무(identifier)
> 참조 : takeknowledge.tistory.com/29
- HTTP 통신 자체는 HTML 뿐 아니라 JSON, XML 같은 형태로도 주고 받음
- 네트워크 계층
- 응용 계층 (DNS, FTP, HTTP)
- 전송 계층 (TCP,UDP,SCTP)
- 네트워크 계층 (IP,ARP,RARP)
- 링크 계층 (이더넷, WIFI, 토큰링)> 전체 계층 참조 :
zion830.tistory.com/104 (4~5계층 정도로 분할해서 설명하는 것이 일반적)
■ HTTP 통신과정
> HTTP(S) 통신의 전달은 패킷을 통한 전송
1) 요청
a) 과정
클라이언트(사용자)가 서버에 HTTP Request (요청)을 한다.
b) 상세 설명
① Request line(요청 라인)
> 메써드, URL, 버전 등의 정보
② General Header & Request Header & Entity Header (메세지 정보)
- 헤더 정보에 client PC, 브라우저 정보, 사용자언어환경, 쿠키 등의 정보가 모두 포함(데이터 보안에 매우 취약)
- GET방식이 취약 : request url에 query string과 key=value & 연결로 요청 보내는 방식이라 그렇다
- POST 방식은 body를 통해서 전송해서 조금더 낫고 용량제한이 없어서(packet으로 쪼개져서 보냄) 이지만,
크롬 개발자 도구 / Fiddler 등의 툴을 사용하면 확인 가능하기 때문에, 암호화해 전송해야 함
참조 : link
③ CRLF(줄바꿈 명령)
④message - body(HTTP 본문 영역)
헤더에 위치하는 query-string을 가진 GET 보다는 POST 방식이 좀더 보안적
2) 응답
a) 과정
서버가 사용자의 요청을 받고 HTTP Response (응답) 받음
b) 상세 설명
① Status-line (응답 상태정보 라인)
> HTTP 버전정보, 3자리 상태 숫자값 등의 정보를 포함
> 400 번 : client error, 500 번 : server error (서버 입장에서는 해결해야되는 문제)
②Response Headers ( 응답 헤더정보 )
> 헤더 정보, 서버 및 웹사이트 관련 환경정보 포함한 정보를 전달
■ HTTP(S) 매써드의 종류
1) 정의
> 클라이언트가 웹서버에게 사용자의 요청의 목적/종류를 알리는 수단
- GET : 정보 검색 ex) 게시판 리스트 불러오기
- POST : 실행 / 저장 ex) 회원가입 / 로그인
- PUT : 전체 수정 ex) 회원정보 전체 수정
- DELETE : 삭제 ex) 회원정보 삭제
- PATCH : 일부 수정 ex) 회원정보 일부 수정 (Update에 가장 가깝게 쓰이고 있다)
- OPTIONS : 시스템에서 지원하는 메소드 확인
2) 상세
> 여기 전송방식 그대로 request string 만들어서 전송하면 그자체로 HTTP request 임
- GET : GET [request-uri]?query_string
GET 요청 방식은 URI(URL)가 가진 정보를 검색하기 위해 서버 측에 요청하는형태
전송방식 :
GET [request-uri]?query_string
Host:[Hostname] 혹은 [IP] \r\n
- POST :
POST 요청 방식은 요청 URI(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP, PHP, JSP 등) 혹은 CGI 프로그램으로 구성되고 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-uri]
Host:[Hostname] 혹은 [IP] \r\n
■ REST
참조 : link
1) 정의
REST(REpresentational State Transfer)
자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태를 주고 받는 아키텍쳐
> HTTP 프로토콜을 그대로 사용하기에 웹의 장점을 최대한 활용할 수 있음
> Clinet와 Server 사이의 통신 방식 중 하나
2) 구체적 개념
HTTP URI를 통해 자원을 명시하고, HTTP Method 4항목 (POST, GET, PUT, DELETE)를 통해 해당 자원에 CRUD를 적용할 수 있도록 설계한 방식
3) 장/단점
(a) 장점:
-HTTP 방식을 그대로 사용하므로, 별도 인프라 구축 필용 없음
-HTTP 사용하는 플랫폼에서 그대로 사용가능
-REST API 메세지가 동작의 의도를 명확하게 나타내므로 유지보수 용이
(b) 단점
- 사용 메서드 4가지로 제한적
- 구형 브라우저 문제
■ REST api
참조 :
> Rest api 설계 가이드 : sanghaklee.tistory.com/57
> Rest api node.js 예제 : link
※ API
Application Program Interface
동작의 방식은 관여하지 않은채, in/out으로 프로그램을 사용할 수 있도록 하는 interface
참조 :
velog.io/@sdc337dc/%EC%9B%B9-%EA%B0%9C%EB%85%90-Http-%ED%86%B5%EC%8B%A0
velog.io/@doomchit_3/Internet-HTTP-%EA%B0%9C%EB%85%90%EC%B0%A8%EB%A0%B7-IMBETPY
반응형