[네트워크] TCP/IP 프로토콜의 핵심을 쉽게 이해해보자!
·
CS/Network
유레카 2기 CS 스터디 네트워크 파트 메인 운영을 준비하며 쓴 글입니다:)네트워크 기초 지식이 없더라도 최대한 잘 이해할 수 있도록 작성하기 위해 노력했습니다!   전송계층의 프로토콜일반적으로 TCP와 IP는 함께 사용되며 IP는 배달을, TCP는 패킷의 추적 및 관리를 하게 됩니다.TCP신뢰할 수 있는 통신을 위한 연결형 프로토콜 UDP독립적인 비연결형 프로토콜 비교 요약  UDP와 TCP는 각각 별도의 포트 주소 공간을 관리하므로 같은 포트 번호를 사용해도 무방합니다.즉, 두 프로토콜에서 동일한 포트 번호를 할당해도 서로 다른 포트로 간주합니다.정리해보면 다음과 같아요 😍TCPUDP연결지향적비연결지향UnicastBroadcast, Multicast중앙제어분산제어논리적물리적실시간으로 서로 연결 가능..
[네트워크] NAT
·
CS/Network
전공 수업 내용 정리 (문제 발생시 비공개합니다.) Special Addressesclassful addressing에서 일부 주소는 특수 목적을 위해 예약되어 있었다.classless addressing 체계는 classful addressing에서 이러한 특수 주소 중 일부를 상속한다.All-zero addressSource: 0.0.0.0 ☞ 모든 bit가 0인 주소아직 IP가 할당되지 않은 PC가 DHCP에게 요청 packet을 보낼 때 시작지점 주소가 할당되어있지 않으므로 0.0.0.0으로 사용하는 것고정 IPex) 네이버, 다음, 쿠팡, 11번가, 개인쇼핑몰 등...컴퓨터를 껐다 켜도 IP가 바뀌지 않는 것. 사이트 운영 시 사용.유동 IP일반 가정집에서 사용하는 모든 IP. 컴퓨터 부팅 시 ..
[네트워크] 클래스 기반 주소 지정
·
CS/Network
전공 수업 내용 정리 (문제 발생시 비공개합니다.) 클래스 기반 주소 지정 블록 내의 주소의 수 = 2^(32-n) Sample Internet Network mask네트워크 주소 추출 방법 -> mask 이용교집합처럼 생각하기. 마스크를 씌워서 더 작은 쪽으로 남긴다!Example 5.16라우터는 목적지 주소 201.24.67.32의 패킷을 수신한다. 라우터가 패킷의 네트워크 주소를 찾는 방법은? 답해당 주소는 클래스 C에 속하기 때문에 라우터가 네트워크 주소를 찾기 위해서는 클래스 C의 기본 마스크인 255.255.255.0을 적용해야 한다.  서브네팅 전위 그림은 subnetting 전의 클래스 B 주소를 사용하는 네트워크를 보여준다.하나의 네트워크는 216개의 호스트로 구성되어 있으며, 전체 네트..
[네트워크] IP 주소 개요
·
CS/Network
전공 수업 내용 정리 (문제 발생시 비공개합니다.)IP 주소 개요IPv4 주소는 32비트로 구성되어 있다.유일하고 보편적이라 할 수 있다.주소 공간은 총 2^32 개의 주소를 지원한다.주소 표현 방식은 Dotted-decimal notation을 사용한다.2진법 ↔ 10진법 변환예제 5.1: 2진법 → Dotted-decimal 표기법a. 10000001 00001011 00001011 11101111 → 129.11.11.239b. 11000001 10000011 00011011 11111111 → 193.131.27.255c. 11100111 11011011 10001011 01101111 → 231.219.139.111d. 11111001 10011011 11111011 00001111 → 249...
[네트워크] 소켓 프로그래밍: 프로토콜, 클라이언트와 서버의 함수호출
·
CS/Network
전공 수업 내용 정리 (문제 발생시 비공개합니다.) 소켓의 타입과 프로토콜의 설정프로토콜의 개념프로토콜은 컴퓨터 간의 데이터 송수신에 필요한 통신 규약으로, 개념적으로는 약속의 의미를 담고 있다. 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다.TCP 서버의 기본적인 함수 호출 순서소켓 생성: socket()소켓 주소 할당: bind()연결 요청 대기 상태: listen()연결 허용: accept()데이터 송수신: read()/write()연결 종료: close()bind 함수까지 호출이 되면 주소가 할당된 소켓을 얻게 되며, 이후 listen 함수를 호출하여 연결 요청을 받을 수 있는 상태로 변환한다.연결 요청 대기 상태로의 진입연결 요청 대기 상태로 진입하기 위해서는 일반 소켓을 서버 소켓으로 바..
[네트워크] 소켓 프로그래밍 개요
·
CS/Network
전공 수업 내용 정리 (문제 발생시 비공개합니다.)소켓 프로그래밍소켓소켓은 네트워크(인터넷)에서의 연결 도구로, 운영체제에 의해 제공되는 소프트웨어적인 장치소켓을 사용하면 프로그래머는 데이터 송수신에 대한 물리적, 소프트웨어적 세부 사항에 신경 쓰지 않고도 네트워크 프로그래밍을 할 수 있다.소켓의 비유와 분류TCP 소켓은 전화기에 비유될 수 있습니다. 전화기를 사용하는 방식에 따라 전화를 거는 용도(클라이언트)의 소켓과 전화를 받는 용도(서버)의 소켓으로 나눌 수 있으며, 이 두 소켓의 생성 방법에는 차이가 있다.서버 소켓의 생성 (전화를 받는 소켓)1단계: 소켓 생성 (socket 함수 호출)서버 소켓은 socket 함수를 호출하여 생성한다.int server_sock = socket(AF_INET, ..
[네트워크] TCP 타이머, 옵션
·
CS/Network
전공 수업 내용 정리 (문제 발생시 비공개합니다.)TCP 타이머재전송 타이머영속 타이머킵얼라이브 타이머시간대기 타이머킵얼라이브 타이머(keepalive timer)오랜 기간 동안 idle 상태에 있는 것 방지서버가 2시간 동안 클라이언트로부터 세그먼트를 전송받지 못하면, probe 세그먼트 전송cf. https, s+a, a이 먼저 셋업되어야 요청을 보낼 수 있다.RTT 측정*RTT: Round Trip Time, 왕복 시간RTTm: 측정값Smoothed RTT (평균)처음: 아무 값도 설정 안 됨첫 번째 측정 시: RTTs = RTTm ☞최초 측정값을 평균으로 대입해서 시작첫 번째 이후의 측정 시: RTTs = (1-α)RTTs + α RTTm → (7/8)기존 평균값 + (1/8)측정값새로운 측정값에..
[네트워크] TCP segment, control
·
CS/Network
전공 수업 내용 정리 (문제 발생시 비공개합니다.) TCP segmentsending buffer보내는 버퍼는 버퍼 안에 보내 복사본을 그대로 가지고 있음(재전송이 필요할까봐)recieving buffer패킷 번호 매기기각 연결에서 전송되는 데이터의 바이트는 TCP에 의해 번호가 매겨짐.번호 매기기는 임의로 생성된 번호로 시작Cumulative ACK현재 사용하는 TCP 방식다음 번에 받고 싶은 번호를 보냄TCP segment 형식옵션마다 헤더 길이가 달라질 수 있음→ 이를 표현하기 위해 HLEN 사용(보낼 때 %4, 받을 때 *4)IP(발신지 16 + 목적지 16) + seq(32) + ack(32) + 헤더(4) + 예약(6)제어 필드(6) + 윈도우 크기(16) + 검사합(16) + 긴급 포인터(1..
[운영체제] 메모리 관리
·
CS/OS
전공 수업 내용 정리 (문제 발생시 비공개합니다.) 메모리 관리운영체제의 핵심 기능 중 하나인 메모리 관리는 프로세스가 실행되기 위해 필요한 메모리를 적절히 할당하고 관리하는 역할1. 페이징 (Paging) = 분산적재페이징은 프로세스의 주소 공간을 동일한 크기의 블록으로 나누어 메모리에 분산하여 적재하는 방법페이지(Page): 프로세스의 주소 공간을 동일한 크기의 블록으로 나눈 단위.프레임(Frame): 실제 물리적 메모리를 페이지와 동일한 크기로 나눈 블록.특징외부 단편화 없음: 모든 페이지와 프레임의 크기가 동일하기 때문에 외부 단편화 문제가 발생하지 않음주소 변환 필요: 논리 주소를 물리 주소로 변환하기 위해 페이지 테이블을 사용해야함논리 주소 구조:페이지 번호 (p): 논리 주소에서 상위 비트로..
[운영체제] 동기화
·
CS/OS
전공 수업 내용 정리 (문제 발생시 비공개합니다.)프로세스 동기화(Process Synchronization)여러 프로세스가 공유하는 자원의 일관성을 유지하는 것여러 프로세스가 서로 협력해 공유자원을 사용하는 상황에서 경쟁조건(race condition)이 발생하면 공유자원의 신뢰성이 떨어진다. 이를 방지하기 위해 프로세스들이 공유자원을 사용할 때 특별한 규칙을 만드는 것경쟁 상황(race condition)여러 프로세스(또는 스레드)가 공유자원에 동시에 접근할 때 공유자원에 대한 접근 순서에 따라 실행 결과가 달라질 수 있는 상황동시에 접근할 때 자료의 일관성을 해치는 결과가 나올 수 있다.임계구역(critical section)여러 프로세스 또는 스레드가 자원을 공유하는 상황에서 하나의 프로세스만 접..
[운영체제] 스레드
·
CS/OS
전공 수업 내용 정리 (문제 발생시 비공개합니다.) 스레드와 동기화프로세스와 스레드의 기본 개념프로세스실행 중인 프로그램의 인스턴스리소스 소유권의 단위이며 스케줄링/실행의 단위메모리, I/O 채널, I/O 장치, 파일 등의 리소스를 소유스레드프로세스 내의 실행 단위동일한 프로세스 내의 다른 스레드와 리소스를 공유경량 프로세스(lightweight process)라고도 불림멀티스레딩의 이점1. 응답성 향상프로그램의 일부가 블록되어도 계속 실행 가능I/O와 연산을 동시에 수행 가능RPC(원격 프로시저 호출) 등에서 동시 응답 처리 가능2. 리소스 공유와 비용 절감새로운 PCB 생성이 불필요프로세스 간 전환보다 스레드 간 전환이 빠름동일 프로세스 내 스레드들은 메모리를 통해 직접 통신 가능3. 병렬 처리멀티코..
[운영체제] 프로세스 스케줄링
·
CS/OS
전공 수업 내용 정리 (문제 발생시 비공개합니다.) 프로세스 스케줄링1. CPU 버스트와 I/O 버스트CPU 버스트: CPU가 작업을 실행하는 데 걸리는 시간I/O 버스트: CPU가 I/O를 대기하는 데 걸리는 시간CPU - I/O 버스트 주기: 각 프로세스 실행은 CPU 실행 및 I/O 대기 주기로 구성프로세스 유형에 따라 CPU 및 I/O 버스트가 변경될 수 있음.(a) CPU 기반: 긴 CPU 버스트 후 I/O 차단(b) I/O 기반: 짧은 CPU 버스트 후 I/O 차단2. 프로세서 스케줄링의 목적프로세서를 시스템 목표를 충족하는 방식으로 실행할 프로세스를 할당.3. 프로세서 스케줄링의 유형장기 스케줄링: 새로운 프로세스를 시스템에 진입시킬지 결정.중기 스케줄링: 멀티프로그래밍 정도를 제어하고 프로..