제 24 장 소켓 인터페이스 24.1 정의 24.2 소켓 24.3 바이트 순서화 24.4 주소 변환 24.5 바이트 조종 기능

Slides:



Advertisements
Similar presentations
HTTPS Packet Capture Tutorial
Advertisements

정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
1 안드로이드 네트워킹 안드로이드 앱 프로그래밍 여 규리.
Network Lab. Byoung-Son, Choi
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Department of Computer Science and Engineering
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
제 17 장 TCP : 전송 제어 프로토콜 정보통신연구실.
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
8장. 원격지 시스템 관리하기.
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
Chapter 21 Network Layer: ARP, ICMP (IGMP).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
Internet Address Conversion Functions
Chapter 06. UDP 서버/클라이언트.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
NJM Messenger 박상원 박연호.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
10 장 데이터 링크 제어(Data Link Control)
Java의 정석 제 15 장 네트워킹(Networking) Java 정석 남궁성 강의
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
TCP/IP Socket Programming…
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
Socket Address Structure and Byte Ordering Functions
Chapter 5 UDP Socket 소켓 프로그래밍.
Chapter 19 솔라리스 네트워크 관리 Solaris1 . TCP/IP 개요
Trivial File Transfer Protocol (TFTP)
제 11 장 UDP 11.1 프로세스-대-프로세스 통신 11.2 사용자 데이터그램 11.3 검사합 11.4 UDP 동작
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
Internet Address Conversion Functions
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
제 15 장 BOOTP와 DHCP BOOTP 15.2 동적 호스트 설정 프로토콜.
USN(Ubiquitous Sensor Network)
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
CGI란 무엇인가? CGI(Common Gateway Interface)의 정의
Chapter 16 Socket Interface.
Department of Computer Engineering
Network 네트워크 이론 및 실습 TCP / IP 4장.
10 장 데이터 링크 제어(Data Link Control)
10 장 데이터 링크 제어(Data Link Control)
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
통신프로토콜 전산정보학부 모바일인터넷과 권 춘 우
Introduction to JSP & Servlet
Chapter 04. TCP 서버/클라이언트.
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
ARP.
Presentation transcript:

제 24 장 소켓 인터페이스 24.1 정의 24.2 소켓 24.3 바이트 순서화 24.4 주소 변환 24.5 바이트 조종 기능 제 24 장 소켓 인터페이스 24.1 정의 24.2 소켓 24.3 바이트 순서화 24.4 주소 변환 24.5 바이트 조종 기능 24.6 원격지 호스트에 대한 정보 24.7 소켓 시스템 콜 24.8 비연결 반복 서버 24.9 UDP 클라이언트-서버 프로그램 24.10 연결-지향 동시 서버 24.11 TCP 클라이언트-서버 프로그램 24.12 요약

소 켓 소켓 인터페이스는 UNIX BSD의 일환으로 개발 소 켓 소켓 인터페이스는 UNIX BSD의 일환으로 개발 UNIX에 기반을 두고 있으며 UNIX에서 파일을 엑세스하기 위해서 사용되는 시스템 콜의 확장(System Call) 어떤 통신망의 특정 노드상의 특정 서비스를 식별하는 식별자. 소켓은 노드주소와 서비스를 식별하는 포트번호로 구성된다. 인터넷 노드상의 포트 80은 (WWW)World Wide Web의 서버를 표시한다.

24.1 정의된 데이트 유형

24.1 인터넷 주소 구조

24.1 인터넷 소켓 주소 구조

24.2 소 켓 구 조

24.2 소 켓 구 조(계속) 계열(Family) IPv4, IPv6, UNIX도메인 프로토콜과 같은 그룹정의 유형(Type) Stream Socket, DataGram Socket, Raw Socket 프로토콜(Protocol) TCP, UDP의 경우 0 로컬 소켓 주소 sockaddr_in의 구조체로 이루어진 로컬 소켓주소 원격지 소켓 주소 sockaddr_in의 구조체로 이루어진 원격지 소켓 주소

24.2 소 켓 유 형

24.2 소 켓 유 형(계속) 스트림소켓(Stream Socket) 데이터 그램 소켓(Datagram Socket) TCP와 같은 연결지향 프로토콜을 사용 데이터 그램 소켓(Datagram Socket) UDP와 같은 비연결성 프로토콜을 사용 미 소켓(Raw Socket) ICMP 또는 OSPF와 같이 직접 IP 서비스를 이용하는 프로토콜

24.3 바이트 순서화 Big-endian 바이트순서 Little-endian 바이트 순서

24.3 네트워크 바이트 순서 TCP/IP Protocol 모음에서의 바이트 순서는 Big-endian이다.

