웹페이지와 웹서비스(웹 어플리케이션)의 차이


웹페이는 미리 만들어둔 정적인 HTML 파일로 응답

웹서비스는 서버 프로그램이 요청 내용에 따라 동적으로 HTML 데이터를 만들어 응답



GET 방식과 POST 방식


HTML 입력 폼을 통해 HTML 요청을 보낼 떄 주로 GET과 POST 방식의 요청이 사용


GET


입력폼의 내용이 요청행에 포함

GET/search?q=javablog HTTP/1.1


get방식으로 적은 양의 데이터만 전송 가능, 육안으로 데이터가 보여서 보안 취약

보통 정보를 요청하는데 쓰임


POST


입력 폼의 내용이 message body에 담겨서 전송

get방식에 비해 많은 양의 데이터 전송, get보다는 쉽게 노출되지 않음

하지만 보안 취약점 존재

정보를 저장하거나 변경할 때 주로 사용  --> 데이터의 암호화가 필요한 경우 HTTPS 프로토콜을 사용



AJAX


Asynchronous JavaScript and XML의 약자


기존의 웹 서비스의 응답 결과 표시 방식은 웹 페이지 전체를 다시 그려 갱신하는 방식


AJAX는 HTTP 메세지로 통신한다는 점에서는 일반적인 요청 방식과 비슷하지만, 

요청을 보내는 주체가 브라우저가 아닌 자바스크립트

웹 브라우저가  서버로 요청하는 것이 아니라, 자바스크립트로 작성된 프로그램이 웹 서버와 통신하고

응답 결과로 받은 내용을 웹브라저가 전체 페이지를 다시 갱신하는 것이 아니라, 

자바스크립트가 웹 페이지의 특정 부분에만 응답받은 내용이 갱신되도록 처리한다.


--> 그 결과로, 사용자는 전체 페이지를 다시 조회하지 않고, 서버의 응답을 바로 받을 수 있기 때문에

     자연스러운 상호작용이 가능하고 서비스의 사용성이 높아짐



세션을 유지하기 위한 쿠키


HTTP는 기본적으로 무상태(statless) 프로토콜이기 때문에 요청, 응답 과정에서 상태정보를 저장하지 않는다.

상태를 유지하면서 연속된 응답을 해야 할 때 쿠키라는 기술을 사용

여러 건의 요청 처리를 동일한 사용자 접속 세션으로 인식할 수 있도로 함


쿠키 정보를 방어하기 위한 방어책


기본적으로 웹브라우저가 자체적으로 구현하고 있음

쿠키가 생성된 웹 서버와 동일한 도메인을 사용하는 웹 사이트에만 쿠키가 전송되도록 제한

이미 저장된 쿠키가 있다면 유효기간을 확인


* 보안 문제가 생길만한 정보는 클라이언트 PC의 쿠키에 저장하지 말아야 한다. 

* 동일한 사용자인지 확인하기 위해 세션 ID같은 식별정보만 주로 클라이언트 쿠키에 저장하도록 제한

문제



풀이 


_M#]



문제

https://www.acmicpc.net/problem/11726


풀이

피보나치 수열과 같다.


bottom-up 방식으로 푸니까 런타임에러가 뜬다.


그래서 top-down방식으로 풀어봄


'알고리즘 > BaekJoon' 카테고리의 다른 글

[10844]쉬운 계단 수  (0) 2017.01.13
[11052]붕어빵 판매하기  (0) 2017.01.11
[9095]1,2,3 더하기  (0) 2017.01.11
[3052]나머지(Modulo)  (0) 2017.01.02

애플리케이션 계층


사용자가 직접 사용하면서 체감할 수 있는 서비스를 제공



사용자가 직접 사용하는 프로토콜


Http - 웹 클라이언트와 웹 서버 사이에서 웹페이지 데이터를 주고 받는다. 

POP, SMTP, IMAP - 메일을 송수신하고 보관한다.

SMB, AFP - LAN 안에서  파일을 공유한다.

FTP - 서버를 통해 파일을 주고 받는다

Telnet, SSH - 원격에서 서버를 제어한다.



사용자가 간접적으로 사용하는 프로토콜


DNS - 도메인명과 IP어드레스의 정보를 서로 변환할 때 사용한다.

DHCP - LAN 내의 컴퓨터에게 IP어드레스를 할당할 때 사용한다.

