Presentation is loading. Please wait.

Presentation is loading. Please wait.

Network Lab. Byoung-Son, Choi

Similar presentations


Presentation on theme: "Network Lab. Byoung-Son, Choi"— Presentation transcript:

1 Network Lab. Byoung-Son, Choi bschoi@netwk.hannam.ac.kr
TCP/IP Socket Programming… 제 2장 소켓의 생성과 프로토콜의 설정 Network Lab. Byoung-Son, Choi

2 목차 프로토콜의 정의 소켓의 생성 프로토콜 체계(Protocol Family) 소켓의 타입 프로토콜의 선택
윈도우 기반으로 구축하기

3 프로토콜의 정의 컴퓨터 상호간의 대화에 필요한 통신 규약 데이터 통신 수행 규칙들의 집합
데이터 통신과 네트워크, 교보문고 참조

4 프로토콜 체계(Protocol Family)
소켓의 생성 socket() 함수 프로토콜 체계상의 하나의 소켓 생성 기본적인 통신 도구 프로토콜에 독립적 데이터 전송 타입을 지정해야 함 연결지향 소켓, 비연결지향 소켓 반환 값 성공시 : 파일디스크립터 반환 실패 : -1 반환 #include <sys/types.h> #include <sys/socket.h> int socket (int domain, int type, int protocol) 프로토콜 체계(Protocol Family) 설정 데이터 전송 타입 설정 특정 프로토콜 지정

5 프로토콜 체계(Protocol Family)
데이터를 주고 받는 환경에 따른 적절한 프로토콜 선택 PF_ 접두어로 표시 프로토콜 체계 정 의 PF_INET IPv4 인터넷 프로토콜 PF_INET6 IPv6 인터넷 프로토콜 PF_LOCAL Local 통신을 위한 UNIX 프로토콜 PF_PACKET Low level socket을 위한 인터페이스 PF_IPX IPX 노벨 프로토콜 [표 2-1] sys/socket.h에 선언되어 있는 프로토콜 체계(P. 55)

6 Linux Socket Programming 참조 [4장 Socket Types and Protocols]
소켓의 타입 데이터 전송 타입 지정 하나의 프로토콜 체계 안에서도 데이터를 전송하는 방법이 둘 이상 존재할 수 있다는 것을 의미 소켓 타입 인자 SOCK_STREAM* SOCK_DGRAM* SOCK_SEQPACKET 순서화된 패킷 소켓 SOCK_RAW 네트워크 소켓 뒷 장에서 살펴봄 Linux Socket Programming 참조 [4장 Socket Types and Protocols]

7 소켓의 타입 연결 지향형 소켓(SOCK_STRAM, TCP 소켓) SOCK_STREAM 소켓 유형
스트림 방식의 소켓 생성 UNIX의 파이프 개념과 동일 연결형(스트림) 서비스 선택 시 사용 SOCK_STREAM 소켓의 특성 메시지 경계가 유지되지 않음 전달된 순서대로 수신됨 전송된 모든 데이터는 에러없이 원격지에 도달

8 소켓의 타입 연결 지향형 소켓(SOCK_STRAM, TCP 소켓) internet connection Network A
Network B connection internet 연결지향형 소켓 형태

9 소켓의 타입 비연결 지향형 소켓(SOCK_DGRAM, UDP 소켓) SOCK_DGRAM 소켓 유형
데이터그램 방식의 소켓 생성 개별적으로 주소가 쓰여진 패킷 전송 시 사용 비연결형(데이터그램) 서비스 선택 시 사용 SOCK_DGRAM 소켓 유형의 특성 패킷은 전달된 순서대로 수신되지 않음 에러복구를 하지 않음 (즉, 신뢰성이 없음) 데이터그램 패킷의 크기 제한

10 소켓의 타입 비연결 지향형 소켓(SOCK_DGRAM, UDP 소켓) internet Network A Network B
비연결지향형 소켓 형태

11 프로토콜의 선택 호스트 대 호스트가 사용할 프로토콜 설정 프로토콜 체계가 PF_INET인 경우 IPPROTO_TCP
인터넷을 기반으로 하는 연결지향형 소켓 IPPROTO_UDP UDP를 기반으로 하는 소켓 생성 인터넷을 기반으로 하는 비연결 지향형 소켓

12 프로토콜 선택 protocol 인자가 필요한 이유 프로토콜 체계가 PR_INET이고 소켓 타입이 SOCK_STREAM이면,
당연히 인터넷 깁나 연결 지향형 소켓(TCP 소켓)인데…….. 반드시 세번째 인자값으로 IPPROTO_TCP를 넣어야 하나? 하나의 프로토콜 체계 안에서 데이터 전송 타입까지 같으면서도 최종적으로 통신하는 형태가 다른여러 개의 프로토콜이 존재하는 경우, 이 세번째 인자가 유용한 인자로 사용 즉, 전송타입은 같지만 그 안에서도 프로토콜이 다시 나뉘는 상황을 말함 - SOCKET_RAW을 생성하는 경우, 유용함

13 프로토콜의 선택 프로토콜 체계가 PF_INET인 경우, 전달할 수 있는 인자의 종류는 두가지 형태가 존재 CASE Domain
Type Protocol 1 PF_INET SOCK_STREAM IPPROTO_TCP(0) 2 SOCK_DGRAM IPPROTO_UDP(0) [표 2-2] 프로토콜 체계가 PF_INET인 경우의 전달 인자(P. 60)

14 프로토콜의 선택 make_socket.c 소스 코드 실행 결과

15 윈도우 기반으로 구현하기 소켓의 생성 #include <sys/types.h>
#include <sys/socket.h> int socket (int domain, int type, int protocol) 리눅스 성공시 : 파일디스크립터 실패시 : -1 #include <winsock2.h> SOCKET socket (int af, int type, int protocol) 윈도우즈 성공시 : 소켓 핸들 실패시 : INVALID_SOCKET 소켓의 핸들을 저장하기 위해 미리 정의해 놓은 정수형 데이터 타입

16 윈도우 기반으로 구현하기 소켓의 종료 #include <unistd.h> int close(int fildes);
리눅스 #include <winsock2.h> int closesocket( SOCKET s ); 윈도우즈

17 윈도우 기반으로 구현하기 make_socket_win.c 소스 코드 실행 결과

18 참고문헌 “데이터 통신과 네트워킹”, 이재광 외 2명, 교보문고 “TCP/IP 프로토콜”, 이재광외 5명, 미래컴
“Linux Socket Programming by Example”, Warren W. Gay, QUE '00

19 Q & A


Download ppt "Network Lab. Byoung-Son, Choi"

Similar presentations


Ads by Google