[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] 내가 만든 웹 서비스 WireShark로 패킷 분석하기 - Spring WebSocket & STOMP
·
CS/Network
1편 - 소켓 통신 프로젝트 기능 구현 소개 2편 -  패킷 분석 내용 소개  개요WireShark 패킷 분석을 위한 애플리케이션인 만큼, 소켓 통신을 구현하여 서버와 클라이언트, 클라이언트끼리의 통신이 잘 보이는 채팅 서비스를 구현하였다. 소켓 통신은 KAU 멋쟁이 사자처럼 고기의 소켓통신 세션을 참고하였고, SMTP 프로토콜 통신을 캡처하기 위해 이메일 전송을 추가하였다.소스코드는 해당 깃허브에서 확인 가능하다. 기능 구현은 크게 다음과 같다.WebSocket 통신구글 SMTP 서버를 통한 메일 발송  WebSocket 통신 구현에 사용된 기술 크게 3가지로 분류된다.- WebSocket(HTTP와 비교)- STOMP- Message Broker   WebSocket이란? HTTP와 다른 점은 뭘까?..
[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..
[네트워크] TCP/IP 5계층 | Application Layer
·
CS/Network
TCP/IP 5계층ApplicationFTP, HTTP, SMTP 등의 프로토콜TransportTCP, UCPNetworkIP, 스위치Link이더넷Physical 여기서 7계층되면…Application - Transport 계층 사이에 두 계층 추가Presentation 인코딩, 디코딩, 암호화/복호화Session: 애플리케이션 간 연결 지원(SSL, TLS 등)계층 간 이동 ⇒ Encapsulation각각의 계층을 이동하면서 프로토콜 헤더를 붙이게 된다.캡슐화: 송신 측에서 응용계층부터 각 계층을 들리면서 헤더 추가, 물리 계층까지 가면 최종적으로 전기 신호로 변환되어 수신 측에 도착  Applciation Architectur..
[OS] 멀티 프로세서, 멀티 태스킹, 멀티 프로세스, 멀티 스레드!
·
CS/OS
개요 멀티 프로세스(여러 프로세스가 병렬적으로 일하는 것)공부를 하면서 여러 자료를 참고하는데, 이 4개의 용어에 대해 정의하는 바가 다들 달랐다. 여러 자료를 참고하면서 혼선이 왔고, 많이 찾아보고 구글링하며 내린 각각의 차이에 대해 명확하게 정리하는 포스팅이다. 멀티 프로세서(Multi-Processor, Multi-Processing) 단일 시스템 내에서 다중 cpu로 여러 작업을 처리하는 것이다. 하나의 cpu는 하나의 작업만 처리할 수 있다. 그냥 스펙을 쭉쭉 눌려서 여러 cpu를 두고 돈도 빵빵하게 쓰며 성능을 높이는 것이 멀티 프로세서-멀티 프로세싱이다. 장점 독립된 구조로 안정성이 높고, 하나의 프로세스에 문제가 생기더라도 다른 프로세스들에 영향을 주지 않는다. 단점 비용, 전력소모 등등 ..
[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 " + name + "."); } } public ..
[OS] user mode & kernel mode
·
CS/OS
개요 운영체제는 응용 프로그램과 하드웨어 간의 상호작용을 관리하고, 리소스를 효율적으로 활용하기 위한 다양한 작업을 한다. 이 작업에 대한 방식을 두 가지(유저 모드와 커널 모드)로 나누어, 컴퓨터 자원을 안정적으로 보호한다. 이 두 가지 작업 모드에 대해서 알아보자. Kernel이란 커널은 OS의 핵심이되는 프로그램으로, 시스템의 모든 것(하드웨어의 동작, 메모리, CPU 등)을 제어한다. 프로세스 간 통신과 System Call을 이용하여, 하드웨어 리소스에 접근하여 수행되는 응용 프로그램과 데이터 처리 사이의 중간다리 역할을 한다. 커널에는 모든 활성 프로세스를 추적하는 프로세스 테이블이 있어, 이들을 관리한다. 커널은 OS가 로드되면 메모리에 먼저 로드되고, OS가 종료될 때까지 메모리에 남아있다..
[CS] 비트마스킹 | 비트 연산자 | 비트마스킹과 집합
·
CS/OS
비트마스킹(Bitmasking a.k.a. lightweight) 컴퓨터는 숫자나 데이터를 이진수로 표현한다. 이진 표현을 수정하고 활용하는 과정이 비트마스킹이다. 비트마스킹은 비트 연산을 사용하여 특정 비트의 값을 설정하거나 검사하는 방법을 제공한다. 비트마스킹을 통해 메모리를 절약하고 연산 속도를 향상시킬 수 있다. 비트 연산자 AND(a&b) 둘다 1이면 1, 아니면 0 OR(a|b) 둘다 0이면 0, 아니면 1 XOR(a^b) 같으면 0, 다르면 1 NOT(~a) 0 → 1, 1 →0 LS(a > 2) a를 2비트 만큼 오른쪽 시프트 비트마스크와 집합 비트마스크를 활용하여 집합 연산을 쉽고 빠르게 사용할 수 있다. 이를 통해 문제 해결을 쉽고 빠르게 할 수 있다! 원소의 개수가 N인 집합이 있다고..
sebinChu
'CS' 카테고리의 글 목록