본문 바로가기

전체 글

(82)
패킷 전송(Packet Delivery)_ARP 그동안 패킷전송의 여러 이론적 측면을 살펴보았다. 그렇다면 패킷전송은 실제로 어떻게 이루어질까? 전송 데이터는 각 Layer를 거치며 여러 헤더가 붙는다. Layer 7부터 내려와 여러 헤더가 붙은 DataLink Layer에서의 데이터는 다음과 같다. 이때 데이터를 frame이라고 한다. Layer 2의 헤더내용에서 DA와 SA가 있는데 이는 각각 Destination Address, Source Address이다. IP Address는 부족한 IP주소체계를 해결하기 위해 서브넷 마스킹이나 여러 작업들을 거치기 때문에 전세계적으로 unique하다고 볼 수 없다. 그렇다면 이 지구에서 나만의 핸드폰을 나타내기 위해선 어떤 주소가 필요할까? 이럴때 사용하는 것이 MAC Address이다. IP 주소는 gl..
C++ 백준 13160 (최대 클리크 구하기) 백준 13160 (최대 클리크 구하기) https://www.acmicpc.net/problem/13160 13160번: 최대 클리크 구하기 그래프 이론에서 클리크란, 완전 그래프인 부분 그래프를 의미한다. 즉, 정점으로 이루어진 집합 중 모든 두 정점 사이에 간선이 있는 집합을 의미한다. 최대 클리크는 그러한 집합 중 크기가 가 www.acmicpc.net 클리크란 어떤 그래프내에 존재하는 sub 완전그래프이다. 여기서 완전그래프란 모든 노드가 서로 연결되어있는 그래프를 뜻한다. 설명 문제에서 가져온 그림이다. 직선들을 쭉 나열했을 때 가장 많이 겹치는 부분에서의 포함되는 숫자를 찾으면 되는 것이다. 위의 경우에는 빨간 세로선일때 1 2 4가 겹쳐지면서 가장 많이 겹쳐질 때 이므로 최대 클리크는 1 2..
CH5 : Network Layer Control Plane (2) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * 지난 강의에서는 라우팅 알고리즘들 (링크-스테이트, 벡터-디스턴스)에 대해서 알아보았다. 그러나 그 내용들은 그저 이론적인 이야기이다. 예를 들어 링크-스테이트 알고리즘에서는 모든 네트워크의 트래픽 정보를 알아야 하는데, 실제 인터넷 네트워크는 너무너무 방대하고 크다. 이전 글에서는 모든 네트워크가 flat한(계층적이 아닌)구조를 가지고 있다고 가정하고 생각했는데 위에서 말했듯이 실제 인터넷 네트워크는 매우 크기때문에 실질적으로 구현은 불가능하다. 또한 인터넷은 sub network들의 network인데 각 sub network의 관리자들은 자신의 네트워크 안에 있는 h..
TCP 소켓프로그래밍으로 웹서버 구현하기 네트워크 강의를 들으면서 배운 TCP 소켓프로그래밍을 통해 간단한 웹서버를 구현하였다. 일단 이 내용을 따라오기 위해선 소켓프로그래밍에 대한 이해가 필요한데 내 블로그에 자세한 설명이 있으므로 읽고오자! 또한 전문지식이 부족한 내가 직접 구현한 코드이므로 살짝 조잡하긴 하다. 1. 소켓프로그래밍 (1) (링크) Socket Programming (소켓 프로그래밍) (1) API API란 시스템이 어플리케이션에 제공하는 인터페이스이다. API에는 여러 종류가 있는데 우리는 TCP/IP에서 쓰이는 다양한 API중 Sokcet에 대해 알아 볼 예정이다. TCP/IP에 쓰이는 API는 Socket말고도 TL tjdahr25.tistory.com 2. 소켓프로그래밍 (2) (링크) Socket Programmin..
CH5 : Network Layer Control Plane (1) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * Routing 목적지까지 데이터를 보낼 때 어떤 경로를 거쳐 보내야 할지 정하는 것은 매우 중요하다. 실제로 src에서 dst까지 다양한 경로가 존재할 수 있기 때문에 최적의 path를 찾기 위한 방법을 제시해주는 것이 Routing Algorithm이다. 이때 라우터와 그 간의 링크들은 그래프에서 vertex와 edge로 표현될 수 있다. 이렇게 각 링크의 트래픽양이 다르고 어떤 경로를 통해 데이터를 보냈을 때 가장 적은 트래픽의 영향을 받으며 보낼 수 있을까? 알고리즘 파트에서 배웠던 그래프에서의 최단거리 알고리즘들이 떠오른다. (벨만포드, 다익스트라, 플로이드.....
CH4 : Network Layer (4) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * IPv6 IPv6가 나오게된 배경은 그동안 말했듯이 IPv4의 주소부족현상 때문이다. 때문에 주소의 bit수를 늘려서 더 많은 주소를 처리할 수 있게끔 한다. 또한 IPv4에 비해 헤더도 바뀌었는데, 목적은 더 빠른 프로세싱과 QoS를 지원하기 위해서다. 헤더의 변화는 다음과 같다. 한눈에 보기 편한 그림이 있어서 가져왔다. 일단 헤더의 길이는 기존 IPv4에서는 가변이었다. (20~60) 그러나 IPv6에서는 헤더의 크기가 40으로 고정이기 때문에 헤더의 길이에 대한 부분과 옵션에 대한 부분이 없어졌다. 또한 IPv6는 fragmentation을 지원하지 않는다. 때문..
C++ 백준 16496 (큰 수 만들기) 백준 16496 (큰 수 만들기) https://www.acmicpc.net/problem/16496 16496번: 큰 수 만들기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 리스트에 포함된 수가 주어진다. 수는 공백으로 구분되어져 있고, 1,000,000,000보다 작거나 같은 음이 아닌 정수 이다. 0을 제외한 나 www.acmicpc.net 간단한 정렬을 통해 풀 수있는 문제였다. 프로그래머스에도 똑같은 문제가 있는데, 프로그래머스에서 풀다가 백준에 똑같은 문제가 있길래 이 문제로 설명을 하겠다. 설명 아이디어는 간단하다. 어떤 문자열 A와 B가 있을 때 A+B가 큰지 B+A가 큰지를 비교해 정렬을 하면 된다. 아이디어는 참 간결하고 구현도 쉬운데 왜 티어가 플래티넘..
CH4 : Network Layer (3) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * DHCP(Dynamic Host Configuration Protocol) DHCP는 host가 켜졌을 때 자동으로 네트워크를 찾게 해주는 프로토콜이다. (예를 들어 우리가 컴퓨터를 키면 컴퓨터가 자동으로 네트워크를 찾아주듯이) DHCP서버는 전원이 켜진 host에게 자신의 서브넷 네에서 사용할 수 있는 IP를 할당해주는데, 한번 IP를 주고나서 host가 네트워크를 사용하지 않는데도 IP를 할당받은 채로 있으면 IP주소의 낭비가 발생한다. 따라서 lifetime도 함께 넘겨줘서 해당 시간내에 다시 요청이 오지 않으면 클라이언트는 할당받은 IP를 반납하는 식으로 구성된다..