윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판

Slides:



Advertisements
Similar presentations
Network Programming:
Advertisements

비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
HANNAM Univ. 제 3 장 주소 체계와 데이터 정렬 Network Lab. Byoung-Son, Choi TCP/IP Socket Programming…
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www. nms4you.com 1 AMAN2002 추가 기능 실습 Chapter 13:
TCP 서버/클라이언트 동작 원리 - (1) TCP 서버/클라이언트 예 웹 서버 웹 클라이언트 웹 클라이언트
조준희 (Cho, Junhee) TCP/IP 조준희 (Cho, Junhee)
TCP/IP 통신망 특론 3장 인터넷프로토콜( IP ).
TCP/IP Network Experimental Programming [IPv6에 의한 통신 실험]
13장 소켓.
Chapter 06. UDP 서버/클라이언트.
TCP/IP Socket Cover Slide 조태문.
TCP/IP 소켓 프로그래밍 - C 버전 중에서
IP addressing - 2 진수 (10진수) | (2진수)
네트워크 프로그래밍 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)
TCP/IP Socket Cover Slide 조태문.
Linux에서의 IP, Port, 네트워크 바이트 순서, 주소 변환 주소 할당 등…
10. About TCP / IP SPARCS 08 우성필.
Chapter 03. 소켓 주소 구조체 다루기.
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
컴퓨터 네트워크 PART 03 프로그래밍 (chapter 01 Socket 프로그래밍) 임효택
Internet Address Conversion Functions
3장. 소켓 주소 구조체 다루기 소켓 주소 구조체의 정의와 초기화 방법을 익힌다.
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
14장 소켓.
한국마사회 ADSL 장애처리 방법 2003년 5월 16일.
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Socket Address Structure and Byte Ordering Functions
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Chapter 8 연결형 프로토콜 서버 발표자 : SE Lab 황 성 하
Chapter 03. 소켓 주소 구조체 다루기.
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
Socket Address Structure and Byte Ordering Functions
UDP Test 프로그램 분석.
Linux Socket Programming - 도메인과 주소체계 -
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
IP(Internet Protocol)
Inje Univ. Network Team2 Jung Chang Hwan
네트워크와 소켓 프로그래밍 Chapter 01. * 학습목표 TCP/IP 프로토콜의 동작 원리를 개관 소켓의 기본 개념을 이해
멀티 쓰레드 기반의 채팅 프로그램 문성영 김현진 학번 이름 장용하 차희진 연구제안서.
Internet Address Conversion Functions
School of Electronics and Information. Kyung Hee University.
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
국제의료관광 관련 법, 제도.
단말기의 설치마법사를 통한 개통 절차 1.쉬운 설치 마법사를 통한 설치 + (1) 고정 IP / DHCP / PPPoE 설정
Chapter 16 Socket Interface.
기술가정 2학년 2학기 4.컴퓨터와 생활 > 2) 인터넷의 활용 > 1/7 인터넷이란 무엇일까.
초기화면 인터넷의 이해 Ⅳ. 컴퓨터와 생활> 2. 인터넷의 활용> 기술·가정 2학년 2학기
Department of Computer Engineering
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
인터넷 주소변환 School of Electronics and Information. Kyung Hee University.
남아메리카 선교 김수정, 이하정 전희진, 장성경.
Internet 유선 랜카드 A 회사 네트워크 장비 (인터넷 공유 기능 활성화)
Virtual Private Networks,
기술 진화와 진보.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
연습 문제 풀이 1 송신측 MAC 주소 수신측 MAC 주소 상위 계층 프로토콜 종류
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
매물장 로그인 직원을 미리 생성하시면 직원 ID로 로그인 가능.
Chapter 03. 소켓 주소 구조체 다루기.
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판 Chapter 03. 주소체계와 데이터 정렬

Chapter 03-1. 소켓에 할당되는 IP주소와 PORT번호 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판

인터넷 주소(Internet Address) 인터넷 주소란? 인터넷상에서 컴퓨터를 구분하는 목적으로 사용되는 주소. 4바이트 주소체계인 IPv4와 16바이트 주소체계인 IPv6가 존재한다. 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다. 네트워크 주소와 호스트 주소로 나뉜다. 네트워크 주소를 이용해서 네트워크를 찾고, 호스트 주 소를 이용해서 호스트를 구분한다. 인터넷 주소의 역할 IPv4 인터넷 주소의 체계

클래스 별 네트워크 주소와 호스트 주소의 경계 달리 말하면... 때문에 첫 번째 바이트 정보만 참조해도 IP주소의 클래스 구분이 가능하며, 이로 인해서 네트워크 주소와 호스트 주소의 경계 구분이 가능하다.

소켓의 구분에 활용되는 PORT번호 PORT번호 PORT번호에 의한 소켓의 구분과정 IP는 컴퓨터를 구분하는 용도로 사용되며, PORT번호는 소켓을 구분하는 용도로 사용된다. 하나의 프로그램 내에서는 둘 이상의 소켓이 존재할 수 있으므로, 둘 이상의 PORT가 하나 의 프로그램에 의해 할당될 수 있다. PORT번호는 16비트로 표현, 따라서 그 값은 0 이상 65535 이하 0~1023은 잘 알려진 PORT(Well-known PORT)라 해서 이미 용도가 결정되어 있다. PORT번호에 의한 소켓의 구분과정

윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판 Chapter 03-2. 주소정보의 표현 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판

IP주소와 PORT번호는 구조체 sockaddr_in의 IPv4 기반의 주소표현을 위한 구조체 IP주소와 PORT번호는 구조체 sockaddr_in의 변수에 담아서 표현한다. 주소체계 PORT번호 32비트 IP주소 사용되지 않음 32비트 IPv4 인터넷 주소

