프로토콜(Protocol) 이란 / TCP/IP, HTTP, Web Socket
프로토콜(Protocol) :
- 복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신(데이터를 을 원활하게 하기 위해 필요한 통신 규약
- 사람과 사람이 통신할 때 서로 이해할 수 있는 언어, 공용된 언어를 사용해 전세계 모든 사람과 대화 할 수 있다.라고 하면, 컴퓨터와 컴퓨터도 서로 이해할 수 있는 언어, 공용된 언어를 사용해야 한다는 것인다.
이 것이 바로 프로토콜(Protocol)이다.
- 프로토콜을 정의하는 기관은 IEEE, ISO 등이 있다.
* 프로토콜의 기능
- 캡슐화(encapsulation)
- 흐름제어 (flow control)
- 연결제어 (connection control)
- 오류제어 (error control)
- 주소설정 (addressing)
- 순서설정 (sequence)
- 동기화 (synchronization)
- 세분화와 재합성 (fragmentation and reassembly)
- 다중화(multiplexing)
구성(OSI 참조 모델 기반)
각 계층의 수직적 상하관계는 Top-Down 구조이다.
- 물리적 측면 : 자료 전송에 쓰이는 전송 매체, 접속용 단자 및 전송 신호, 회선 규격 등.
(물리 계층, 데이터 링크 계층, 네트워크 계층)
- 논리적 측면 : 프레임 구성, 프레임 안에 있는 각 항목의 뜩과 기능, 자료 전송의 절차 등.
(전송 계층, 세션 계층, 표현 계층, 응용 계층)
프로토콜 계층 별로 주로 사용되는 데이터 단위(Protocol Data Unit) 명칭
- 응용 계층 : 메세지, 데이터
- 표현 계층 : 메세지, 데이터
- 세션 계층 : 메세지, 데이터
- 전송 계층 : 세그먼트
- 네트워크 계층 : 패킷, 데이터 그램
- 데이터링크 계층 : 프레임
- 물리 계층 : 비트
TCP/IP (Transmission Control Protocol / Internet Protocol)
TCP : 정보 패킷 차원에서 다른 인터넷 노드와 메시지를 상호 교환하는데 필요한 규칙을 사용한다.
IP : 인터넷 주소 차원에서 메시지를 보내고 받는데 규칙을 사용한다.
네 개의 계층
1. 애플리케이션 :
다른 계층의 서비스에 접근할 수 있게 하는 애플리케이션을 제공, 교환하기 위해 사용하는 프로토콜을 정의
- HTTP : WWW의 Web 페이지 파일을 전송하는데 사용된다.
- DNS : 호스트 이름을 IP주소로 변환하기 위해 사용된다.
2. 트랜스포트 : 애플리케이션 계층에 세션과 데이터그램 통신 서비스를 제공한다.
- TCP : 1대1 연결지향, 신뢰할 수 있는 통신 서비스를 제공한다.
연결확립과 보내진 패킷의 확인, 순서화, 전달 중 손상된 패킷을 복구하는 책임을 지는 역할
- UDP : 1대1 , 1대 다의 비연결 지향, 신뢰할 수 없는 통신 서비스를 제공한다.
데이터의 크기가 작을때나, 연결 확립에 의한 부하를 피하려고 할 때 사용한다.
3. 인터넷 : addressing, pakaging, routing 기능을 제공한다.
- IP (Internet Protocol) : 어드레싱과 패킷을 분해, 재조합을 책임지는 역할
- ARP(Address Resolution Protocol) :
인터넷 계층 주소를 네트워크 인터페이스 계층의 주소(하드웨어 주소)로 변환하는 역할이다.
- ICMP (Internet Control Message Protocol) :
IP패킷의 전달에 따른 오류나 상태를 리포트하고 진단하는 기능을 제공하는 역할이다.
- IGMP (Internet Group Management Protocol) : IP 멀티캐스트 그룹의 관리를 책임진다.
4. 네트워크 : TCP/IP 패킷을 네트워크 매체로 전달하는 것과 받아들이는 과정을 담당 - OSI계층에서 물리계층에 해당
HTTP (Hyper Text Transfer Protocol)
- 서버가 html로 만들어진 문서(디자인된 문서)를 유저에게 잘 보여주는 것을 목적으로 하는 프로토콜로
TCP와 UDP를 사용하며, 80번 포트를 사용한다.
클라이언트와 서버 사이에 이루어지는 request / response 프로토콜이다.
ex) 회원가입 시 ID 입력할 때 중복검사를 해야할 경우
서버에게 중복검사를 요청하기 위해 새 페이지를 요청해야 하는데
회원정보 작성 중에 페이지를 이동할 수 없기 때문에 새로 요청한 페이지를 팝업창으로 띄웠던 것이다.
Ajax를 이용하여 팝업창 없이 검사가 가능하다.
웹 소켓(Web Soket)
등장
Web Socket은 HTTP의 단점을 보완하기 위해 등장
현재 사용하고 있는 HTTP의 Client-Server간 접속을 유지하지 않으며
한번에 한 방향으로만 통신이 가능한 half-duplex이다.
점차 클라이언트와 서버간 주고받는 데이터 양이 많아지면서 half-duplex로 인한 성능저하는 피할 수 없게 되었다.
또한 HTTP는 지나치게 많은 헤더 데이터를 갖고 있다.
정의
WebSocket 프로토콜은 웹을 통해 클라이언트와 서버 간의 신속하고 보안이 유지된 양방향 통신을 위한 메커니즘이다.
웹 소켓은 실시간 게임, 인스턴트 소셜 네트워크 알림, 주식, 또는 날씨 정보의 최신 디스플레이 등의 안전하고 빠른 데이터 전송이 필요한 앱에 사용하는데 적합하다.
웹 소켓 연결 설정을 하기 위해 클라이언트와 서버간에 특정 HTTP 기반의 핸드셰이크가 교환된다.
교환이 성공하면 이전에 설정된 TCP 연결을 사용하여 응용 프로그램 계층 프로토콜이 HTTP에서 웹소켓으로 업그레이드가 된다.
업그레이드가 되면 HTTP는 완전 무시되고 웹 소켓 연결이 닫힐 때 까지 두 끝점에서 웹 소켓 프로토콜을 사용하여 데이터를 주고 받을 수 있다.
그래서 HTML5에 Web socket이 포함되었다.
웹 소켓을 사용하면 더 이상 Active X를 사용하지 않고도 TCP/IP 소켓통신을 구현할 수 있다.
또한 네트워크의 과부하를 줄이고 애플리케이션의 반응성을 높일 수 있게 된다.
앞서 말한 HTTP헤더크기도 수 byte 수준으로 압축이 가능하다.
물론 웹 소켓이 HTTP를 대체하는 것은 아니다.
다만 HTTP가 적합하지 않은 메세징, 트랜잭션 및 애플리케이션 특성 상 트래픽이 높고 지연시간이 낮은 환경에서 유용하다.
'IT 개발 > Network' 카테고리의 다른 글
인터넷이란 (0) | 2020.02.05 |
---|---|
CORS (HTTP 접근 제어) 이란 (0) | 2020.02.04 |
Proxy란 (0) | 2020.02.03 |