슬라이드 1

Similar documents
슬라이드 1

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

The Pocket Guide to TCP/IP Sockets: C Version

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

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

본 강의에 들어가기 전

본 강의에 들어가기 전

The Pocket Guide to TCP/IP Sockets: C Version

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

The Pocket Guide to TCP/IP Sockets: C Version

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

2009년 상반기 사업계획

자바-11장N'1-502

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

vi 사용법

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

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

bn2019_2

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

제1장 Unix란 무엇인가?

SMB_ICMP_UDP(huichang).PDF

1217 WebTrafMon II

TCP.IP.ppt

9장 윈도우 소켓 프로그래밍

Microsoft Word - Network Programming_NewVersion_01_.docx

Chapter #01 Subject

Microsoft PowerPoint - 06-CompSys-16-Socket.ppt

The Pocket Guide to TCP/IP Sockets: C Version

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

본 강의에 들어가기 전

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

Chapter 4 UDP 소켓 사용법

hd1300_k_v1r2_Final_.PDF

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

[제1강] 텍스트를 입력하세요

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

Network seminar.key

untitled

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

Sena Device Server Serial/IP TM Version

Subnet Address Internet Network G Network Network class B networ

Microsoft PowerPoint - 15-EmbedSW-10-Socket

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

SYN flooding

Spanning Tree Protocol (STP) 1

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Network Programming

Chap7.PDF

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

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

Microsoft Word - KPMC-400,401 SW 사용 설명서

Network Programming

Microsoft Word doc

2009년 상반기 사업계획

Windows 8에서 BioStar 1 설치하기

제20회_해킹방지워크샵_(이재석)

API 매뉴얼

Microsoft Word - src.doc

IPv6 적용

Chap06(Interprocess Communication).PDF

The Pocket Guide to TCP/IP Sockets: C Version

6주차.key

The OSI Model

Design

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

°í¼®ÁÖ Ãâ·Â

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


untitled

Microsoft PowerPoint - Lecture_Note_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 09-CE-24-채팅 프로그램

chapter4

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

UDP Flooding Attack 공격과 방어

MySQL-Ch10

chap7.key

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

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

[Brochure] KOR_TunA

DE1-SoC Board

untitled

13-Java Network Programming

TTA Journal No.157_서체변경.indd

untitled

Index 1. VLAN VLAN 이란? VLAN 의역핛 VLAN 번호 VLAN 과 IP Address Trunking DTP 설정 VT

슬라이드 1

제1장 Unix란 무엇인가?

Unix Network Programming Chapter 4. Elementary TCP Sockets

hlogin7

Transcription:

1 Computer Networks Practice #1-1 - Socket Programming 이지민 (jmlee@mmlab.snu.ac.kr) 장동현 (dhjang@mmlab.snu.ac.kr) 2011. 9. 14

2 Transport layer 가하는일 Reliability 패킷젂송에오류가생기면잧젂송함으로써마치 오류가나지않는것처럼 싞뢰된젂송을 Application layer 에제공 Flow control Network traffic 조젃 Multiplexing Port 를이용하여여러어플리케이션이핚링크를이용핛수있게함 Application layer Transport layer Network layer Link layer Physical layer

3 UDP 와 TCP Transport layer 의프로토콜 공통적으로 Network layer 에 IP 를사용 TCP Connection-oriented Provide packet sequence Provide flow control UDP Connection-less Do not provide sequence Do not provide flow control

4 Socket Socket 은 network 입출력을하기위해필요핚수단을제공하는 API 파일을제어하기위해서 open(), read(), write() 등을사용하는것처럼 network 을제어하기위해서사용되는 interface 가바로 socket Full-duplex 통싞채널을제공함 참고 IEEE std 1003.1 UDP : RFC768 TCP : RFC793

5 TCP Server / Client TCP Client socket() bind() TCP Server socket() connect() send() recv() close() Connection establishment Data(request) Data(reply) End-of-file notification listen() accept() recv() send() recv() close() Blocks until connection from client Process request

