4 장 . 소켓 유형과 프로토콜

39
HANNAM UNIVERSITY ttp:// netwk.hannam.ac.kr 1 4 4 . . 장장 장장장 장장장장 장장 장장장 장장장장 Network Lab. 장 장 장 1

description

4 장 . 소켓 유형과 프로토콜. Network Lab. 이 원 구. 1. 4 장 . 소켓 유형과 프로토콜. 목차 4.1 소켓 도메인 지정 4.2 socket(2) 함수 이용하기 4.3 소켓 유형 선택하기 4.4 프로토콜 선택하기 4.5 소켓 도메인과 유형 4.6 리눅스 지원 프로토콜. 용어 정리. PF_ : Protocol Family( 프로토콜 체계 ) AF_ : Address Family( 주소 체계 ) _un(un_) : unsigned integer. 응용 1. - PowerPoint PPT Presentation

Transcript of 4 장 . 소켓 유형과 프로토콜

Page 1: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

1

44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜

Network Lab.이 원 구

1

Page 2: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

2

44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜목차

4.1 소켓 도메인 지정

4.2 socket(2) 함수 이용하기

4.3 소켓 유형 선택하기

4.4 프로토콜 선택하기

4.5 소켓 도메인과 유형

4.6 리눅스 지원 프로토콜

Page 3: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

3

용어 정리용어 정리

PF_ : Protocol Family( 프로토콜 체계 )

AF_ : Address Family( 주소 체계 )

_un(un_) : unsigned integer

Page 4: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

4

소켓 정리소켓 정리

응용 1 응용 2 응용 3

소켓 1 소켓 2 소켓 3

TCP/IP

네트워크 드라이버

소켓 인터페이스

1

2

3

4

5 7-

그림 그림 1. 1. 소켓 인터페이스 위치소켓 인터페이스 위치

Page 5: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

5

소켓 정리소켓 정리

파일기술자 또는소켓기술자

포인터

포인터

포인터

3

4

5

파일기술자

Family : PF_INET

Service : SOCK_STREAM

Local IP :

Remote IP :

Remote port :

Local port :

소켓

파일

파일

그림 그림 2. 2. 파일기술자와 소켓기술자파일기술자와 소켓기술자

Page 6: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

6

소켓 정리소켓 정리

응용 1응용 1

Fd=3Fd=3

응용 2응용 2 응용 3응용 3 응용 4응용 4

TCP UDP

IP

TCP/IP

sd=3 sd=3

3000 3001 3002 3003

203.247.39.35

연결형 서비스 비연결형 서비스

응용 프로그램( 소켓 번호 )

소켓

전송 계층

( 포트 번호 )

인터넷 계층

(IP 주소 )

sd=4sd=4 sd=3

그림 그림 3. 3. 응용 프로그램과 소켓 그리고 응용 프로그램과 소켓 그리고 TCP/IPTCP/IP

Page 7: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

7

소켓 정리소켓 정리서버서버 클라이언트클라이언트

socket()

bind()

listen()

accept()

send()

recv()

socket()

connect()

accept()

send()

recv()

close()

연결 요청

데이터 송수신

종료

그림 그림 4. TCP 4. TCP 소켓 프로그래밍 절차소켓 프로그래밍 절차

Page 8: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

8

소켓 정리소켓 정리

서버서버 클라이언트클라이언트

socket()

bind()

recfrom()

sendto()

socket()

recfrom()

sendto()

close()

데이터 송수신

종료

그림 그림 5. UDP 5. UDP 소켓 프로그래밍 절차소켓 프로그래밍 절차

Page 9: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

9

소켓 정리소켓 정리

프로토콜

자신의 IP 주소 자신의 포트번호

TCP/IP

응용 프로그램

socket()

소켓 번호

상대방의 IP 주소 상대방의 포트번호

네트워크

소켓 인터페이스

반환호출

그림 그림 6. socket() 6. socket() 호출시 소켓번호와 소켓 인터페이스와의 관계호출시 소켓번호와 소켓 인터페이스와의 관계

Page 10: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

10

소켓 정리소켓 정리

프로토콜

자신의 IP 주소 자신의 포트번호

TCP/IP

응용 프로그램( 클라이언트 ) socket()

connect()

상대방의 IP 주소 상대방의 포트번호

네트워크

소켓 인터페이스

소켓 번호

그림 그림 6. connect() 6. connect() 호출시 소켓번호와 소켓 주소와의 관계호출시 소켓번호와 소켓 주소와의 관계

Page 11: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

11

44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜

이 장의 목표

socket(2) 함수

socket 함수의 인수 도메인 인수

소켓 유형 인수

프로토콜 인수

int socket (int domain, int type,

int protocol);

Page 12: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

12

4.1 4.1 소켓 도메인 지정소켓 도메인 지정

목차

4.1.1 PF_INET 또는 AF_INET 중 선택하기

4.1.2 PF_LOCAL 과 AF_LOCAL 이용하기

