* 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() 

 

 

openclose