24.3 바이트-순서변환 응용프로그램에서 이식성을 용이하게 하기 위하여, TCP/IP 소프트웨어는 호스트 바이트 순서(big-endian 또는 little-endian)으로 이루어진 정수를 네트워크 바이트 순서(big-endian)으로 변환하는 기능을 제공한다.

24.3 바이트-순서변환(계속)

24.3 바이트-순서변환(계속) htons 16bit의 정수를 호스트바이트순서에서 네트워크 바이트 순서로 바꾼다 htonl 32bit의 정수를 호스트 바이트 순서에서 네트워크 바이트 순서로 바꾼다 htohs 16bit의 정수를 네트워크 바이트 순서에서 호스트바이트 순서로 바꾼다 htonl 32bit의 정수를 네트워크 바이트순서에서 호스트 바이트 순서로 바꾼다

24.4 주소변환 네트워크 소프트웨어는 ASCII의 점으로 구분되는 10진수 형태의 IP 주소를 32비트의 2진 형태로 변환하거나 그 반대의 기능을 제공하는 함수를 제공.

24.4 주소변환(계속) inet_aton 점에 의해 분리되는 4개이 세그먼트를 포함하는 ASCII스트링을 네트워크 바이트 순서의 32비트 2진수 변환 inet_ntoa 네트워크 바이트 순서의 32비트의 2진수를 점으로 분리되는 4개의 세그먼트로 이루어진 ASCII스트링으로 변환

24.5 바이트 조정 기능 네트워크 프로그래밍에서는 한 필드를 초기화 하거나 한필드의 내용을 다른 필드로 복사, 두필드 내용의 비교기능 필요. 네트워크 프로그래밍에서는 strcpy나 strcmp와 같은 스트링함수를 사용할 수 없음.(함수는 필드가 Null문자로 끝남)

24.5 바이트 조정 기능(계속) memset 정의된 수만큼의 바이트를 특정한 값으로 설정 Example ) memset(&x,0,sizeof(x)); x라는 필드에 0저장 첫 번째 변수는 목적지 포인터, 두 번째 변수는 설정하고하는 값, 세 번째변수는 바이트 수 memcpy 한 필드값을 다른 필드로 복사 Example ) memcpy(&x,&y,sizeof(x)); y필드의 값을 x필드로 복사 첫 번째 변수는 목적지 포인터, 두 번째 변수는 발신지 포인터, 세 번째변수는 복사하고자하는 바이트 수 memcmp 두개의 필드를 비교 Example ) memcmp(&x,&y,10); x와y필드의 처음10바이트를 비교 첫 번째 변수는 첫번째 필드의 포인터, 두 번째 변수는 두번째 필드의 포인터, 비교하고자하는 바이트 수

24.6 원격지 호스트 에 대한 정보 Gethostname() - DNS에 대한 Call 호스트의 도메인 이름을 수신하고 자원레코드내용인 hostent라는 구조체 정보를 리턴한다.

24.6 hostent 구조

24.6 hostent 구조(계속) 첫번째 필드 : 호스트 이름 두번째 필드 : 호스트의 별칭(alias)을 나타내는 각 포인터에 대한 열(array)포인터 세번째 필드 : 주소유형(AF_INET) 네번째 필드 : 주소의 길이(IPv4는 4바이트) 마지막 필드 : 각각의 포인터가 호스트 주소중의 하나를 가리키는 포인터 열(array)의 포인터. (호스트가 여러 개의 주소를 가지고 있는 경우)

24.7 socket() 프로세스가 소켓을 만들기 위해서 사용 계열(family), 유형, 프로토콜 필드

24.7 bind() 미리개설된 소켓에 로컬 소켓 주소를 추가함으로서 로컬 소켓 주소와 소켓을 결합 sockfd 소켓기술자, localaddr 로컬컴퓨터의 소켓 주소에 대한 포인터, localaddrlen 지역소켓 주소의 길이

24.7 connect() 원격지 프로세스(일반적으로 서버)와 능동적으로 설정하고자하는 프로세스(주로 클라이언트)에 의해 사용 sockfd socket함수에 의해서 리턴되는 소켓 기술자, serveraddr 원격지 소켓 주소 포인터,serveraddrlen 그 주소의 길의

24.7 listen() TCP server에서만 불려진다. 비연결 소켓으로 부터 수동 소켓을 개설. 운영체제에게 서버가 이 소켓을 통하여 수락할 준비가 되어있다는 것을 알림. sockfd는 socket함수로 부터 리턴되는 소켓기술자, backlog는 이연결을 위해서 저장될 수 있는 요구의 수 성공의 경우 0, 오류의 경우 1을 리턴

