Codec
앞서 정의 했듯, 코덱은 인코딩과 디코딩 과정을 거치는 알고리즘이다.
일반적으로 동영상 압축 알고리즘인 MPEG로 알고 있다. 인코딩 과정을 통해 동영상 용량을 줄일 수 있고, 마찬가지로 디코딩 과정으로 원본파일로 변환한다.
MPEG 확장자를 갖는 동영상 뿐 아니라 jpg 확장자를 갖는 파일도 코덱 과정을 거친 것이다.
Netty에서는 inboundHandler와 outBoundHandler가 각각 인코더와 디코더에 해당하고, 데이터 송수신시 데이터와 패킷으로 각각 변환 시킬 수 있다.
기본 정의된 코덱
- base64 Codec
: Base64 인코딩 데이터에 대한 코덱
: Base64는 8비트 이진데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자로 이루어진 일련의 문자열로 바꾸는 인코딩
- bytes Codec
: 바이트 배열에 대한 코덱
- compression Codec
: 송수신 데이터의 압축을 지원하는 코덱
: 네티 4.0에서는 zlib, gzip, snappy - 4.1에서는 bzip2, castle, l24, lzf의 압축 알고리즘이 추가
- mashaslling Codec
: 마살량 혹은 언마샬링은 객체를 네트워크를 통해 송신 가능한 형태로 변환하는 과정
- ProtoBuf Codec
: 구글의 포로토콜 버퍼를 사용한 데이터를 송수신을 지원하는 코덱
- rtsp Codec
: 오디오 및 비디오 같은 실시간 데이터의 전달을 위해 만들어진 애플리케이션 레벨의 프로토콜 (real time streaming protocol)
- sctp Codec
: TCP가 아닌 sctp 전송 계층을 사용하는 코덱
: 이 코덱을 사용하려면 부트스트랩 채널에 NioSctpChannel 혹은 NioSctpServerChannel을 설정
- http Codec
: http 프로로콜을 지원하는 코덱
- spdy Codec
: Spdy는 기존의 http를 보완하는 프로토콜
- HTTP/2 Codec
: HTTP/2 Protocol을 지원하는 코덱. 구글에서 spdy 프로토콜의 지원을 중단하고 http/2에 대한 공식 지원을 하는 중이다.
: 네티 4.1 버전에서 제공되고 있다.
- String Codec
: 문자열 송수신을 지원하는 코덱. 주로 Telnet이나 채팅 서버의 프로토콜에 이용
- Serialization 코덱
: 객체를 네트워크로 직렬화 / 역직렬화를 지원하는 코덱
- MQTT Codec
: MQTT Protocol을 지원하는 코덱
- HaProxy
: Load Balance와 Proxy기능 을 제공하는 오픈 솔루션을 지원하는 코덱
- STOMP
: STOMP Protocol을 지원하는 코덱
Http/2, Http Codec example
- 아주 심플하게 코덱 구성을 해보았다.
public class Http2ClientInit extends ChannelInitializer<SocketChannel> {private HttpToHttp2ConnectionHandler connectionHandler;@Overrideprotected void initChannel(SocketChannel socketChannel) throws Exception {Http2Connection connection = new DefaultHttp2Connection(false);httpResponseHandler responseHandler = new httpResponseHandler();connectionHandler = new HttpToHttp2ConnectionHandlerBuilder().connection(connection).build();socketChannel.pipeline().addLast("connection",connectionHandler);//기본 정의 codecsocketChannel.pipeline().addLast("response",new HttpResponseDecoder());// 내가 정의한 사용자 정의 codecsocketChannel.pipeline().addLast("response", httpResponseHandler);}}
=> http2/0 으로 Connection을 구성하고 응답 온 패킷에 대해 http 데이터로 변환 후, 내가 정의한 핸들러에서 데이터를 정의
참고 : 자바 네트워크 소녀 Netty
'Framework > Netty' 카테고리의 다른 글
Netty HttpClient Example Code (0) | 2018.08.04 |
---|---|
#NettyFramework - Echo Server, Client 구현 (0) | 2018.06.19 |
#Nettty Framework - ByteBuffer, ByteBuf (0) | 2018.05.09 |
#Nettty Framework - ChannelFutureListener (0) | 2018.05.09 |
#Nettty Framework - 채널 파이프라인 및 코덱 (0) | 2018.05.09 |