SSL/TLS - 통신 데이터를 암호화하여 주요 정보를 안전하게 주고 받을 때 사용한다.

NTP - 네트워크에 연결된 장비들의 시스템 시간을 동기화할 때 사용한다.

LDAP - 네트워크에 연결된 자원(사용자, 장비들)의 통합 관리에 필요한 디렉터리 서비스를 제공할 때 사용한다.



웹페이지가 표시되기까지의 과정


웹브라우저가 웹서버로 특정 웹페이지를 요청하면 웹서버가 해당 페이지의 내용을 HTML 형식으로 응답



HTTP 메세지


웹 브라우저와 웹서버는 HTTP라는 애플리케이션 계층의 프로토콜을 사용

이 과정에서 주고 받은 정보가 HTTP 메세지, 크게 request와 response로 나뉨



HTTP  메세지 구조


request line/ status line(응답 정보행)   - 메세지의 종류나 상태를 표시 

 header  - 메세지에 대한 상세한 정보 

 blank line

message body  - 응답인 경우 이 부분에 HTML 데이터가 들어감



HTTP는 통신 시 정보를 한 번씩 주고 받은 후 바로 끊는 형태로 처리,

이렇게 상태정보를 저장하지 않는 통신형태를 stateless라고 함(무상태 프로토콜)

--> 상태 정보를 유지하기 위한 별도의 처리가 필요




HTTP 요청과 URL


http://www.test.co.kr/test/index.html

스키마        host        도메인          디렉토리        파일


스키마 - 사용하는 프로토콜을 명시

호스트 - 서버의 이름 혹은 역할을 명시

도메인 - 서버를 운영하는 조직을 명시

디렉터리 - 서버내의 디렉터리를 명시

파일 - 해당 디렉터리 내의 파일을 명시



HTTP 요청 예시


 GET/test/index.html HTTP/1.1 

 Host:www.test.co.kr

 connection : keep-alive

 Accept : text/html,aplication/xhtml+xml

 User-Agent: Mozila/5.0(Macintosh; Intel Mac OS X 10_9_2) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/3

 생략

 get일 경우 메시지 바디는 없다.



HTTP 응답과 상태 코드


HTTP 응답 데이터에는 첫번쨰 행에는 요청에 대한 응답 상태를 표시하는 상태코드가 들어간다.

응답이 정상이라면 메시지 바디에 요청한 웹페이지의 내용이 들어감


 HTTP/1.1 200 OK 

 data:TUE, 10 Jan 2017 14:19:20 GMT

 Server:Apache

 Last-Modified:Fri, 8 Jan 2017 12:12:12 GMT

 생략

 빈줄

 HTML 내용



'네트워크' 카테고리의 다른 글

네트워크 서비스와 어플리케이션 계층(3)  (0) 2017.01.13
네트워크 서비스와 애플리케이션 계층(2)  (0) 2017.01.11
프로토콜 종류  (0) 2017.01.04
컴퓨터네트워크(3)  (0) 2017.01.03
컴퓨터 네트워크(2)  (0) 2016.12.24

프로토콜 종류



애플리케이션 계층


 프로토콜 이름

설명 

 HTTP

 웹페이지의 데이터를 주고 받음 

 HTTPS 

 보안을 위해 웹페이지 데이터를 주고 받는 과정을 암호화 

 POP3

 서버에 보관된 수신 메일을 꺼내옴 

 SMTP

 메일을 송신함 

 FTP

 파일을 전송함 

 Telnet

 컴퓨터를 원격에서 제어함  

 SSH

 보안을 위해 컴퓨터를 원격에서 제어하는 과정을 암호화함 

 SMB

 윈도우 컴퓨터와 파일을 공유함 

 DHCP

 컴퓨터에게 프라이빗 IP를 동적으로 할당

 DNS

 도메인 이름과 IP 어드레스를 서로 변환함 

 SSL

 보안을 위해 통신 과정에서 주고받는 테이터를 암호화 



트랜스포트 계층


프로토콜 이름 

설명 

 TCP

 애플리케이션 데이터를 송수신하되 정확한 전달을 중시 

 UDP

 데이터를 송수신하되 전송 속도를 중시 



인터넷 계층


프로토콜 이름 

설명 

IP

 패킷을 목적지까지 전달 

