컴퓨터 사이언스/Network

컴퓨터 사이언스/Network

소켓 인터페이스를 위해 도움을 주는 함수들

getaddrinfo()와 소켓 인터페이스를 더욱 편리하게 사용할 수 있는 소켓 인터페이스를 위한 도움 함수들을 소개하는 이번 절의 목적이다. open_clientfd 클라이언트가 서버와 연결을 설정하는 함수로 클라이언트의 getaddrinfo부터 connect까지 담당한다. #include "csapp.h" int open_clientfd(char *hostname, char *port); 서버의 호스트 이름(또는 IP주소)와 원하는 서비스(포트 번호)를 입력하여 해당 서버의 소켓 주소 구조체의 형식과 맞는 클라이언트의 소켓을 만들고 연결한다. char *hostname : 내가 연결하고 싶은 서버 호스트의 IP 주소 char *port : 해당 서버 프로세스의 서비스 종류. 즉, 포트 번호 리턴 값 ..

컴퓨터 사이언스/Network

소켓 인터페이스

소켓이란? 클라이언트와 서버는 소켓 식별자를 읽고 쓰면서 서로 통신하는데, 이때 소켓은 통신 양 끝 점을 담당한다. Berkeley Socket(BSD Socket)에서는 소켓을 File Descriptor의 형식이며, Unix의 철학인 모든 것은 파일이다에서부터 출발했다고 정의한다. 따라서 네트워크를 포함한 모든 Unix I/O 디바이스들은 파일이므로 소켓 역시 네트워크 상의 다른 프로세스와 통신하는 역할을 하는 파일로 볼 수 있다. 그리고 현재의 Internet 소켓들은 대부분 이런 BSD 표준을 따른다. File Descriptor 소켓 주소 IP 주소 + 포트 번호로 표현할 수 있다. generic 소켓 주소 구조체인 sockaddr은 connect, bind, accept 함수의 인자로 넣어주기..

컴퓨터 사이언스/Network

Client Server Architecture

Client Server Architecture 소개 클라이언트 서버 아키텍처란 다음과 같이 리소스를 사용하는 앱(클라이언트)와 리소스가 존재하는 곳(서버)를 분리시키는 모델을 의미하며, 2-tier 아키텍처라고도 부른다. 이때, 클라이언트는 웹/앱을 이용하는 사용자를 뜻하며, 클라이언트는 네이버나 구글과 같은 웹 브라우저를 통해서 서버에 원하는 데이터를 요청한다. 이렇듯 브라우저는 클라이언트가 이용하는 도구로써 사용자와 상호작용을 하게 된다. 그리고 서버는 클라이언트의 요청을 처리해서 응답한다. 아래 그림을 쇼핑몰이라고 하면 클라이언트는 쇼핑몰 웹사이트를 통해서 결제, 상품 조회 기능 등을 사용할 수 있고, 클라이언트가 특정 의류 상품을 클릭하면 서버에서는 의류의 상품 정보를 보내준다. 3-tier A..

컴퓨터 사이언스/Network

스위칭 허브와 공유기의 차이 + ipTIME 사용 팁

공유기 공유기는 1개의 IP 주소를 가지고 여러 대의 기계에서 인터넷을 사용할 수 있게 도와주는 장비이다. 즉, 1개의 IP를 최대 255개의 장비에 IP를 할당해주는 역할을 한다. 그럼 우리가 집에서 사용하는 공유기들의 포트 구성을 살펴보자. 보면 1개의 WAN과 4개의 LAN으로 구성되어 있는 것을 볼 수 있다. 즉, 최대 255개까지 IP를 할당할 수 있는데, 와이파이를 사용하지 않는다고 가정하면 우린느 최대 4개의 포트밖에 사용하지 못하는 것이다. 이러한 이유때문에 회사에서는 스위칭 허브라는 장비를 사용하게 된다. 참고로 이건 팁인데, ipTIME 사고 집에 설치된 랜포트에 랜선을 연결하고(인터넷 전용 회선), 이 회선을 공유기 WAN 포트에 다음 그림과 같이 연결시켜줘야 한다. 그리고 데스크탑과..

컴퓨터 사이언스/Network

Hub, Switch, Router의 차이

허브와 스위치는 내부 네트워크(LAN) 수준에서 사용된다. 따라서 허브와 스위치는 MAC address만 읽을 뿐이고, IP 주소를 읽지는 않는다. Hub 물리적으로 연결된 호스트들을 감지하고 연결시킬 수 있으나, 따로 목적지 MAC address를 저장해놓지 않기 때문에 목적지 호스트 뿐만 아니라 다른 호스트로도 데이터를 전송하게 된다. 따라서 대역폭이 낭비될 수 있다. Switch 스위치는 MAC address를 테이블로 저장해놓기 때문에 특정한 호스트들을 감지하고 연결시킬 수 있다. 따라서 대역폭의 낭비를 줄일 수 있고, Collision Domain 문제가 발생하지 않는다. 라우터는 외부 네트워크와 통신하기 위한 IP를 읽는다. 따라서 외부 네트워크. 즉, 인터넷이 형성되려면 라우터가 필요하다. ..

