성공과 실패를 결정하는 1%의 네트워크 원리10 [네트워크] Day 11 서버 서버 OS는 멀티태스크 혹은 멀티스레드라는 기능으로 다수의 프로그램을 동시에 함께 작동한다. 멀티 태스크는 OS가 갖추고 있는 기능의 하나로, 복수의 태스크(프로그램)을 동시에 함께 실행하는 기능을 말한다. 하나의 프로세서는 어떤 시점에서 하나의 태스크만 실행할 수 있지만, 단시간에 태스크를 전환하면서 실행하므로 동시에 실행하는 것처럼 보인다. OS의 종류에 따라 멀티프로세스라고도 불린다. 멀티스레드는 멀티태스크와 같이 복수의 스레드를 동시에 실행하는 기능을 말하고, 멀티태스크와의 차이점은 태스크와 스레드의 차이이다. OS 내부에서 태스크는 각각 별도의 프로그램으로 취급되지만, 스레드는 한 개의 프로그램 속을 몇 부분으로 나눈 것으로 취급한다. 이 방법은 클라이언트가 접속했을 때 새로 프로그램을 기.. Dev/CS 2023. 12. 30. [네트워크] Day 10 방화벽 방화벽은 미리 정의된 보안 규칙에 기반하여 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다. 방화벽은 신뢰할 수 있는 내부 네트워크와 신뢰할 수 없는 외부 네트워크 사이에 장벽을 구성하는 것을 의미한다. 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하는 하드웨어나 소프트웨어 장치이다. 네트워크 관리자의 입장에서 높은 신뢰도를 갖는 구간은 내부 네트워크 구간이라 하고, 낮은 신뢰도를 갖는 구간을 인터넷 구간 또는 외부 네트워크 구간이라고 한다. 초창기 방화벽은 패킷 자체만을 보고 정책에 따라 허용 또는 거부를 결정했으며, 이 떄의 방화벽을 1세대 방화벽이라 한다. 방화벽 내부에서 상태(세션)을 관리하지 않는 기본 형태의 방화벽이며, 이 방화벽은 특정한 IP를 .. Dev/CS 2023. 12. 22. [네트워크] Day 9 인터넷 ADSL 모뎀에서 전기 신호로 변환된 셀은 스플리터라는 장치로 들어가고, ADSL 신호는 여기서 음성 신호와 섞여 전화 회선에 함께 흘러나간다. 스플리터는 전화 회선에서 신호가 들어온 경우, 전화 음성 신호와 ADSL의 신호를 나누는 역할을 한다. ADSL의 높은 주파수를 차단하여 전화기에는 전화 신호가 흐르게, ADSL 모뎀에는 원래 신호가 그대로 흐르게끔 한다. ADSL 모뎀 내부에는 사용 주파수 범위 외의 주파수는 차단하기 때문에, 음성 신호를 미리 스플리터가 차단할 필요가 없다. 전화 케이블을 통해 전화국에 도착한 신호가 배선반과 스플리터를 통과하여 DSLAM에 도착하면 전기 신호가 디지털 데이터의 셀로 복원된다. DSLAM이 신호의 파형을 읽어 진폭과 위상을 조사하고, 이것이 어느 비트 .. Dev/CS 2023. 12. 16. [네트워크] Day 8 라우터 라우터는 기본 동작 외에 주소 변환과 패킷 필터링 기능을 추가적으로 가지고 있다. 우선 주소 변환은 인터넷의 보급이 빨라지면서 개개인의 주소가 늘어나게 되면 고유한 주소가 전부 고갈될 수 있다는 예측으로부터 시작되었다. 주소변환은 사내와 같은 환경에서 사내의 기기에 할당되는 주소는 다른 회사의 주소와 중복되어도 다른 네트워크를 갖추고 있어 문제가 되지 않는다는 성질을 이용했고, 특정 주소를 사내용으로 사용한다는 규칙을 세웠다. 이러한 규칙에 기초한 사내용 주소는 프라이빗 주소라 하며, 이전에 사용하던 고유한 주소는 글로벌 주소라 한다. 프라이빗 주소 규칙은 사내에서 사용하는 것은 특정 범위 내로 한정한다는 것이다. 단 이 과정에서 사내에서의 패킷 전송을 위해 사내에서의 주소 중복은 피해야 한다. .. Dev/CS 2023. 12. 13. [네트워크] Day 6 리피터 허브 LAN 어댑터의 PHY(MAU) 회로에서 전기 신호로 형태를 바꾼 패킷은 트위스트 페어 케이블(꼰 선쌍)에 들어가게 된다. 이더넷 신호는 플러스와 마이너스의 전압이므로 LAN 어댑터의 PHY(MAU) 회로의 플러스와 마이너스 신호 단자에서 신호가 나오는 형태이다. PHY(MAU) 회로에서 나온 신호는 RJ-45 커넥터와 연결되어 케이블을 통해 전기 신호가 전달된다. LAN 케이블로 사용하는 트위스트 페어 케이블은 신호선을 꼬아서 잡음을 억제한다. 케이블 외부로부터 발생하는 전자파에 의해 발생한 전류가 상쇄되어 잡음에 의한 전류가 약해진다. 또한 신호선을 꼬는 간격을 약간씩 다르게 하여 신호선 내의 잡음의 영향인 크로스토크를 감소시킨다. 신호가 리피터 허브에 도달하면 LAN 전체에 신호가 흩어.. Dev/CS 2023. 12. 6. [네트워크] Day 5 패킷 이더넷의 원형은 수신처의 정보가 맨 앞에 담긴 신호를 연결된 모든 컴퓨터에게 전달하고, 해당되는 기기는 패킷을 수신하고 나머지는 패킷을 폐기하는 형식이다. 이 후 스위칭 허브를 사용한 이더넷의 형태가 나타났으며, 기존의 전원에게 신호를 보내는 방식에서 수신처 MAC 주소를 나타내는 부분에만 신호를 전달하는 형태로 변경되었다. MAC 헤더까지 붙은 패킷은 LAN 어댑터에게 전달되고, 패킷은 디지털 신호에서 전기 혹은 빛 신호로 변환되어 네트워크 케이블에 송출된다. LAN 어댑터는 연결 후 하드웨어 초기화 작업과 이더넷 송수신 동작을 제어하는 MAC 회로에 MAC 주소를 설정한다. LAN 드라이버는 IP 담당 부분으로부터 패킷을 전달받으면 LAN 어댑터의 버퍼 메모리에 복사한다. 복사를 마친 뒤 패킷 .. Dev/CS 2023. 12. 3. [네트워크] Day 4 서버 연결 종료 클라이언트 혹은 서버 어느 쪽이든 데이터 보내기를 완료한 쪽에서 연결 끊기 단계에 들어간다. 서버 측에서 연결 끊기 단계에 들어가는 경우, 서버측 어플리케이션이 먼저 Socket 라이브러리의 close를 호출한다. 서버 측의 프로토콜 스택은 TCP 헤더를 만들고, FIN 비트에 1을 설정하여 연결 끊기는 나타내는 정보를 담는다. 클라이언트가 FIN 비트가 1인 TCP 헤더를 받게 되면, 클라이언트는 패킷을 받았다는 사실 전달을 위한 ACK 번호를 서버에게 반송하고, 클라이언트는 read를 호출하여 서버가 보낸 데이터를 웹 어플리케이션에 전달하고 난 뒤, 마찬가지로 FIN 비트를 1로 설정한 TCP 헤더를 서버 측에 전달하고 서버 측은 그에 대한 ACK 번호 응답을 반송하게 된다. 패킷 패.. Dev/CS 2023. 11. 29. [네트워크] Day 3 서버 접속 서버 접속 동작의 첫 번째는 통신 상대와의 사이에 제어 정보를 주고받아 소켓에 필요한 정보를 기록하고 데이터 송수신이 가능한 상태로 만드는 것이다. 구체적인 예로는 클라이언트의 IP 주소나 포트 번호를 서버 측에 알리는 것이 해당된다. 제어 정보는 크게 두 가지로 나뉘어진다. 하나는 클라이언트와 서버가 통신을 절충하기 위해 주고 받는 제어 정보이고, 다른 하나는 프로토콜 스택의 동작을 제어하기 위한 정보이다. 클라이언트와 서버가 연락을 절충하기 위해 주고받는 제어 정보는 접속 동작 뿐만 아니라 데이터를 송수신하는 동작이나, 연결을 끊는 동작도 포함하여 통신 동작 전체에서 어떤 정보가 필요한지 TCP 프로토콜의 사양으로 규정하고 있다. 이 정보는 접속, 송수신, 연결 끊기 각 단계에서 전송되는 .. Dev/CS 2023. 11. 14. [네트워크] Day 2 소켓 클라이언트와 서버와의 데이터 송수신 과정에 있어서, 데이터가 오고 가는 파이프와 같은 통로가 있다. 이러한 통로의 양측 출입구를 소켓이라하며, 해당 소켓을 만드는 것으로부터 데이터 통신은 시작되며 다음과 같은 순서로 진행된다. 소켓을 만든다(소켓 작성 단계) 서버측의 소켓에 파이프를 연결한다(접속 단계) 데이터를 송수신한다(송수신 단계) 파이프를 분리하고 소켓을 말소한다(연결 끊기 단계) 위 네 가지 단계는 전부 OS 내부 프로토콜 스택에 의해서 실행된다. 다시 말해 브라우저 같은 어플리케이션이 의뢰하는 동작의 순서이다. 1. 소켓 작성 단계 클라이언트의 소켓을 만드는 과정은 소켓 라이브러리의 socket이라는 프로그램 부품을 호출하여 진행된다. 과정을 간략하게 설명하면 socket을 호출하고 난 .. Dev/CS 2023. 11. 11. [네트워크] Day 1 HTTP HTTP 프로토콜은 클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 것이다. 클라이언트에서 서버를 향해 리퀘스트 메시지를 보내고, 서버는 클라이언트에게 응답 메시지를 보낸다. 리퀘스트 메시지 안에는 URI(Uniform Resource Identifier)와 메소드가 있고, 응답 메시지 안에는 스테이터스가 담겨 있다. URI는 페이지 데이터를 저장한 파일의 이름 혹은 CGI 프로그램의 파일명을 URI로 쓴다. 메소드는 URI로 보내지는 파일을 '어떻게' 할지에 대한 동작 정보를 전달한다. 그 예로 GET, POST, PUT, DELETE와 같은 정보들이 있다. 리퀘스트 메시지의 첫 번째 행은 리퀘스트 라인이라 하며, 리퀘스트 내용을 대략적으로 파악이 가능하다. 필드명과 필드값이 있는 .. Dev/CS 2023. 11. 8. 이전 1 다음