[컴퓨터 네트워크] 컴퓨터 네트워크 데이터: 스트림 형식(TCP) / 메시지 형식(UDP), IP 패킷 특징

Jin Hur·2022년 6월 24일
0

Server Programming

목록 보기
2/14

OSI 모델의 계층 2에서는 데이터 단위를 프레임이라 하고, 계층 3에선 패킷이라 한다.
실제 네트워크나 서버 앱을 개발할 때는 이를 직접 다룰 일이 흔하지 않다. 대신 스트림과 메시지라는 것을 주로 다룬다.


스트림(stream) 형식

  • 데이터의 흐름
  • 두 단말기를 연결한 후 그 연결을 끊기 전까지 한 쪽에서 다른 한쪽으로 연결된 데이터 흐름 하나를 뜻함.
  • 스트림 안에 있는 데이터를 중간에 끊는 것은 개발자의 몫이며, 스트림 자체는 데이터를 중간에 구별하지 않음.
  • 컴퓨터 네트워크에서이 스트림 개념은 파일 읽기/쓰기에서의 스트림과 비슷하지만 좀 더 독특한 개념이 있음.
  • 단말기A에서 스트림에 넣은 데이터가 단말기B에서 꺼낸 것과 완전히 같지 않음. 하지만 단말기A에서 보낸 것을 모두 이어보면 단말기B에서 꺼내어 이은 것과 같다.
  • 즉, 보낸 개수와 받는 개수가 다를 수 있다. 그러나 결국 받은 데이터를 모두 이어 붙이면 보낸 데이터를 이어 붙인 것과 같다.
(송신)
send(aaa)
send(bbb)
send(ccc)

=>

(수신)
recieve() => aa
recieve() => abbb
recieve() => cc
recieve() => c
  • 거의 모든 인터넷 프로그램은 이러한 특징을 고려함. TCP 프로토콜이 이러한 성질을 가짐.
  • 스트림 형식으로 데이터를 송수신할 때, 데이터가 여러 부분으로 나뉘어 있다면 개발자는 이것을 따로 정의해주어야 함.
    • 어떤 데이터를 보내기 전, 보낼 데이터 크기를 먼저 보낸다든지 (헤더를 붙이는 방식)
    • 데이터 시작이나 끝을 알리는 특정 기호를 추가한다든지 (구분자를 이용하는 방식)
    • 바이트 스트림을 디코딩한 후 어떤 구조체에 정보를 담을 것인지
      • ICD(Interface Control Document) 작성

메시지(message) 형식

  • UDP 프로토콜
  • 스트림과 달리 메시지는 자체적으로 데이터 시작과 끝을 구별할 수 있음.
  • 따라서 보내는 쪽에서 aaa, bbb, ccc를 보내면 받는 쪽에서도 aaa, bbb, ccc를 받음.
  • 각 데이터가 정확히 구별됨.

source: https://m.blog.naver.com/ya3344/221797740783

  • 네트워크 게임에서는 특정 시점에서 사건을 알리는 경우가 빈번, 따라서 메시지 형식의 데이터 송수신이 보편적.

IP 패킷 특징

  • IP 패킷 하나의 크기는 제한됨
  • 크기 제한은 라우터마다 다르지만 보통 1300바이트 정도
  • 반면 스트림이나 메시지에서는 이러한 제한이 없음. OS에 내장된 네트워크 모듈인 네트워크 스택에서 프로그램이 보내고 받는 스트림과 메시지를 관리해줌.
  • 예를 들어 프로그램이 매우 긴 스트림을 송신할 때 OS는 이를 IP 패킷의 크기 제한에 맞추어 여러 조각을 냄(단편화, fragmentaiton).
  • 받는 쪽에서는 이 조각들을 받아 조립한 후 스트립 형태로 복원함(OS 작업). 그리고 조립된 스트림은 프로그램에 넘어가 처리됨.
  • 스트림 뿐 아니라 메시지나 데이터그램도 마찬가지.

source: https://m.blog.naver.com/ya3344/221797740783

0개의 댓글