Thread
- 순차적으로 실행할 코드의 흐름
- 하나의 스레드는 하나의 코드 흐름
- 보통 한 개의 프로세스는 한 가지의 일을 하지만, 스레드를 이용하면 한 프로세스 내에서 두 가지 또는 그 이상의 일을 동시에 할 수 있음
- start() = 지정한 스레드 동작 실행
- setPriority() = 스레드 실행 우선순위(1~10) 지정 (기본값 = 5)
생성방법
1. public class 클래스명 extends Thread를 이용한 Thread class 생성
- run() 메소드에 대한 오버라이딩이 필수!
- run() = Thread().start()로 인하여 스레드가 동작하기 시작할때 실행되는 메소드
cf. 프로세스(Process)
- 운영체제에서 실행중인 하나의 프로그램
- 멀티 태스킹
2. public class 클래스명 implements Runnable
- Runnable 인터페이스 = 구현할 메소드가 run() 하나 뿐인 함수형 인터페이스
- Runnable 형 인자를 받는 생성자를 통해 별도의 Thread 객체를 생성 후 start() 메소드를 호출해야 실행됨
- 실행
- 동시성(Concurrency) : 하나의 코어 - 멀티 스레드
- 병렬성(Parallelism) : 멀티코어 - 개별 스레드
- 스케쥴링 : 스레드의 순서 지정
- 우선순위(Priority) : 우선순위 할당 - 우선순위가 높다 - 10(기본 5), 개발자 제어 가능
- 순환할당(Round-robin) : 시간 할당 - 정해진 시간만큼, 개발자 제어 불가능
동기화(Synchronization)
- 여러 스레드가 자원 하나를 공유시, 나머지 스레드의 접근 제한
- 문법
public synchronized void method(){
하나의 스레드만 실행 영역 : 임계영역(critical section);
};
synchronized {};
3. 상태(State) - Thread.State 열거 상수
- 객체 생성(NEW) : 객체만 생성
- 실행 대기(RUNNABLE) : start() -> , 실행 상태로 변경 가능한 상태
- 종료 상태(TERMINATED) : run() 메소드 종료 상태
- 일시 정지 상태
TIMED_WAITING : 주어진 시간동안 대기
WAITING : 다른 스레드의 통지 대기
BLOCKED : 객체의 락이 풀릴때까지 대기
4. 제어(Control)
- sleep() : 일시 정지
- yield() : 실행 양보
- join() : 다른 스레드 종료 대기
- notify() : 일시 정지 스레드를 실행대기
- wait() : 자신 스레드 일시 정지
- stop flag
- interrupt() : 스레드 일시 정지 시 InterruptedException 예외 발생
5. 데몬스레드(Daemon Thread)
- 데몬 : 백그라운드에서 자체적으로 운영되는 프로그램
- 메인 스레드를 보조
- 메인 스레드 종료시 자동 종료
6. 스레드 그룹(Thread Group)
- 관련 스레드 묶음 관리
- 반드시 하나의 스레드 그룹 존재
네트워크
- 케이블이나 전화선, 무선 링크 등으로 연결되어 동일한 프로토콜을 사용하는 디바이스들의 집합
인터넷 프로토콜
IP(Internet Protocol)
- 네트워크 계층에서 데이터의 효율적 전송
- 호스트에 대한 주소체계와 패킷 라우팅 담당
- IP 주소: 32비트 정보 (일부는 네트워크, 일부는 호스트) : 목적지 정보를 보는 용도
ICMP (Internet Control Message Protocol)
- IP에 내장된 오류처리, 보고 메커니즘을 추가한 프로토콜
- IP에 이상한 정보가 발생했을때, 상황 모니터링 프로토콜
TCP (Transmission Control Protocol)
- 트랜스포트 계층의 신뢰적 전송을 위한 프로토콜
- 연결지향 프로토콜 (전화와 유사)
- 데이터 송수신 전에 소켓을 통한 연결 필요
- 소켓/포트로 동시에 여러개의 연결을 지원
※ HTTP(80), SMTP(25), POP3(110), FTP(20,21)
- 네트워크 상황에 따라 패킷전송속도 조절도 가능한 유연성을 지님
- 모든 데이터가 안전하게 주고받아야하는 애플리케이션에서 사용
UDP (User Datagram Protocol)
- 트랜스포트 계층의 신뢰성없는 전송 프로토콜
- 비연결지향 프로토콜 (편지 배달과 유사)
- 음악, 동영상 스트리밍, 멀티미디어 데이터 전송 등에 적합
- TCP보다는 유연성이 떨어지는 프로토콜이지만 가벼움
인터넷 애플리케이션 프로토콜
- Telnet = 원격 컴퓨터 접근 프로토콜 (포트 23)
- FTP (File Transfer Protocol) = 파일 전송 표준 프로토콜 (포트 21: 접속관리, 포트 20: 전송)
- POP3 (Post Office Protocol Version 3) = 이메일 수신 프로토콜 (포트 110)
- IMAP (Internet Message Access Protocol) = 로컬컴퓨터에서 이메일에 접근하기 위한 프로토콜 (포트 143)
※ POP3와 차이 : 제목/송신자만 보고 실제 메일을 로컬로 내려받을지 결정, 서버에 폴더 및 메시지 관리
- SMTP (Simple Mail Transfer Protocol) = 메일 송수신 프로토콜 (주로 송신에 이용) (포트 25)
- HTTP (HyperText Transfer Protocol) = W3환경에서 유용한 문서 전송 프로토콜 (포트 80)
- Stateless Protocol: 클라이언트가 서버로 접속하여 정보요청하면, 서버는 적절한 응답후 접속 종료.
소켓
- 애플리케이션에서 네트워크를 위한 통신 채널(애플리케이션과 트랜스포트 레이어 사이 매개)
포트
- 16비트 값으로 애플리케이션의 소켓 식별을 위해 사용
- 1~1023까지 IANA에서 관리(예약된 포트번호)
- 1~511: FTP,TELNET등 표준 TCP/IP 애플리케이션용
- 512~1023: 운영체제를 위해 예약
- 일반 애플리케이션에서는 1024이상의 포트 사용
OSI 7계층
1. 물리 계층(Physical layer)
- 네트워크의 높은 수준의 기능의 논리 데이터 구조를 기초로 하는 필수 계층
- 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룸
- 전송 단위 = Bit
2. 데이터 링크 계층(Data Link layer)
- 포인트 투 포인트(Point to Point) 간 신뢰성 있는 전송을 보장하기 위한 계층
- CRC 기반의 오류 제어와 흐름 제어가 필요
- 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻
- 데이터 전송 단위 = Frame
- 데이터 링크 계층의 대표적인 예 = 이더넷
3. 네트워크 계층(Network layer)
- 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층
- 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공
- 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행
- 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)
- 데이터 전송 단위 = Datagram(Packet)
4. 전송 계층(Transport layer)
- 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해줌으로써 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줌
- 시퀀스 넘버 기반의 오류 제어 방식을 사용
- 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다.
(전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 의미)
- 전송 계층의 대표적인 예 = TCP
- 데이터 전송 단위 = Segment
5. 세션 계층(Session layer)
- 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
- 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행
- TCP/IP 세션을 만들고 없애는 책임을 가짐
6. 표현 계층(Presentation layer)
- 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어줌
- MIME 인코딩이나 암호화 등의 동작이 이루어짐
7. 응용 계층(Application layer)
- 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
- 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공
※ cmd nslookup 사이트주소 = ip주소 수집
'빅데이터 부트캠프 > Java' 카테고리의 다른 글
빅데이터 부트캠프 74일차 (Java) (0) | 2022.10.24 |
---|---|
빅데이터 부트캠프 72&73일차 (0) | 2022.10.20 |
빅데이터 부트캠프 67일차 (0) | 2022.10.13 |
빅데이터 부트캠프 66일차 (0) | 2022.10.12 |
빅데이터 부트캠프 65일차 (0) | 2022.10.11 |
댓글