Today I Learned
TCP/IP 소켓 프로그래밍(2) 본문
01. 프로토콜(Protocol)이란 무엇을 의미하는가? 그리고 데이터의 송수신에 있어서 프로토콜을 정의한다는 것은 어떠한 의미가 있는가?
- 프로토콜(protocol)이란, "컴퓨터 상호 간의 대화에 필요한 통신규약"이라고 말할 수 있다. 쉽게 말해서 서로 데이터를 주고받기 위해서 정의해 놓은 약속을 뜻한다.
02. 연결지향형 소켓인 TCP 소켓의 전송 특성 세가지를 나열하여라.
- 중간에 데이터가 소멸되지 않고 목적지로 전송된다.
- 전송 순서대로 데이터가 수신된다.
- 전송되는 데이터의 경계(Boundary)가 존재하지 않는다.
03. 다음 중 비 연결지향형 소켓의 특성에 해당하는 것을 모두 고르면?
a. 전송된 데이터는 손실될 수 있다.
b. 데이터의 경계(Boundary)가 존재하지 않는다.
c. 가장 빠른 전송을 목표로 한다.
d. 한번에 전송할 수 있는 데이터의 크기가 제한되어 있지 않다.
e. 연결지향형 소켓과 달리 연결이라는 개념이 존재하지 않는다.
04. 다음 유형의 데이터 송수신에 적합한 타입의 소켓은 무엇인지 결정하고, 그러한 결정을 하게 된 이유를 설명해보자
a. 서태지와 아이들의 실시간 라이브 방송 멀티미디어 데이터
- 비 연결지향형 소켓
- 라이브 방송은 신뢰성을 요구하기 보단 속도를 중점으로 둘 것 같아서 비 연결지향형 소켓을 사용하는게 옳다고 보여진다.
b. 철수가 압축한 텍스트 파일의 전송
- 연결지향형 소켓
- 압축 파일의 경우 일부 파일이 손상되면 압축 해제의 어려움이 있기 때문에 연결지향형 소켓을 이용한다.
c. 인터넷 뱅킹을 이용하는 고객과 은행 사이에서의 데이터 송수신
- 연결지향형 소켓
- 은행 업무는 개인정보보호와 기타 보안에 따라 신뢰성이 요구되므로 연결지향형 소켓을 사용해야 한다고 생각한다.
05. 데이터의 경계(Boundary)가 존재하지 않는 소켓은 어떠한 타입의 소켓인가? 그리고 이러한 소켓은 데이터를 수신할 때 무엇을 주의해야 하는지 서술해보자.
- 연결지향형 소켓
- 데이터의 경계(Boundary)가 존재하지 않는다는 의미는 다음과 같다.
"사탕 100개가 여러 번에 걸쳐서 보내졌다. 그러나 받는 사람은 사탕 100개 쌓인 다음에 이를 한번에 봉지에 담아갔다."
- 데이터가 수신되었다고 해서 바로 read 함수를 호출해야 하는 것은 아니다. 버퍼(바이트 배열)의 배열 용량을 초과하지 않는 한, 데이터가 채워진 후에 한 번의 read 함수호출을 통해서 데이터 전부를 읽어 들일수도 있고, 반대로 한번의 write 함수호출로 전송된 데이터 전부를 여러 번의 read 함수를 통해서 읽어 들일수도 있다. 즉, read 함수의 호출횟수와 write 함수의 호출횟수는 연결지향형 소켓의 경우 큰 의미를 갖지 못한다.
데이터를 수신할 때 주의점
- 소켓 대 소켓의 연결은 반드시 1대 1이어야 한다.
- read 함수호출로 읽혀지는 데이터의 양보다 많은 양의 데이터가 수신되면 버퍼도 꽉 찰 수 있다. 이 상태에 놓인 소켓은 더 이상 데이터를 수신할 수 없다.
'TCP IP' 카테고리의 다른 글
TCP/IP 소켓 프로그래밍(5) (0) | 2022.08.18 |
---|---|
TCP/IP 소켓 프로그래밍(4) (0) | 2022.08.16 |
TCP/IP 소켓 프로그래밍(3) (0) | 2022.08.09 |
TCP/IP 소켓 프로그래밍(1) (0) | 2022.08.04 |