ICMP 

 IP의 통신 오류를 전달 

 IPsec

 패킷을 암호화하여 전달 

 ARP

 네트워크 장비의 MAC 어드레스를 알아냄 



네트워크 인터페이스 계층


프로토콜 이름 

설명 

 이너넷

 일반 금속 케이블이나 광케이블을 통해 데이터를 전달 

 PPP

 사용자 인증 후에 원격지의 장비와 통신함 


4계층의 역할


1. 애플리케이션 계층


역할 - 사용자가 실제로 체감할 수 있는 서비스를 제공하는 것


키워드 - URL



2. 트랜스포트 계층


역할 - 애플리케이션 계층의 프로그램에서 전달 받은 데이터를 목적지 애플리케이션 계층의 프로그램까지 전달하는 것

    재전송도 여기서 수행

    데이터가 제대로 전달되도록 포트 번호 정보를 헤더에 붙이거나 떼어내는 일을 한다.


키워드 - 포트



3. 인터넷 계층


역할 - 데이터에 에드레스 정보를 덧붙여 목적지까지 전달하는 것, 인터넷 통신에서는 목적지까지 도달할 수 있는 경로를 찾아야 하는데,

         이때 라우터라는 장비가 사용


키워드 - 어드레스(192.168.219.120)



4. 네트워크 인터페이스 계층


역할 - 유선 LAN 어댑터나 무선 LAN 어댑터가 처리할 수 있는 형태로 데이터를 변환하고 데이터를 목적지까지 전달 하는 것


핵심 - 인터넷 계층은 멀리 떨어져 있는 목적지까지 어떻게 데이터를 잘 전달할 수 있을까에 초점을 맞추고 있고

         네트워크 인터페이스 계층은 물리적으로 인접하여 연결된 장비까지 어떻게 데이터를 잘 전달할까에 초점을 맞추고 있다.


키워드 - 이더넷 헤더




통신규약과 프로토콜



프로토콜이란?


컴퓨터가 통신할 때, 지켜야 할 절차나 규약

어떤 절차에 따라 무엇을 보낼것인가?



각 계층 별 프로토콜


애플리케이션 계층 - HTTP

트랜스포트 계층, 인터넷 계층 - TCP/IP

네트워크 인터페이스 계층 - 이더넷



주고받은 데이터의 구조


이더넷 헤더 

IP 헤더 

TCP 헤더 

HTTP 데이터 

 

네트워크 인터페이스         인터넷 계층                    트랜스포트 계층             애플리케이션 계층




TCP/IP란?


인터넷에서 사용되는 각종 표준 프로토콜을 한데 모아서 일컫는 말



인터넷이란?


TCP/IP라는 프로토콜 집합을 사용해서 전 세계의 네트워크를 연결하고 통합한 세계 최대의 네트워크





'네트워크' 카테고리의 다른 글

네트워크 서비스와 애플리케이션 계층(2)  (0) 2017.01.11
네트워크 서비스와 애플리케이션 계층(1)  (0) 2017.01.10
프로토콜 종류  (0) 2017.01.04
컴퓨터 네트워크(2)  (0) 2016.12.24
컴퓨터 네트워크(1)  (0) 2016.12.22

문제

https://www.acmicpc.net/problem/3052



풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int count = 1;
        int[] remain = new int[10];
        for(int i=0;i<10;i++) {
            int num = scan.nextInt();
            remain[i] = num%42;
        }
        Arrays.sort(remain);
        for(int i=0; i<9; i++) {
            if(remain[i]!=remain[i+1]) {
                count++;
            }
        }
        
        System.out.println(count);
    }
}
cs


'알고리즘 > BaekJoon' 카테고리의 다른 글

[10844]쉬운 계단 수  (0) 2017.01.13
[11052]붕어빵 판매하기  (0) 2017.01.11
[9095]1,2,3 더하기  (0) 2017.01.11
[11726]2 x n 타일링  (0) 2017.01.10

에러메세지


Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.


원인


Safe Update 모드 설정시에는 키 컬럼으로만 데이터를 update 가능


해결


safe update 모드를 해지한다.


set sql_safe_updates=0;

ArrayList란?



배열을 사용하여 리스트를 구현한 것


ArrayList의 구성 - 엘리먼트들로 구성

element의 구성 - 데이터와 인덱스로 구성


