자바네트워크 제1주
강의 소개, 네트워크기초, 스레드 컴퓨터응용과학부 2011년 봄학기 담당교수 : 이형원 E304호, hwlee@inje.ac.kr
강의소개
담당교수 : 컴퓨터응용과학부 이형원
교재 : 자바 I/O & NIO 네트워크 프로 그래밍, 김성박, 송지훈저, 한빛미디어
강의시간 : 수6,7교시, 목8,9교시
평가방법
◦
네 번의 필기 시험 : 총 60% 1,3차 시험 : 각 10%
중간, 기말고사 : 각 20%
◦
두 번의 실기 시험 : 총 30%◦
출석 : 총 10%선수지식(Prerequisites)
프로그램언어(Program Language)
◦
Java참고자료(References)
Java
강의자료
http://socas.inje.ac.kr -> 자료실 ->
일반자료실
진행 계획
제1주 : 강의소개, 네트워크기초, 스레드(3월2일 수업, 3월3일 실습)
제2주 : 자바 IO, 바이트스트림: 바이트단위 IO 클래스 (3월9일 수업, 3월 12일 실습)
제3주 : 문자스트림: 문자단위 IO 클래스, 객체스트림(3 월16일 수업, 3월 17일 실습)
제4주 : 1차 필기 시험(3월 23일)
제5주 : 네트워크 프로그래밍 기초(3월30일 수업, 3월 31일 실습)
제6주 : TCP 프로그래밍(4월 2일 수업, 실습)
제7주 : UDP 프로그래밍(4월 6일 수업, 4월 7일 실습)
제8주 : 중간 필기 및 실기 시험(4월 20일 필기, 4월 21 일 실기)
진행계획(계속)
제9주 : URL관련 클래스, 멀티캐스트(4월 27 일 수업, 4월 28일 실습)
제10주 : NIO 개요(5월 4일 수업, 5월 7일실 습)
제11주 : 버퍼(5월 11일 수업, 5월 12일 실습)
제12주 : 3차 필기 시험(5월 18일)
제13주 : 채널, 셀렉터(5월 25일수업, 5월 26 일 실습)
제14주 : 향상된 서버 만들기(5월 28일 수업, 6월 2일 실습)
제15주 : RMI(6월 8일 수업, 6월 9일 실습)
제16주 : 기말필기 및 실기 시험(6월 15일 필 기, 6월 16일 실기)
제1장 네트워크 기초
필요성
네트워크와 네트워킹
네트워크 통신방법
OSI 7계층
인터넷 프로토콜
인터넷 어플리케이션 프로토콜
TCP/IP 스택
소켓과 포트
보안
논의
필요성
웹 개발시 라이브러리의 API만 사용 가능
시스템의 중요한(critical) 부분에서의 문제 해결 능력
많은 traffic을 발생하는 경우 해결방안
네트워크와 네트워킹
네트워크
◦
케이블, 전화선, 무선으로 연결되어 동일 한 프로토콜(protocol)을 사용하는 디바이 스(device)의 집합네트워크
네트워크와 네트워킹
프로토콜(protocol)
◦
장비들 사이에 자료를 주고받고 할 수 있 도록 한 미리 약속된 통신 규약
디바이스(device, 장비)
◦
네트워크에 연결하여 어떤 서비스를 이용 하거나 제공할 수 있는 모든 것
네트워킹
◦
네트워크에 연결된 장비들 사이의 데이터 전송네트워크 통신 방법
주소(address)
◦
노드마다 갖고 있는 고유의 값
노드(node)
◦
네트워크에서의 각 장비의 위치Header Body
Packet
OSI 7 계층
OSI(Open System Interconnection)
•애플리케이션
•NFS, FTP, HTTP, SMTP
7계층
•프리젠테이션
•XDE, XML, ASCI, Java Serialization
6계층
•세션
•Sun RPC, DCE RPC, IIOP, RMI
5계층
•트랜스포트
•TCP, UDP
4계층
•네트워크
3계층 •IP
•데이터링크
•Wire formats for message
2계층
•물리
•Wires, signaling
1계층
OSI 7 계층
TCP/IP model and OSI Model
인터넷 프로토콜
ARPANET(1969), NFSNET(1986), Commercial(1990)
Ethernet
Token Ring
Internet Protocol(IP)
IP address
◦
203.241.246.32
Logical address
socas.inje.ac.kr
DNS(Domain name system)
Address class
◦
A, B, C, D, E classInternet Protocol(IP)
addresses
IPv6(128bit) and IPv4(32bit)
FEDC:BA98:7654:3210:FEDC:BA98:
7654:3210
FEDC:BA98:7654:3210:FEDC:BA98:118.8 4.50.1
6
OSI 계층 모델
• OSI 계층 모델의 사용 목적
– 사용자가 장비를 쉽게 사용할 수 있다 – 모듈화를 통해 사용자가 이해하기 쉽다
– 이기종 하드웨어나 소프트웨어간의 통신을 지원한다 – 효율적으로 장비를 개발할 수 있다
– 장비 개발을 위한 표준을 제공한다
[그림] OSI 계층 모델의 사용 이유
• 인캡슐레이션
데이터를 이동시킬 때 데이터를 패키지화하는 과정
OSI 계층 모델
[그림] 인캡슐레이션의 예
• 계층별 PDU(protocol data unit)의 이름과 추가하는 정보
OSI 계층 모델
–세그먼트(Segment) : 4계층 PDU
–패킷 (Packet) : 3계층 PDU –프레임 (Segment) : 2계층 PDU
–비트 (Bit) : 1계층 PDU
• TCP/IP 모델의 인캡슐레이션
– 계층별 PDU 이름
• TCP 세그먼트 / UDP 패킷
• 데이터그램
• 프레임
TCP/IP 모델의 이해
[그림] TCP IP 모델의 인캡슐레이션
OSI 계층 모델의 계층별 이해
• 데이터 링크 계층
데이터가 목적지에 완전하게 전달될 수 있게 에러 통보, 흐름 제어, 네트워 크 토폴로지, 순차적 프레임 전달에 대한 내용을 다룸
[그림] OSI 물리 계층과 데이터 링크 계층
OSI 계층 모델의 계층별 이해
• LLC : 상위 네트워크 계층과의 통신을 위한 표준
• MAC : 하위 물리 계층과의 통신을 위한 표준
• MAC 주소
– 48비트, 12 Hex(16진수), 유일한 주소 – 수평적인 구조
[그림] MAC 주소의 구성
OSI 계층 모델의 계층별 이해
• 네트워크 계층
데이터가 출발지에서 목적지까지 가는 최적 경로를 찾아주는 역할
[그림] 네트워크 계층의 역할
• 트랜스포트 계층
네트워크 계층에서 지정한 출발지와 목적지 시스템간의 최적 경로를 이용해 서 데이터를 효율적으로 전송함
OSI 계층 모델의 계층별 이해
[그림] TCP와 UDP
• TCP (Transmission Control Protocol)
o 연결 지향형 프로토콜
o 불안정한 물리적 특성을 지닌 네트워크에서도 안정적 o 순차적인 전송을 보장
o 데이터 전송이 실패했을 때 재전송
• UDP (User Datagram Protocol)
o 비연결 지향형 프로토콜 o 안정도가 떨어짐
o 데이터 전송 후 확인 과정이 없음 o 흐름 제어가 없음
OSI 계층 모델의 계층별 이해
OSI 계층 모델의 계층별 이해
• 세션 계층
응용 프로그램에서의 세션 수립/관리/해제를 맡으며, 데이터베이스 서버와 클라이언트간의 통신이나 메신저와 같은 프로그램에서의 출발지와 목적지 간의 세션 관리
– NFS, SQL, RPC, ASP, SCP, X-window
[그림] 세션계층의 주요기능
OSI 계층 모델의 계층별 이해
• 표현 계층
응용 프로그램에서 사용하는 데이터의 형식, 암호화, 압축 등을 담당하는 계 층
– ASCII, EBCDIC, TXT, JPEG, GIF, TIFF, PICT, MID, MPEG, AVI
[그림] 표현 계층의 주요기능
OSI 계층 모델의 계층별 이해
• 응용 프로그램 계층
우리가 흔히 사용하는 프로그램 : FTP, 웹 브라우저, 워드프로세스 등
[그림] 응용 프로그램 계층의 주요 기능
인터넷 애플리케이션 프로토콜
Telnet: 23
FTP(File Transfer Protocol): 21, 20
POP3(Post Office Protocol version 3):
110
IMAP(Internet Message Access Protocol): 143
SMTP(Simple Mail Transfer Protocol):
25
HTTP(Hyper Text Transfer Protocol):
80
Finger: 79
NNTP(Network News Transport
Protocol):119
TCP/IP 스택
Application Layer
◦
HTTP, FTP, SMTP, POP3
Transport Layer
◦
TCP, UDP
Network Layer
◦
IP, ICMP데이터 통신
소켓과 포트
소켓
◦
통신을 위한 접속 창구◦
IP주소와 포트 번호로 이루어져 있음
포트
◦
소켓의 기능에 따라 정해지는 번호◦
16비트(0~65,535)◦
1~511 : TCP/IP application◦
512~1023 : Operating system◦
1024~ : 임의로 사용포트 번호 관리
IANA(Internet Assigned Numbers
Athority)
보안
해킹과 바이러스등으로부터 자산을 보 호하는 것
방화벽(Firewall)
논의
네트워크 개념
OSI 7 계층
TCP/IP
Socket, Port
제2장 스레드
필요성
스레드란
스레드의 생성과 시작
스레드의 종료
데몬스레드와 join()
스레드 그룹
스레드 우선순위
멀티스레드와 동기
생성자-소비자 패턴
논의
필요성
네트워크 관련 프로그램은 동시성 요 구
멀티스레드에서는 예기치 못한 문제 발생
동기화 문제점 및 해결책
스레드란
프로세스
◦
자신의 독립적인 주소공간을 갖는 실행 프 로그램
스레드
◦
독립적인 CPU 실행 단위◦
경량 프로세스(light-weight process)프로세스
스레드
프로세스
스레드 스레드
스레드
Context
Process Context Switch
◦
User Level Context◦
Register Context◦
System Level Context
Thread Context Switch
◦
Register Context스레드의 생성과 시작
스레드 생성 계산
Runnable
스레드 소멸 start()
run() 종료
Not runnable
Thread 생성자
상속에 의한 방법(white-box)
Thread
MyThread
예제 2-1
구현에 의한 방법(black-box)
상속과 구현
Thread
Runnable target MyRunnable
예제 2-2
스레드의 종료
플래그 사용
◦
종료여부를 항상 체크◦
플래그 체크사이의 시간이 오래 걸리면 원 하는 대로 동작하지 않을 수 있음.main
Thread
Flag check
loop Thread 생성 및 시작
Flag 상태 변경
스레드의 종료
interrupt 사용
◦
try – catch 사용◦
Interrupt 발생 즉시 종료main
Thread
try-catch Thread 생성 및 시작
Interrupt 요청
데몬스레드와 join
데몬스레드
◦
생성 스레드종료시 바로 종료main
thread1
thread2
스레드 그룹
스레드들의 모임
자주 사용하지는 않음
스레드 우선순위
실행 우선 순위 결정
1~10
NORM_PRIORITY = 5
MIN_PRIORITY = 1
MAX_PRIORITY = 10
멀티스레드와 동기화
자바의 런타임 데이터 영역
◦
PC 레지스터 영역◦
JVM 스택 영역◦
Heap 영역◦
Method 영역◦
런타임 컨스턴트 영역◦
네이티브 메소드 영역(JNI)synchronized
Method
◦
함수가 끝날 때 까지 lock
Block
◦
부분 block이 실행되는 동안 만 lock코드 리소스
wait, notify, notifyAll
wait
◦
다른 함수가 lock을 얻을 수 있도록 함.
notify, notifyAll
◦
lock이 풀리기를 기다리는 함수에게 알려 줌ThreadLocal
각 스레드마다 다른 값을 갖도록 함
생성자-소비자 패턴
생성자 소비자
리소스
논의
스레드와 자원 동기는 전문가도 어려 운 분야
JVM 메모리모델 이해
철저한 테스트