Page 13: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

13

4.1.1 PF_INET 4.1.1 PF_INET 또는 또는 AF_INET AF_INET 선택하기선택하기

도메인 지정

인터넷 프로토콜 체계

표준에서는 PF_INET 이용을 권장

도메인 인수

AF_UNIX

AF_LOCAL

AF_INET

AF_UNIX = PF_UNIXAF_LOCAL = PF_LOCALAF_INET = PF_INET

Page 14: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

14

4.1.2 PF_LOCAL4.1.2 PF_LOCAL 과 과 AF_LOCAL AF_LOCAL 이용하기이용하기

PF_LOCAL 인수 로컬 UNIX 소켓 프로토콜 체계 지정

예제 1

int z;

int sp[2]

struct sockaddr_un adr_unix;

z = socketpair(PF_LOCAL, SOCK_STREAM, 0, sp);

adr_unix.sun_family = AF_LOCAL

이 외에도 ,

PF_UNIX : UNIX 방식의 프로토콜

체계 사용

PF_NS : XEROX 네트워크 시스템의

프로토콜 체계 사용 )

Page 15: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

15

4.2 socket(2) 4.2 socket(2) 함수 이용하기함수 이용하기

socket(2) 함수 프로토콜 체계상의 하나의 소켓 생성

함수 형식 int socket(int domain, int type, int protocol);

반환 값

성공시 : 정수값 ( 소켓번호 ) 반환

실패 : -1 반환

Page 16: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

16

4.3 4.3 소켓 유형 선택하기소켓 유형 선택하기

목차

4.3.1 SOCK_STREAM 소켓 유형 이해하기

4.3.2 SOCK_DGRAM 소켓 유형 이해하기

4.3.3 SOCK_SEQPACKET 소켓 유형 이해하기

Page 17: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

17

4.3 4.3 소켓 유형 선택하기소켓 유형 선택하기

소켓 유형 인수 SOCK_STREAM*

SOCK_DGRAM*

SOCK_SEQPACKET

SOCK_RAW

Page 18: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

18

4.3.1 4.3.1 SOCK_STREAM SOCK_STREAM 소켓 유형 이해하기소켓 유형 이해하기

SOCK_STREAM 소켓 유형 스트림 방식의 소켓 생성

UNIX 의 파이프 개념과 동일

비연결형 ( 데이터그램 ) 서비스 선택 시 사용

SOCK_STREAM 소켓의 특성

메시지 경계가 유지되지 않음

전달된 순서대로 수신됨

전송된 모든 데이터는 에러없이 원격지에 도달

Page 19: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

19

4.3.2 4.3.2 SOCK_DGRAM SOCK_DGRAM 소켓 유형 이해하기소켓 유형 이해하기

SOCK_DGRAM 소켓 유형 데이터그램 방식의 소켓 생성

개별적으로 주소가 쓰여진 패킷 전송 시 사용

비연결형 ( 데이터그램 ) 서비스 선택 시 사용

SOCK_DGRAM 소켓 유형의 특성 패킷은 전달된 순서대로 수신되지 않음

에러복구를 하지 않음 ( 즉 , 신뢰성이 없음 )

데이터그램 패킷의 크기 제한

Page 20: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

20

4.3.3 4.3.3 SOCK_SEQPACKET SOCK_SEQPACKET 소켓 유형 이해하기소켓 유형 이해하기

SOCK_SEQPACKET 소켓 유형 순서화된 패킷 소켓

SOCK_SEQPACKET 소켓 유형의 특성

메시지 경계가 유지됨

전달된 순서대로 수신됨

전송된 모든 데이터는 에러없이 원격지에 도달

Page 21: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

21

4.3.4 4.3.4 SOCK_RAW SOCK_RAW 소켓 유형 이해하기소켓 유형 이해하기

SOCK_RAW 소켓 유형 네트워크 소켓

SOCK_RAW 소켓 유형의 특성 통신과 패킷에 대한 직접적인 제어 가능

Page 22: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

22

4.4 4.4 프로토콜 선택하기프로토콜 선택하기

목차

4.4.1. PF_LOCAL 과 SOCK_STREAM 이용하기

4.4.2 PF_LOCAL 과 SOCK_DGRAM 이용하기

4.4.3 PF_INET 과 SOCK_STREAM 이용하기

4.4.4 PF_INTET 과 SOCK_DGRAM 이용하기

Page 23: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

23

4.4.1 PF_LOCAL4.4.1 PF_LOCAL 과 과 SOCK_STREAM SOCK_STREAM 이용하기이용하기

리눅스 커널이 자동으로 프로토콜을 선택함

PF_LOCAL 과 SOCK_STREAM

하나의 프로세스와 같은 호스트 상의 다른 프로세스 간의 통신에 사용

생성 예제

int s;

s = socket(PF_LOCAL, SOCK_STREAM, 0);

If (s == -1)

Perror(“socket()”);

