The Pocket Guide to TCP/IP Sockets: C Version

Similar documents
The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - Chapter_04.pptx

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

BMP 파일 처리

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

11장 포인터

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

강의 개요

PowerPoint Presentation

K&R2 Reference Manual 번역본

본 강의에 들어가기 전

adfasdfasfdasfasfadf

슬라이드 1

본 강의에 들어가기 전

OCW_C언어 기초

C 프로그래밊 개요

The Pocket Guide to TCP/IP Sockets: C Version

본 강의에 들어가기 전

슬라이드 1

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

The Pocket Guide to TCP/IP Sockets: C Version

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

금오공대 컴퓨터공학전공 강의자료

게시판 스팸 실시간 차단 시스템

chap7.key

OCW_C언어 기초

PowerPoint Presentation

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - [2009] 02.pptx

JAVA PROGRAMMING 실습 02. 표준 입출력

11장 포인터

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

OCW_C언어 기초

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

슬라이드 1

PowerPoint Presentation

MySQL-.. 1

Microsoft PowerPoint - chap11.ppt [호환 모드]

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

Microsoft PowerPoint - Chapter_02.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

ABC 3장

본 강의에 들어가기 전

Microsoft PowerPoint - chap03.ppt

슬라이드 1

0. 들어가기 전

Microsoft PowerPoint - chap04-연산자.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

C++ Programming

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - chap10-함수의활용.pptx

API 매뉴얼

Microsoft PowerPoint - chap08-Ogg Vorbis Playback in OpenAL.pptx


Frama-C/JESSIS 사용법 소개

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

PowerPoint 프레젠테이션

설계란 무엇인가?

Microsoft PowerPoint - C++ 5 .pptx

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint Presentation

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

Microsoft PowerPoint - 2장 변수와 자료형 pptx

PowerPoint Presentation

Secure Programming Lecture1 : Introduction

슬라이드 1

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

Microsoft PowerPoint - 제11장 포인터(강의)

설계란 무엇인가?

PowerPoint 프레젠테이션

버퍼오버플로우-왕기초편 3.c언어에서버퍼사용하기 버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도

Microsoft PowerPoint - chap06-1Array.ppt

C 프로그램의 기본

PowerPoint 프레젠테이션

Transcription:

인터넷프로토콜 5 장 데이터송수신 (1) 1

제 5 장데이터의송수신 5.1 정수인코딩 5.2 메시지생성, 프레이밍, 그리고파싱 5.3 마무리 2

들어가기전 TCP/IP 는사용자의데이터를검사하거나변경하지않고그대로전송 응용프로토콜은연속적인필드로구성된메시지형태로정의 인코딩 (encoding)/ 디코딩 (decoding) 또는파싱 (parsing) 네트워크응용프로그램개발방법 사용자가모든것을새로정의 이미존재하는프로토콜표준을따르면서남은부분구현 3

정수의크기 5.1 정수인코딩 보내려는정수의크기를미리결정 바이트순서화 1 바이트가넘는값을인코딩하는경우어떤순서로보낼것인지 (big-endian/little-endian) 상호결정 부호화와부호확장 보내는값에부호가있는지 (signed) 또는없는지 (unsigned) 결정 4

정수의크기 (1) C 언어의정수형타입들 int char short long C 언어의표준 크기에대한정의는없으면서단지 char 형이 short 보다클수없고, short 는 int 보다클수없고, int 는 long 보다클수없다고만기술 반드시개발플랫폼에서 sizeof 연산자를사용하여크기를확인해야함 이때 sizeof 연산자결과는 sizeof(char) 를 1 로정의 5

C99 언어표준 정수의크기 (2) Option 형태로자료형에비트단위크기를나타냄 int8_t, int16_t, int32_t, int64_t (uint8_t) 추가적으로 long long 타입도있음 TestSizes.c 6

바이트순서화 Big-endian 과 Little-endian Big-endian(high order) Little-endian(low order) 인터넷의바이트순서 : Big-endian network bytes order 호스트의바이트순서 : 플랫폼에따라다를수있음 native bytes order 또는 host bytes order C 언어플랫폼에서제공하는함수들 htons(), ntohs() : 16비트정수 htonl(), ntohl() : 32비트정수 7

부호화 signed 와 unsigned 차이 부호확장 (sign extension) int8_t 가 int16_t 로확장되는과정이해 0100 1110 (78) -> 0000 0000 0100 1110 (78) 1110 0010 (-30) -> 1111 1111 1110 0010 (-30) int8_t 가 uint16_t 로확장되는과정이해 0100 1110 (78) -> 0000 0000 0100 1110 (78) 1110 0010 (-30) -> 1111 1111 1110 0010 (65506) 연산과정의확장 char + char 는 char 이아니다! 8

정수인코딩을직접해보자 BruteForceCoding.c byte ordering signedness 9

