4 장 . 소켓 유형과 프로토콜
-
Upload
cullen-cunningham -
Category
Documents
-
view
147 -
download
0
description
Transcript of 4 장 . 소켓 유형과 프로토콜
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
1
44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜
Network Lab.이 원 구
1
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
2
44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜목차
4.1 소켓 도메인 지정
4.2 socket(2) 함수 이용하기
4.3 소켓 유형 선택하기
4.4 프로토콜 선택하기
4.5 소켓 도메인과 유형
4.6 리눅스 지원 프로토콜
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
3
용어 정리용어 정리
PF_ : Protocol Family( 프로토콜 체계 )
AF_ : Address Family( 주소 체계 )
_un(un_) : unsigned integer
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
4
소켓 정리소켓 정리
응용 1 응용 2 응용 3
소켓 1 소켓 2 소켓 3
TCP/IP
네트워크 드라이버
소켓 인터페이스
1
2
3
4
5 7-
그림 그림 1. 1. 소켓 인터페이스 위치소켓 인터페이스 위치
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. 파일기술자와 소켓기술자파일기술자와 소켓기술자
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
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
7
소켓 정리소켓 정리서버서버 클라이언트클라이언트
socket()
bind()
listen()
accept()
send()
recv()
socket()
connect()
accept()
send()
recv()
close()
연결 요청
데이터 송수신
종료
그림 그림 4. TCP 4. TCP 소켓 프로그래밍 절차소켓 프로그래밍 절차
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
8
소켓 정리소켓 정리
서버서버 클라이언트클라이언트
socket()
bind()
recfrom()
sendto()
socket()
recfrom()
sendto()
close()
데이터 송수신
종료
그림 그림 5. UDP 5. UDP 소켓 프로그래밍 절차소켓 프로그래밍 절차
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
9
소켓 정리소켓 정리
프로토콜
자신의 IP 주소 자신의 포트번호
TCP/IP
응용 프로그램
socket()
소켓 번호
상대방의 IP 주소 상대방의 포트번호
네트워크
소켓 인터페이스
반환호출
그림 그림 6. socket() 6. socket() 호출시 소켓번호와 소켓 인터페이스와의 관계호출시 소켓번호와 소켓 인터페이스와의 관계
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
10
소켓 정리소켓 정리
프로토콜
자신의 IP 주소 자신의 포트번호
TCP/IP
응용 프로그램( 클라이언트 ) socket()
connect()
상대방의 IP 주소 상대방의 포트번호
네트워크
소켓 인터페이스
소켓 번호
그림 그림 6. connect() 6. connect() 호출시 소켓번호와 소켓 주소와의 관계호출시 소켓번호와 소켓 주소와의 관계
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
11
44 장장 . . 소켓 유형과 프로토콜소켓 유형과 프로토콜
이 장의 목표
socket(2) 함수
socket 함수의 인수 도메인 인수
소켓 유형 인수
프로토콜 인수
int socket (int domain, int type,
int protocol);
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 이용하기
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
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 네트워크 시스템의
프로토콜 체계 사용 )
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 반환
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 소켓 유형 이해하기
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
17
4.3 4.3 소켓 유형 선택하기소켓 유형 선택하기
소켓 유형 인수 SOCK_STREAM*
SOCK_DGRAM*
SOCK_SEQPACKET
SOCK_RAW
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
18
4.3.1 4.3.1 SOCK_STREAM SOCK_STREAM 소켓 유형 이해하기소켓 유형 이해하기
SOCK_STREAM 소켓 유형 스트림 방식의 소켓 생성
UNIX 의 파이프 개념과 동일
비연결형 ( 데이터그램 ) 서비스 선택 시 사용
SOCK_STREAM 소켓의 특성
메시지 경계가 유지되지 않음
전달된 순서대로 수신됨
전송된 모든 데이터는 에러없이 원격지에 도달
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
19
4.3.2 4.3.2 SOCK_DGRAM SOCK_DGRAM 소켓 유형 이해하기소켓 유형 이해하기
SOCK_DGRAM 소켓 유형 데이터그램 방식의 소켓 생성
개별적으로 주소가 쓰여진 패킷 전송 시 사용
비연결형 ( 데이터그램 ) 서비스 선택 시 사용
SOCK_DGRAM 소켓 유형의 특성 패킷은 전달된 순서대로 수신되지 않음
에러복구를 하지 않음 ( 즉 , 신뢰성이 없음 )
데이터그램 패킷의 크기 제한
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
20
4.3.3 4.3.3 SOCK_SEQPACKET SOCK_SEQPACKET 소켓 유형 이해하기소켓 유형 이해하기
SOCK_SEQPACKET 소켓 유형 순서화된 패킷 소켓
SOCK_SEQPACKET 소켓 유형의 특성
메시지 경계가 유지됨
전달된 순서대로 수신됨
전송된 모든 데이터는 에러없이 원격지에 도달
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
21
4.3.4 4.3.4 SOCK_RAW SOCK_RAW 소켓 유형 이해하기소켓 유형 이해하기
SOCK_RAW 소켓 유형 네트워크 소켓
SOCK_RAW 소켓 유형의 특성 통신과 패킷에 대한 직접적인 제어 가능
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 이용하기
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()”);
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()”);
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()”);
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()”);
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()”);
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()”);
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 데이터그램 소켓
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 소켓 파라미터 관계 다이어그램 > 에서
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 소켓 유형 이해하기
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
32
4.6.1 4.6.1 로컬 및 인터넷 로컬 및 인터넷 socket(2) socket(2) 파라미터파라미터
부록 1 참조
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
33
4.6.2 4.6.2 그 밖의 그 밖의 socket(2) socket(2) 파라미터파라미터
부록 2 참조
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
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
35
4.6.4 4.6.4 프로토콜 체계 이해하기프로토콜 체계 이해하기
프로토콜 체계 정의 #include <sys/socket.h>
/usr/include/bits/socket.h
부록 3 참조
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
36
4.6.5 4.6.5 소켓 유형 이해하기소켓 유형 이해하기
부록 4 참조
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
37
용어 설명용어 설명
AX25 프로토콜
APPLETALK
IPX 프로토콜
IRDA
NetROM 프로토콜
PLP1
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
38
참고 문헌참고 문헌
참고 문헌 및 사이트
http://fa.dytc.ac.kr/yksuh/internet
http://www.ecst/csuchico.edu/~beej/guide/net
JAVA 네트워크 프로그래밍 , 한빛미디어
HANNAM UNIVERSITYhttp:// netwk.hannam.ac.kr
39
요약요약