2020. 1. 7. 23:43ㆍNetwork
인터넷 프로토콜 : 프로토콜은 규약, 약속을 의미하며, 계층별 응용, 전송, 인터넷, 링크로 구분 할 수 있습니다.
응용계층에 위치하는 HTTP(Hyper Text Transfer Protocol)
WWW(World Wide Web)상에서 주로 HTML 문서를 주고받는 데 쓰입니다.
예)로 클라이언트인 웹 브라우저가 HTTP를 통하여 서버에게 웹페이지나 그림 정보 요청, 서버가 클라이언트로응답하여 필요한 정보를 전달합니다.
HTTP메소드에는 GET, POST, PUT, PATCH, DELETE등이 있으며,
(순서대로) 검색, 생성, 업데이트(전체), 업데이트(일부), 삭제요청을 의미합니다.
전송계층에 위치하는 TCP, UDP를 사용합니다.
TCP: Transmission Control Protocol
TCP/IP라는 명칭으로도 널리 불립니다. 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을
'안정적'으로, 순서대로, 에러없이 교환할 수 있게 합니다.
웹 브라우저들이 월드 와이드 웹에서 서버에 연결할 때, 이메일 전송이나 파일 전송에도 사용됩니다.
참고- 옥텟: (초기 1바이트 8비트명확하지 않았음, 현재 1바이트와 같은의미로 쓰임)
UDP: User(혹은 Universal) Datagram Protocol
전송 방식이 너무 단순하여, 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 합니다. 음성 인터넷 프로토콜(VoIP)등에 사용됩니다.
비교요약
TCP는 데이터를 주고 받을 양단 간에 먼저 연결을 설정하고 설정된 연결을 통해 양방향으로 데이터를
전송하지만, UDP는 연결을 설정하지 않고 수신자가 데이터를 받을 준비를 확인하는 단계를 거치지
않고 단방향으로 정보를 전송합니다.
- 신뢰성 : TCP는 메시지 수신을 확인하지만 UDP는 수신자가 메시지를 수신했는지
확인할 수 없습니다.
- 순서 정렬 : TCP에서는 메시지가 보내진 순서를 보장하기 위해 재조립하지만 UDP는 메시지 도착
순서를 예측할 수 없습니다.
- 부하 : TCP보다 속도가 일반적으로 빠르고 오버헤드가 적습니다.
Ajax: Asynchronous Javascript And XML (기술도입)
출현배경: 비효율 - 클라이언트인 웹브라우저의 요청이 있어야만 서버에서 해당 페이지(HTML)를
꺼내주는 방식입니다.
ActiveX등 사용 / 예시) 회원가입시 ID중복체크 결과를 새 페이지를 팝업창에 띄웁니다.
동작흐름: 1. 사용자의 이벤트로부터 Javascript는 DOM(The Document Object Model)을 읽는다.
2. XMLHttpRequest객체를 통해 웹서버에 전송한다.
3. 서버는 요청을 처리하고 XML, Text, JSON을 XMLHttpRequest객체에 전송한다.
4. Javascript가 해당 응답 정보를 DOM에 쓴다.
장점: 페이지 이동없이 고속으로 화면전환 가능, 서버처리를 기다리지 않도, 비동기 요청가능, 수신하는 데이터 양을 줄일 수 있고 클라이언트에게 위임가능합니다.
단점: Ajax를 쓸 수 없는 브라우저가 있습니다, 지원하는 Charset한정, HTTP클라이언트 기능한정, Script로 작성되어 Debugging 용이성감소, 요청 남발시 서버에 부하증가 합니다.
좀더 역동적인 웹을 요구함에 추가 기술 등장
Comet
장시간 HTTP 요청을 대기하더라도 브라우저가 명시적으로 요청을 하지 않으면서 웹 브라우저가 데이터를 브라우저에 푸시 할 수 있게 하는 웹 애플리케이션 모델입니다.
클라이언트의 요청이 없음에도, 서버로부터 응답을 받는 상황은 커버못함.
(브라우저가 수시로 게속 폴링하는 방법제외)
결과적으로 데이터 수신을 위해 서버가 클라이언트에게 전송해 주는 '푸시'가아닌 클라이언트가 서버에게 요청하는 '폴링'
WebSocket
하나의 TCP 접속에 Full Duplex(전이중) 통신 채널을 제공하는 프로토콜입니다.
HTTP 프로토콜과 호환을 달성하기위해 웹소켓 핸드셰이크는 HTTP 업그레이드 헤더를 사용하여
HTTP 프로토콜에서 웹소켓 프로토콜로 변경합니다.
참고 - handshaking 채널에 대한 정상적인 통신이 시작되기 전에 두개의 실체 간에 확립된
통신 채널의 변수를 동적으로 설정하는 자동화된 협상 과정 (SSL TLS등)
적용 적합환경 : 실시간, 양방향통신, 짧은 시간에 많은 양의 데이터를 다루는 서비스
단점: IE의 경우 version 10부터 지원 -> 문제점 해결을 위해 Socket io, SockJS기술 등장