Page 24: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

24

4.4.2 PF_LOCAL4.4.2 PF_LOCAL 과 과 SOCK_DGRAM SOCK_DGRAM 이용하기이용하기

PF_LOCAL 과 SOCK_DGRAM

로컬 호스트의 데이터그램 서비스 제공

메시지 경계를 유지하려 할 때 사용

생성 예제

int s;

s = socket(PF_LOCAL, SOCK_DGRAM, 0);

If (s == -1)

Perror(“socket()”);

Page 25: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

25

4.4.3 PF_INET4.4.3 PF_INET 과 과 SOCK_STREAM SOCK_STREAM 이용하기이용하기

PF_INET 과 SOCK_STREAM

인터넷 연결 소켓에 대한 스트림 I/O 서비스 이용

신뢰적인 TCP/IP 이용

생성 예제 (1)

int s;

s = socket(PF_INET, SOCK_STREAM, 0);

If (s == -1)

Perror(“socket()”);

Page 26: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

26

4.4.3 PF_INET4.4.3 PF_INET 과 과 SOCK_STREAM SOCK_STREAM 이용하기이용하기

생성 예제 (2)

int s;

s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

If (s == -1)

Perror(“socket()”);

Page 27: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

27

4.4.4 PF_INTET4.4.4 PF_INTET 과 과 SOCK_DGRAM SOCK_DGRAM 이용하기이용하기

PF_INTET 과 SOCK_DGRAM

인터넷 비연결 소켓에 대한 데이터그램 I/O 서비스 사용

비신뢰적인 UDP 이용

생성 예제 (1)

int s;

s = socket(PF_INET, SOCK_DGRAM, 0);

If (s == -1)

Perror(“socket()”);

Page 28: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

28

4.4.4 PF_INTET4.4.4 PF_INTET 과 과 SOCK_DGRAM SOCK_DGRAM 이용하기이용하기

생성 예제 (2)

int s;

s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);

If (s == -1)

Perror(“socket()”);

Page 29: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

29

4.4 4.4 프로토콜 선택하기프로토콜 선택하기 일반적인 소켓 인수

도메인 소켓 유형 프로토콜 설 명

PF_LOCAL

PF_LOCAL

PF_INET

PF_INET

SOCK_STREAM

SOCK_DGRAM

SOCK_STREAM

SOCK_DGRAM

0

0

IPPROTO_TCP

IPPROTO_UDP

로컬 스트림 소켓

로컬 데이터그램 소켓

TCP/IP 스트림 소켓

UDP 데이터그램 소켓

Page 30: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

30

4.5 4.5 소켓 도메인과 유형소켓 도메인과 유형

PF_LOCAL

SOCK_STREAM

SOCK_DGRAM

SOCK_DGRAM

SOCK_STREAM

PF_INET

0

0

IPPROTO_TCP

0

other

IPPROTO_TCP

0

other

도메인 소켓 유형 프로토콜

< 그림 4.1 소켓 파라미터 관계 다이어그램 > 에서

Page 31: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

31

4.6 4.6 리눅스 지원 프로토콜리눅스 지원 프로토콜목차

4.6.1 로컬 및 인터넷 socket(2) 파라미터

4.6.2 그 밖의 socket(2) 파라미터

4.6.3 다른 프로토콜 연구

4.6.4 프로토콜 체계 이해하기

4.6.5 소켓 유형 이해하기

Page 32: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

32

4.6.1 4.6.1 로컬 및 인터넷 로컬 및 인터넷 socket(2) socket(2) 파라미터파라미터

부록 1 참조

Page 33: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

33

4.6.2 4.6.2 그 밖의 그 밖의 socket(2) socket(2) 파라미터파라미터

부록 2 참조

Page 34: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

34

4.6.3 4.6.3 다른 프로토콜 연구다른 프로토콜 연구

프로토콜에 대한 정보 제공처

리눅스 HOWTO 와 MINI-HOWTO 문서

리눅스 FAQ 문서

/usr/src/linux/Documetation/networking

/usr/src/linux

Page 35: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

35

4.6.4 4.6.4 프로토콜 체계 이해하기프로토콜 체계 이해하기

프로토콜 체계 정의 #include <sys/socket.h>

/usr/include/bits/socket.h

부록 3 참조

Page 36: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

36

4.6.5 4.6.5 소켓 유형 이해하기소켓 유형 이해하기

부록 4 참조

Page 37: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

37

용어 설명용어 설명

AX25 프로토콜

APPLETALK

IPX 프로토콜

IRDA

NetROM 프로토콜

PLP1

Page 38: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

38

참고 문헌참고 문헌

참고 문헌 및 사이트

http://fa.dytc.ac.kr/yksuh/internet

http://www.ecst/csuchico.edu/~beej/guide/net

JAVA 네트워크 프로그래밍 , 한빛미디어

Page 39: 4 장 .  소켓 유형과 프로토콜

HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr

39

요약요약