CS

    [Network] 트랜트포트 계층 : TCP 연결 (연결 지향형)

    [Network] 트랜트포트 계층 : TCP 연결 (연결 지향형)

    TCP 연결 TCP의 특징 TCP는 애플리케이션 프로세스가 데이터를 다른 프로세스에게 보내기 전에, 두 프로세스가 서로 "핸드셰이크"를 먼저 해서 연결을 시키는 사전 작업이 필요하다. 따라서 TCP는 연결을 성공시킨 뒤 데이터를 확실하게 주고 받는 연결 지향형이다. 즉, 데이터 전송을 보장하는 파라미터들을 각자 설정하기 위한 사전 세그먼트들을 보내야 한다. 파라미터로는 송수신 포트번호 등이 있다. TCP 프로토콜은 오직 종단 시스템에서만 동작하고 중간의 네트워크 계층의 요소들(라우터, 스위치) 에서는 동작하지 않는다. 따라서 중간의 네트워크 계층의 요소들은 TCP 연결상태를 유지하지 않고, 현재 전송되는 데이터가 TCP 방식인지도 알 수 없다. TCP 연결은 전이중(full-duplex)서비스를 제공한다..

    [Network] 트랜스포트 계층 : 다중화와 역다중화

    트랜스포트 계층의 다중화와 역다중화에 대해서 알아보자 다중화와 역다중화 애플리케이션의 한 부분으로서 프로세스는 소켓을 가지고 있다. 소켓을 통해서 프로세스와 프로세스가 네트워크를 통해 데이터를 주고받을 수 있다. 위 그림을 보면 트랜스포트와 애플리케이션 계층 사이에 소켓(초록 네모 박스)이 있고 소켓과 프로세스가 연결되어 있음을 볼 수 있다. 따라서 트랜스포트 계층은 메시지를 직접 프로세스로 전달하지 않고 중간 매개자인 소켓에게 전달한다. 이때 애플리케이션이 메시지를 받을 다양한 소켓을 가지고 있을 수 있으므로 각 소켓은 TCP 소켓인지 UDP 소켓인지를 구분하는 식별자를 가지게 된다. 역다중화 트랜트포트 계층에 상대 프로세스로부터 수신된 세그먼트 필드 집합이 있다. 이들은 사전에 설정된 트랜스포트 프로..

    [Network] 트랜스포트 계층 : 개요(Intro)

    [Network] 트랜스포트 계층 : 개요(Intro)

    인터넷 5계층에서 애플리케이션 계층과 네트워크 계층 사이에 있는 '트랜트포트 계층'의 프로토콜에 대해서 알아보자 트랜스포트 계층 개요 트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공한다. 논리적 통신은 애플리케이션의 관점에서 보면 프로세스들이 동작하는 다양한 호스트들이 직접 연결된 것처럼 보인다는 의미이다. 하지만 실제로 호스트들은 수많은 라우터와 다양한 형태의 물리 링크를 통해 연결된 지구상의 다른 지역에 있을 수 있다. 트랜스포트 계층 프로토콜은 네트워크 엣지에서 구현된다. 송신 측의 트랜스포트계층은 애플리케이션 프로세스로부터 받은 메시지를 세그먼트 패킷으로 변환한다. 세그먼트는 트랜스포트 계층의 헤더와 애플리케이션 계층의 메시지를 캡슐화 한 ..

    [Network] 인터넷 프로토콜 계층과 캡슐화

    [Network] 인터넷 프로토콜 계층과 캡슐화

    인터넷은 매우 복잡하다. 하지만 이렇게 복잡한 인터넷 네트워크 구조도 결국 조직화 되었다. 우리가 이용하는 항공 시스템을 생각해보자. 비행기에 수하물을 보내서 이동시키는 과정은 다음과 같다. 네트워크에서 우리가 전송하려는 메시지를 수하물이라고 생각하면 될 것 같다. 수하물을 공항에서 검사 후 비행기에 태운다. == 호스트에서 데이터를 접속 네트워크에 보낸다. 비행기가 이륙한다. == 데이터가 통신 링크를 통해서 다음 라우팅 지점으로 향한다. 비행기가 관제탑의 지시를 받아 방향을 전환 한다. == 데이터의 헤더에 있는 정보를 통해서 라우터는 데이터의 다음 링크를 정해준다. 비행기가 착륙해서 수하물을 내려준다. == 도착지 호스트가 데이터를 받는다. 위와 같이 우리가 사용하는 시스템이 네트워크에도 비슷하게 ..

    [Network] 네트워크 코어

    [Network] 네트워크 코어

    [Network] 인터넷이란? Intro 인터넷은 전 세계적으로 수십억 개의 컴퓨팅 장치를 연결하는 컴퓨터 네트워크이다. 네트워크 가장자리 인터넷의 모든 장치(데스크톱 PC, 리눅스 서버, 스마트폰, 태플릿, TV, 게임 콘솔 등)은 호 hyeo-noo.tistory.com 지난 포스팅에서 인터넷의 가장자리를 살펴보았으므로 이제 네트워크 코어, 즉 인터넷의 종단 시스템을 연결하는 패킷 스위치들과 링크들의 연결망을 좀 더 자세히 알아보자. 네트워크 코어 호스트에서 호스트로 데이터를 전송하기 위해서 중간의 라우터들이 데이터를 전달 해 주어야 하는데 특정 라우터에서 다음 라우터로 데이터를 포워딩 해주는 기능이 코어 네트워크의 주 기능이다. 특정 패킷이 코어에 있는 라우터에 도달하게 되면 패킷에 담겨져 있는 목..

    [Network] 인터넷이란? Intro

    [Network] 인터넷이란? Intro

    인터넷은 전 세계적으로 수십억 개의 컴퓨팅 장치를 연결하는 컴퓨터 네트워크이다. 네트워크 가장자리 인터넷의 모든 장치(데스크톱 PC, 리눅스 서버, 스마트폰, 태플릿, TV, 게임 콘솔 등)은 호스트 혹은 종단 시스템이라고 불린다. 데이터 전송 기초 종단 시스템은 통신 링크와 패킷 스위치가 있는 네트워크로 연결된다. 통신 링크에서는 다양한 전송률을 이용해서 패킷을 전송한다. 전송할 데이터가 만들어지면 종단 시스템에서 해당 데이터를 세그먼트로 나누고, 각 세그먼트에 헤더를 붙인다. 이렇게 만들어진 정보는 '패킷' 이라고 불리며 목적지까지 전송된다. 패킷 스위치는 라우터와 링크 계층 스위치를 가장 널리 사용한다. 스위치는 최종 목적지 방향에 있는 통신 링크로 패킷을 전달한다. 링크 계층 스위치는 보통 엑세스..

    [OS] Virtual Memory #1

    [OS] Virtual Memory #1

    Virtual Memory 각각 가상화된 OS들이 자신만의 물리 메모리가 있다고 믿게 해주기 위해 메모리 가상화를 사용한다. 메모리 가상화의 목표 투명성 프로세스는 메모리가 가상화 된 사실을 몰라야 한다. 효율성 메모리 공간의 파편화를 최소화 한다. (공간 효율) 하드웨어의 도움을 받아 오버헤드를 줄인다. (시간 효율) 보안 OS와 프로세스를 다른 프로세스로부터 보호해야 한다. 프로세스 각각은 독립적이어야 한다. 오른쪽이 실제 물리 메모리 공간이고 왼쪽이 가상 메모리 공간이다. 하드웨어의 도움을 받아 가상메모리 주소를 실제 물리 메모리 주소로 변환해 사용할 수 있다. 주소 변환 OS는 물리 메모리 공간의 어디가 비어있는지, 어디가 사용중인지를 추적할 수 있어야 한다. 메모리 공간의 주소는 물리 메모리에 ..

    [OS] Scheduling #3

    [OS] Scheduling #3

    Scheduling [하루OS] Day-6 Scheduling 어제에 이어서 Scheduling을 좀 더 알아보자 지난번 정리 SJF는 turnaround time을 최적화하는데 유용한 방법이다. RR은 빈번한 context switching을 통해서 response time을 줄이는데 최적화된 방법이.. hyeo-noo.tistory.com Starvation 짧은 수행 시간을 가진 interactive job이 너무 많아진다면 우선순위가 낮은 queue에 배치된 작업은 작업(오래 걸리는 작업)은 수행할 수 없게 된다. Game the scheduler 만약 time slice의 99%를 I/O 작업이 가져가 버린다면 오래걸리는 job들은 오히려 CPU를 거의 사용하지 못하게 될 수도 있다. 프로그램의..

    [OS] Scheduling #2

    [OS] Scheduling #2

    Scheduling 이어서 Scheduling을 좀 더 알아보자 지난번 정리 SJF는 turnaround time을 최적화하는데 유용한 방법이다. RR은 빈번한 context switching을 통해서 response time을 줄이는데 최적화된 방법이다. 사용하는 프로그램마다 제각기 다른 특성을 가지고 있다. 한 번에 끝내는게 효율이 좋거나, 여러 번 나눠서 끝내는 게 좋거나 등등 스케줄러가 프로그램의 특성을 파악하고 그에 따라 더 나은 결정을 할 수 있다면 얼마나 좋을까 MLFQ (Multi-Level Feedback Queue) MLFQ는 여러개의 구별된 queue로 구성되고 각각 다른 우선순위를 가진다. 규칙 1 : A의 우선순위 > B의 우선순위 , A를 실행한다. 규칙 2 : A의 우선순위 =..

    [OS] Scheduling #1

    [OS] Scheduling #1

    Scheduling 지금까지 프로세스와 스레드에 대해 알아보았다. 오늘 내일은 프로세스의 CPU Scheduling에 대해서 알아보자 CPU Scheduling은 크게 2가지로 나뉜다 비선점형 스케줄링(Non-preemptive scheduling)과 선점형 스케줄링(Preemptive scheduling) 비선점형 스케줄링 - CPU가 프로세스를 실행하고 있다면 실행중인 프로세스가 종료되거나 스스로 CPU를 양보하기 전까지 다른 프로세스는 CPU는 사용할 수 없다. - 프로세스들 간의 협력이 중요하다. 선점형 스케줄링 - 사실상 모든 현대 스케줄러가 선점형이다 - 다른 프로세스가 CPU를 사용하고 있어도 강제로 프로세스를 쫓아내고 자신이 CPU를 사용할 수 있다. 스케줄링 알고리즘의 성능을 판단하는 척..