본문 바로가기

CS/Network29

[네트워크] SOAP와 REST SOA와 ROA 1) SOA(Service Oriented Architecture) 기존 애플리케이션 기능을 비즈니스적인 의미를 가지는 서비스로 묶고, 이 서비스들을 서로 조합해 업무 기능을 구현한 애플리케이션을 만들어내는 소프트웨어 아키텍쳐 2) ROA(Resource Oriented Architecture) REST를 위한 아키텍쳐, 서비스를 제공하는 시스템의 자원이 설계 중심에 있는 소프트웨어 아키텍쳐 SOAP와 REST 1) SOAP(Simple Object Access Protocol) - 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 네트워크 상에서 교환하는 프로토콜 2) REST(Representational State Transfer) - 월드 와.. 2020. 6. 27.
[네트워크] REST(Representational State Transfer) REST(Representational State Transfer) - 월드 와이드 웹(WWW)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식 - HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용 1) 배경 - 애플리케이션의 분리 및 통합 - 다양한 클라이언트의 등장 2) 구성 (1) 자원(Resource) - URI - 모든 자원에 고유한 ID가 존재하며, 자원은 서버에 존재 - 클라이언트는 URI를 통해 자원을 명시하고, 해당 자원의 상태에 대한 조작을 서버에 요청 (2) 행위(Verb) - HTTP Method - 자원의 상태에 대한 조작을 명시하고 요청 (3) 표현(Representation of Res.. 2020. 6. 27.
[네트워크] DNS(Domain Name System) DNS IP 주소를 도메인 네임으로 변환하는 시스템 1) DNS 서버 구조 - 각 각의 부분을 담당하는 DNS 서버가 존재 - DNS 서버는 트리 형태의 구조 - URL의 역순으로 '.'을 기준으로 트리를 구성 2) 내부 원리 (1) 사용자가 브라우저에 "blog.example.com"을 입력 (2) 클라이언트는 가장 먼저 해당 도메인 네임이 hosts 파일과 cache 파일에 저장되어 있는지 확인 (3) 클라이언트에 저장되어 있지 않다면, DNS 서버에 도메인 네임에 해당하는 IP주소를 질의 (4) root DNS 서버는 "com"을 관리하는 TLD(Top Level DNS)서버를 질의 (5) TLD 서버는 "example.com"을 관리하는 SLD(Second Level DNS) 서버를 질의 (6) .. 2020. 6. 27.
[네트워크] 웹 소켓(Web Socket) 정적 웹 페이지와 동적 웹 페이지 1) 정적 웹 페이지 - 미리 저장된 파일이 그대로 전달 2) 동적 웹 페이지 - 사용자의 요청을 해석해 동적으로 생성된 파일을 전달 3) 문제점 - 완전한 HTML 문서를 받아서 전달 - 일부 정보만 변경되었더라도, 완전히 새로운 페이지를 가져와야함 4) 실시간 웹 - 페이지의 현재 상태를 방해하지않고 서버와 통신하므로써, 기존의 정적 웹 페이지와 동적 웹 페이지의 문제점을 해결 웹 소켓(Web Socket) 1) Socket - 원격 호스트 간 IPC(Inter Process Communication)을 위한 통신 스트림 2) 웹 소켓 - 양방향 통신 프로토콜로서 클라이언트와 서버는 TCP로 통신 - 실시간 전송 가능 - 웹 페이지의 한계에서 벗어나 실시간으로 상호작.. 2020. 6. 27.
[네트워크] CSRF(Cross Site Request Forgery) CSRF(Cross Site Request Forgery) - 사이트 간 요청 위조 - 웹 애플리케이션 취약점 중 하나 - 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 함으로써, 특정 웹 페이지의 보안을 취약하게 하거나, 공격자가 의도한 작업을 하도록 하는 공격 기법 1) 공격 방식 (1) 사용자가 브라우저에 로그인 상태(유효한 쿠키 정보 보유) (2) 사용자가 해커가 만든 피싱 사이트에 접속 (3) 해커는 사용자의 쿠키 정보를 사용한 스크립트 실행 (4) 서버는 공격명령을 사용자의 요청으로 인식하고 실행 2) 방어 방법 (1) Referer 검증 - HTTP Request 메시지의 Referer를 통해 바로 이전의 Domain과 일치하는 지 검증 - 같은 도메인 내의 페이지에 XSS 취약점이.. 2020. 6. 27.
[네트워크] 쿠키(Cookie)와 세션(Session) HTTP 프로토콜 1) 특징 (1) 비연결성(Connectionless) (2) 무상태(Stateless) 2) 상태 유지의 필요성 - HTTP 프로토콜의 특징으로 인해 Request 간 의존관계가 없음 - 연결을 유지하지 않기 때문에 리소스 낭비가 줄어드나, 통신할 때마다 새로 연결하기 때문에 클라이언트는 매 요청마다 인증이 필요 - 이전 요청과 현재 요청이 같은 사용자로부터의 요청인지 알기 위해 상태를 유지해야함 쿠키(Cookie) - 클라이언트에 대한 상태 정보를 key와 value의 형태로 로컬에 저장해 참조하는 방식 - 클라이언트의 상태 정보를 브라우저에 저장해 참조 1) 동작 방식 (1) 웹 브라우저가 서버에 요청 (2) 상태를 유지하고 싶은 값을 쿠키(Cookie)로 생성 (3) 서버가 응답.. 2020. 6. 27.
[네트워크] CORS(Cross Origin Resource Sharing) SOP(Same Origin Policy) - 동일 출처 정책 - 어떤 출처에서 불러온 문서나 스크립트가 다른 출처에서 가져온 리소스와 상호작용하는 것을 제한하는 보안 방식 - 출처가 같다는 것은 두 URL의 프로토클, 호스트, 포트가 동일하다는 것 CORS(Cross Origin Resource Sharing) - 웹 브라우저에서 외부 도메인 서버와 통신하기 위한 방식을 표준화한 스펙 - 서버와 클라이언트가 정해진 헤더를 통해 서로 요청이나 응답에 반응할지 결정하는 방식 1) 배경 - HTTP 요청은 기본적으로 Cross Origin HTTP Request가 가능 - 태그 내의 Cross Origin HTTP Request는 SOP(Same Origin Policy)로 인해 불가 - Ajax와 Open.. 2020. 6. 27.
[네트워크] 혼잡 제어(Congestion Control) 혼잡 제어(Congestion Control) - 송신측의 데이터 전송 속도와 네트워크의 데이터 처리속도의 차이를 해결하기 위한 기법 1) AIMD(Additive Increase / Muticative Decreas) - 가산 증가 방식 - 패킷을 하나씩 늘려가며 window size 조절 - 패킷 전송해 실패하거나 일정 시간이 지나면 window size를 절반으로 감소 2) Slow Start - 지수 증가 방식 - 패킷을 2배수로 증가시켜 window size 조절 3) Fast Retransmit(빠른 재전송) - 패킷이 순서대로 도착하지 않았을 때, 순서대로 도착한 마지막 패킷의 다음 패킷에 대한 ACK 패킷을 실어보냄 - 송신측에서는 중복된 순번의 ACK 패킷을 확인한 후 해당 패킷을 재전송.. 2020. 6. 26.
[네트워크] 흐름 제어(Flow Control) 흐름제어(Flow Control) - 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법 1) Stop and Wait - 매번 전송한 패킷에 대한 확인 응답을 받아야 다음 패킷을 전송 2) Sliding Window - 수신측에서 설정한 Window size만큼 송신측에서 확인 응답없이 패킷을 전송해, 데이터흐름을 동적으로 조절 - 패킷에 대한 응답이 확인되는 대로 옆으로 window 사이즈만큼 다음 패킷의 데이터를 전송 2020. 6. 26.
[네트워크] 오류 제어(Error Control) 오류제어 전송된 데이터의 오류를 검출/정정하는 기법 1) FEC(Forword Error Control) - 수신측에서 오류를 스스로 검출/정정할 수 있는 방법 - 송신 시 오류 복구를 위한 잉여 비트를 추가 (1) 해밍코드 - 수신측에서 오류가 발생한 비트를 찾아 직접 수정 - 1비트의 오류 수정 가능 (2) 상승코드 - 여러 개의 비트 오류가 있어도 한계 값, 순차적 디코딩을 이용해 모두 수정 가능 2) BEC(Backword Error Control) - 전송된 데이터에 오류가 발생할 경우(오류 검출), 재전송을 요청에 오류를 수정하는 방식(오류 수정) (1) 오류 검출 - Parity Check - CRC - Checksum (2) 오류 수정 - Stop and Wait ARQ - Go Back .. 2020. 6. 26.
[네트워크] HTTP Request/Response HTTP Request Method - 클라이언트가 웹 서버에 사용자 요청의 목적/종류를 알리는 수단 1) HEAD - 메시지 헤더(문서 정보) 획득 - GET과 유사한 방식이지만, 실제 문서를 요청하는 것이 아닌 문서 정보를 요청 - HTTP 응답 메시지로 body없이 HTTP 헤더 정보만 전송 2) GET - URL 형식으로 웹 서버 측 리소스 요청 - 파라미터를 넘겨 해당하는 본문 형식을 요청 - 멱등성 O 3) POST - 웹 서버로 요청된 자원의 삽입 목적 - 요청된 자원 생성 - 멱등성 X 4) PUT - 웹 서버로 요청된 자원의 갱신 목적 - 요청된 리소스의 전체를 갱신 - 멱등성 O 5) PATCH - 웹 서버로 요청된 자원의 갱신 목적 - 요청된 리소스의 일부를 갱신 - 멱등성 X 6) .. 2020. 6. 26.
[네트워크] HTTP 요청/응답 헤더 HTTP 메시지 구성 1) Request (1) 요청 라인 - 요청 메소드(GET, POST, PUT, DELETE) - 요청 URL - HTTP 버전 (2) 요청 헤더 (3) 요청 바디(Entity) 2) Response (1) 응답 라인 - 버전 - 상태 코드 - 상태 메시지 (2) 응답 헤더 (3) 응답 바디 -HTML, XML 등 HTTP 헤더 내 일반 헤더(General Header) 항목 - 요청 및 응답 메시지 모두에서 사용 가능한 일반 목적의 헤더 항목 1) Date - HTTP 메시지를 생성한 일시 2) Connection - 클라이언트와 서버 간 연결에 대한 옵션 설정 3) Content-type - 해당 개체에 포함되는 미디어 타입 정보 - 컨텐츠의 타입 및 문자 인코딩 방식 지정 4.. 2020. 6. 26.