[Network] 네트워크 원리(6) 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.  STORY 1 | 서버의 개요1-1) 클라이언트와 서버의 차이점서버 머신은 용도에 따라 다양한 OS, 하드웨어가 있다. 하지만 네트워크에 관한 부분( LAN 어댑터, 프로토콜 스택, 소켓 라이브러리 등)의 기능은 클라이언트와 서버가 같은 구졸르 갖는다.→ TCP/IP 기능은 하드웨어나 OS가 무엇이든지 달라지지 않기 때문에 기능이 통일되어 있다고 봐도 무방하다. ■ 그렇다면 차이점은?소켓 라이브러리의 connection과 데이터 송수신서버 애플리케이션은 동시에 다수의 클라이언트 PC와 대화하나의 프로그램으로 여러 클라이언트를 다루는 것은 X. 보통은 1:1로 대화 1-2) 서버 애플리케이션의 구조(b): 클라이언트가 새로 접속할 ..
[Network] 네트워크 원리(5) 서버측의 LAN에는 무엇이 있는가?
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.Chapter 5 - 방화벽과 캐시 서버의 탐험   STORY 1 | 웹 서버의 설치 장소1-1) 사내에 설치클라이언트의 POP/프로바이더로부터 오는 패킷을 방화벽에서 한 번 거르는 방법이 보편화되어 있다.특정 서버에서 동작하는 특정 애플리케이션에 액세스하는 패킷만 통과시키고, 그 외 패킷은 모두 차단한다.액세스를 허가한 애플리케이션에 보안 구멍이 있을 수 있지만, 클 to 서구조에 비하면 위험성이 낮다.현재는 이 구조를 빠져나가는 다양한 수법이 많이 생겨셔 더불어서 바이러스 검사, 부정 침입 검사 등의 구조를 함께 사용한다. 1-2) 데이터 센터에 설치데이터 센터로부터 서버를 빌리는 형식데이터 센터는 프로바이더의 중심인 NOC에 접..
[Network] 네트워크 원리(4) 액세스 회선을 통해 인터넷의 내부로
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.Chapter 4 - 액세스 회선과 프로바이더의 탐험 5장과 더불어 가장 생소하고 어려웠던 내용.... 🥹 라우터부터 액세스 회선에서 이동하는 부분은 잘 알아두면 좋을 듯하다.  STORY 1 | ADSL 기술을 이용한 액세스 회선의 구조와 동작1-1) 인터넷의 기본은 가정이나 회사의 LAN과 같다.패킷을 중계하는 부분과 라우터의 기본적인 구조/동작은 같다. ■ 인터넷과 LAN의 차이점중계 장치 간의 거리 : 가정이나 회사의 LAN은 멀어봤자 수백미터 정도이지만, 인터넷은 한국과 미국을 연결하는 부분은 태평양을 넘어야 하므로 케이블로 연결하는 것이 어려울 정도로 중계 장치 간의 거리가 멀다.패킷의 중계 대상을 제어하는 부분 - 히 ..
[Network] 네트워크 원리 (3) 케이블의 앞은 LAN 기기였다.
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.Chapter 3 - 허브와 스위치, 라우터의 탐험  STORY 1 | 케이블과 리피터, 허브 속에 신호가 흘러간다.1-1) 하나하나의 패킷이 독립적으로 동작한다.컴퓨터에서 송신된 패킷은 중계 장치(허브, 라우터 등)에 의해 운반된다. 이때, 중계장치는 어떤 데이터인지 전혀 신경쓰지 않고 전송에만 집중한다.  1-2) LAN 케이블은 신호를 약화시키지 않는 것이 핵심이다.■ 높은 주파수와 낮은 주파수  1-3) ‘꼼’은 잡음을 방지하기 위한 방법이다.트위스티 페어 케이블은 마주 꼬여있는 상태를 통해서 잡음을 막는다. ■ 잡음의 원인은 케이블에서 발생하는 전자파다. 전자파가 금속 등의 도전체에 닿으면 그 내부에 전류가 발생한다. → 케..
[Network] 네트워크 원리(2) - TCP/IP의 데이터를 전기 신호로 만들어 보낸다
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.Chapter 2 - 프로토콜 스택과 LAN 어댑터 탐험  STORY 1 | 소켓을 작성한다.1-1) 프로토콜 스택의 내부 구조인터넷에서 데이터를 운반할 때는 데이터를 작게 나누어 패킷이라는 형태로 운반한다.패킷을 통신 상대까지 운반하는 것이 IP의 주 역할이다.IP 안에는 ICMP와 ARP라는 프로토콜을 다루는 부분이 포함되어 있다.ICMP: 패킷 운반 통제 및 제어용 메시지 통제ARP: 이더넷의 MAC 주소 1-2) 소켓의 실체는 통신 제어용 제어 정보소켓은 개념적인 것이어서, 실체가 없다. 굳이 말하자면 제어 정보, 즉 제어 정보가 기록된 프로토콜 스택 내부의 메모리 영역이다.제어 정보에는 통신 상대의 IP 주소, 포트 번호, ..
[Network] 네트워크 원리(1) 웹 브라우저가 메시지를 만든다.
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.    STORY 1 |  HTTP 리퀘스트 메시지를 작성한다.1.1) URL 입력과 해독, HTTP 메시지 주고 받기URL(Uniform Resource Locator)URL은 사실 http: 뿐만 아니라 ftp:, file:, mailto:로 시작하는 것 등 여러가지가 있다.보통 우리가 브라우저를 사용할 때는 웹 서버에 접근하는 클라이언트로 사용하지만, 브라우저의 기능은 다양하기 때문이다. 파일을 다운로드/업로드하는 FTP의 클라이언트 기능이나 메일 전송 클라이언트 기능도 가지고 있다.브라우저는 몇 개의 클라이언트 기능을 겸비한 복합적인 클라이언트 소프트웨어다.각종 URL 형식 예시와 공통점가장 앞부분에서 브라우저에 액세스하는 방..
[Network] 내가 만든 웹 서비스 WireShark로 패킷 분석하기 - 7계층 분석
·
CS/Network
개요내가 만든 웹 서비스 WireShark로 패킷 분석하기 1편에 이어서, 2편에서는 본격적인 WireShark 패킷 내용을 살펴보자. 현재 서버는 로컬 컴퓨터에서 spring boot를 IntelliJ로 실행하고, 포트포워딩하여 15001 포트로 클라이언트가 접속할 수 있도록 세팅되어있다.서버 위주의 패킷을 분석하고, 특정 상황에서는 서버와 클라이언트 양측의 패킷을 각각 분석한다. 유저 시나리오는 다음과 같다.클라이언트의 접속(채팅방 이용자)유저 1의 채팅방 만들기유저 2의 채팅방 접속(다대다 채팅 가능)서로 채팅하기방 나가기이메일 전송하기클라이언트 브라우저 접속 종료 S1# 클라이언트(채팅방 이용자)의 메인 화면 접속  [서버 측 패킷] 두 클라이언트(51115, 51116)의 요청과 서버의 응답에 ..
[Network] Transport Layer, Mux & Demux
·
CS/Network
개요TCP Keywordsreliable data transferflow controlcongestion controlTransport Layer가 하는 일서로 다른 host의 프로세스 간 Logical communication 제공프로토콜은 End System 즉, host에서 돌아간다.Network 계층의 라우터들을 거쳐서 데이터들이 전달되지만, Transport 계층은 이 거쳐가는 과정은 보이지 않고 두 엔드 시스템(프로세스) 사이의 Logical Communication에만 집중한다.Sender: App Layer의 메시지를 segment 단위로 메시지를 잘라서, Transport Layer의 헤더를 붙이고 Network Layer로 전송Receiver: 받은 segment를 합쳐서 메세지를 만들..
[네트워크] DNS, DNS 쿼리, DNS recode 종류
·
CS/Network
개요프로세스가 서로 통신할 때 알아야 하는 두 가지 정보 → IP, PortIP: 프로세스가 돌고 있는 머신의 Network Interface Card에 부여된 Identity → IPv4, host name(domain name)Port: 실행 중인 프로세스에 접근할 수 있는DNSIP 주소를 hostname으로 매핑(라우팅)해주는 역할→ Network Layer에서 해야하는 일을 App-Layer에서 함⇒ Network Layer는 빠르게 전송만 하면 돼서, 복잡한 연산을 App-Layer에서 처리하는 것distributed database → not centralize가용성, 중요한 서비스는 분산시킨다.application layer protocol   DNS가 하는 일host name-IP addr..
[OS] Synchronous, Asynchronous, Blocking, Non-Blocking
·
CS/OS
개요Synchronous & Asynchronous | Blocking & Non-Blocking의 개념과 실제로 어떻게 활용하는지, 네 개념의 상관관계는 어떻게되는지 정리하는 포스팅이다.  Synchronous Sync 프로세스들은 서로 실행 시점에 따라 순서를 가지고, 순차적으로 실행이 된다.  아래와 같은 Java 예제 코드와 Synchronous한 동작 과정은 다음과 같다.public class Person {    private String name;    public Person(String name) {        this.name = name;    }    public void introduce() {        System.out.println("Hello, my name is " ..
[OS] user mode & kernel mode
·
CS/OS
개요운영체제는 응용 프로그램과 하드웨어 간의 상호작용을 관리하고, 리소스를 효율적으로 활용하기 위한 다양한 작업을 한다. 이 작업에 대한 방식을 두 가지(유저 모드와 커널 모드)로 나누어, 컴퓨터 자원을 안정적으로 보호한다.이 두 가지 작업 모드에 대해서 알아보자.  Kernel이란커널은 OS의 핵심이되는 프로그램으로, 시스템의 모든 것(하드웨어의 동작, 메모리, CPU 등)을 제어한다.프로세스 간 통신과 System Call을 이용하여, 하드웨어 리소스에 접근하여 수행되는 응용 프로그램과 데이터 처리 사이의 중간다리 역할을 한다. 커널에는 모든 활성 프로세스를 추적하는 프로세스 테이블이 있어, 이들을 관리한다. 커널은 OS가 로드되면 메모리에 먼저 로드되고, OS가 종료될 때까지 메모리에 남아있다. M..
[OS] CPU Scheduling | preemptive & non-preemptive | 스케줄링 알고리즘 | 스케줄러 알고리즘 평가
·
CS/OS
스케줄링 개념앞단원까지 cpu는 hw 자원의 효율적인 사용을 위해 context-switching을 통해 마치 concurrency(동시병렬)한 것처럼 hw 자원들을 사용한다고 배웠다. 이러한 context-switching을 관장하는 것이 CPU scheduling이다. 말 그대로 cpu의 스케쥴을 관리한다. [스케쥴링 전제]일단 스케쥴러의 판단 하에 있으려면, 프로세스들은 모두 메모리에 load가 되어있는 상태이어야 한다.multi programming 환경이어야 한다. batch programming은 schedule을 나눈다는 가정 자체가 성립 안되니 당연하다.[cpu schedular의 역할]스케줄러가 ready queue에서 작업을 선택해서 CPU burst하고 나머지는 I/O하면 효율적으로 ..
[Backend] RESTful API란, API와 Interface
·
Dev/Backend
REST/Restful API란?REST 아키텍처 스타일의 디자인 원칙을 준수하는 API다.  REST 디자인 원칙균일한 인터페이스클라이언트-서버Stateless캐싱 가능성코드 온디맨드HTTP URI를 통해 자원(resource)을 명시해당 자원에 대해 HTTP 메소드를 활용해서 CRUD 기능을 수행HOW TO UNDERSTANDAPIRESTREST/RESTful API 에 대한 이해가 기반되어야 한다. Interface(상호의 얼굴 😃)(사전상) 컴퓨터 프로그램이 user와 주고받는 정보를 나타내는 방법메뉴/스크린의 레이아웃GUI(Graphical User Interface): 사용자가 편리하게 사용할 수 있도록 컴퓨터의 어떠한 기능을 아이콘 따위로 나타낸 것(결론) 어떤 두 시스템, 장치, 소프트웨..
[OS] Linker(링커)와 Linking(링킹)
·
CS/OS
1. Linker(링커)링커는 프로그래머가 작성한 여러 소스 파일을 하나로 연결해주는 역할을 한다. 이러한 링커의 역할에 의해 응용 프로그램을 하나의 큰 파일이 아니라, 작은 단위의 소스파일로 나누어서 효율적으로 프로그래밍을 할 수 있다. 우리가 평소에 코딩할 때 자주 사용하는 라이브러리들도 링커 덕분에 사용할 수 있는 것이다.링커가 분리된 소스파일을 연결해주는 역할을 하기 때문! 이렇게 모듈 단위(개별 소스 파일)로 코딩을 하면 시간적으로도 공간적으로도 효율성이 높다.프로그래머가 전체 코드를 수정하고 컴파일하는 대신 , 수정이 필요한 소스 파일의 내용만 컴파일 하면 되기 때문에 코드 관리의 효율성이 훨씬 높다. 2. Linking - 링커가 하는 일1) Symbol resolution define과 r..
sebinChu
'CS' 태그의 글 목록