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

Slides:



Advertisements
Similar presentations
Python Essential 세미나 1 Socket Programming 발표자 : 임민상 ( 화 )
Advertisements

Python Socket/HTTP overmania. 목표  소켓을 이용하여 기본적인 서버 - 클라이언트 모델을 구현할 수 있다.  간단한 웹서버를 소켓을 이용하여 작성할 수 있다.
TCP 서버/클라이언트 동작 원리 - (1) TCP 서버/클라이언트 예 웹 서버 웹 클라이언트 웹 클라이언트
Java Socket 통신 이개혁 정대준.
한남대학교 컴퓨터공학과 소프트웨어공학실험실 최 용 준
Network Lab. Byoung-Son, Choi
Chapter 13 전송층 개요.
Understanding of Socket and File I/O
TCP/IP Network Experimental Programming [IPv6에 의한 통신 실험]
13장 소켓.
Chapter 06. UDP 서버/클라이언트.
TCP/IP Socket Cover Slide 조태문.
Network Lab. Young-Chul Hwang
TCP/IP 소켓 프로그래밍 - C 버전 중에서
네트워크 프로그래밍 Unix Network Programming, 2nd Ed., W. Richard Stevens, Prentice Hall PTR, 한국어 판 Unix Network Programming, Stevens 저, 김치하, 이재용 역, 대영사,
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
PHP 웹 프로그래밍 (PHP Web Programming) 네트워크 프로그래밍 문양세 강원대학교 IT대학 컴퓨터과학전공.
TCP/IP Socket Cover Slide 조태문.
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
컴퓨터 네트워크 PART 03 프로그래밍 (chapter 01 Socket 프로그래밍) 임효택
Chapter 11. Raw 소켓.
Internet Address Conversion Functions
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
11 소켓 프로그래밍 기초.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
14장 소켓.
JAVA 프로그래밍 12장 네트워킹(Networking).
17장 네트워크 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Choi Seong Yun 네트워크 프로그래밍 Choi Seong Yun
Using Standard I/O on Sockets
Chapter 02. 윈도우 소켓 시작하기.
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Window socket programming
Processing resulting output
(Web Programming & Practice)
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
Socket Address Structure and Byte Ordering Functions
Department of Computer Engineering
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Chapter 8 연결형 프로토콜 서버 발표자 : SE Lab 황 성 하
Department of Computer Engineering
Advanced Socket Programming
School of Electronics and Information. Kyung Hee University.
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
소켓의 옵션 School of Electronics and Information. Kyung Hee University.
서버 실습 기말과제 게임소프트웨어 b 이도하 Date :2014/12/11(목)
네트워크와 소켓 프로그래밍 Chapter 01. * 학습목표 TCP/IP 프로토콜의 동작 원리를 개관 소켓의 기본 개념을 이해
멀티 쓰레드 기반의 채팅 프로그램 문성영 김현진 학번 이름 장용하 차희진 연구제안서.
School of Electronics and Information. Kyung Hee University.
Cyclow Progress 김영훈, 김수현, 박윤아.
네트워크 프로그래밍의 이해 School of Electronics and Information.
Chapter 16 Socket Interface.
Department of Computer Engineering
Department of Computer Engineering
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
인터넷 주소변환 School of Electronics and Information. Kyung Hee University.

제 11장 User Datagram Protocol(UDP)
MONSTER CAR 구정재 한석우 김재형.
Chapter 02. 윈도우 소켓 시작하기.
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
Department of Computer Engineering
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
Department of Computer Engineering
Presentation transcript:

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

4장. 소켓 유형과 프로토콜 목차 4.1 소켓 도메인 지정 4.2 socket(2) 함수 이용하기 4.3 소켓 유형 선택하기 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. 소켓 인터페이스 위치 TCP/IP 네트워크 드라이버 응용 1 응용 2 응용 3 소켓 1 소켓 2 소켓 3 4 5 7 - 그림 1. 소켓 인터페이스 위치

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.4 프로토콜 선택하기 목차 4.4.1. PF_LOCAL과 SOCK_STREAM 이용하기 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 이용하기

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

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

4.4.3 PF_INET과 SOCK_STREAM 이용하기 인터넷 연결 소켓에 대한 스트림 I/O 서비스 이용 신뢰적인 TCP/IP 이용 생성 예제(1) int s; s = socket(PF_INET, SOCK_STREAM, 0); If (s == -1) Perror(“socket()”);

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

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

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

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

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

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

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

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

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

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

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

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

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

요약