반응형 분류 전체보기313 TCP & UDP 이전 글들을 통해 전송 계층에서 신뢰적인 데이터를 전송하기 위해 어떠한 상황들을 고려하고 구축했는지 간단하게 살펴봤다. 이번에는 최종적으로 구축한 프로토콜을 토대로 현재 TCP/IP 전송계층에서 사용되는 대표적인 프로토콜 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)에 대해서 알아보자. TCP와 UDP는 전송계층의 프로토콜로 모두 세그먼트를 한 컴퓨터에서 다른 컴퓨터로 전달해 주는 IP 프로토콜(비신뢰적)을 기반으로 구현되어 있는 프로토콜이다. 하지만 두 프로토콜은 상당히 다른 특징을 가지고 있다. 하나씩 살펴보자. TCP(Transmission Control Protocol) TCP는 연결 지향형, 신뢰적인 데이터 전송 서비스를.. 2021. 7. 8. rdt3.0의 성능과 N부터 반복(Go-Back-N, GBN) & 선택적 반복(Selective Repeat, SR) 이전 글에서 rdt3.0이 기능적으로는 정확한 프로토콜이지만 성능이 오늘날의 고속 네트워크에선 만족스럽지 못하다고 언급하였다. 그 이유는 전송-후-대기(Stop-and-Wait) 프로토콜이기 때문이다. 그렇다면 왜 전송-후-대기 프로토콜이 성능이 좋지 못한지 한 번 알아보자. 전송-후-대기의 단점은 송신자가 수신자에게 패킷을 한 번 보내면 송신자는 수신자의 반응을 확인하기 전까지는 다른 패킷을 수신자에게 보낼 수가 없다는 것이었다. 간단하게 그림으로 이해해 보자. A, B 두 종단 호스트가 존재한다고 하자. 두 종단 시스템 사이의 광속 왕복 전파 지연(RTT)은 대략 30 msec이다. 또한 1 Gbps(초당 10^9 비트) 전송률(R)을 가진 채널에 의해 연결되어 있다고 가정하자. 헤더 필드와 데.. 2021. 7. 8. 신뢰적인 데이터 전달 프로토콜의 구축 이전에 TCP/IP 4계층 전송 계층에서 데이터를 전송하기 위해 사용되는 대표적인 프로토콜은 TCP, UDP가 있다고 하였다. TCP, UDP의 차이 중 하나는 신뢰적인 서비스를 제공해 주냐이다. TCP는 신뢰적인 서비스를 제공해 주는 반면, UDP는 비신뢰적인 서비스를 제공해 준다. TCP, UDP를 배우기 앞서 최종적인 신뢰적인 데이터 전송 프로토콜(Reliable Data Transfer Protocol : rdt)이 어떠한 과정을 통해 구축되었는지 한 번 짚고 넘어가도록 하자. 완전한 신뢰적 데이터 전송 프로토콜에 도달하기 위해서는 총 4가지 단계를 거친다. 천천히 살펴보도록 하자. 단, 단방향 데이터 전송(Unidirectional Data Transfer)의 경우인 송신 측으로부터 수신 측까지.. 2021. 7. 8. 프로토콜, OSI 7계층, TCP/IP 4계층 OSI는 Open System Interconnection의 약자로써 다른 시스템 간의 원활한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약(Protocol)이다. TCP/IP는 Transmission Control Protocol의 약자로써 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜이다. 그렇다면 여기서 말하는 프로토콜(Protocol)은 무엇을 뜻하는 걸까? 프로토콜이란 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약이다. 이게 무슨 말이냐면 예를 들어 우리는 상대방과 의사소통하기 위해 먼저 인사를 한다. 상대방이 의사소통을 이어나가길 원한다면 똑같이 인사를 해줄 것이고 아니라면 무시하거나 부정적인.. 2021. 7. 8. 백준 15483 : 최소 편집 https://www.acmicpc.net/problem/15483 15483번: 최소 편집 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 소문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. www.acmicpc.net [ 문제풀이 ] 편집 거리 알고리즘으로 유명한 문제이다. dp 테이블을 다음과 같이 정의하자 dp[i][j] : A.substring(0,i+1)으로 B.substring(0,j+1)를 편집하는 최소횟수 만약 A의 i번째 문자와 B의 j번째 문자가 같다면 dp[i][j]의 값은 무엇일까? 두 문자열의 마지막 문자가 같기 때문에 마지막 문자에 관한 편집은 할 필요가 없다는 것을 알 수 있다. 즉, 마지막 문자가 없는 상태인 A의 i-1번째까지의 문자열로 B의 j-.. 2021. 7. 8. [Java] final 키워드 Java에서는 상수(변경할 수 없는 값)를 표현하기 위해서 final 키워드를 사용한다. final 키워드는 변수, 메서드, 클래스에 사용할 수 있는데 각각 조금씩 의미가 다르다. 이들의 차이에 대해서 한 번 알아보도록 하자. final 변수 흔히 MOD, INF, MAXSIZE 등 변하지 않고 정해진 값(상수)을 표현하기 위해 사용하는 방식으로 변수 앞에 final 키워드를 붙여서 사용한다. 상수를 표현할 때는 자바 명명 관습(Java Naming Conventions)에 따라서 대문자를 사용하고 두 단어 이상 사용될 시 단어 사이에 언더바(_)를 사용하여 표현해 준다. public class Main { final int MOD = 10009; public static void main(Stri.. 2021. 7. 7. 멀티 프로세싱 vs 멀티 프로그래밍 vs 멀티 태스킹 vs 멀티 스레딩 운영체제를 공부하다 보면 멀티(Multi)가 붙은 용어들이 많다는 것을 알 수 있다. 대표적으로 멀티 프로세싱(Multi-processing), 멀티 프로그래밍(Multi-programming), 멀티 태스킹(Multi-tasking), 멀티 스레딩(Multi-threading)이 존재한다. 이들에 대해서 한번 알아보도록 하자. 멀티 프로세싱(Multi-processing) 멀티 프로세싱은 다수의 프로세서가 협력적으로 일을 처리하는 것을 의미한다. 여기서 주의해야 할 점은 프로세스가 아니라 프로세서이다. 보통 하나의 프로세서(CPU)가 하나의 작업을 맡지만 멀티 프로세싱은 다수의 프로세서가 다수의 작업을 함께 처리하는 것을 의미한다. 멀티 프로세싱의 장점은 하나의 프로세서가 고장이 나더라도 해당 프.. 2021. 7. 7. 동시성(Concurrency) vs 병렬성(Parallelism) 동시성과 병렬성은 전혀 다른 개념이지만 헷갈리기 쉬운 용어라 혼동되어 사용하는 경우가 많다. 이번 기회에 이 둘에 대해서 확실하게 개념을 정리하도록 하자. 음료를 판매하는 카페를 예시로 두 개념의 차이를 알아보자. 먼저 동시성(Concurrency)이다. 동시성은 말 그대로 동시에 작업을 수행하는 것을 의미한다. 카페에서 손님이 음료를 주문하게 되면 직원은 결제 후 음료를 만들어서 제공한다. 이는 CPU에 해당하는 직원이 주문, 결제, 생산이라는 3가지의 프로세스를 진행하여 최종적으로 손님에게 음료를 제공한다고 이해할 수 있다. 여러 명의 손님이 대기하고 있다고 하자. CPU는 한 번에 하나의 프로세스만 수행할 수 있다. 현재 손님이 주문한 음료가 만드는데 시간이 많이 걸리는 음료라면 뒤에 있는 손.. 2021. 7. 7. 가상기억장치 구현 시 시스템 성능에 영향을 미치는 요소 가상기억장치를 구현할 때 페이지 크기, Locality, 워킹 셋, 페이지 부재 빈도, 프리페이징 등 다양한 요소들이 시스템 성능에 영향을 미친다. 각각에 대해서 간단하게 살펴보도록 하자. 첫 번째로 페이지 크기이다. 페이징 기법을 사용하면 프로그램을 페이지 단위로 나누게 되는데, 페이지의 크기에 따라 시스템에 미치는 영향이 다르다. 페이지 크기가 작을 경우 페이지 단편화가 감소되고, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어듬 불필요한 내용이 주기억장치에 적재될 확률이 낮으므로 효율적인 워킹 셋을 유지할 수 있음 Locality에 더 일치할 수 있기 때문에 기억장치 효율이 높아짐 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어짐 디스크 접근 횟수가 많아져서 전체적인.. 2021. 7. 7. 이전 1 ··· 26 27 28 29 30 31 32 ··· 35 다음 반응형