컴퓨터 사이언스/Network

Bridge, Switch

Hub, Bridge, Switch 모두 외관상으로는 비슷하지만, 허브는 Collision Domain을 나누어주지 못한다는 특징을 가진다. 따라서 CSMA/CD 방식의 Collision Detect Method를 사용하는 이더넷 케이블의 경우에는 아무리 전송속도가 빠르다고 해도 허브로 연결된 네트워크에서는 한번에 한 컴퓨터만 데이터를 전송할 수 있다. 이를 보완한 것이 스위치와 브릿지이다. 스위치와 브릿지는 거의 비슷한 기능을 수행하는데, 보통 스위치가 브릿지보다 조금 비싸고, 스위치는 하드웨어적으로 프레임들을 처리하기 때문에 소프트웨어적을 프레임들을 처리하는 브릿지보다 처리속도가 빠르다는 점과 스위치가 브릿지보다 제공하는 포트 수가 더 많다는 차이점이 있다. 그 외에는 공통적인 특징들을 가지기때문에 ..

컴퓨터 사이언스/Network

Load Balancing

왜 로드 밸런싱을 사용해야 할까? 우선 로드 밸런싱을 사용하지 않는다면 다음 그림과 같이 우리는 각 EC2 인스턴스에 고정된 아이피를 부여해야 한다. 문제는 하나의 인스턴스에 하나의 도메인밖에 연결할 수 없는데, 서버에 많은 트래픽이 몰리면 서버의 사양을 올리는 스케일 업, 서버의 개수를 늘리는 스케일 아웃을 고려해야 한다는 것이다. 이때, 로드 밸런싱을 사용하지 않는다면, 스케일 업의 경우 인스턴스를 업데이트하는 동안에 서비스를 할 수 없는 문제가 발생하고, 스케일 아웃을 하면 서버가 늘어날 때마다 도메인이 새로 필요하다는 문제점이 발생한다. 이때, 로드 밸런싱을 사용하게 되면 다음 그림과 같이 한 곳의 엔드포인트로 들어오는 트래픽을 각 인스턴스로 분산시킨다. 이러한 로드밸런싱은 크게 Layer 4에서..

컴퓨터 사이언스/Network

OSI 7 Layer, TCP/IP Model

OSI 7 Layer, TCP/IP Model 소개 우선 OSI의 Full Name은 Open System Interconnetion이다. 즉, 시스템 상호 연결에 있어서 개방되어 있는 모델을 의미한다. TCP/IP (Transmisson Control Protocol) 모델도 뒤에서 말하겠지만 모두 서로 다른 네트워크 프로톨콜이 상호 작용하고, 함께 작동하여 네트워크 서비스를 제공하는 방식을 이해하는 방식이다. 다만 OSI 참조모델은 컴퓨터와 컴퓨터 사이의 데이터 전송을 분류한 모델이고, 각 계층은 다른 계층에 대해 알 필요가 없이 자신의 계층에서 캡슐화와 은닉을 가능하게 한 모델이다. 그리고 TCP/IP 모델은 우리가 범용적으로 사용하는 TCP 프로토콜과 IP 프로토콜을 OSI 7 Layer 형식에 ..

컴퓨터 사이언스/Network

Ajax 정리

✏️ 개요 Ajax는 그 자체가 별도의 새로운 언어는 아니다. HTML, CSS, 자바스크립트, DOM, XML 등 기존에 사용되던 여러 기술을 함께 사용하는 새로운 개발 기법이다. Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있다. Ajax는 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있게 해준다. ✍️ 정의 Ajax란 Asynchronous JavaScript and XML의 약자이다. 백그라운드 영역에서 서버와 통신하는데 다음과 같은 다양한 형태의 데이터를 주고받을 수 있다. JSON XML HTML 텍스트 파일 한계 Ajax는 클라이언트가 서버에 데이터를 요청하는 클라이언트 풀링(client pooling) ..

컴퓨터 사이언스/Network

동기 통신과 비동기 통신

❓ 동기 통신, 비동기 통신 동기 통신 : 서버 컴퓨터가 작업이 끝날 때까지 기다리는 통신 동기 실행 방식은 등록 요청을 하게 되면 등록 과정이 모두 완료될 때까지 기다려준 후 게시글 불러오기 과정이 실행되기 때문에 문제없이 작업이 가능하다. 비동기 통신 : 서버 컴퓨터가 작업이 끝날 때까지 기다리지 않는 통신 서버에 요청(등록, 수정, 삭제 등)이 저장될 때까지 기다리지 않고 다른 작업을 진행한다. 비동기 통신은 요청들 사이에 서로 기다려 줄 필요가 없는 경우, 여러 가지 요청을 동시에 처리해 줄 때 사용된다. 훨씬 더 효율적이므로, 기본적으로 비동기로 작동하는 것이 좋다. 🔎 REST-API 에서 동기/비동기 실행 순수 자바스크립트에서는 동기적으로 작동한다. axios(rest-api) 등 외부 라이..

kimjingyu
'컴퓨터 사이언스/Network' 카테고리의 글 목록 (2 Page)