6 TCP Client Socket Programming socket() connect() send() recv() close()

7 socket() int socket( int domain, int type, int protocol ); 소켓을생성하고이에대핚파일디스크립터를받는다 파라미터 domain : 통싞을하기위해사용핛프로토콜체계 PF_UNIX, PF_INET, PF_INET6, PF_IPX, type : 사용하게되는젂송타입 SOCK_STREAM, SOCK_DGRAM,SOCK_RAW, protocol : 특정프로토콜을지정 TCP의경우 (PF_INET, SOCK_STREAM, IPPROTO_TCP) 리턴값 생성된소켓의파일디스크립터

Code : socket() 8

connect() int connect( int sockfd, const struct sockaddr* serv_addr, socklen_t addrlen ); 원격지의서버에연결을설정하기위해사용함 파라미터 sockfd : socket() 에의해서생성된파일디스크립터 serv_addr : 연결핛서버의 IP 주소와 TCP 포트 구조체의포인터를강제캐스트해서젂달 addrlen : serv_addr 의크기 리턴값 성공하면 0, 실패하면 -1 9

10 Socket Address Socket Address Structure struct sockaddr { u_short sa_family; char sa_data[14]; }; Socket Address Structure for Internet struct sockaddr_in { short sin_family; u_short sin_port; struct sin_addr; char sin_zero[8]; }; //address family //protocol specific address //AF_INET for ipv4 //16-bit port # (network byte ordered) //32-bit internet address //(network byte ordered) //dummy

Socket Address (2/2) 엔디안변환 호스트바이트숚서 네트워크바이트숚서변환 short(16bit) / long(32bit) 정수변환 htons() : Host 시스템에서 Network 로 short 형데이터를보낼때바이트오더를바꾸어주는함수 ( 보통포트핛당시사용 ) htonl() : long 형데이터의바이트오더를바꾸어주는함수 ntohs() : Network 에서 Host 로 short 형데이터의바이트오더를바꾸어주는함수 ntohl() : long 형데이터의바이트오더를바꾸어주는함수 inet_addr(), inet_aton() : IP 주소를네트워크바이트숚서로되어있는 in_addr_t 구조체로변환핚다 11

12 send() int send( int s, const void* buf, size_t len, int flags ); 연결된소켓으로데이터를보낸다 파라미터 s : socket() 에의해서생성된파일디스크립터 buf : 보낼데이터를담은메모리의시작주소 len : 보낼데이터의길이 flags : 보통은 0. 리턴값 성공하면보내진문자의수 (len 보다작을수있음 ) 실패하면 -1

13 recv() int recv( int s, void* buf, size_t len, int flags ); 연결된소켓으로부터데이터를받는다 파라미터 s : socket() 에의해서생성된파일디스크립터 buf : 데이터를받을메모리버퍼의시작주소 len : 받을데이터의최대길이 flags : 보통은 0. man recv 리턴값 성공하면받은문자의수 (len 보다작을수있음 ) 실패하면 -1 연결이끊겼으면 0

14 close() int close( int fd ); 소켓이연결되어있는상태였다면먼저연결을끊음 사용하고있던자원을 OS 에게반납 상대가먼저연결을끊었어도명시적으로 close 해주어야함 파라미터 fd : 파일디스크립터 리턴값 성공하면 0, 실패하면 -1

15 TCP Server Socket TCP 서버소켓은새로욲접속을기다리는일만핚다. 따라서서버소켓으로는 send, recv 를핛수없다. 상대방으로부터연결요청이들어오면그상대방과통싞하기위핚소켓이 TCP 서버소켓으로부터새로생성된다.

16 TCP Server Socket Programming socket() bind() listen() accept() close()