과제 본문 TestSizes.c 실행하여확인 본문 BruteForceCoding.c 확인및정리 특히비트연산자홗용부분에주의! 10

TCP 소켓을스트림으로포장하기 TCP 소켓에복수바이트정수값을인코딩하는다른방법 파일스트림사용 fdopen() 을호출하여파일스트림과소켓식별자를연관시킨후사용 FILE *fdopen( ) int fclose( ) int fflush( ) size_t fwrite( ) size_t fread( ) 권장하지는않음! 11

구조체오버레이 : 정렬과채우기 실제로구조체가어떻게구현되는지이해필요 12 struct addressinfo { uint16_t streetaddress; int16_t aptnumber; uint32_t postalcode; } addrinfo; streetaddress aptnumber postalcode struct integermessage2 { uint8_t onebyte; uint8_t padding; uint16_t twobytes; uint32_t fourbytes; uint64_t eightbytes; }; alignment 를위해필요한 padding 이해 struct integermessage { uint8_t onebyte; uint16_t twobytes; uint32_t fourbytes; uint64_t eightbytes; }; 구조체와메모리할당이해 최대한정렧 2 바이트이상인경우시작주소는항상 2 로나누어져야한다

문자열과텍스트 old-fashioned text ASCII C언어는 ASCII의축소판인기본문자셋 (basic character set) 명시 (C99 ISO646) internationalizable code C99 extensions wchar_t (wide character) 지원 size_t wcstombs( ) (wide character string to multibyte string) size_t mbstowcs( ) C99 에서도인코딩방식에대한명시적제어권이제공되지않음 플랫폼에서정의한 locale 에따라정의된하나의고정된문자셋을이용한다고가정 ( 실시간에 locale 이변경되는경우결과를예측할수없음!) 서로다른문자셋을혺용하여이용할방법이없음! 관렦명령 / 함수 ( 라이브러리 ) 들 ( 조사하여정리할것!) locale wcslen( ), wcslen_l( ), wcscpy( ), iconv 13

비트조작 : 참, 거짓값의인코딩 비트맵 (bitmaps) 참, 거짓정보를인코딩하는가장간단한방법 파일의접근권한 마스크 (mask) 하나혹은그이상의특정비트가 1 로설정되어있고, 나머지는 0 으로설정되어있는정수값 & 연산으로특정비트가 1 로설정되어있는지여부판단 연산으로특정비트를 1 로설정 특정비트를해제하고자하는경우마스크에 ~ 연산 ( 비트 - 보수 (bitwise complement)) 한후 & C 언어의 bitwise 연산자이해필요 << >> & ~ 14

응용과제 1 전체전원스위치 1 개, 전등스위치 5 개를감시또는제어하는프로그램작성 비트단위로처리 주 #5 #4 #3 #2 #1 필요한기능 전원스위치 on/off n 번째전등스위치 on/off 현재스위치상태출력 현재의전등상태출력 전원스위치와전등스위치를같이고려하여상태표시 15

전송데이터의자료형 (1) 문자열 (String) 전송 : 가변길이전송 장점 단점 사람이읽기쉬움 메시지의확장이용이하며무제한 전송량대비전송내용비효율, 수싞루틴비효율, 연산비효율 상호협의할내용 문자코드페이지 ASCII, Unicode, UTF 메시지경계구분 ( 프레이밍 : framing) 길이명시방식 : 전송할문자열의크기를고정크기의자료형에담아서전송. 수싞자는크기를미리파악하고정확한문자열만큼수싞 구분자방식 : 널문자혹은임의의문자를메시지의경계에삽입. 수싞자는바이트단위로읽다가구분자가나오면메시지의끝으로확인

전송데이터의자료형 (2) 문자열 (String) 전송 숫자전송의예 49 55 57 57 56 55 48 10 1 7 9 9 8 7 0 \n 문자전송의예 0 77 0 111 0 109 0 10 M o m \n 3 77 111 109

문자열전송의예 (TCP) char string[strbuffsize]; send(sock, string, strbuffsize, 0) 주의점 : 버퍼의크기 TCP 는운영체제에의존적인 TCP 버퍼가있으며이보다작은크기로 send() 를호출해야한다.

전송데이터의자료형 (3) 정수형 (Integer) 의전송 기본자료형의단위로전송 2 바이트, 4 바이트단위의전송 주의사항 2 바이트이상의데이터전송간에는항상네트워크바이트순서로전송해야함 1 바이트교홖은의미가없음 Network byte order (Big-Endian) 다중바이트의메시지교홖에필수 호스트바이트 - 네트워크바이트변홖함수들 htonl(), htons(), ntohl(), ntohs() Little-Endian Big-Endian 0 0 92 246 23,798 246 92 0 0

정수자료형전송의예 (TCP) int data; send(sock, &data, sizeof(data), 0) short, long, double, char 도동일한방식으로처리 20