140 likes | 552 Views
Delphi ( NetWork 관련 자료 조사 ). 작성자 : 최 영 일. 목 차. TCP/IP 란 무엇인가 ? TCP 와 UDP 의 차이점 윈속 (WinSock) 이란 무엇인가 ? 소켓의 I/O 모델 조사 (None Blocking, Blocking, 비동기 , 동기 , IOCP 등의 소켓 IO 모델 조사 ) 프로토콜은 무엇인가 ?. 1.TCP/IP 란 무엇인가 ?(1). TCP(Transmission Control Protocol) 큰 정보 블록을 여러 개의 세그먼트로 분리
E N D
Delphi( NetWork 관련 자료 조사 ) 작성자: 최 영 일
목 차 • TCP/IP 란 무엇인가? • TCP 와 UDP 의 차이점 • 윈속(WinSock)이란 무엇인가? • 소켓의 I/O 모델 조사 (None Blocking, Blocking, 비동기, 동기, IOCP 등의 소켓 IO 모델 조사) • 프로토콜은 무엇인가?
1.TCP/IP 란 무엇인가?(1) • TCP(Transmission Control Protocol) • 큰 정보 블록을 여러 개의 세그먼트로 분리 • 각 세그먼트를 순서에 맞게 번호 부여 • 세그먼트 전송 후 TCP 가상회선 세션으로부터 승인 응답 기다림 • 비정상적으로 수신된 세그먼트는 재전송 • TCP 특징 • 연결형 서비스 • 가상회선을 통한 ‘신뢰성’ 있고 ‘순서적’인 데이터 스트림 전달 • 포트 대 포트(port-to-port) 전송(프로세스간 통신지원) • 오류 검출 및 재전송, 흐름제어, 순서제어, 폭주제어기능포함
1.TCP/IP 란 무엇인가?(2) • IP(Internet Protocol) • 한 컴퓨터에서 다른 컴퓨터로 데이터를 보내는데 사용 되는 프로토콜, 인터넷상의 각 컴퓨터즉 호스트들은 다른 컴퓨터와 구별될 수 있도록 적어도 한 개 이상의 고유한 주소를 갖는다. • 특징 • 무결성 보장 않음 • 순서 보장 않음 • 비연결형 프로토콜 • 통신을 위해 양단간의 접속이 확립되지 않음 • 각 패킷들은 독립적인 단위로 취급 • 데이터 그램(Datagram) • 여러 조각으로 나누어진 패킷이 수신지에 도착할 때 각각 다른 경로를 통해 도착하는 방식 • 가상회선(Virtual Circuit) • 데이터를 송신하기 전에 경로가 네트워크를 통해 정의되고 그 경로를 통해 순서대로 도착하는 방식
2.TCP 와 UDP 의 차이점(1) • UDP(User DatagramProtocol) • 응용 프로세스의 데이터를 비신뢰적 이며 비순서적으로 전달 • 비연결형(connectionless) 전송계층 프로토콜 • 포트 대 포트(port-to-port) 전송(프로세스간 통신지원) • UDP의 특징 • UDP에는 포트번호를 사용하여 응용 프로그램 프로세스를 식별하기 위한 준비가 되어있다. • UDP는 연결을 열고, 유지하고 닫는 부담이 없어 비연결 지향적이다. • 동보전송과 다중전송 응용 프로그램에 능률적이다. • 데이터의 순서화가 없어서 데이터가 정확하게 전달된다고 보장할 수 없다. • UDP는 생략할 수 있는 데이터의 오류검사만 사용한다. • UDP는 TCP보다 빠르고 단순하고, 능률적이다.
2.TCP 와 UDP 의 차이점(2) • TCP (Transmission Control Protocol) • 연결 지향적이고 데이터 전송을 보장하는 프로토콜이다. 연결 지향적인 환경에서는 연결은 정보의 전달이 시작되기 전에 두 종단 사이에서 먼저 연결이 확립된다. TCP는 메시지들을 세그먼트로 나누고 목적지 스테이션에서 재조립하고, 수신되지 않은 것을 재전송하고, 세그먼트들을 재조립하여 메시지로 만드는 것에 대해서 책임지고 있다. TCP는 종단(End Station)간에 가상 회선을 제공한다. • 주로 FTP,HTTP,SMTP,DNS를 IP로 연결해 주는 역할이다. • 전화통화 • UDP (User Datagram Protocol) • 비연결형이고 ACK가 없는 프로토콜이다. UDP는 메시지를 전송하는 책임을 가지고 있지만 세그먼트 배달에 대해서 검사하는 기능이 이 계층에서는 제공되지 않는다. UDP는 데이터 전송을 보장하기 위해 상위 계층 프로토콜에 의존한다. • 주로 DNS,TFTP,SNMP,RIP를 IP로 연결해 주는 역할이다. • 우편배달 서비스
(참고) OSI 7계층 데이터를 패킷 단위로 나누어서 보내는 역활을 하게 된다. 전송할 데이터의 주소 지정, 패키징, 라우팅을 책임진다. 프로토콜) IP, ICMP, IGMP, ARP
3.윈속(WinSock)이란 무엇인가? • WinSock • 마이크로소프트(Microsoft) 윈도우3.1 또는 윈도우95에서 제공하는 TCP/IP 프로그래밍을 위한 API(Application Program Interface)로서 사용방법 및 기본 동작이 UNIX의 BSD 소켓과 거의 같으며 BSD 소켓과 마찬가지로 클라이언트-서버 모델을 기초로 하여 이용된다. • 윈속의 사용방법과 문법이 BSD 소켓의 경우와 유사하기는 하지만 윈속과 BSD 소켓용으로 작성된 프로그램은 서로 호환성이 없으며 이 두 가지 소켓 응용 프로그램이 호환성을 갖기 위해서는 많은 부분을 수정하여야 한다.
4.소켓의 I/O 모델 조사(1) • 소켓의 I/O 모델이라 함은 소켓을 사용하여 데이터를 주고받는 실질적인 방법을 의미합니다. • 전체적으로는 6가지 정도의 방법이 있습니다. 블로킹 모델, 셀렉트 모델, WSAAsyncSelect 모델, WSAEventSelect 모델, Overlapped, Completion Port 모델입니다.
4.소켓의 I/O 모델 조사(2) • 블로킹모델(BlockingModel) • 소켓을 있는 그대로 사용하면 된다. • 쉽게 구현할 수 있고 이해도 쉽지만 실제로 여러 명의 사용자가 동시에 사용하는 서버 응용 프로그램을 구현하는 데는 크게 도움이 되지 못함. • 오히려 TM레드나 다수의 프로세스를 구성해야 하는 문제로 인하여 더욱 복잡하고 안정적이지 못한 구조를 가지게 될 수 있다. 따라서, 실제로 사용하는 과정에서는 다른 방법들을 활용하는 것이 좋다. • 셀렉트모델(SelectModel) – Non BlockingModel • 셀렉트모델의 가장 핵심은 select()함수를 사용. • select()함수는 UNIX소켓의 시초 중 하나로 현재 UNIX계열의 OS에서 가장 널리 사용되는 소켓인 버클리 소켓(Berkeley Socket)에서 사용하던 것. • 오래 전부터 사용 그만큼 단순하면서도 나름대로 막강한 능력을 발휘하여 온 것 또한 사실. 실제로 select()함수를 사용하는 것은 크게 어렵지 않다. • select()함수가 해주는 일은 기본적으로 소켓에 데이터가 존재하는지의 유무를 판단 데이터의 종류 응용 프로그램이 해당 데이터를 수신/송신 또는 처리가 가능한지를 확인할 수 있도록 해준다.
4.소켓의 I/O 모델 조사(3) • IOCP • IOCP(I/O Completion Port)는 어떤 I/O 핸들에 대해서, 블록 되지 않게 함으로 프로그램 대기시간을 줄이는 목적으로 사용된다. 우선 Overlapped IO(비동기 IO작업)의 개념이 기반이 된다. • IOCP는 이런 Overlapped IO가 실행이되고 알려주는 방법에 대한 것이다. 그리고 IOCP는 커널객체이다. 뮤텍스나 스레드와 같이 커널에서 제공을 한다. • 사용이점 • 사용자가 설정한 버퍼만을 사용하기 때문에 더 효율적으로 작동한다. (기존에는 OS버퍼, 사용자 버퍼로 따로 분리되는 개념이었다.) • IO요청에 대해서 효율적으로 접근한다. 디스크IO의 경우 디스크에 접근을 똑똑하게 한다 (순서대로가 아닌 효율적인 순서에 따라 접근하기도 한다.) • Raid나 여러개의 랜카드같은 Deviced-level Parallelism을 지원한다. 역시나 효율적으로 할 수 있다.
4.소켓의 I/O 모델 조사(4) • 비동기 • 비동기 모드는 non-blocking 모드에서처럼 block될 수 있었던 소켓 시스템 콜에 대해서 일단 리턴을 하고 시스템 콜의 해당 동작이 완료되면 비동기적으로(asynchronously) 그 결과를 응용 프로그램에게 알려주는 소켓의 동작 모드이다. • 동기 • 읽기 : Read Buffer가 비어 있을 경우 내용이 들어 올 때까지 Blocking • 쓰기 : Write Buffer가 꽉 차 있을 경우 Buffer가 비어 있을 때까지 Blocking 된다. • 접속 : 연결의 완전히 이루어 질 때까지 Blocking 된다. • Blocking : 프로그래밍에서 쉽게 말하자면 다음 작업을 실행하않는다.동기 소켓은 Blocking 상태일 경우 어떠한 작업도 실행하지 않는다. 이러한 단점을 보완하기 위해서 Thread를 이용하거나 이벤트를 이용할 수 있다.
5.프로토콜은 무엇인가? • 프로토콜 정의 • 정보기기 사이 즉 컴퓨터끼리 또는 컴퓨터와 단말기 사이 등에서 정보교환이 필요한 경우, 이를 원활하게 하기 위하여 정한 여러 가지 통신규칙과 방법에 대한 약속 즉, 통신의 규약을 의미한다. • 통신규약이라 함은 상호간의 접속이나 절단방식, 통신방식, 주고받을 자료의 형식, 오류검출방식, 코드변환방식, 전송속도 등에 대하여 정하는 것을 말한다. • 프로토콜 분류의 필요성 • 복잡한 네트워킹 기능을 모듈화 • 프로토콜 간의 관계 정립 가능 • 이종 프로토콜 집단간의 비교 가능
The End 작성일: 2007년 10월 16일 작성자: 최 영 일