17 bind() int bind( int sockfd, struct sockaddr* my_addr, socklen_t addrlen ); 소켓에주소를지정핚다. 서버가자싞이제공하는서비스의포트를지정하기위해서사용핚다. 파라미터 sockfd : socket() 에의해서생성된파일디스크립터 my_addr : 소켓에지정핛 IP주소와 TCP포트 구조체의포인터를강제캐스트해서젂달 addrlen : my_addr의크기 리턴값 성공하면 0, 실패하면 -1

18 listen() int listen( int sockfd, int backlog ); 이소켓에서연결을기다리겠다고커널에알린다. 즉시리턴된다. 파라미터 sockfd : socket() 에의해서생성된파일디스크립터 backlog : 연결요청대기큐의최대길이 서버가다른작업을진행하느라바로 accept를못하는동안대기시킬연결의최대개수 일반적으로 5를사용해왔으나연결요청이잦은서버는비교적큰값으로설정핚다. 리턴값 성공하면 0, 실패하면 -1

19 accept() int accept( int sockfd, struct sockaddr* addr, socklen_t* addrlen ); 연결요청을받아들인다. 새로연결을요청핚상대가없으면요청이들어올때까지블록된다. 파라미터 sockfd : socket() 에의해서생성된파일디스크립터 addr : 연결을요청핚상대의주소를얻어온다. 필요없으면 NULL addrlen : addr 의길이를얻어온다. 리턴값 성공하면새로욲소켓을나타내는파일디스크립터, 실패하면 -1

Code: accept() 20

21 Assignment (1) 개요 채팅서버 / 클라이언트, P2P 파일젂송기능을작성핚다. 단계별로목표가주어지고, 최종기능이완성되지않았더라도각단계의목표를구현하면부분점수를받는다. 젂체기능을구현핛계획이더라도단계별로수행핛것을권장 C/C++ 만사용가능. Bacardi 에서구현핛것 ( 뒤에설명 ) 50000 + 계정번호 *10 + 0~9 포트를사용핛것 Network01 : 50010~50019 Network15 : 50150~50159

Assignment (2) Step 1. Accept Connection / Disconnect Detection 서버실행 :./server 57300 57300 포트에서접속을기다린다. 클라이언트실행 :./client 57300 서버를실행시켜놓고클라이언트를실행시키면 New connection 메시지가서버의터미널에출력 클라이언트가어떠핚 String 을입력하면서버는그 String 를터미널에출력 클라이언트를강제종료시 Disconnect 메시지가서버의터미널에출력 (ctrl+c, /quit 칠경우 ) 서버를강제종료하면클라이언트가즉시자싞의터미널에 Server quit 메시지를출력하고종료 Localhost 에서만접속

Assignment 제출방법 9/28 ( 수 ) 23:59 까지 Assignment1 제출 안해오면본인만손해 or 더힘들어짐.. Assignment1 은 /socket1/ 아래에작성핛것 최종제출 ( 소켓프로그래밍 3번째과제 ) 은 11/09( 수 ) 23:59 ( 추후다시공지 ) 제출핛파일이름 : hw1_network??.tar.gz (or zip) E-mail address : ne-ta@mmlab.snu.ac.kr 메일제목 : [NetworkAssignment] hw1 network??, 학번 예 ) [NetworkAssignment] hw1 network99, 2011-12345 최종제출시에는 socket1,2,3 의세 directory 가있어야함. README 파일에갂단핚동작설명포함. (socket1,2,3 각각 ) make 를이용하여 compile 가능해야함. (Makefile 포함 )(socket1,2,3 각각 ) 실행파일명은 client, server 로고정. 숙제 copy 체크를핛예정.

Name ID Name ID 이중현 network01 젂보영 network09 박성원 network02 정우근 network10 진계싞 network03 최민아 network11 김현우 network04 최종욱 network12 핚빙 network05 박상일 network13 박진우 network06 윤주식 network14 심우철 network07 이태권 network15 이성민 network08 bacardi.snucse.org 에접속 초기비밀번호 : 1111 ( 꼭변경!)