전체 글 109

4. 캡슐화와 역캡슐화

인터넷에서 프로토콜 계층화를 할 때 중요한 개념 중 하나가 캡슐화/역캡슐화이다. Encaptulation/Decaptulation 발신지 호스트에서의 캡슐화 발신지에서는 오직 캡슐화만 수행한다. 응용계층의 메시지는 전송계층에 전송된다. 전송계층은 페이로드(Payload)로 메시지를 받는다. 전송계층은 전송계층헤더를 페이로드에 붙이는데, 발신지와 도착지 응용프로그램들의 식별자들과 더불어 메시지의 end to end전송을 위해 필요한 추가적인 정보들 예를 들어 흐름, 오류, 혼잡제어를 위해 필요로 하는 정보를 포함한다. 그리고 전송계층은 이 패킷을 네트워크 계층에 보낸다. 네트워크 계층은 전송계층패킷을 데이터 도는 페이로드로 받아 자신의 헤더를 페이로드 앞에 추가한다. 이 결과물은 데이터그램이라고 불리는 네..

3. TCP/IP

TCP/IP(Transmission Control Protocol/Internet Protocol) TCP/IP는 현재 인터넷에서 사용하는 Protocol Suite(여러 계층들에서 조직된 프로토콜 세트)이며 상호 작용하는 모듈들로 이루어진 계층적 프로토콜이다. 계층적(hierarchical)이라는 말은 각 상위 계층 프로토콜이 한 개 이상의 하위 계층 프로토콜로부터 제공되는 서비스들의 지원을 받는다는 의미이다. A와 B가 통신을 할 때 발신지 호스트는 응용계층에서 메시지를 생성하고 그것을 아래 계층들에게 보냄으로써 메시지가 물리적으로 목적지 호스트까지 보내진다. 목적지 호스트는 물리 계층에서 통신을 받고 그것을 다른 계층들을 거쳐 응용 계층으로 전달한다. 응용계층, 전송계층, 네트워크 계층은 End t..

2. Protocol과 Protocol Layering

Protocol 프로토콜이란 효율적인 통신을 위해 송신자와 수신자, 그리고 그 사이의 모든 중계기들이 따라야 할 규칙이다. 통신이 간단하면 간단한 프로토콜이 필요하며, 복잡한 통신에는 프로토콜 계층화가 필요하다. Protocol Layering 위 그림과 같이 매우 단순한 통시은 단 하나의 계층만을 이용하여 발생한다. 하지만 이러한 단순한 시나리오에서도 규칙들이 필요하다. 친구 간에 사용하는 단어를 한정해야 하며, 서로 만났을 때 인사를 하고, 두 사람 모두 이야기 할 기회가 있어야한다. 이런 것이 모두 규칙, 즉 프로토콜이다. 또한 동등한 상황이 아닌 교수님과 학생들사이의 대화에서도 수업중이라고 가정한다면, 교수님은 일방적으로 말을 하고 학생은 손을 들고 교수님의 허락이 떨어지면 말을 할 기회를 얻게 ..

1 . Network 와 internet

네트워크란 통신 가능한 장치들의 상호연결(interconnection) 장치(device)는 Host device(랩탑, 스마트폰 등) 일 수도 있고, Connecting Device(라우터, 스위치, 모뎀 등)일 수도 있다. 네트워크에는 LAN(Local Area Network), WAN(Wide Area Network) 등 여러 종류가 있음 Switching(교환) 인터넷은 스위치가 둘 이상의 링크를 연결하는 교환식 네트워크이다. 스위치는 필요할 때 한쪽 링크에서 다른 족 링크로 데이터를 포위딩한다. 교환식 네트워크에는 크게 두 가지가 있다. Circuit - switched network (회선 교환 네트워크) Circuit - switched network는 두 종단 시스템 사이에 회선(Curcu..

C언어 - 백준 알고리즘 2884 알람시계

설정한 시간보다 45분 일찍 울리는 알람시계를 만드는 문제이다. RAPTOR를 활용하여 순서도를 먼저 만들어보았다. 이 알고리즘을 만들기 위해서 고려해야 할 점은, 시계는 60분이 한 시간이라는 것. 그리고 설정한 시간보다 45분 일찍 울리는 점이라는 것을 생각하여야 한다. 설정한 시각이 xx시 44분이라면 '시'가 바뀌게 되고, 45분 이상이라면 '시'가 유지된다. 그래서 if문을 사용하여 설정한 시각이 45분보다 빠를 때, '시'에서 1을 빼고 한시간이 60분이니 (minute + 60) -45 를 한다. 하지만 이 순서도는 잘못된 순서도이다. 하지만 이 순서도에서 내가 생각하지 못한 점이 있다. 시간은 24시간 이므로, 0시에서 1을 빼면 23시가 되어야 한다는 것 *if문을 중첩시켜 hour가 0..

알고리즘 2022.04.12

소수(Prime number) 찾기 문제

소수의 정의란? 소수(素數, [소쑤])는 수학에서 1과 그수 자신 이외의 자연수로는 나눌 수 없는, 1보다 큰 자연수이다. 소수를 찾기위해, RAPTOR를 이용하여 Flowchart 를 만들어보았다. 먼저 자연수 하나를 입력으로 받고 , 2부터 1씩 증가시키면서 나눈다. 1부터 시작하지 않는 이유는 1로 나누면 몫이 자기 자신이기 때문에 2부터 시작해서 1씩 증가시킨다. 그래서 나누어지는 수를 넘지 않을 때 까지 for문 loop를 돌린다. 연산을 한 뒤, 나머지가 0이 된다면 소수가 아닌 것이다. (ex. 9 % 3 의 나머지는 0, 9는 소수가 아님) 그래서 나머지를 result라는 변수에 담고 if문을 사용하여 result가 0이 된다면 not_prime_number에 1을 할당한다. (not_pr..

알고리즘 2022.04.10

C언어 - 백준 알고리즘 10926번

가입하려고 하는 사이트에 이미 존재하는 아이디가 주어지고, 알파벳 소문자로만 이루어져 있고, 길이는 50자를 넘지 않아야 한다. 길이가 50자를 넘지 않는다는 점을 생각하여, 캐릭터 형 배열을 생성한다. 그리고 출력하는 부분의 코드를 보면 ?\?! 라고 되어있는 모습을 볼 수 있는데, 그 이유는 삼중자 때문이다. 삼중자는 자주 쓰지 않는 문자의 조합으로 다른 문자를 표현하는 것인데, 특징은 두 개의 연속되는 ?(물음표)로 시작한다는 것이다. 이 문제에서는 이런 삼중자를 막기 위해 ?\?!로 표현하는 것이다.

알고리즘 2022.04.10