본문 바로가기

JAVA/기초 프로그래밍

쓰레드 기본개념

Server : TCP, DB(oracle), Web(tomcat) 

TCP : Transmission Control Protocol 
전송 제어 규약 
통신 : 송신, 수신 

종단 시스템 : host 
네트워스 상에서 더 연장되지 않는 기기 
PC, Smart Phone,Scanner, Printer 

Router : hardware 
host간의 상호 테이터를 교환 할 수 있도록 하는 장비 

internet : 포괄적인 통신 

www : (World Wide Web) 
URL : Uniform Resource Locater(IP대신 사용) 

통신규약 
TCP : Transmission COntrol Protocol 동기통신 
UDP : User Datagram Protocol 비동기 통신(빠름, 사용코드 간단) 

*TCP  
신사적인 Protocol 
전화 -> 상대방 -> 연결 -> 통신 
동기화 send(보낸다) -> recv(받는다) 처리순서가 일치해야 한다(상대방이 준비가 된 상태에서 연결이됨) 
채팅에서 주로 사용, 데이터의 경계가 없음 -> Data 용량의 한계가 없다. 
상대방이 받지 못하면 자동 재전송. 받으면 받음을 알 수 있음 
1대 1 통신만 가능. 
채팅, String통신(문자열 통신), Object통신(객체를 보냄- dto등) 

*UDP 
비 연결형 Protocol -> 수신여부상관없이 우선 보냄 
편지의 기능, 지상파 방송 
데이터의 경계가 있다 
1대 1통신(unicast) 
1대 다통신(broadcast) 
다대 다(multicast) 

7 Layer (설정하는것들) 
1 계층 - Physical Layer 물리 계층 
2 계층 - Data Link Layer 주소(IP)를 헤더에 첨부하는 계층 
3 계층 - Network Layer 네트워크 IP를 찾아가게 설정 -> address 
4 계층 - Transport Layer 네트워크 Port 
5 계층 - Session Layer 저장공간, 세션을 동기화 
6 계층 - Presentation Layer 보안, 압축, 확장 
7 계층 - Application Layer 프로그램 

*외우기*Packet(묶음) 
보낸 주소들을 묶어 쌓아 둠 
(제어정보, 데이터들이 결합 된 형태로 전송이 되는 실제 데이터) 
ex) IP, Port, String, Dto(Object)

 

 

IP : Internet Protocol -> address -> v4, v6 두종류

IPv4  : 0~255까지 4개 XXX.XXX.XXX.XXX

IPv6 : 0~? 까지 6개 XXX.XXX.XXX.XXX.XXX.XXX

IP (각 컴퓨터를 구분하기 위한 번호) 

Port Number(각각의 IP에서 프로세스(프로그램)들을 구분하기 위한 번호) 
IP주소는 internet상에 존재하는 host(PC)를 식별 할 수 있으나 
최종주체인 Process(프로그램)를 식별하지 못하기 때문에  
Process를 구별하기 위해서 지정된 수치( 0~1024 : system번호)외의 수치를 지정하여 구분해줌 

*중요*Socket (프로그램으로 보면됨-포트넘버보유) 
->유닉스(File) send/write , recv/read 
통신의 주체. 통신을 하기 위한 Object 
IP, PortNumber, TCP/UDP 


통신순서 
Server Client 
1. Socket 버전 확인 1. Socket 버전 확인 
2. Binding :  IP, Port설정(번호할당,연결) 
3. Listen (통신 시작- 뚜뚜...) 
4. Accept  <-----(방향)----  2. Connect 
5. recv(받는다), rea <-----(방향)---- 3. send(보내다), write 
6. send -----(방향)-----> 4. recv 

DNS(Domain Name System) Server 
IP -> Stirng

 

 

 

------------------------------------------------------------------------------------------------------------------

 

 

server는 항상 accept상태를 유지 //서버
//client가 먼저 서버에 접속함.
///서버는 항상 accept상태를 유지
//항상 recv먼저
//clientsocket으로 들어온 소켓 받아줌
//readline으로 계속 recv체크 -> Thread를 이용해준다. 각각(recv, write)

//클라이언트
//Data를 항상 받을 준비를 해줘야 함
//thread를 항상 돌려주는데 recv가 항상 먼저


//TCP
//client가 server에 패킷을 보내면 수신이 잘 되었는지 확답이 옴
//확답이 안오면 재전송함