구조체 sockaddr_in의 멤버에 대한 분석 멤버 sin_family 주소체계 정보 저장 멤버 sin_port 16비트 PORT번호 저장 네트워크 바이트 순서로 저장 멤버 sin_addr 32비트 IP주소정보 저장 멤버 sin_addr의 구조체 자료형 in_addr 사실상 32비트 정수자료형 멤버 sin_zero 특별한 의미를 지니지 않는 멤버 반드시 0으로 채워야 한다. 0으로 채워야 하는 멤버 sin_zero의 존재 이유를 이해할 필요가 있다!

구조체 sockaddr_in의 활용의 예 구조체 변수 sockaddr_in은 bind 함수의 인자로 전달되는데, 매개변수 형이 sockaddr이므로 형 변환을 해야만 한다. 구조체 sockaddr은 다양한 주소체계의 주소정보를 담을 수 있도록 정의되었다. 그래서 IPv4의 주소정보를 담기가 불편하다. 이에 동일한 바이트 열을 구성하는 구조체 sockaddr_in이 정의되었으며, 이를 이용해서 쉽게 IPv4의 주소정보를 담을 수 있다.

Chapter 03-3. 네트워크 바이트 순서와 인터넷 주소 변환 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판

CPU에 따라 달라지는 정수의 표현 정수 1을 저장하는 두 가지 방법 : CPU가 적용하는....

바이트 순서(Order)와 네트워크 바이트 순서 데이터 송수신 과정에서의 문제 빅 엔디안(Big Endian) 상위 바이트의 값을 작은 번지수에 저장 리틀 엔디안(Little Endian) 상위 바이트의 값을 큰 번지수에 저장 호스트 바이트 순서 CPU별 데이터 저장방식을 의미함 네트워크 바이트 순서 통일된 데이터 송수신 기준을 의미함 빅 엔디안이 기준이다! 빅 엔디안 모델 리틀 엔디안 모델

바이트 순서의 변환 바이트 변환함수 htons에서 h는 호스트(host) 바이트 순서를 의미 n은 네트워크(network) 바이트 순서를 의미 s는 자료형 short를 의미  htonl에서 l은 자료형 long을 의미 이 기준을 적용하면 위 함수가 의미하는 바를 이해할 수 있다.

바이트 변환의 예 실행결과

Chapter 03-4. 인터넷 주소의 초기화와 할당 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판

문자열 정보를 네트워크 바이트 순서의 정수로 변환 “211.214.107.99”와 같이 점이찍힌 10진수로 표현된 문자열을 전달하면, 해당 문자열 정보를 참조해서 IP주소정보를 32비트 정수형으로 반환! 실행결과

inet_aton 기능상으로 inet_addr 함수와 동일하다. 다만 in_addr형 구조체 변수에 변환의 결과가 저장된다는 점에서 차이를 보인다. 실행결과

inet_ntoa inet_aton 함수의 반대기능 제공! 네트워크 바이트 순서로 정렬된 정수형 IP주소정보를 우리가 눈으로 쉽게 인식할 수 있는 문자열의 형태로 변환. 실행결과

인터넷 주소의 초기화 “IP 211.217.168.13, PORT 9190으로 들어오는 데이터는 내게로 다 보내라!” 일반적인 인터넷 주소의 초기화 과정 서버에서 주소정보를 설정하는 이유! “IP 211.217.168.13, PORT 9190으로 들어오는 데이터는 내게로 다 보내라!” 클라이언트에서 주소정보를 설정하는 이유! “IP 211.217.168.13, PORT 9190으로 연결을 해라!”

INADDR_ANY 현재 실행중인 컴퓨터의 IP를 소켓에 부여할때 사용되는 것이 INADDR_ANY이다. 이는 서버 프로그램의 구현에 주로 사용된다.

Chapter 01의 예제 실행방식의 고찰 ./hserver 9190 ./hclient 127.0.0.1 9190 서버의 실행방식, 서버의 리스닝 소켓 주소는 INADDR_ANY로 지정을 하니, 소켓의 PORT번호만 인자를 통해 전달하면 된다. ./hserver 9190 ./hclient 127.0.0.1 9190 클라이언트의 실행방식, 연결할 서버의 IP와 PORT번호를 인자로 전달한다. 127.0.0.1은 루프백 주소라 하며, 이는 클라이언트를 실행하는 컴퓨터의 IP주소를 의미한다. 루프백 주소를 전달한 이유는, 서버와 클라이언트를 한 대의 컴퓨터에서 실행시켰기 때문이다.

소켓에 인터넷 주소 할당하기 서버프로그램에서의 일반적인 주소할당의 과정!

윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판 Chapter 03-5. 윈도우 기반으로 구현하기 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판

함수 htons, htonl의 윈도우 기반 사용 예 실행결과

함수 inet_addr, inet_ntoa의 윈도우 기반 사용 예 실행결과

윈도우에서의 소켓 주소할당 리눅스에서의 소켓 주소할당과 차이가 없다.

WSAStringToAddress 주소정보를 나타내는 문자열을 가지고, 주소정보 구조체 변수를 적절히 채워 넣을 때 호출하는 함수 IPv6 기반에서도 사용이 가능! 단, 이 함수를 사용하면, 윈도우에 의존적인 코드가 구성 됨

WSAAddressToString WSAStringToAddress 함수와 반대의 기능을 제공

WSAStringToAddress & WSAAddressToString 의 사용 예 실행결과

Chapter 03이 끝났습니다. 질문 있으신지요?