직렬화
객체를 메모리 상태에서 파일이나 네트워크 상등에서 저장하거나 전송하기 위해 일련의 바이트로 변화하는 과정이다.
역직렬화
바이트 배열을 다시 객체로 변환하는 과정이다. 이를 통해 객체의 상탤르 보존하고 이를 파일이나 네트워크를 통해 다른 시스템과 공유하거나 저장할 수 있다.
네트워크 통신에서 직렬화는 데이터를 네트워크로 보내기 위해서 데이터를 일련의 바이트로 변환하여 패킷(Packet)으로 만들어서 전송해야 한다. 서버와 클라이언트 사이에서 주고 받는 데이터도 직렬화를 통해 패킷으로 변화되어 전송된다.
패킷
패킷은 통신할 데이터의 구조를 담고 있으며, 프로토콜에 맞게 직렬화되어 전송된다. 이를 위해 일반적으로 사용되는 데이터 형식은 바이트 배열, 리스트(List), 문자열(String)등이 있다.
Session
네트워크 통신에서 연결된 클라이언트와 서버 간의 연결을 관리하는 객체이다. 클라이언트와 서버는 각각 해당 세션을 통해 상호작용하고 데이터를 주고 받는다. ServerSession과 ClientSession은 대리자로 생각할 수 있다. Server는 ClientSession을 통해 Client에게 응답하고, Client는 ServerSession을 통해 Server와 통신한다.
나중에가면 Session이 여러개 필요할 수 있다. 이는 연결하는 대상이 한개가 아니라는 뜻이다.
분산 서버(Distributed Server)의 경우 서로 다른 서버들이 상호 작용해야 할 때도 있다. 예를 들어 게임 서버와 데이터베이스(DB)서버가 통신할 수도 있다. 그러므로 Session이름은 명시적으로 적는게 좋다.
패킷 작업
서버와 클라이언트가 통신하기 위한 기본적인 구조와 데이터 형식을 정의하는 과정이다. 패킷은 각 시스템에 모두 적용되어햐하므로, 여러 시스템 간에 동일한 구조와 데이터 형식을 사용해야 한다. 따라서 패킷을 만들 때에는 먼저 어떤 데이터를 주고 받야 할지 결정한다. 그에 맞게 패킷의 구조를 정의하는 작업이 진행된다. 이후 필요에따라 패킷 생성을 자동화하면 효율 높게 사용할 수 있다.
'cs공부 > 네트워크프로그래밍' 카테고리의 다른 글
네트워크프로그래밍 - packetId와 size에 대한 이슈(client의 거짓말, ReadOnlySpan) (0) | 2023.08.07 |
---|---|
네트워크프로그래밍 - 패킷 자동화 처리 객체지향 방법으로 수행하도록 하기 (0) | 2023.08.07 |
네트워크프로그래밍 - 패킷 자동화 처리(TryWriteBytes,c#에서 포인터 사용하는 법) (0) | 2023.08.02 |
네트워크 프로그래밍 - PacketSession (0) | 2023.07.31 |
네트워크프로그래밍 - SendBuffer 개선하기 (0) | 2023.07.22 |
댓글