네트워크 8

[네트워크] Blocking과 Non-Blocking I/O

I/O 작업 I/O 작업은 User level에서 직접 수행할 수 없고, Kernel level에서만 수행할 수 있다. 따라서, 유저 프로세스(스레드)는 커널에게 I/O 작업을 요청하고 작업 완료 후 커널이 반환하는 결과를 기다릴 뿐이다. 네트워크에서의 I/O 작업은 소켓의 read/send를 생각하자. Blocking I/O I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단한 채 대기하는 방식 진행 순서 유저가 커널에게 read 작업 요청 데이터가 입력될 때까지 대기 데이터가 입력되면 커널 모드에서 유저 모드로 데이터 복사 특징 I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단한 채 대기 애플리케이션에서 다른 작업을 수행하지 못하고 대기하므로 자원 낭비 Non-Blockin..

[네트워크] 로드 밸런싱 (Load Balancing)

로드 밸런싱 네트워크 또는 서버에 가해지는 로드를 분산해주는 기술 Load Balancer (로드 밸런서) 로드밸런싱 기술을 제공하는 서비스 또는 장치 클라이언트와 네트워크 트래픽이 집중되는 서버들 또는 네트워크 허브 사이에 위치한다. Load Balancer의 종류 1) L4 로드 밸런싱 전송 계층에서 로드를 분산한다. IP주소나 포트번호, MAC 주소 등에 따라 트래픽을 나누고 분산 처리하는 것이 가능 CLB(Connection Load Balancer) 혹은 SLB(Session Load Balancer)라고 부르기도 한다. 2) L7 로드 밸런싱 애플리케이션 계층에서 로드를 분산한다. OSI 7계층의 프로토콜(HTTP, SMTP, FTP 등)을 바탕으로도 분산 처리 가능 L4 vs L7 차이 로드..

[네트워크] HTTP와 HTTPS

HTTP (HyperText Transfer Protocol) 인터넷 상에서 하이퍼텍스트를 교환하기 위한 통신 규약 특징 80번 포트 사용 Application 레벨의 프로토콜 상태를 가지도 있지 않은 stateless 프로토콜 보안 이슈: 암호화가 되지 않은 텍스트를 전송하는 프로토콜이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈 존재 -> HTTPS 등장 HTTPS (HyperText Transfer Protocol Secure) HTTP에 데이터 암호화가 추가된 프로토콜로, 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용하여 클라이언트와 서버가 자원을 주고받을 때 사용하는 통신 규약 특징 433번 포트 사용 공개키 암호화 방식 지원 : 네트워크 상 중간에 제3자가 정보..

[네트워크] 대칭키와 공개키

대칭키 (Symmetric Key) 암호화와 복호화에 같은 대칭키(암호키)를 사용하는 알고리즘 장점 : 공개키 암호화 방식에 비해 암호화 및 복호화 속도가 빠르다. 비교적 간편하다. 단점 : 암호화 통신을 하는 사용자끼리 같은 대칭키를 공유해야만 한다. 물리적으로 직접 만나서 전달하지 않는 한, 대칭키를 전달하는 과정에서 해킹의 위험에 노출될 수 있다. 관리해야 할 키의 개수가 방대해진다. 대표 알고리즘 : DES, 3DES, AES, SEED, ARIA 등 대칭키 암호화 시나리오 A는 사전에 공유된 대칭키로 데이터를 암호화하여 B에게 전송한다. B는 같은 대칭키로 데이터를 복호화 한다. 공개키 (Public Key) 암호화와 복호화에 사용하는 암호키를 분리한 알고리즘 (공개키 + 비밀키) 공개키(Pub..

[네트워크] TCP/IP 흐름제어와 혼잡제어

TCP/IP 란? 컴퓨터와 컴퓨터 간의 LAN 혹은 WAN에서 원활한 통신을 가능하도록 하기 위한 통신 규약 TCP 통신은 네트워크 통신에서 신뢰적인 연결 방식이며, 가장 큰 특성이 신뢰성이다. 신뢰성이란 중간에 데이터가 유실되지 않는 것을 뜻하는데 이러한 신뢰성을 구성하는 대표적인 방법으로 흐름 제어, 혼잡 제어가 있는 것이다. 흐름 제어 (End to End) 송신 측과 수신 측의 데이터 처리 속도를 일치시키는 기법 수신 측이 송신 측보다 속도가 빠른 것은 문제가 되지 않지만 송신 측이 수신 측보다 빠를 때 문제가 발생하게 된다. 정지-대기 (Stop and Wait) 데이터를 담아 패킷을 보낼 때마다 확인 응답(ACK)을 받아야만 그다음 패킷을 전송할 수 있다. 장점: 구현방법이 단순하고 송신 측 ..

[네트워크] TCP 3-way & 4-way Handshake

3-way Handshake 장치들 사이에 논리적인 접속을 성립(establish) 하기 위해 탄생했다. 진행 과정 클라이언트가 서버에게 SYN 패킷을 보낸다. (sequence : x) 서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보낸다. (sequence : y, ACK : x + 1) 클라이언트가 ACK(y+1)를 서버로 보내고 연결이 이루어진다. SYN: synchronize sequence numbers ACK: acknowledgment 4-way Handshake 세션을 종료하기 위해 탄생했다. 진행 과정 클라이언트가 서버에게 연결을 종료한다는 FIN 플래그를 보낸다. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 ..

[네트워크] UDP와 TCP

앞서 OSI 7 계층에 대해 살펴보았다. 이번 시간에는 그중 전송계층 프로토콜인 UDP와 TCP에 대해 알아보도록 하자. UDP와 TCP의 탄생 배경 IP의 역할은 host to host 만을 지원하는데 host에서 host 이동은 IP로 가능하지만 하나의 장비 안에서 수많은 프로그램들이 통신하는 것은 IP 만으로 한계가 있었다. (같은 IP 주소를 사용하니까!) IP에서 오류가 발생한다면 ICMP에서 알려주기만 할 뿐 대처를 못하기 때문에 IP보다 윗단에서 처리해줘야 했다. 따라서 1번을 해결하기 위해 port 번호가 탄생하였고, 2번을 해결하기 위해 TCP & UDP가 탄생하였다. UDP vs TCP UDP (User Datagram Protocol) 데이터를 데이터 그램 단위로 처리하는 프로토콜 U..

[네트워크] OSI 7계층

OSI 7 계층이란? 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것 계층을 나누는 이유 처음 네트워크에 대한 표준이 없을 땐, 장비 간 호환이 잘 되지 않는 문제점이 있었다. (ex. LG 장비랑 SAMSUNG 장비랑 같이 못 쓰는 경우) 그래서 네트워크를 7 계층으로 분리하면서 표준을 만들게 됐는데, 이게 바로 OSI 7 계층이다. 간략하게 말하면 서로 통신할 수 있게 규칙을 만든 것! 보내는 쪽에서는 데이터를 안전하고, 정확하고, 신속하게 규격화 즉 포장하는 방법이 필요하고, 받는 쪽에서는 그 데이터를 안전하고 정확하고 신속하게 해석하는 방법이 필요한 것이다. OSI 7 계층 구조 위 그림을 보면, 응용계층에서 내려온 데이터부터 시작해서 계속 헤더가 붙는 것을 알 수 있다. 헤더..