1 / 39

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

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.

corby
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1

  2. 4장. 소켓 유형과 프로토콜 목차 4.1 소켓 도메인 지정 4.2 socket(2) 함수 이용하기 4.3 소켓 유형 선택하기 4.4 프로토콜 선택하기 4.5 소켓 도메인과 유형 4.6 리눅스 지원 프로토콜

  3. 용어 정리 • PF_ : Protocol Family(프로토콜 체계) • AF_ : Address Family(주소 체계) • _un(un_) : unsigned integer

  4. 응용 1 응용 2 응용 3 소켓 인터페이스 5 - 7 소켓 1 소켓 2 소켓 3 TCP/IP 4 3 네트워크 드라이버 2 1 소켓 정리 그림 1. 소켓 인터페이스 위치

  5. 파일기술자 Family : PF_INET Service : SOCK_STREAM 파일 포인터 3 Local IP : 파일기술자 또는 파일 포인터 4 소켓기술자 Local port : 소켓 포인터 5 Remote IP : Remote port : 소켓 정리 그림 2. 파일기술자와 소켓기술자

  6. 연결형 서비스 비연결형 서비스 응용 1 응용 2 응용 3 응용 4 응용 프로그램 (소켓 번호) Fd=3 sd=4 sd=3 sd=3 sd=3 소켓 (포트 번호) 3000 3001 3002 3003 TCP UDP 전송 계층 IP 인터넷 계층 TCP/IP (IP 주소) 203.247.39.35 소켓 정리 그림 3. 응용 프로그램과 소켓 그리고 TCP/IP

  7. 서버 클라이언트 socket() socket() bind() listen() connect() 연결 요청 accept() accept() 데이터 송수신 send() recv() recv() send() 종료 close() 소켓 정리 그림 4. TCP 소켓 프로그래밍 절차

  8. 서버 클라이언트 socket() socket() bind() 데이터 송수신 sendto() recfrom() recfrom() sendto() 종료 close() 소켓 정리 그림 5. UDP 소켓 프로그래밍 절차

  9. 응용 프로그램 socket() 호출 반환 소켓 번호 프로토콜 자신의 IP 주소 자신의 포트번호 상대방의 IP 주소 상대방의 포트번호 소켓 인터페이스 TCP/IP 네트워크 소켓 정리 그림 6. socket() 호출시 소켓번호와 소켓 인터페이스와의 관계

  10. 응용 프로그램 (클라이언트) socket() connect() 소켓 번호 프로토콜 자신의 IP 주소 자신의 포트번호 상대방의 IP 주소 상대방의 포트번호 소켓 인터페이스 TCP/IP 네트워크 소켓 정리 그림 6. connect() 호출시 소켓번호와 소켓 주소와의 관계

  11. 4장. 소켓 유형과 프로토콜 int socket (int domain, int type, int protocol); • 이 장의 목표 • socket(2) 함수 • socket 함수의 인수 • 도메인 인수 • 소켓 유형 인수 • 프로토콜 인수

  12. 4.1 소켓 도메인 지정 목차 4.1.1 PF_INET 또는 AF_INET 중 선택하기 4.1.2 PF_LOCAL과 AF_LOCAL 이용하기

  13. 4.1.1 PF_INET 또는 AF_INET 선택하기 • 도메인 지정 • 인터넷 프로토콜 체계 • 표준에서는 PF_INET 이용을 권장 • 도메인 인수 • AF_UNIX • AF_LOCAL • AF_INET AF_UNIX = PF_UNIX AF_LOCAL = PF_LOCAL AF_INET = PF_INET

  14. 4.1.2 PF_LOCAL과 AF_LOCAL 이용하기 이 외에도, PF_UNIX : UNIX 방식의 프로토콜 체계 사용 PF_NS : XEROX 네트워크 시스템의 프로토콜 체계 사용) • 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

  15. 4.2 socket(2) 함수 이용하기 • socket(2) 함수 • 프로토콜 체계상의 하나의 소켓 생성 • 함수 형식 • int socket(int domain, int type, int protocol); • 반환 값 • 성공시 : 정수값(소켓번호) 반환 • 실패 : -1 반환

  16. 4.3 소켓 유형 선택하기 목차 4.3.1 SOCK_STREAM 소켓 유형 이해하기 4.3.2 SOCK_DGRAM 소켓 유형 이해하기 4.3.3 SOCK_SEQPACKET 소켓 유형 이해하기

  17. 4.3 소켓 유형 선택하기 • 소켓 유형 인수 • SOCK_STREAM* • SOCK_DGRAM* • SOCK_SEQPACKET • SOCK_RAW

  18. 4.3.1 SOCK_STREAM 소켓 유형 이해하기 • SOCK_STREAM 소켓 유형 • 스트림 방식의 소켓 생성 • UNIX의 파이프 개념과 동일 • 비연결형(데이터그램) 서비스 선택 시 사용 • SOCK_STREAM 소켓의 특성 • 메시지 경계가 유지되지 않음 • 전달된 순서대로 수신됨 • 전송된 모든 데이터는 에러없이 원격지에 도달

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

  20. 4.3.3 SOCK_SEQPACKET 소켓 유형 이해하기 • SOCK_SEQPACKET 소켓 유형 • 순서화된 패킷 소켓 • SOCK_SEQPACKET 소켓 유형의 특성 • 메시지 경계가 유지됨 • 전달된 순서대로 수신됨 • 전송된 모든 데이터는 에러없이 원격지에 도달

  21. 4.3.4 SOCK_RAW 소켓 유형 이해하기 • SOCK_RAW 소켓 유형 • 네트워크 소켓 • SOCK_RAW 소켓 유형의 특성 • 통신과 패킷에 대한 직접적인 제어 가능

  22. 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 이용하기

  23. 4.4.1 PF_LOCAL과 SOCK_STREAM 이용하기 • PF_LOCAL과 SOCK_STREAM • 하나의 프로세스와 같은 호스트 상의 다른 프로세스 간의 통신에 사용 • 생성 예제 int s; s = socket(PF_LOCAL, SOCK_STREAM, 0); If (s == -1) Perror(“socket()”); 리눅스 커널이 자동으로 프로토콜을 선택함

  24. 4.4.2 PF_LOCAL과 SOCK_DGRAM 이용하기 • PF_LOCAL과 SOCK_DGRAM • 로컬 호스트의 데이터그램 서비스 제공 • 메시지 경계를 유지하려 할 때 사용 • 생성 예제 int s; s = socket(PF_LOCAL, SOCK_DGRAM, 0); If (s == -1) Perror(“socket()”);

  25. 4.4.3 PF_INET과 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()”);

  26. 4.4.3 PF_INET과 SOCK_STREAM 이용하기 • 생성 예제(2) int s; s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); If (s == -1) Perror(“socket()”);

  27. 4.4.4 PF_INTET과 SOCK_DGRAM 이용하기 • PF_INTET과 SOCK_DGRAM • 인터넷 비연결 소켓에 대한 데이터그램 I/O 서비스 사용 • 비신뢰적인 UDP 이용 • 생성 예제(1) int s; s = socket(PF_INET, SOCK_DGRAM, 0); If (s == -1) Perror(“socket()”);

  28. 4.4.4 PF_INTET과 SOCK_DGRAM 이용하기 • 생성 예제(2) int s; s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); If (s == -1) Perror(“socket()”);

  29. 4.4 프로토콜 선택하기 • 일반적인 소켓 인수 도메인 소켓 유형 프로토콜 설 명 PF_LOCAL SOCK_STREAM 0 로컬 스트림 소켓 PF_LOCAL SOCK_DGRAM 0 로컬 데이터그램 소켓 PF_INET SOCK_STREAM IPPROTO_TCP TCP/IP 스트림 소켓 PF_INET SOCK_DGRAM IPPROTO_UDP UDP 데이터그램 소켓

  30. 0 0 IPPROTO_TCP IPPROTO_TCP other other 4.5 소켓 도메인과 유형 <그림 4.1소켓 파라미터 관계 다이어그램> 에서 SOCK_STREAM 0 PF_LOCAL SOCK_DGRAM 0 SOCK_STREAM PF_INET SOCK_DGRAM 도메인 소켓 유형 프로토콜

  31. 4.6 리눅스 지원 프로토콜 목차 4.6.1 로컬 및 인터넷 socket(2) 파라미터 4.6.2 그 밖의 socket(2) 파라미터 4.6.3 다른 프로토콜 연구 4.6.4 프로토콜 체계 이해하기 4.6.5 소켓 유형 이해하기

  32. 4.6.1 로컬 및 인터넷 socket(2) 파라미터 • 부록 1 참조

  33. 4.6.2 그 밖의 socket(2) 파라미터 • 부록 2 참조

  34. 4.6.3 다른 프로토콜 연구 • 프로토콜에 대한 정보 제공처 • 리눅스 HOWTO와 MINI-HOWTO 문서 • 리눅스 FAQ 문서 • /usr/src/linux/Documetation/networking • /usr/src/linux

  35. 4.6.4 프로토콜 체계 이해하기 • 프로토콜 체계 정의 • #include <sys/socket.h> • /usr/include/bits/socket.h • 부록 3 참조

  36. 4.6.5 소켓 유형 이해하기 • 부록 4 참조

  37. 용어 설명 • AX25 프로토콜 • APPLETALK • IPX 프로토콜 • IRDA • NetROM 프로토콜 • PLP1

  38. 참고 문헌 • 참고 문헌 및 사이트 • http://fa.dytc.ac.kr/yksuh/internet • http://www.ecst/csuchico.edu/~beej/guide/net • JAVA 네트워크 프로그래밍, 한빛미디어

  39. 요약

More Related