CS/네트워크
IP 주소를 통해 통신하는 과정 여러 서브 네트워크 속에서 라우터에 있는 라우팅 테이블의 IP를 기반으로 패킷을 전달하고 또 전달핸가며 라우팅을 수행하며 최종 목적까지 패킷을 전달한다. 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적까지 도달하는 통신을 의미 한 단계씩 건너뛰는 것을 홈바이홉 라우팅이라고 부르고, 이 때 인접한 라우터 Next Hop이라 부른다. 넥스트 홉 지정 방식 다음 라우터의 IP를 지정하는 방법 (Next홉 IP 주소) 라우터에서 나가는 인터페이스 지정 라우터에서 나가는 인터페이스와 다름 라우터의 IP를 동시에 지정하는 방법 라우터 동작 호스트로부터 패킷을 수신 수신처 IP 주소로부터 수신처 네트..
서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 (애플리케이션 계층으로 웹 서비스 통신에 사용된다.) 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로 80 번 포트를 사용하고 있다. HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다. HTTP 구조 HTTP는 애플리케이션 계층으로 TCP / IP 위에서 동작한다. 상태를 가지고 있지 않는 Stateless 프로토콜이며, Method, Path, Version, Headers, Body 등으로 구성된다. 💡 Stateless 상태를 가지지 않는 의미, HTTP로 클라이언트와 서버가 통신을 주고 받는 과정에서 HTTP가 클라이언트나 서버의 상태를 확인하지 않는다. HTTP / 1...
애플리케이션 계층을 처리하는 기기 스위치 컴퓨터 네트워크에서 데이터를 전송하고 연결하는 장비 OSI 모델의 2계층인 데이터 링크 계층에서 동작하며, 주로 이더넷(Ethernet) 네트워크에서 사용된다. 스위치는 여러 개의 네트워크 장치 (컴퓨터, 서버, 프린터 등)을 연결하고 이들 간에 데이터 패킷을 전송하며 데이터의 흐름을 제어한다. (주로 MAC 주소를 사용해 연결된 장치들을 식별하고 데이터를 전달한다.) 로드밸런서 (Load Balancer) 네트워크나 서버에 분산된 작업 부하를 공평하게 분배하는 장치 여러 대의 서버나 네트워크 장치에 들어오는 요청을 받아 해당 요청을 처리할 수 있는 서버로 전달하는 역할을 한다. 로드밸런서는 주로 웹 서버, 애플리케이션 서버, 데이터베이스 서버 등과 같은 서버 그..
프록시 패턴 대상 객체(Subject)에 접근하기 전 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 Subject : Proxy와 RealSubject를 하나로 묶는 인터페이스(다형성) 대상 객체와 프록시 역할을 동일하게 하는 추상 메서드 action() 정의 RealSubject : 원본 대상 객체 Proxy : 대상 객체(RealSubject)를 중계할 대리자 역할 프록시는 대상 객체를 합성(Composition)한다. 프록시는 대상 객체와 같은 이름의 메서드를 호출하며, 별도의 로직을 수행할 수 있다. (인터페이스 구현 메서드) 프록시는 흐름제어만 할 뿐 결과값을 조작하거나 변경시키면 안된다. Client : Subject 인터페이스를 이용하여 프록시 객체를 생성해..
HTTP/1.1 동작 방식 HTTP(HyperText Transfer Protocol)은 웹에서 클라이언트(웹 브라우저)가 웹 서버(httpd, nginx, etc…)와 통신하기 위한 프로토콜 중 하나이다. HTTP 1.1은 클라이언트와 서버 간의 통신을 위해 다음과 같은 과정을 거친다. HTTP/1.1은 기본적으로 Connection 한 개당 하나의 요청을 처리하도록 설계되어 있다. 이 때문에 동시에 여러개의 리소스를 주고받는 것이 불가능하고 요청과 응답이 위 그림처럼 순차적으로 이루어진다. 이런 설계 방식 때문에 HTTP 문서 내에 포함된 다수의 리소스 (image, css, script)를 처리하려면 요청할 리소스 개수에 비례하여 Latency(대기시간)이 길어진다. HTTP/1.1 단점 1. HO..
HTTP HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜 HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이다. 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성된다. 클라이언트와 서버들은 (데이터 스트림과 대조적으로) 개별적인 메시지 교환에 의해 통신한다. 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(requests)이라고 부르며, 그에 대해 서버에서 응답으로 전송되는 메시지를 응답(responses)이라고 부른다. HTTP는 애플리케이션 계층의 프로토콜로, 신뢰 가..
프록시 서버(Proxy Server)란 시스템에 방화벽을 가지고 있는 경우 외부와의 통신을 위해 만들어 놓은 서버 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시'라 부르며, 그 중계 기능을 하는 것을 프록시 서버라고 부른다. 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용해서 저장해둔다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접근하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 ..
REST의 개념 REST의 정의 -> “Representational State Transfer” 의 약자 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉, 자원(resource)의 표현(representation) 에 의한 상태 전달 자원(resource)의 표현(representation) 자원: 해당 소프트웨어가 관리하는 모든 것 -> Ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등 자원의 표현: 그 자원을 표현하기 위한 이름 -> Ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다. 상태(정보) 전달 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다. JSON 혹은 XML를 통해 데이터를 주고 ..
TCP-3-WayHandshake TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 3-way handshake를 사용한다. 3 Way-Handshake 란 전송 제어 프로토콜(TCP)에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정, 방법이다. TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. Client -> Server : TCP SYN Server -> Client : TCP SYN ACK Client -> Server : TCP ACK 클라이언트가 통신을 하고 싶은 서버에 syn을 보낸다. 그것을 받은 서버는 syn+1과 ack을 보낸..