-
데이터 처리 방법Socket통신/Socket통신 2022. 4. 10. 15:47
TCP 프로토콜 기반의 서버와 클라이언트의 구현 시 주의할 점은 TCP는 ‘데이터의 경계가 없다’는 것이다.
데이터의 경계가 없다는 것은 공유 자원인 네트워크가 혼잡하여 TCP 송신 버퍼의 데이터가 보내지지 않고 있을 때 애플리케이션 데이터를 반복하여 TCP 송신 버퍼에 내려 보내면 TCP 송신 버퍼에서 상대편 수신 버퍼로 송신 버퍼의 데이터를 한 번에 보내거나 TCP 수신 버퍼에 도착한 데이터를 애플리케이션 버퍼로 늦게 가져오는 경우 상대편에서
보낸 데이터가 한 번에 복사되어 올라올 수 있는 등의 상황이 발생할 수 있다는 것이다.
그래서 TCP 프로토콜 기반의 송,수신 데이터를 설계할 때는 위 사항을 고려하여 설계해야 한다.
네트워크가 혼잡하여 애플리케이션에서 send()가 두 번 이루어진 후 TCP 프로토콜 수준의 데이터 송신이 한 번 발생한 상황
상대편에서 데이터를 두 번 이상 보낸후 서버쪽 애플리케이션에서 recv()를 늦게 했을 때의 상황
TCP 데이터를 설계하는 방법은 크게 세 가지가 있다.
1. 경계 구분을 위한 특수한 표식(EOR: End Of Record)을 사용한다. 단순한 문자 전송 시스템이나 소형 기기 등의 통신에 사용한다.
2. 고정 길이 데이터를 송, 수신한다. 서버와 클라이언트는 항상 같은 길이의 데이터를 송수신한다. 사용하기 가장 간단하고 작은 데이터의 송, 수신 시스템에 사용된다.
3. 가변 길이 데이터를 송, 수신한다. 서버와 클라이언트는 헤더(실제 길이를 포함한 데이터 정보)를 고정길이로 송, 수신한 후 헤더에 포함된 실제 데이터의 길이를 확인하여 데이터의 송, 수신을 완료한다. 송, 수신 데이터가 크거나 가변적일 때 사용된다.
'Socket통신 > Socket통신' 카테고리의 다른 글
다중 접속 1대 다 통신 서버 / 클라이언트 (0) 2022.04.10 쓰레드를 이용한 다중 에코 서버 (0) 2022.04.10 TCP를 이용한 에코 프로그램 만들기 (0) 2022.04.09 TCP 서버 / 클라이언트 기본코드 (0) 2022.04.09 TCP 소켓 서버/클라이언트 프로그램 흐름과 구조 (0) 2022.04.09