개발자로/공부
04.17 network 공부
ReasonyB
2024. 4. 17. 22:17
네트워크 프로그래밍에서는 자료형에 구애 받지 않고 송수신이 가능하다. 바이트를 어떻게 자르느냐에 따라 온전히 전달될 수도, 아닐 수도 있다. 결국 바이트를 어떻게 쪼개는 지에 대한 것은 데이터를 주고 받는 당사자들끼리 정한 포맷이기 때문이다.
네트워크로 주고 받는 데이터는 바이트 혹은 비트 단위로 구성된다. 다시 말해 데이터 패킷에 들어 있는 정보라고는 0과 1 밖에 없다는 소리이다. 이 데이터가 의미를 가지려면, 구성한 순서대로 다시 잘라내면 된다. 패킷은 받아서 어디든 저장된다. 저장된 장소은 패킷만 저장하는 법은 없다. 수 많은 데이터 사이에서 받은 데이터를 도마 위에 얹어 놓으려면 "시점"과 "크기"가 필요하다. 이때 데이터 관련해서 char* 나 void* 형식 포인터가 나오는 이유이다. (C에서 char는 1byte의 크기를 가지니까 char* 포인터는 바이트 단위로 읽어온다)
여기서 나오는 char*나 void* 포인터는 위에서 언급한 "시점"이다. 시점과 전달 받은 데이터의 "크기"를 준비했다면 데이터 내용을 자를 준비가 되었다는 소리이다.