Computer Science 52

[Network] Transport Layer - TCP: Connection-oriented transport

한양대학교 - 컴퓨터네트워크 수업을 듣고 정리한 내용입니다. 1. TCP Segment Structure TCP Segment Structure는 Header와 data 로 구분되고 header에 있는 각 필드의 의미를 아는 것이 중요하다. 몇 가지는 앞서 Reliable Data Transfer을 공부할 때 나온 개념인데 이렇게 header에 담겨져가는 것을 보니 좀 더 이해에 도움이 된다. 1) sequence number, ACK sequence number is byte stream "number" of first byte in segment's data. ACKs(TCP uses cumulative ACK) is sequence number of next byte expectred from ot..

[Network] Transport Layer - Reliable Data Transfer(신뢰성 있는 데이터 전송; RDT)의 통신 원리, Pipelined protocols

한양대학교 - 컴퓨터네트워크 수업을 듣고 정리한 내용입니다. 1. Reliable Data Transfer란 Reliable Data Transfer(신뢰성 있는 데이터 전송; RDT)이란 application layer에서 transport layer로 전달 된 데이터가 유실 없이 상대 application layer로 전달하는 것. 하지만 unreliable 한 상황은 언제든 발생할 수 있다. What can happen over unreliable channel? 1. Message error 2. Message loss unreliable한 상황에는 이 2가지가 있다. 다시말해 이 두가지 사항만 잘 handling하면, reliable한 channel을 만들 수 있다는 것! 그래서 TCP에서 제공..

[Network] Socket Programming

한양대학교 - 컴퓨터네트워크 수업을 듣고 정리한 내용입니다. 1. Socket이란 client process와 server process간의 통신이 application program이라면 개발자나 사용자 입장에선 OS내부를 건들이는건 아니다. 그냥 OS에서 제공하는 API를 사용할 뿐! 이처럼 process와 process간 통신에서 사용하는 API를 socket이라고 한다. 그리고 이 API는 OS에서 제공해주는 것이기 때문에 제공해주는 것들 '만' 사용할 수 있다. 2. Socket Type (protocol) 다른 관점에서 생각해보면, OS에는 application layer 아래의 layer들, 즉 transport layer부터 쭉 구현되어 있다. application layer 에서는 이 t..

[Shell Script] Bash Shell Script

최근에 shell script를 접할 기회가 많았다. Shell script를 접하면서 든 생각은 1. 어떤 언어이고, 왜 쓰지?? 2. 코드를 이해하고 싶다.. 3. shell script를 작성해야 하는데 어떡하지? 지금이 공부해야 할 시간이라고 생각했고 도 참고해서 3일 정도? 빠르게 훑어보았다. 1. Kernel? Shell? Shell Script? Terminal? [운영체제] 운영체제 구조 - 시스템콜, 사용자 모드, 커널 모드 여기에도 정리해 둔 적이 있는데, 이 개념들을 다시 확실히 정리하고 시작하고 싶다. 여기서 응용 프로그램, 운영체제, 컴퓨터 하드웨어(시스템 리소스)를 도서관에 비유해보면 운영체제 - 도서관 응용 프로그램 - 시민 컴퓨터 하드웨어 - 책 - 그래서 응용 프로그램(시민..

[Network] 네트워크 계층과 네트워크 간의 연결

모두의 네트워크 를 읽고 정리한 내용입니다. 다른 네트워크에 있는 목적지로 데이터를 연결하기 위해서는 네트워크 계층의 기술이 필요 데이터 링크 계층에서는 이더넷 규칙을 기반으로 같은 네트워크에 있는 컴퓨터로는 데이터를 전송할 수 있지만, 다른 네트워크 간의 통신을 가능하게 하기 위해선는 네트워크 계층이 필요. 1. IP 1) IP 헤더 네트워크 계층에는 IP(Internet Protocol) 프로토콜이 있다. 네트워크 계층에서 캡슐화를 할 때 아래 그림과 같은 IP 헤더를 붙이고, 이렇게 데이터에 IP 헤더가 추가된 것을 IP 패킷이라고 한다. 여기에 Source IP address(출발지 IP 주소), Destination IP address(도착지 IP 주소)가 있다. 이 외의 정보들은 [TCP/IP..

[Database] Database Index

youtu.be/ZugmrJnbvdU Database Index란 데이터베이스는 파일들의 집합으로 저장되고, 각 파일은 일반적으로 동일한 유형의 레코드들의 모임으로 이루어진다. 이 파일들은 일반적으로 디스크와 같은 보조 기억 장치에 저장된다. Index는 DBMS가 파일 내의 특정 레코드들을 빠르게 찾을(특히 SELECT) 수 있도록 하는 데이터 구조이므로 인덱스를 통하여 질의를 수행하면 응답시간이 향상된다. 인덱스의 유형은 크게 단일 단계 인덱스와 다단계 인덱스로 구분된다. Index의 장/단점 1) 장점 - 검색 속도가 빨라질 수 있다. - 그 결과 해당 쿼리의 부하가 줄어들어서, 결국 시스템 전체의 성능이 향상된다. 2) 단점 - 인덱스가 데이터 베이스의 공간을 차지하기 때문에 대략 데이터 베이스 ..

[Database] 무결성 제약조건

1. 무결성 제약조건이란 데이터 무결성: 데이터의 정확성 또는 유효성을 의미 무결성 제약조건: 데이터베이스 상태가 만족시켜야 하는 조건이자 사용자에 의한 데이터 베이스 갱신이 데이터베이스의 일관성을 깨지 않도록 보장하는 수단 무결성 제약조건의 목적: 일관된 데이터 베이스 상태를 정의하는 규칙들을 명시적으로 정의하여서 권한을 가진 사용자들로부터 데이터베이스의 정확성을 지키는 것 무결성 제약조건의 장점: 스키마를 정의할 때 일관된 데이터베이스 상태를 정의하는 규칙들을 한 번만 명시하면 되고, 데이터베이스가 갱신 될 때 DBMS가 자동적으로 이러한 일관성 조건을 검사해주므로 응용 프로그램단에서 이를 일일이 신경써주지 않아도 된다. 2. 무결성 제약조건의 종류 도메인 제약조건: 각 애트리뷰터 값이 반드시 원자값..

[운영체제] 가상 메모리의 이해

가상 메모리(Virtual Memory) 리눅스의 각 프로세스마다 4GB를 차지한다. 그런데 통상 메모리는 16GB? 정도인 것도 있고, 코드는 메모리에 반드시 있어야 하는데 여러개의 프로세스들 실행할 때 메모리 크기의 한계를 어떻게 극복할 수 있을까? 즉 어떻게 하면 한정된 메모리에서 여러 프로세스를 실행시킬 수 있도록 메모리 구조를 가져갈 것인가? 이때 활용하는 것이 가상 메모리이다. 또한 가상 메모리를 통해 프로세스간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있다. 가상 메모리의 기본 아이디어는 프로세스는 가상 주소를 사용하고, 데이터를 사용(읽고/쓰기) 할 때 물리 주소로 변환해주면 된다는 것이다. 즉, 가상 메모리 시스템을 사용하기 위해서는 가상 주소(virtual add..