Tuesday, July 13, 2010

chapter 2 (소켓의 타입과 프로토콜의 설정)

-소켓의 프로토콜과 그에 따른 데이터 전송 특성-


프로토콜(protocol)이란?
컴퓨터 상호간의 대화에 필요한 통신 규약... 너무 식상한 답변이다. 와닿지 않는다.

소켓(socket) 함수?
인자로 domain (소켓이 사용할 프로토콜 체계 정보 전달), type (소켓의 데이터 전송 방식에 대한 정보 전달), protocol (두 컴퓨터 간 통신에 사용되는 프로토콜 정보 전달) 을 받고 호출 성공시 파일 디스크립터, 실패시 -1 return.

프로토콜 체계(protocol family)? PF_INET, PF_INET6, PF_LOCAL, PF_PACKET, PF_IPX (자세한건 책 참조)

소켓의 타입(type)? 소켓의 데이터 전달 방식. 프로토콜 체계가 정해졌다고 해도 그 안에서 둘 이상의 전송 방식이 있으므로 선택해야 한다. 대표적으로 연결지향형 소켓과 비 연결지향형 소켓.
1. 연결지향형 소켓(SOCK_STREAM) : 독립된 별도의 라인을 통해서 데이터를 전달하는 방식으로 라인상 문제가 없다면; 중간에 데이터 소멸이 없다. 전송 순서대로 데이터가 수신된다. 전송 데이터의 경계가 없다. 소켓 대 소켓의 연결은 반드시 1 대 1이어야 한다.
2. 비 연결지향형 소켓(SOCK_DGRAM) : 전송 순서에 상관없이 가장 빠른 전송을 지향한다. 전송되는 데이터의 손실 및 파손의 우려가 있다. 데이터의 경계가 존재한다. 한번에 전송하는 데이터의 크기가 제한된다.
*데이터 경계가 있다 없다는 데이터 전송을 두번했으면 수신도 두번해야 할경우 경계가 있는것이고 전송 횟수에 상관없이 수신횟수가 있는것을 경계가 없다고 한다.

프로토콜의 최종 선택? 소켓 함수의 세번째 인자.이미 첫번째와 두번째 인자로 충분하기에 세번째 인자가 0이어도 상관이 없으니 특별한 경우 세번째 인자가 필요하다.
"하나의 프로토콜 체계 안에 데이터의 전송 방식이 동일한 프로토콜이 둘 이상 존재할 경우" 전송 방식이 동일한 프로토콜일 경우 이를 좀 더 구체화 해야 한다.

TCP 소켓 :  프로토콜 체계는 IPv4인 PF_INET 이고 데이터 전송 방식은 연결지향형인 SOCK_STREAM 인 유일한 소켓.
UDP 소켓 : PF_INET 이고 SOCK_DGRAM 인 유일한 소켓.

No comments:

Post a Comment