24.7 accept() 해당 큐로 부터 첫번째 연결 요구를 읽어들이기 위해서 TCP 서버에 의해 불려진다. 큐가 비게 되면, 휴면 상태로 들어간다. sockfd 소켓 기술자, clientaddr 연결을 요구한 클라이언트이 주소 포인터, clientaddrlen클라이언트 주소 길이에 대한 포인터 새로운 소켓 개설, 자식서버가 클라이언트에게 접속

24.7 sendto() UDP를 사용하는 프로세스가 원격지 시스템에서 실행되는 다른 프로세스에게 메시지 전송 Sockfd 소켓기술자, buf 전송메시지 버퍼포인터, buflen 버퍼의 길이, flag out-of-band 또는 lookahead 메시지, toaddr 수신측 소켓 주소 포인터

24.7 Recvfrom() 소켓에 도착하는 다음 메시지 추출, 송신측의 소켓주소 추출 주로 UDP 프로세서에 의해 사용 Sockfd 소켓기술자, buf 전송메시지 버퍼포인터, buflen 버퍼의 길이, flag out-of-band 또는 lookahead 메시지, fromaddr 송신측 소켓 주소 포인터, fromaddrlen 소켓 주소 길이 포인터

24.7 Read() 원격지 기기에서 실행되는 다른 프로세스로 부터 데이터를 수신하기 위해서 하나의 프로세스에 의해서 사용 두 기기사이의 이미 연결이 개설되어야 함. Sockfd 소켓기술자, buf 데이터가 저장되는 버퍼 포인터, buflen 버퍼의 길이

24.7 write() 원격지 기기에서 실행되는 다른 프로세스로 부터 데이터를 전송 두 기기사이의 이미 연결이 개설되어야 함. Sockfd 소켓기술자, buf 전송할 데이터 보관 버퍼 포인터, buflen 버퍼의 길이

24.7 close() 소켓을 닫고 TCP연결을 종료하기 위해 사용

24.8 비연결 반복 서버

24.8 비연결 반복 서버(계속) UDP를 이용하는 서버는 비연결 반복 방식으로 동작한다. 데이터그램 요구를 처리하는 동안 서버는 다른 데이터 그램을 전혀 처리하지 않는다. 한 클라이언트 또는 여러 클라이언트로 부터 발생하여 도착하는 데이터 그램은 큐에 저장되며 순서대로 하나씩 처리된다. 단일포트인 잘 알려진 포트를 이용하며 도착하는 모든 데이터그램은 서비스를 받기 위해 일렬도 기다린다.

24.8 비연결 반복 서버(계속) 서 버 소켓개설 바인딩 단계의 반복 Socket call발생(family, 유형, 프로토콜전달) 운영체제는 소켓 기술자(socket descriptor) 리턴 바인딩 소켓구조에 대한 정보를 입력하도록 bind 콜 발생 로컬 소켓 주소 구성 단계의 반복 수신(Receiving) 입력큐로부터 데이타그램을 읽기위해 recvfrom 콜 발생 전송(Sending) 데이터그램처리후 출력큐로 결과를 포함하는 데이터 그램을 전송하기 위하여 sendto 콜 발생

24.8 비연결 반복 서버(계속) 클라이언트 소켓개설 단계의 반복 종료 소켓 개설을 위해 Socket call 발생 운영체제는 소켓 기술자(socket descriptor) 리턴 단계의 반복 전송 서버로 자신이 요구를 전송하기 위해 sendto 콜 발생 수신 자신의 요구에 대한 응답을 얻기위하여 recvfrom 콜 발생 종료 close

Server Program 24.9 UDP 클라이언트-서버 프로그램 1-6 헤더파일 8 버퍼크기 17 소켓 개설 18 서버의 소켓주소 초기화 19-21 서버소켓주소 값 설정 22 소켓 Binding 24 버퍼 초기화 25 무한루프 시작 27 클라이언트 메시지 수신 30 데이터 처리 32 클라이언트로 결과전송 34 버퍼의 재초기화

Client Program 24.9 UDP 클라이언트-서버 프로그램(계속) 1-6 헤더파일 8 버퍼크기 18 소켓 개설 19 원격지 소켓주소 초기화 20-24 원격지 소켓주소를 위한 값을 설정 25 서버연결 26 버퍼초기화 30 버퍼내용을 서버 전송 33 서버로부터 응답수신 35 수신된 메시지 프린트 36 다음 반복을 위해 버퍼 재초기화 38 연결종료

24.10 연결-지향 동시 서버