장점 - 인덱스를 가지고 있기에 조회가 빠르다

단점 - 추가/삭제시 엘리먼트들을 밀고 당기는 작업이 필요하기 때문에 추가/삭제 속도가 느리다.

   데이터 공간의 낭비가 발생한다.



LinkedList란?


노드와 노드간의 연결로 리스트를 구현한 것


LinkedList의 구성 - Node(or vertex)로 구성, Head는 첫번째 Node를 가리킨다.

Node의 구성 - 데이터를 담는 data field, 연결정보를 담고 있는 linkd field


장점 - 추가/삭제가 빠르다. 데이터 공간의 낭비가 없다

단점 - 조회시 일일히 다 순회하기 때문에 느리다.

'자료구조' 카테고리의 다른 글

[Map] HashMap  (0) 2017.03.10
[Set]HashSet의 특징  (1) 2017.03.09
[그래프]넓이 우선 탐색(BFS)  (0) 2017.03.07
[그래프] 인접리스트와 인접행렬을 이용한 구현  (0) 2017.02.26
Array 배열 for Java  (0) 2016.12.23

패킷 교환 방식



패킷 교환 방식이란?


이메일이나 파일과 같은 데이터를 패킷이라는 작은 단위로 분할할 후 주고 받는 방식

패킷은 자신이 전달되어야 하는지 알 수 있는 Address 정보를 가지고 있다.


*패킷은 송신지와 송신지의 address 모두 가지고 있음



회선 교환 방식과 패킷 교환 방식



회선 교환 방식


아날로그, 유선 전화 , 3G 휴대폰의 경우 회선 교환 방식을 사용

통신하려는 양측을 연결하기 위해 하나의 통신 경로를 점유한 후 통신하는 방식이라 일대일 통신만 가능


패킷 교환 방식


주고 받을 데이터를 작게 쪼갠 후 다른 데이터 조각들과 통신 경로를 공유하며 전송하는 방식이라

여러 상대로 통신할 때 효율적



컴퓨터 네트워크와 계층 모델



컴퓨터 네트워크를 구성하는 계층들



계층 모델이란?


네트워크에 참여한 다양한 통신 장비와 프로그램들의 역할을 이해하기 쉽게 분류하고 추상화한 것


TCP/IP 계층의 종류


애플리케이션 계층 : 웹서비스, 이메일과 같은 서비스를 사용자에게 제공한다. / 서비스를 제공하는 부분

(서버, 클라이언트, HTTP, SMPT, POP3, FTP, SSH ...)


트랜스포트 계층 : 애플리케이션 계층과 인터넷 계층 사이에서 데이터가 올바르게 전달되도록 중계한다. / 통신기능을 담당

(TCP, UDP)


인터넷 계층 : 목적지의 IP 어드레스로 데이터를 전달한다. / 통신기능을 담당

(IP 어드레스, IPv4, IPv6, ICMP, 라우팅...)


네트워크 인터페이스 계층 : 네트워크 어댑터와 같은 하드웨어를 통해 데이터를 전달한다. / 통신기능을 담당

(이너넷, 무선 LAN, MAC 어드레스, PPP, FTTx, xDSL...)



* 유의점 이 계층 모델은 TCP/IP의 계층모델으로 OSI 참조 모델( 흔히 7계층)은 더 세분화된 계층 모델이다.



각 계층을 통과하는 데이터의 형태


애플리케이션 계층  - 쪼개진 데이터

트랜스포트 계층의 헤더 - 쪼개진 데이터의 결합 순서와 이 데이터를 받을 프로그램을 식별할 수 있는 번호

인터넷 계층의 헤더 - 목적지의 컴퓨터를 식별할 수 있는 번호

네트워크 인터페이스 계층의 헤더 - 유선 LAN에서 데이터를 보내는데 필요한 정보


* 헤더와 트레일러


데이터 앞에 붙는 정보가 헤더

뒤에 붙는 정보가 트레일러 



'네트워크' 카테고리의 다른 글

네트워크 서비스와 애플리케이션 계층(2)  (0) 2017.01.11
네트워크 서비스와 애플리케이션 계층(1)  (0) 2017.01.10
프로토콜 종류  (0) 2017.01.04
컴퓨터네트워크(3)  (0) 2017.01.03
컴퓨터 네트워크(1)  (0) 2016.12.22

+ Recent posts