* IPv4(32bit) : 인터넷 프로토콜
- IP 주소 8bit(255↓) 4개로 이루어짐
- 웹서버 : 정보를 가지고 있는 컴퓨터
데이터를 가지고 있는 특정폴더이다.
B가 A의 컴퓨터에 있는 자료를 가져가기 위해서는 A 의 IP주소가 필요하다.
A가 자료를 주는게 아니고 A는 가만히 있고 B가 파일을 가져가는 것
- 정보를 요청하는 컴퓨터는(을) 웹서버의 IP주소를 알아야 함.
- 세션(session) 연결(인증 됨) : 데이터를 주고받을 준비가 됨.
· 1. request(을/요청) -> 2. response(갑/응답) : 정상 연결 됨.
- response(응답)하는 이유
· 정보를 싣어서 알려줌(정상유무, 컴퓨터 온오프, 자료유무 등의 정보가 있음)
· 정상적인 요청이 아닌 경우 거절한다는 정보 줌.
- IP주소로 웹서버 컴퓨터와 통신 + 포트번호로 특정 폴더와 통신.
- 소켓(포트)통신 : 포트간의 통신(양 끝단에 소켓이 달려 있음), OS가 제공함.
· Stateful : 연결이 끊기지 않고 계속 통신 가능하지만 포트가 늘어날수록 과부하걸림.
· 자바가 OS가 가지고 있는 Socket을 시스템콜하여 사용.
* http 프로토콜
- 확장자가 .html 인 문서를 교환
- Stateless : 소켓통신을 기반으로 하지만, 요청한 문서를 받은 뒤 연결이 끊김 (부하를 줄이기 위해)
1. 요청 (자료가 있는 IP주소로 요청)
2. 응답 (정보를 응답)
-> 세션이 연결된다.
* 세션이란 : 컴퓨터 과학에서, 특히 네트위크 분야에서 반영구적이고 상호작용적인 정보 교환을 전제하는 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 송수신 연결상태를 의미하는 보안적인 다이얼로그(dialogue) 및 시간대를 가리킨다.
- 소켓통신 : 소켓(포트)을 끝에 달고 통신하는 것
둘이 지속적으로 대화할 수 있음
Stateful(연결이 끊기지 않음)
- http
1. 문서 : .html
2. Stateless
-> 한번 통신되면 통신이 끊김
<OSI 계층>
- request, response 과정이다.
- 과정: 각자의 책임이 있음.
직렬화 : 기계가 이해할 수 있는 데이터로 변환되는 과정(밑으로 내려갈수록 바이트화 됨)
↓
광케이블
↓
역직렬화 : 인간이 이해할 수 있는 데이터로 변환되는 과정(위로 올라갈수록 데이터화 됨)
- 직렬화 : 기계가 이해할 수 있는 데이터로 변환
- 역직렬화 : 사람이 알아들을 수 있는 데이터로 변환
각자 자기의 역할이있음
L1 물리
L2 데이터링크 : 집에 도착해서 그 중에 어떤 컴퓨터인지 물어보는 것
* mac 번호 보는 법
cmd 창을 띄운 후

ipconfig/all 검색 후 나오는 물리적 주소가 mac 번호이다.
L3 네트워크 : IP를 통해 논리적인 길을 만드는 것이다.
L4 트랜스 모트(전송) : 전송방식을 결정하는 것 (TCP : 완벽한 데이터(컴퓨터가 이해해야 되기 때문에) http는 무조건 tcp / UDP: 유실이되도 상관 없는 데이터 ex 데이터를 줘야하면 그냥 막 쏨 계속 쏘다가 응답(ack)이 없으면 데이터를 다시 보낸다. )
서킷스위칭 : 데이터를 보낼때 쪼개지 않고 한방에 다 보냄 (1대1로 선 연결되어있기 때문에)
단점은 선이 계속 연결되어야 한다(너무 많아짐)
패킷스위칭(기본통신) : 데이터를 잘라서 보냄 / 두개의 데이터를 동시에 보낼 수 있다.
헤더로 데이터를 구분한다.
* 헤더를 분석하는 일을 파싱이라고 한다.
L5 세션 : 네트워크의 대화 조정자로 통신하는 시스템들 사이의 상호작용을 설정, 유지하고 동기화 한다.
L6 표현 : 압축, 인코딩하는 역할
L7 응용 : : 프로그램, 포트를 선택한다.
ex. crome 브라우저
* 내려가는 과정은 헤더를 만들어가는 과정이다.
직렬화 끝나면 역직렬화 진행
역직렬화 실행시 L4부터 로드밸런싱한다.
package ch15;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class NetworkEx01 {
public static void main(String[] args) {
// 1번 주소 객체 만들기
try {
URL url = new URL("https://www.naver.com");
// 2번 스트림 연결
HttpURLConnection con = (HttpURLConnection)url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
FileWriter fr = new FileWriter("c:\\utils\\test.html");
//문자 더하기
StringBuilder sb = new StringBuilder();
String input = "";
while((input = br.readLine())!=null) {
System.out.println(input);
sb.append(input);
}
fr.write(sb.toString());
}catch(Exception e) {
e.printStackTrace();
}
}
}

* 여기 con 이 네이버에 연결된 스트림 선이다.

readLine : 한줄씩 읽는다
정리!
1. Json에 대해 알아야 한다
- json은 중간데이터!
- {"key" : value } : json 오브젝트
* key 값은 무조건 String (""를 붙여야한다)
* value : String, int, long, double, 배열(왠만하면 배열쓰지말고 ArrayList쓰자!), 오브젝트가 들어올 수 있다.
2. BufferedReader
공공데이터에서 자바데이터로 자료를 받기 위해 BufferedReader로 데이터를 가져온다
이때 가져오는 데이터의 타입은 String!
* 데이터를 받아올때 xml 혹은 json으로 데이터를 던져주는데 json으로 받기 위해 주소값 뒤에 "_type = json"을 붙여준다.
3. TCP / UDP 차이
- TCP : 데이터가 완벽하다.
- UDP : 데이터가 분실돼도 괜찮다.
- TCP / UDP 통신
4. gson.fromJason()
5. gson.toJason()
'Java programing > 프로그래밍 언어 활용' 카테고리의 다른 글
코로나 마스크 앱 만들기 (0) | 2020.04.10 |
---|---|
Java - for each문, 자바 컬렉션(List, Queue,Set) , Hash (0) | 2020.04.10 |
Java - json (0) | 2020.04.06 |
Java - 접근지정자, 자바 입출력 (0) | 2020.04.06 |
Java - 커피숍만들기, Linked List, ArrayList, Generic (0) | 2020.04.03 |