24.10 연결-지향 동시 서버(계속) 동시처리 가능 즉, 서버가 여러 클라이언트를 동시에 서비스한다. Request가 여러 개의 세그먼트로 도착할 수 있는 바이트 스트림으로 구성될 수 있고, 또한 응답이 여러 개의 세그먼트를 통하여 전달될 수 있다. 서버는 각 연결당 하나의 버퍼를 가지며 적절한 버퍼에 저장되고 서버에 의해서 동시 처리된다. 부모.자식 서버 개념 이용 부모는 잘 알려진 포트를 이용하고 연결설정후 자식서버와 임시포트를 만들고 그 자식서버가 클라이언트를 처리하도록 한다. 그후 부모서버는 개방되어 다른 연결을 기다린다.

24.10 연결-지향 동시 서버(계속) 하나의 잘 알려진 포트와 여러 개의 임시포트이용 잘 알려진 포트로 수동개방 후 초기 연결절차 연결이 설정된 후, 서버는 잘 알려진 포트를 비우기 위해 설정된 연결에게 임시 포트 할당 데이터 전달은 클라이언트 측의 임시포트와 서버측의 임시 포트 두개의 임시포트를 통하여 이루어진다. 잘 알려진 포트는 다른 클라이언트 연결을 위해서 개방된다.

24.10 연결-지향 동시 서버(sever1) 서 버 소켓개설 바인딩 듣기 단계반복 Socket call발생(family, 유형, 프로토콜전달) 바인딩 소켓구조에 대한 정보를 입력하도록 bind 콜 발생 로컬 소켓 주소 구성 듣기 Listen 콜을 발생하여 소켓을 수동 소켓을 바꾼다. 단계반복 수락(Accept) Accept라하는 새로운 소켓 개설, 개설된 소켓을 다음 클라이언트와 연결한다. 클라이언튼 새로운 소켓과 연결하며, 이전 소켓은 비워진다. Forking 자식 프로세서 생성, 이 동작이후 클라이언트는 동시에 부모와 자식에 연결된다.(listen, accept socket)을 가진다.

24.10 연결-지향 동시 서버(server2) 서 버 Accept 닫기 Listen 소켓닫기 반복 통신 소켓 닫기 부모 프로세서는 Accept소켓을 닫기위해 close콜 발생 Listen소켓은 개방 유지(다음 클라이언트를 위해) Listen 소켓닫기 자식 프로세서는 자신의 listen소켓을 닫기위해 close 콜발생 Accept소켓은 개방을 유지 반복 읽기 – 입력버퍼로 부터 한번 처리능력만큼의 Read 콜 처리 – 데이터 처리 쓰기 – 출력버퍼로 처리결과를 쓰기 위하여 Write콜 발생 통신 소켓 닫기 Close 콜

24.10 연결-지향 동시 서버(client) 클라이언트 소켓개설 연결 단계의 반복 종료 소켓 개설을 위해 Socket call 발생 운영체제는 소켓 기술자(socket descriptor) 리턴 연결 Connect 콜을 발생하여 운영체제가 개설돈 소켓 구조에 서버의 소켓 주소를 넣도록 한다. 단계의 반복 쓰기 Write 콜을 발생시켜 출력 TCP 버퍼로 데이터 기록 읽기 입력 버퍼로 부터 데이터를 얻기 위하여 read콜을 발생 종료 Close 콜

24.10 연결-지향 동시 서버

24.10 연결-지향 동시 서버

Server Program 24.11 TCP 클라이언트-서버 프로그램 1-6 헤더파일 8 버퍼크기 18 수동소켓 개설 23 수동소켓과 서버 소켓주소 결합(binding) 24 수동소켓으로 부터 listen 소켓 개설 28 Accept socket 개설 30 fork를 이용 자식 프로세스 만듬 33 부모 프로세스의 Accept 소켓 닫는다. 33 부모 프로세스의 Accept 소켓 닫는다 38 자식 프로세스의 listen 소켓을 닫는다. 40 루프내에서 자식 프로세스가 루프내의 Accept 소켓으로 부터 Read 함수 수행 42 읽은 데이터 처리 44 자식프로세스가 Accept 소켓으로 결과 기록 47 Accept 소켓 닫는다

Client Program 24.11 UDP 클라이언트-서버 프로그램 1-6 헤더파일 8 버퍼크기 17 능동 소켓 개설 21 원격지 서버에 대한 정보를 받아 hostent구조체 변수에 정보 보관 22-23 hostent구조체내의 소켓주소를 원격지 소켓주소 구조체에 복사 24 개설된 소켓을 서버에 연결 25 데이터 수신 버퍼저장 27 버퍼의 내용을 능동소켓에 기록 29 능동소켓을 이용 서버로 부터 수신한 내용을 읽는다. 30 수신버퍼의 내용을 프린트 33 라인은 능동 소켓을 종료

24.12 요약