CS/Network 11

11_Security

Kerckoff’s 원리암호 시스템의 안정성은 key의 안정성에만 의존해야 한다.암호 알고리즘은 공개되어도 괜찮음. key만 지키면 됨Passive AttackActive Attack 공격 모델 4가지Ciphertext Only Attack공격자가 중간에서 암호문 갈취하는 거암호 알고리즘 알아내거나 로그 분석, 정보 수집, 키 알아내기 등Known Plaintext Attackbob alice가 과거에 사용했던 text 쌍을 사용하는 것Chosen Plaintext Attack공격자가 plaintext를 선택해서 bob한테 보내고 ciphertext 얻어냄. plaintext를 마음대로 조작하는 것공격자가 원하는 평문을 선택할 수 있음,Chosen Ciphertext Attack공격자가 ciphertex..

CS/Network 2024.07.24

06_Multiplexing

selecthttps://develop-rock.tistory.com/32 03_TCP ConnectionsTCP connection overviewaccept()를 호출하면 새로운 connect 요청이 들어올 때까지 프로그램 실행이 block 됨recv를 호출하면 읽을 수 있는 새로운 데이터가 들어올 때까지 프로그램 실행이 block 됨 blocking의develop-rock.tistory.com epoll()select()는 관찰 대상에 대한 정보가 매번 전달되어야 함→ epoll()로 해결select()로 100개 이상의 소켓은 무리임(100개의 array를 OS에게 return 해야 하니까)전체 fd를 대상으로 하는 루프가 없어서 상태 변경을 확인하기 쉬움select()에 해당하는 epoll_wa..

CS/Network 2024.07.24

05_Thread

프로세스 vs 스레드프로세스: 운영체제로부터 자원을 할당받는 작업의 단위스레드: 프로세스에 할당된 자원을 사용하는 실행 흐름의 단위(하나의 프로세스 안에서 발생)Memory Space프로세스: 프로세스마다 독립된 메모리 공간을 가짐스레드: 부모 프로세스의 메모리 공간을 공유함Creation Overhead프로세스: 각 프로세스마다 고유한 메모리 공간과 자원을 할당하기 때문에 비용이 상대적으로 높음스레드: 프로세스의 자원을 공유해서 사용하기 때문에 비용이 상대적으로 낮음Resource Sharing프로세스: 프로세스 간 IPC 없이 자원 공유 불가능스레드: 메모리, 파일 디스크립터 등 프로세스의 자원을 다 같이 공유하여 사용 스레드프로세스 안에서 생성됨 프로세스의 메모리 할당 구조Code 영역: 프로그램 ..

CS/Network 2024.07.24

04_Multiprocess

Multi-connection Server서버는 connection 요청을 보내온 모든 client와 동시에 서비스 해야함Multiplexing-based server: 입출력 대상을 grouping하여 서비스Multiprocess-based server: 다중 프로세스로 서비스Multi-threading-based server: client 수만큼 스레드 만들어서 서비스 fork()#include pid_t fork()새로운 프로세스를 생성하는 함수fork()를 호출한 프로세스가 복사됨fork() 호출 이후로 각 프로세스는 독립적으로 실행리턴값성공 부모 프로세스라면: 자식 프로세스의 pid 자식 프로세스라면: 0실패: -1 자식 프로세스가 터지면? - wait()자식 프로세스가 terminate되면 부..

CS/Network 2024.07.24

03_TCP Connections

TCP connection overviewaccept()를 호출하면 새로운 connect 요청이 들어올 때까지 프로그램 실행이 block 됨recv를 호출하면 읽을 수 있는 새로운 데이터가 들어올 때까지 프로그램 실행이 block 됨 blocking의 문제점만약 여러 서버, 클라이언트가 통신하는 상황에서(서버 입장) recv()를 호출하여 새로운 데이터가 들어올 때까지 프로그램 실행이 block 된다면? → block 상태로 데이터 수신을 대기하는 동안 다른 client의 요청을 처리하지 못함(client 입장) 여러 탭에서 각각의 웹페이지를 병렬로 로드해야 하는데 block되면 동시에 여러 웹페이지, 이미지, 리소스 등을 화면에 띄우는 것이 불가능함—> 여러 connection을 동시에 처리할 수 있는..

CS/Network 2024.07.24

02_Socket_IO

Socket is defined by a 5-tuplee.g., 2개의 브라우저가 example.com의 80번 포트에 동시접속 하는 경우Local IP address: 브라우저를 실행한 컴퓨터의 IP 주소Local port: 각 브라우저의 인스턴스의 로컬 포트번호Remote IP address: example.com의 IP주소Remote port: 80Protocol(TCP or UDP): TCP→ 두 브라우저의 소켓에서 Local IP, Remote IP, Remote port, Protocol 값은 똑같음 UNIX 시스템 콜 - open, read, write, closeOpen()int open (const char* Path, int flags);Path: open 하려는 파일의 pathname..

CS/Network 2024.07.23

TCP flow control이란?

0. 배경 송신자가 전송한 데이터를 수신자가 받아서 버퍼에 저장한다. 이 때, 송신자가 데이터를 전송하는 속도와 수신자가 데이터를 수신하는 속도가 다를 수 있다. 만약 송신지의 데이터 전송속도가 수신자의 데이터 수신속도보다 빠르다면 수신자의 버퍼는 들어오는 데이터의 속도를 이기지 못하고 결국 버퍼가 넘칠 것이다. 이 과정에서 데이터가 유실될 가능성이 있다. 송신자와 수신자 간 데이터 전송 속도차로 인한 데이터 유실이 발생하는 것이다. TCP는 데이터 유실을 방지하기 위해 송신자의 전송 속도를 조절하는 방법을 택했다. 이것이 flow control이다. 1. flow control 과정 TCP는 flow control을 위해 receive window(=rwnd)라는 변수를 사용한다. 이 변수를 사용하여 ..

CS/Network 2024.03.18

다중화와 역다중화

다중화와 역다중화를 알기 전에 Trans-L와 Net-L, 소켓이 무엇인지 알아야 한다. Transport vs Network layer Net-L는 서로 다른 호스트 간 논리적 통신을 제공하고 Trans-L는 프로세스들(서로 다른 호스트 안에서 동작) 간 논리적 통신을 제공한다. 이 차이를 이해할 수 있는 예제가 있다. 집A에 있는 12명의 아이들이 집B에 있는 또다른 12명의 아이들에게 편지를 보낸다고 가정하자. 이 때 집A와 집B는 각각 호스트A, 호스트B가 된다. 아이들은 프로세스이고 편지는 application messages = 데이터이다. 편지가 집A에서 집B로 이동하는 과정(postal service)은 Net-L 프로토콜이다. (라우팅) 편지가 집B에 도착하고, 12명의 아이들에게 편지를..

CS/Network 2024.02.01

OSI 7계층 모델과 TCP/IP 4계층 모델 비교

1. 물리계층 (Physical Layer) 실제 장치를 연결하는 데 필요한 전기적, 물리적 세부 사항을 정의한다. 상위 계층에서 전송된 데이터를 물리 매체를 통해 다른 시스템에 전기적 신호로 전송한다. 주요 네트워크 장치로 리피터, 허브 등의 기기가 있다. 2. 데이터 링크 계층 (Data Link Layer) 물리 링크를 통한 데이터 전송의 신뢰성을 보장하기 위한 계층이다. 대표적인 예로 이더넷이 있다. 시스템 간 오류없이 데이터를 전송하기 위해서 패킷을 프레임으로 구성하여 물리 계층에 전송한다.(캡슐화 과정) 데이터 링크 계층에서 물리적 주소, MAC 주소를 결정한다. 대표적인 네트워크 기기로 스위치가 있다. 3. 네트워크 계층 (Network Layer) LAN에서 벗어난 통신을 위하여 IP 주소..

CS/Network 2024.01.31

HTTP란 무엇인가?

HTTP란?HTTP(HyperText Transfer Protocol)는 웹의 app-L 프로토콜이다. HTTP의 특징client/server 모델이다.client: HTTP 프로토콜로 요청(request)을 보내고 응답을 받는 브라우저이다. server: HTTP 프로토콜로 요청에 대한 응답(reponse)을 보낸다.일반적으로, 사용자가 웹 페이지를 요청할 때 (1) 브라우저는 페이지 내부의 객체에 대한 HTTP 요청 메시지를 서버에게 전송한다.(2) 서버는 요청을 수신하고, 객체를 포함하는 HTTP 응답 메시지로 응답한다. HTTP의 TCP 사용클라이언트가 서버에게 TCP connection을 보낸다. (이 때 소켓을 만든다.)서버는 클라이언트로부터 온 TCP connection에 접속한다. (소켓 ..

CS/Network 2024.01.30