8.82M
Категория: ИнтернетИнтернет

Технология разработки мобильных приложений. Почему Android?

1.

ТЕХНОЛОГИЯ РАЗРАБОТКИ
МОБИЛЬНЫХ
ПРИЛОЖЕНИЙ

2.

ПОЧЕМУ ANDROID?
Наиболее популярная система в наше время
Огромный выбор смартфонов от 50$ (iOS от 299$)
Система с открытым исходным кодом
25$ за аккаунт разработчика (iOS – 99$ каждый год)
Катализатор экономического роста

3.

ANDROID: ТОГДА И СЕЙЧАС
Первый смартфон T-Mobile G1 (2008 год)
Планшеты, часы, телевизоры…
Разработка под Android
Java
2008 – Java 6
2013 – Java 7
2017 – Java 8

4.

РАЗРАБОТКА ПОД ANDROID
Java
Kotlin
до 2017 – поддержка с помощью плагинов
2017 – поддержка в Android Studio 3.0 из
коробки
Библиотеки поддержки
com.android.support:appcompat-v7:27.0.1
com.android.support:design:27.0.1
com.android.support: support-v13:27.0.1
и другие
Библиотеки добавляются в файл gradle уровня app.

5.

ВНУТРЕННЯЯ АРХИТЕКТУРА ANDROID
Дом
Приложения
Контакты
Телефон
Браузер

Платформа приложений
Диспетчер ресурсов



Библиотеки
Выполняемая среда

OpenGL|ES
SGL
Драйвер
дисплея

FreeType
SSL
SQLite
WebKit
libc
Драйвер
камеры
Ядро Linux
Драйвер
Bluetooth
Основные библиотеки
Виртуальная машина




6.

УСТАНОВКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Установка инструмента Java SE Development Kit 8
Установка интегрированной среды разработки Android Studio
Установка виртуального эмулятора/подключение
физического устройства

7.

СТРУКТУРА ПАПОК ПРОЕКТА

8.

СТРУКТУРА ПАПОК ПРОЕКТА

9.

НАДПИСЬ (TEXTVIEW)
Изменение размера:
android:textSize="14sp"
Определение в XML
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text" />
Использование надписи в коде активности
TextView tV = (TextView)
findViewById(R.id.textview);
textView.setText("Тонких Артём Петрович");

10.

ТЕКСТОВОЕ ПОЛЕ (EDITTEXT)
Определение в XML
<EditText
android:id="@+id/edit_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/edit_text" />
Атрибут android:inputType="number"
phone - предоставляет клавиатуру для ввода номеров.
textPassword - для ввода пароля.
textCapSentences - первое слово с прописной буквы.
textAutoCorrect - исправляет вводимый текст.
Использование в коде активности
EditText editText = (EditText)
findViewById(R.id.edit_text); String text =

11.

КНОПКА (BUTTON)
Определение в XML
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text" />
Использование в коде активности
android:onClick="onButtonClicked"
Затем в активности определяется метод следующего
вида:
/** Вызывается при щелчке на кнопке */
public void onButtonClicked(View view) {
// Сделать что-то по щелчку на кнопке

12.

ЭЛЕМЕНТЫ УПРАВЛЕНИЯ

13.

ПЕРЕКЛЮЧАТЕЛИ (RADIOBUTTON)
Определение в XML
<RadioGroup android:id="@+id/radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/radio_circle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/circle" />
<RadioButton android:id="@+id/radio_square"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/square" />
</RadioGroup>

14.

ЭЛЕМЕНТЫ УПРАВЛЕНИЯ
раскрывающийся список (Spinner)
графическое представление (ImageView)
графическая кнопка (ImageButton)
прокручиваемые представления (ScrollView)
уведомления (Toast)
Toast.LENGTH_LONG=3,5 с
Toast.LENGTH_SHORT=2 с

15.

ANDROID MANIFEST

16.

СТРУКТУРА МАНИФЕСТА
тег <application>
тег <activity>
тег <service>
тег <receiver>
тег <provider>
permissions
<uses-permission>

17.

INTENT
Запустить другое приложение
Открыть файл
Перейти на другой экран
Бывают: явные (explicit) и неявные (implicit)
Activity 1
Intent
Activity 2
Activity 3

18.

ИНТЕНТЫ ОБЫЧНО СОДЕРЖАТ
Имя компонента
Действие – action (ACTION_VIEW, ACTION_SEND и др.)
Категория – category
Данные – data
Дополнительные параметры

19.

ДЕЙСТВИЯ И КАТЕГОРИИ ИНТЕНТА
Действия:
ACTION_SEND
ACTION_DIAL
• ACTION_EDIT
Категории – category (CATEGORY_LAUNCHER,
CATEGORY_BROWSABLE)
Данные – data (URI)

20.

ДАННЫЕ И ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ИНТЕНТА
Данные – data (URI)
Дополнительные параметры – extras*
*Например, при создании объекта Intent для отправки
сообщения электронной почты с методом ACTION_SEND можно
указать получателя с помощью ключа EXTRA_EMAIL, а тему
сообщения - с помощью ключа EXTRA_SUBJECT.

21.

INTENT FILTER
activity
service

22.

ОПРЕДЕЛЕНИЕ РАЗМЕРОВ
Размер экрана (small, normal, large, extra-large)
Плотность экрана (dpi – dots per inch): ldpi, mdpi
(~160dpi), hdpi, xhdpi, xxhdpi, xxxhdpi
Разрешение экрана
dp = длина в пикселях * 160 / плотность экрана
px = dp * плотность экрана / 160
px – пиксели
in – inch, дюйм – примерно 2,54 см
pt – point, точка – 1/72 дюйма
sp – пиксели, не зависящие от масштаба, применяются
при указании размеров шрифтов текста

23.

ОСНОВНЫЕ КОМПОНЕНТЫ ANDROID-ПРИЛОЖЕНИЯ
Application
Activity
Service
BroadcastReceiver
ContentProvider

24.

ОСНОВНЫЕ КОМПОНЕНТЫ ANDROID
<activity android:name=“.MainActivity”></activity>
<service android:name=“.CustomService”/>
public class CustomReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: start service
}
}
ContentProvider

25.

CONTEXT
Доступ к ресурсам
Доступ к системным возможностям устройства
Динамическое изменение интерфейса
Создание файлов

26.

ЖИЗНЕННЫЙ ЦИКЛ ПРИЛОЖЕНИЯ
Жизненный цикл приложения в Android жёстко
контролируется системой и зависит от нужд пользователя,
доступных ресурсов
Android всегда уничтожает активити, а не компоненты

27.

ПРИОРИТЕТЫ ПРОЦЕССОВ В ANDROID
Процессы
переднего
плана
Видимые
процессы
Служебные процессы
Фоновые процессы
Пустые процессы

28.

ОСНОВНЫЕ МЕТОДЫ ЖИЗНЕННОГО ЦИКЛА
Resumed
(visible)
onResume()
onStart()
Create
d
onCreate()
Started
(visible)
onResume()
onStart()
onRestart()
onPause()
Paused
(partly visible)
onStop()
Stopped
(hidden)
onDestroy()
Destroye
d

29.

ONRESUME() И ONPAUSE()
Метод onResume() вызывается после onStart(). Также может
вызываться после onPause().
onPause():
сохраняет незафиксированные данные
деактивирует и выпускает монопольные ресурсы
останавливает воспроизведение видео, аудио и анимацию

30.

ONSTOP() И ONRESTART()
Метод onStop() вызывается, когда окно становится невидимым
для пользователя. Всегда сопровождает любой вызов метода
onRestart().
Если окно возвращается в приоритетный режим после вызова
onStop(), то в этом случае вызывается метод onRestart(). Всегда
сопровождает любой вызов метода onStart().

31.

ПОРЯДОК ВЫЗОВА МЕТОДОВ ЖИЗНЕННОГО ЦИКЛА ПРИ
ЗАПУСКЕ ДОЧЕРНЕЙ ACTIVITY
ACTIVITY 1
onCreate()
onStart()
onResume()
*Запуск второй активити*
onPause()
ACTIVITY 2
onCreate()
onStart()
onResume()
onStop()
*возврат назад*
onPause()
onRestart()
onStart()

32.

УНИЧТОЖЕНИЕ АКТИВИТИ
Система считает за нормальное поведение:
нажатие кнопки “назад”
вызов метода finish()
Система сохраняет стейт при следующих случаях:
изменении конфигурации (поворот экрана, смена языка,
доступность клавиатуры)
уничтожение фоновой Activity при нехватке памяти для рабочей
Activity

33.

КЛАССИФИКАЦИЯ АКТИВИТИ
Активити верхнего уровня
Активити категорий
Активити детализации/редактирования

34.

ИНТЕРФЕЙС. VIEW И VIEWGROUP
<ViewGroup>
//Иерархическая структура
разметки, XML правила
<View/>
<View/>
<ViewGroup>
<View/>
<View/>
</ViewGroup>
</ViewGroup>

35.

LINEARLAYOUT
Корневой LinearLayout
(фиолетовый):
android:orientation=“vertical”
Вложенный LinearLayout
(малиновый):
android:orientation=“horizontal”
android:weightSum=“4”
Кнопки горизонтального LinearLayout:
android:layout_weight=“1” / ”2”
android:layout_width=“0dp”

36.

РЕАЛИЗАЦИИ VIEWGROUP
LinearLayout
RelativeLayout
FrameLayout
ConstraintLayout

37.

РАЗМЕР VIEW-ЭЛЕМЕНТОВ
Атрибуты:
layout_height – высота
layout_width – ширина
layout_weight (LinearLayout) – вес
weight_sum (LinearLayout)
Значения высоты и ширины:
конкретные значения (40dp)
wrap_content – по содержимому
match_parent – до краёв родителя

38.

РАСПОЛОЖЕНИЕ VIEW-ЭЛЕМЕНТОВ
Атрибуты:
layout_margin – внешний отступ
padding – внутренний отступ
gravity – притяжение элементов внутри текущего элемента
layout_gravity – притяжение элементов относительно
родительского

39.

РАБОТА С РЕСУРСАМИ ПРИЛОЖЕНИЯ
@android:drawable/ic_search_category_default – ссылка на иконку
поиска
android:text="@string/example_text" – задаём текст из строкового
ресурса в xml
mTextView.setText(R.string.app_name); – задаём текст из строкового
ресурса в коде
android:src="@android:drawable/ic_delete" – устанавливаем png
drawable с помощью атрибута src у ImageView

40.

ACTIVITY BACKSTACK
Старт
Активити 2
Старт
Активити 3
Активити переднего плана
Активити
Активити
1
2
Активити
1
Back Stack
Back Stack
Активити
3
Активити
2
Активити
1
Back Stack
Переход назад (back)
Активити
3
Activity 3
destroyed
Активити
2
Активити
1
Back Stack

41.

LAUNCHMODE
Значения:
standard (по умолчанию)
singleTop
singleTask
singleInstance

42.

INTENTFLAGS. TASKAFFINITY
Флаги:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TOP

43.

НАЗНАЧЕНИЕ АДАПТЕРА
Данные:
Финляндия
Швеция
Эстония
(массив строк)
Адаптер
создаёт View
для
отображения
данных
Финляндия
Швеция
Эстония

44.

СПИСОК ГОТОВЫХ АДАПТЕРОВ
ArrayAdapter<T>
CursorAdapter
SimpleAdapter
ResourceCursorAdapter
SimpleCursorAdapter
// набор данных, которые свяжем со списком
final String[] balticContries = new String[] { “Finland”, “Sweden”,
“Estonia” };
ListViewbalticContries = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.list_item, balticContries)*;
listView.setAdapter(adapter);

45.

ARRAYADAPTER. ОПРЕДЕЛЕНИЕ LISTVIEW В XML
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.list_item, balticContries)*;
<ListView
android:id=“@+id/list_options”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:entries=“@array/options” />
<string-array name=“options”>
<item>Sport</item>
<item>Contact</item>
<item>Stores</item>
</string-array>

46.

ОБРАБОТКА ЩЕЛЧКОВ LISTVIEW
AdapterView.OnItemClickListener
itemClickListerner = new
AdapterView.OnItemClickListener(){
public void
onItemClick(AdapterView<?> listView, View
itemView, int position, long id) {
if (position == 0) {
Intent = new
Intent(MainActivity.this,
TargetActivity.class);
startActivity(intent);
}
}

47.

RECYCLERVIEW

48.

КОМПОНЕНТЫ RECYCLERVIEW
LayoutManager – размещает элементы
ItemAnimator – анимирует элементы
Adapter – создаёт элементы
ItemDecoration – дорисовывает элементы
ViewHolder – кэширует findViewById

49.

ОСНОВНОЕ API ADAPTER
public ViewHolder onCreateViewHolder(ViewGroup parent, int
viewType)
public void onBindViewHolder(ViewHolder holder, int position)
public int getItemCount()

50.

ФРАГМЕНТ
Фрагмент зависит от активити
Должен быть встроен в активити
Фрагмент не обязан быть частью макета активити

51.

ФРАГМЕНТЫ. ФИЛОСОФИЯ ПРОЕКТИРОВАНИЯ
Появились в Android версии 3.0 (API уровня 11)
Динамичность и гибкость пользовательских
интерфейсов
Повторное использование фрагментов

52.

СОЗДАНИЕ ФРАГМЕНТА
ИЛИ
Активити A
Активити B
Активити A с двумя
фрагментами

53.

СОЗДАНИЕ ФРАГМЕНТА
Для создания фрагмента необходимо создать подкласс класса
Fragment.
Класс Fragment имеет код, во многом схожий с кодом Activity. Он
содержит методы обратного вызова, аналогичные методам
операции, такие как:
onCreate(), onStart(), onPause() и onStop()
onCreate()
onCreateView()
onPause()
Подкласс DialogFragment

54.

РЯД ПОДКЛАССОВ
DialogFragment
ListFragment
PreferenceFragment
public View onCreateView()

55.

ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
public class CameraFragment extends Fragment {
public CameraFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_camera,
container, false);
}
}

56.

ДОБАВЛЕНИЕ ФРАГМЕНТА В АКТИВИТИ
Объявить фрагмент в файле макета активити
Или программным способом, добавив фрагмент в
существующий объект ViewGroup

57.

SHAREDPREFERENCES
Методы получения объекта SharedPreferences:
getSharedPreferences()
getPreferences()
PreferenceManager.getDefaultSharedPreferences()
Константа доступа: Context.MODE_PRIVATE

58.

ФОРМАТ JSON
{
“name”:”Тонких Артём Петрович”,
“age”:42,
“kids”:[
{
“name”:”Тонких Артём Артёмович”,
“age”:8,
“kids”:null
}
]
}

59.

ПРОЦЕССЫ И ПОТОКИ
Процесс – глобальная сущность, выделенные ресурсы
Поток – внутренняя сущность процесса, выполняет
программный код

60.

ПРОБЛЕМЫ МНОГОПОТОЧНОСТИ

61.

МНОГОПОТОЧНОСТЬ В ANDROID
Пользователь
нажал на кнопку
Запрос
передаётся
в фоновый
поток
Запуск
фонового
потока
Показ
результата
Загрузка
Сетевой
запрос
BG
Thread
Результат
передаётся
в главный
поток
Завершение
фонового
потока
UI
Thread

62.

THREAD И RUNNABLE
public class MyThread extends
Thread{
@Override
public void run() {
//do something
}
}
new Thread (new Runnable() {
@Override
public void run() {
//do something
}
});
new MyThread().start();

63.

SYNCHRONIZED. WAIT/NOTIFY
Thread 2
Thread 1
1
3
synchronized
2
if (condition()){
wait()
}
4
5
notify()
6

64.

NOTIFYALL. VOLATILE
Поток 2
Поток 1
1
3
synchronized
2
if (condition()){
wait()
}
4
5
7
notify()
6

65.

EXECUTORSERVICE. CALLABLE. FUTURE
ExecutorService executorService =
Executors.newFixedThreadPool(4);
Future<String> future = executorService.submit(new
Callable<String>() {
@Override
public String call() throws Exception {
//do something
return result;
}
});
while (!future.isDone()) {
TimeUnit.MILLISECONDS.sleep(100);
}
String result = future.get();

66.

ИНСТРУМЕНТЫ ДЛЯ ОБЕСПЕЧЕНИЯ МНОГОПОТОЧНОСТИ
Service + BroadcastReceiver
AsyncTask
HandlerThread / HaMeR
Loaders

67.

ВИДЫ SERVICE
Service – это компонент приложения, который
используется для выполнения долгих операций в
бэкграунде, без взаимодействия с пользовательским
интерфейсом.
Foreground – заметно для пользователя
Background – незаметно для пользователя
Bound – взаимодействие через интерфейс

68.

СОЗДАНИЕ SERVICE
public class MyService extends Service {
public CustomService() {
}
@Override
@Nullable
public Ibinder onBind(Intent intent) {
return null;
}
}

69.

ЖИЗНЕННЫЙ ЦИКЛ SERVICE
Call to bindService()
Call to startService()
onCreate()
onStartCommand()
Active
LifeTime
onCreate()
onBind()
Service running
Clients are bound to service
The service is stopped
by itself or a client
All clients unbind by
calling unbindService()
onUnbind()
onDestroy()
onDestroy()
Service shut down
Service shut down
Bounded service
Unbounded service

70.

СОЗДАНИЕ BROADCASTRECEIVER
•Добавляем новый класс, отнаследованный от
BroadcastReceiver
•Переопределяем метод onReceive()
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//TODO: do something
}
}

71.

ОТПРАВКА СООБЩЕНИЙ
Мы можем использовать BroadcastReceiver, чтобы передавать
свои собственные сообщения.
Intent intent = new Intent();
intent.setAction (“ru.rosdistant.edu.SOMETHING_JUST_HAPPEN”);
intent.putExtra (“ARG_DATA”, “SOME_VALUE”);
sendBroadcast(intent);

72.

ИНТЕРФЕЙС ASYNCTASK
mSampleTask.execute(10L) // запуск задачи
mSampleTask.cancel(true) // отмена задачи
class SampleTask extends AsyncTask<Long, Integer, String> {
void onPreExecute(); // UI-поток перед фоновой операцией
String doInBackground(Long… longs); // фоновый поток
void onPostExecute(String s); // UI-поток после фоновой операции
void publishProgress(1,2,3,4); // внутри фоновой операции
void onProgressUpdate(Integer… values); // в UI-потоке
boolean isCanceled(); // внутри фоновой операции
void onCanceled(); // в UI-потоке
}

73.

DOWNLOADIMAGETASK
private class DomnloadImageTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected void onPreExecute() {
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
protected Bitmap doInBackground(String… strings) {
return getBitmap(strings[0]);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
mImageView.setImageBitmap(bitmap);
mProgressBar.setVisibility(View.INVISIBLE);
}
}

74.

ИЗБАВЛЯЕМСЯ ОТ УТЕЧКИ
private class DomnloadImageTask extends AsyncTask<String, Void, Bitmap> {
private WeakReference<MainActivity> mActivityWeakReference;
private DomnloadImageTask(MainActivity activity) {
mActivityWeakReference = new WeakReference<>(activity);
}
//----@Override
protected void onPostExecute(Bitmap bitmap) {
MainActivity activity = mActivityWeakReference.get();
if (activity != null) {
activity.getImageView().setImageBitmap(bitmap);
activity.getProgressBar().setVisibility(View.INVISIBLE);
}
}

75.

О ПРОЦЕССАХ И ПОТОКАХ
Каждое приложение в Android по умолчанию работает в своем
собственном процессе, в своей области памяти. В память чужого
процесса попасть нельзя, это гарантируется системой.
Первый поток, запущенный в процессе, называется главным потоком.
Главный поток – main thread – UI thread – в контексте Android
синонимы.
MainThread не уничтожается сам
Почему MainThread не умирает?
•Благодаря Looper.
Что делает Looper?
•Looper в бесконечном цикле проверяет MessageQueue.

76.

HAMER = HANDLER + MESSAGE + RUNNABLE
Что такое MessageQueue?
•Очередь объектов Message, которые нужно обработать.
Как сообщения попадают в MessageQueue?
•Handler, связанный с Looper, отправляет сообщения в очередь
Looper.
Кто обрабатывает сообщения?
•В сообщении есть ссылка на Handler, который это сообщение
должен обработать

77.

HANDLER
Handler handler = new Handler();
Handler bgHandler = new Handler(bgLooper);
Handler mainHandler = new Handler(Looper.getMainLooper());
handler.post (new Runnable() {
@Override
public void run() {
}
});
handler.postDelayed (new Runnable(), 4000);

78.

MESSAGE
mHandler.obtainMessage(MESSAGE_WHAT, dataObject).sendToTarget ();
mHandler = new Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_WHAT: {
DataObject dataObject = (DataObject) msg.obj;
doSomething(dataObject);
msg.recycle() } } } };
mHandler.post (new Runnable() {
@Override
public void run() {
doSomething(dataObject); } });
Message message = Message.obtain(mAnotherHandler,
MESSAGE_ANOTHER_WHAT, anotherObject);

79.

LOADERMANAGER
Loader – это API, позволяющее загружать данные из
различных источников (сервер, БД, content-provider) вне
зависимости от жизненного цикла.
LoaderManager – класс, который запускает Loader. Для
получения экземпляра менеджера – LoaderManager
getSupportLoaderManager()
Loader<D> initLoader(int id, Bundle args,
LoaderManager.LoaderCallbacks<D> callback)
Loader<D> restartLoader(int id, Bundle args,
LoaderManager.LoaderCallbacks<D> callback)

80.

LOADERCALLBACKS
Loader<D> restartLoader(int id, Bundle args,
LoaderManager.LoaderCallbacks<D> callback)
boolean hasRunningLoaders();
Loader<D> getLoader(int id);
void destroyLoader(int id);
LoaderManager.LoaderCallbacks содержит методы, которые
вызываются при определенных событиях у лоадера
onCreateLoader(int, Bundle)
onLoadFinished(Loader<D>, D)
onLoaderReset(Loader<D>)
Loader – базовый класс. Наследуемся от него, если нужно
сделать какую-то уникальную реализацию. Иначе можно
использовать системные реализации.

81.

CONTENTPROVIDERS
ContentProvider – механизм, который инкапсулирует доступ к
данным, дополнительно позволяя обращаться к ним из разных
процессов.
ContentProvider позволяет безопасно делиться данными с
другими приложениями
Телефонная книга
•Чаты
•Банки

82.

СПОСОБЫ ХРАНЕНИЯ ДАННЫХ В ANDROID
Persistence:
•Общие сведения (SharedPreferences)
•Файлы
• Internal Storage
• External Storage
•БД / ORM

83.

EXTERNAL STORAGE И БАЗЫ ДАННЫХ
•External Storage (неструктурированные данные)
• SD-карта
•Базы данных и ORM-обёртки (структурированные данные)
• SQLite

84.

РАЗРЕШЕНИЯ ВО ВРЕМЯ ВЫПОЛНЕНИЯ
•обычные (normal)
•опасные (dangerous)
public static int checkSelfPermission(@NonNull Context context,
@NonNull String permission)
•Менеджер пакетов.PERMISSION_GRANTED
•Менеджер пакетов.PERMISSION_DENIED
java.lang.Исключение безопасности
ActivityCompat.requestPermissions(this, new String[]
{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE);

85.

СЕРВЕР
•физический
Почтовый
клиент
•программный
Почтовый
клиент
Почтовый
клиент
Почтовый
сервер
Почтовый
клиент
Почтовый
клиент
Почтовый
клиент

86.

HTTP
HyperText Transfer Protocol
•Запрос к серверу (Request)
•Ответ от сервера (Response)
1. Стартовая строка запроса
URI METHOD HTTP/VERSION
METHOD – это метод HTTP-запроса
URI – идентификатор ресурса
VERSION – версия протокола.
2. Заголовки (Headers)
3. Тело сообщения (Body)

87.

OKHTTP3
•HttpURLConnection
•HTTP-клиент Apache
1. Пул соединений
2. Gziping
3. Кэширование
4. Восстановление после сетевых ошибок
5. Редиректы
6. Повторы
7. Поддержка синхронных и асинхронных вызовов
8. Перехватчики

88.

RETROFIT2
Основные возможности Retrofit:
•Вся сила OkHttp
•API Interfaces
•Call Adapters
•Converters
•Задание параметров URL и поддержка параметров запроса
•Преобразование объектов в тело запроса
•Многостраничный запрос и загрузка файлов

89.

РЕАКТИВНОЕ ПРОГРАММИРОВАНИЕ
Использование потоков:
•Переменные
•Пользовательский ввод
•Свойства
•Кэш
•Структуры данных
Реализации реактивного подхода:
•ReactJS
•Bacon.js
•ReactiveX

90.

ДОСТОИНСТВА РЕАКТИВНОГО ПРОГРАММИРОВАНИЯ
Если вы не хотите...
...писать много, а делать мало
То в реактивном подходе...
...пиши мало, делай много!
...часами дебажить простую логику
...обеспечение связи данных друг с
другом!
...чтобы всё по умолчанию тупило
...оптимизация потоков данных по
умолчанию!
...чтобы приложение падало
целиком и полностью
...проводить махинации с
индикаторами ожидания
...создавать переиспользуемые
компоненты
...никакой exception не пройдет мимо!
...индикаторы ожидания сами
появляются, где надо!
...компоненты будут
переиспользуемыми по умолчанию!

91.

RXJAVA2
Тип источника
Flowable<T>
Описание источника
Поддерживает backpressure.
Observable<T>
Излучает 0 или n элементов и завершается с успехом
или ошибкой. Не поддерживает backpressure.
Single<T>
Излучает либо один элемент, либо событие ошибки.
Реактивная версия вызова метода.
Maybe<T>
Успешно с элементом, или без элемента, или без ошибок.
Реактивная версия типа Optional.
Либо завершается с успехом, либо с событием ошибки.
Он никогда не излучает элементы. Реактивная версия
типа Runnable.
Completable

92.

РЕАКТИВНАЯ СХЕМА ДАННЫХ
Источники:
•горячие (hot)
•холодные (cold)
https://github.com/Froussios/Intro-ToRxJava/blob/master/Part%203%20%20Taming%20the%20sequence/6.%20Hot%20and%20Cold%20o
bservables.md

93.

ИСТОЧНИКИ
Backpressure (обратное давление) – явление, которое можно
встретить в порождающем потоке, где некоторые асинхронные
операции не могут обрабатывать значения достаточно быстро
и нуждаются в замедлении работы производителя.
https://habr.com/ru/post/336268/

94.

OBSERVER И SUBSCRIBER
public interface Observer<T> {
void onSubscribe(@NonNull Disposable d);
void onNext(@NonNull T t);
void onError(@NonNull Throwable e);
void onComplete();
}

95.

ПРАКТИКА С RXJAVA2
implementation 'io.reactivex.rxjava2:rxjava:2.1.8’
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1’
Observable.just("Привет!")
Observable.fromIterable()
Observable.fromArray()
Observable.fromCallable()
Observable.fromFuture()
Observable.interval()
subscribe()
subscribe(Consumer<? super T> onNext)

96.

СМЕШИВАНИЕ ОТОБРАЖЕНИЯ И ЛОГИКИ
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView.setAdapter(mProjectsAdapter);
ApiUtils.getApiService().getProjects(BuildConfig.API_QUERY)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( response -> {
mErrorView.setVisibility(View.GONE);
mRecyclerView.setVisibility(View.VISIBLE);
mProjectsAdapter.addData(response.getProjects(), true);
},
throwable -> {
mErrorView.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.GONE); });}

97.

MVC
Trygve M.H. Reenskaug, 1978
― Model – бизнес-логика
― View – отображение
―Controller – обработка ввода
View!=android.view.View

98.

SOLID
S – Принцип единой ответственности (SRP)
A class should have only one reason to change.
Каждый объект должен иметь одну ответственность и эта
ответственность должна быть полностью инкапсулирована в класс.
O – Принцип открытости/закрытости (OCP)
Software entities (classes, modules, functions, etc) should be open for
extension, but closed for modification.
Программные сущности (классы, модули, функции и т.д.) должны
быть открыты для расширения, но закрыты для изменения
L – Принцип заменяемости (LSP)
I – Принцип разделения интерфейсов (ISP)
D – Принцип инверсии зависимостей (DIP)

99.

ПРИМЕР ОТКРЫТОСТИ-ЗАКРЫТОСТИ
public abstract class AbstractEntity { … }
public class AccountEntity extends AbstractEntity { … }
public class RoleEntity extends AbstractEntity { … }
public interface IRepository<AbstractEntity>{
void save(AbstractEntity entity); }
public class AccountRepository implements IRepository<AccountEntity>{
public void save(AccountEntity entity) {
// специфические действия для AccountEntity
}
}
public class RoleRepository implements IRepository<RoleEntity>{
public void save(RoleEntity abstractEntity) {
// специфические действия для RoleEntity
}
}

100.

ПРИМЕР ПРИНЦИПА ИНВЕРСИИ ЗАВИСИМОСТЕЙ
public class Reporter
{
public void sendReports()
{
ReportBuilder reportBuilder = new ReportBuilder();
List<Report> reports = reportBuilder.createReports();
if (reports.size() == 0)
throw new NoReportsException();
EmailReportSender reportSender = new
EmailReportSender();
for (Report report : reports)
{
reportSender.send(report);
}
}}

101.

MVP
public interface SampleView {
void setData(List<Item>items);
}
public class SamplePresenter {
private SampleView mView;
public SamplePresenter(SampleView view) {
mView = view;
}
void loadData() {
//load data from server
}
}
mView.setData(items);

102.

SAMPLEACTIVITY (MVP)
public class SampleActivity extends AppCompatActivity
implements SampleView {
private SamplePresenter mPresenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPresenter = new SamplePresenter(this);
button.SetOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPresenter.loadData(); } }); }
@Override
public void setData(List<Item> items) { }
}

103.

MOXY
public class ProjectsFragment
extends MvpAppCompatFragment
implements ProjectsView {
@InjectPresenter
public ProjectsPresenter mPresenter;
@ProvidePresenter
ProjectsPresenter providePresenter() {
D someDependency = new D;
return new
ProjectsPresenter(someDependency);
}
//остальной код
}

104.

MVPVIEW
public interface ProjectsView extends BaseView, MvpView {
@StateStrategyType(value = SingleStateStrategy.class)
void showProjects(@NonNull List<Project> projects);
@StateStrategyType(value = SkipStrategy.class)
void openProfileFragment(@NonNull String username);
}
AddToEndStrategy – выполнить команду и добавить команду в конец
очереди
AddToEndSingleStrategy – выполнить команду, добавить ее в конец
очереди и удалить все ее предыдущие экземпляры
SingleStateStrategy – выполнить команду, очистить очередь и
добавить в нее команду
SkipStrategy – выполнить команду
OneExecuteStrategy – выполнить команду
при первой возможности

105.

MVVM
Model – данные и методы их получения, сохранения, обработки
View – визуальное представление данных, экран
ViewModel – абстракция представления, прослойка между View и
Model
public class ViewModel {
private String mUserName;
void updateUserName() {
mUserName = “Tonkikh Artyom Petrovich”;
}
}

106.

ПРЕИМУЩЕСТВА И НЕДОСТАТКИ MVVM
Преимущества:
•Компоненты слабо связаны
•Databinding уменьшает количество кода
•Несколько View → одна ViewModel
Недостатки:
•Показ Toast и диалогов
•Показ анимаций или данных с задержкой
•Необходимость обработки команды во View

107.

DATABINDING LIBRARY
<?xml version=“1.0” encoding=“utf-8”?>
<layout xmlns:android=“http://schemas.android.com/apk/res/android”>
<data>
<variable name=“user” type=“ru.rosdistant.edu.User” />
</data>
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”>
<TextView android:text=“Username” />
<TextView android:text=“@{user.name}” />
</LinearLayout>
</layout>

108.

ВОЗМОЖНОСТИ РАЗМЕТКИ
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AcMainBinding binding = DataBindingUtil.
setContentView(this, R.layout.ac_main);
User user = new User(“Tonkikh Artyom Petrovich”);
binding.setUser(user); } }
android:visibility=“@{user.shouldShow ? V.VISIBLE : V.GONE }”
<import alias=“V” type=“android.view.View” />
android:src=“@{user.avatar ?? @drawable/placeholder}”
android:src=“@{user.avatar != null ? user.avatar : @drawable/placeholder}”

109.

ОБРАБОТКА НАЖАТИЙ
android:src=“@{user.avatar ?? @drawable/placeholder}”
android:src=“@{user.avatar != null ? user.avatar : @drawable/placeholder}”
Mathematical + - / * %
String concatenation +
Logical && ||
Binary & | ^
Unary + - ! ~
Shift >> >>> <<
Comparison == >
< >= <= instance of
Grouping ()
НЕ ПОДДЕРЖИВАЕТСЯ
Literals – character, String, new
numeric, null
this
Cast
super
Method calls
<T> doSomething(T data)
Field access
Array e[]
Ternary operator ?:

110.

ССЫЛКА НА МЕТОД
public class UserActions { public void onUserClick(View view { } }
<data> <variable name=“actions” type=“ru.rosdistant.edu.UserActions”/>
</data>
android:onClick=“@{actions::onUserClick}”
UserActions userActions = new UserActions(); binding.setActions(userActions);
public class ProfileManager { public boolean sort(List<User> users { }}
<data> <import type=“ru.rosdistant.edu.User”/>
<import type=“java.util.List”/>
<variable name=“profileManager”
type=“ru.rosdistant.edu.ProfileManager”/>
<variable name=“users” type=“List&lt;User&gt;”/>
</data>
android:onLongClick=“@{()->profileManager.sort(users)}”

111.

ПРИВЯЗКА LISTENER
android:onLongClick=“@{()->profileManager.sort(users)}”
public class CustomAdapter {
@BindingAdapter({“bind:imageUrl”})
public static void loadImage(ImageView view, String url) {
Picasso.with(view.getContext()).load(url). Into(view);
}
}
<ImageView
android:layout_width=“@dimen/avatar_size”
android:layout_height=“@dimen/avatar_size”
app:image_Url=“@{user.avatarUrl}” />

112.

ANDROID ARCHITECTURE COMPONENTS
Activity / Fragment
ViewModel
LiveData3
Repository
Model
Room
SQLite
Remote Data Source
Retrofit
webservice

113.

ОСНОВНЫЕ ТЕЗИСЫ
- Нельзя хранить контент или состояние в компонентах, и
компоненты не должны зависеть друг от друга
- Интерфейс и контент приложения должны заполняться,
опираясь на модель. Модель не должна зависеть от
компонентов андроид

114.

VIEWMODEL
Activity created
Activity rotated
finish()
Finished
onCreate
onStart
onResume
onPause
onStop
onDestroy
onCreate
onStart
onResume
onPause
onStop
onDestroy
MyViewModel model =
ViewModelProviders.of(this).
get(MyViewModel.class);
ViewModel
Scope
onCleared()
Во ViewModel не должно
быть ссылок на объекты с
жизненным циклом!

115.

LIFECYCLE
STATES
INITIALIZED
(initial start)
DESTROYED
(dead state)
CREATED
STARTED
RESUMED
ON_CREATE
ON_START
ON_RESUME
EVENTS
ON_PAUSE
ON_STOP
ON_DESTROY
INITIALIZED
(initial start)
STATES
DESTROYED
(dead state)
CREATED
STARTED
RESUMED

116.

НАБОРЫ ПРОТОКОЛОВ И ОТРАСЛЕВЫЕ СТАНДАРТЫ
Название
уровня
Уровень
приложений
Транспортный
уровень
Межсетевой
уровень
Уровень
доступа к сети
TCP/IP
ISO
HTTP, DNS
DHCP, FTP
TCP,
UDP
IPv4, IPv6,
ICMPv4,
ICMPv6
ACSE, ROSE
TRSE, SESE
TP0, TP1, TP2,
TP3, TP4
CONP/CMNS,
CLNP/CLNS
AppleTalk
Novell Netware
AFP
NDS
ATP, AEP,
NBP, RTMP
SPX
AARP
IPX
Ethernet, PPP, Frame Relay, ATM, WLAN

117.

РАЗРАБОТКА ПРОТОКОЛА TCP/IP
29.10.1969
1970
1972
1972
1972
Передача первого сообщения от ЭВМ к ЭВМ
Система ALOHAnet становится операционной, первой
сетью пакетной радиосвязи
Первая программа управления электронной почтой
Оформлена спецификация Telnet (RFC 318)
Для обозначения назначения получателя введён знак
@
1981
1982
1984
Оформлены протоколы TCP и IP (RFC 793 и RFC 791)
Создан протокол внешней маршрутизации (EGP)
Вводится служба доменных имён (DNS)
1985
Утверждён протокол передачи файлов FTP (RFC 765)

118.

НАБОР ПРОТОКОЛОВ TCP/IP
Уровень приложений
Система имён DNS
Конфигурация узла BOOTP, DHCP
Электронная почта SMTP, POP, IMAP
Передача файлов FTP, TFTP
Веб HTTP
Транспортный
уровень
UDP, TCP
Межсетевой уровень
IP, NAT
Поддержка IP ICMP
Протоколы маршрутизации OSPF, EIGRP
Уровень сетевого
доступа
ARP, PPP, Ethernet, драйверы интерфейсов

119.

СТАНДАРТЫ ИНТЕРНЕТА
Рабочая группа № 1
IETF
Internet
Society
(ISOC)
IESG
Рабочая группа № 2
IAB
Исследовательская
группа № 1
IRTF
IRSG
Исследовательская
группа № 2

120.

IANA И ICANN
IP-адреса
IANA
ICANN
Имена
доменов
Номера
портов
TCP/UDP

121.

ОРГАНИЗАЦИИ ПО СТАНДАРТИЗАЦИИ В ОБЛАСТИ
ЭЛЕКТРОНИКИ И СВЯЗИ
Рабочие и исследовательские группы IEEE 802:
рабочая группа протоколов LAN верхнего уровня 802.1
рабочая группа Ethernet 802.3
рабочая группа по беспроводным локальным сетям 802.11
рабочая группа по беспроводным персональным сетям
802.15
рабочая группа по широкополосному беспроводному
доступу 802.16
группа TAG по радиорегулированию 802.18
рабочая группа по сосуществованию сетей 802.19

122.

ПРЕИМУЩЕСТВА ИСПОЛЬЗОВАНИЯ МНОГОУРОВНЕВОЙ
МОДЕЛИ
Модель OSI
Уровень приложений
Уровень представлений
Сеансовый уровень
Транспортный уровень
Сетевой уровень
Канальный уровень
Физический уровень
Набор протоколов
TCP/IP
Модель TCP/IP
HTTP, DNS, DHCP, FTP
Уровень приложений
TCP, UDP
IPv4, IPv6,
ICMPv4, ICMPv6
Транспортный уровень
PPP, Frame Relay, Ethernet
Интернет
Уровень сетевого
доступа

123.

ЭТАЛОННАЯ МОДЕЛЬ OSI
7. Уровень приложений
6. Уровень представлений
5. Сеансовый уровень
4. Транспортный уровень
3. Сетевой уровень
2. Канальный уровень
1. Физический уровень

124.

МОДЕЛЬ ПРОТОКОЛОВ TCP/IP
Уровни модели
TCP/IP
Уровень
приложений
Транспортный
уровень
Межсетевой
уровень
Назначение уровня
Отображает данные для пользователя,
а также обеспечивает кодирование
и управление сеансами связи
Поддерживает связь между различными
устройствами в разных сетях
Определяет наилучший путь через сеть
Управляет устройствами и средами
Уровень
передачи данных, из которых состоит
сетевого доступа
сеть

125.

СРАВНЕНИЕ МОДЕЛЕЙ OSI И TCP/IP
Модель OSI
Модель TCP/IP
7. Уровень приложений
6. Уровень представлений
5. Сеансовый уровень
Уровень приложений
4. Транспортный уровень
3. Сетевой уровень
2. Канальный уровень
1. Физический уровень
Транспортный
уровень
Интернет
Уровень сетевого
доступа

126.

СЕГМЕНТАЦИЯ СООБЩЕНИЯ
Сегментация – разделение сообщения на части
Мультиплексирование – чередование частей по мере их
движения через среду передачи данных
Множество сеансов связи чередуется, предоставляя
каждому пользователю часть полосы пропускания

127.

ЕДИНИЦА ПРОТОКОЛА ДАННЫХ (PDU)
Данные
Сегмент
Пакет
Кадр
(зависит от среды передачи)
Биты

128.

СЕТЕВЫЕ АДРЕСА
Физический
уровень
Канальный
уровень
Сетевой
уровень
Биты
Логические
Физические
временных
сетевые
адреса
параметров
адреса
назначения
и
назначения
и источника
синхронизации
и источника
Транспортный
уровень
Верхние
уровни
Номера
процессов
(портов)
назначения
и источника
Кодированные
данные
приложения

129.

АДРЕСА КАНАЛЬНОГО УРОВНЯ
Адрес источника – физический адрес сетевой интерфейсной
платы устройства, которое передаёт пакет
Адрес места назначения – физический адрес сетевой
интерфейсной платы устройства, которое получает пакет. Это
адрес ближайшего транзитного маршрутизатора или
устройства назначения

130.

УСТРОЙСТВА В ОДНОЙ СЕТИ
Канальный уровень
Заголовок кадра Ethernet
Сетевой уровень
Заголовок IP-пакета
Назначение Источник
Источник
CC-CC-CC- AA-AA-AAСеть
Узел
110
CC-CC-CC
AA-AA-AA 192.168.1.
Назначение
Сеть
Узел
192.168.1.
9
Данные

131.

УСТРОЙСТВА В УДАЛЁННОЙ СЕТИ
Канальный уровень
Заголовок кадра
Ethernet
Назначение Источник
11-11-1111-11-11
AA-AAAA-AAAA-AA
Сетевой уровень
Заголовок IP-пакета
Источник
Назначение
Сеть
Устройство
Сеть
192.168.1.
110
172.16.1.
Устройств
о
99
Данные

132.

ФИЗИЧЕСКИЙ УРОВЕНЬ
Уровень приложений
Уровень представлений
Сеансовый уровень
Транспортный уровень
Сетевой уровень
Канальный уровень
Физический уровень

133.

СРЕДСТВА ПОДКЛЮЧЕНИЯ ФИЗИЧЕСКОГО УРОВНЯ
Медный кабель
Оптоволоконный кабель
Беспроводная сеть

134.

СТАНДАРТЫ ФИЗИЧЕСКОГО УРОВНЯ
Организации:
ISO
TIA/EIA
ITU
ANSI
IEEE
FCC и ETSI

135.

ФУНКЦИИ ФИЗИЧЕСКОГО УРОВНЯ
Функциональные области:
физические компоненты
кодирование
способы передачи сигналов

136.

ПРОПУСКНАЯ СПОСОБНОСТЬ (BANDWIDTH)
Unit of Bandwidth
Bits per second
Abbreviation Equivalence
b/s
1 b/s = fundamental unit of bandwidth
Kilobits per second kb/s
Megabits per second Mb/s
Gigabits per second Gb/s
1 kb/s = 1,000 bps = 10^3 bps
1 Mb/s = 1,000,000 bps = 10^6 bps
1 Gb/s = 1,000,000,000 bps = 10^9 bps
Terabits per second
1 Tb/s = 1,000,000,000,000 bps = 10^12 bps
Tb/s

137.

ПРОИЗВОДИТЕЛЬНОСТЬ
Пример
результата
тестирования
скорости

138.

ТИПЫ ФИЗИЧЕСКИХ СРЕДСТВ ПОДКЛЮЧЕНИЯ
Стандарты для средств подключения на основе медного
кабеля:
тип кабеля
пропускная способность
тип разъёмов
назначение и цветовая маркировка контактов разъёмов
максимально допустимая длина

139.

ХАРАКТЕРИСТИКИ МЕДНЫХ КАБЕЛЕЙ
Источники помех:
ЭМП или РЧП
переходные помехи
Меры повышения защищённости:
выбор типа и категории кабеля
проектирование кабельной инфраструктуры с обходом
источников помех
соблюдение правил прокладки и подключения кабелей

140.

ТИПЫ МЕДНЫХ КАБЕЛЕЙ
UTP
STP
Коаксиальные кабели

141.

КОАКСИАЛЬНЫЙ КАБЕЛЬ
Элементы:
медный проводник
слой изоляции
экран
оболочка
Области использования:
оборудование беспроводных сетей
сети кабельного телевидения с доступом в Интернет

142.

БЕЗОПАСНОСТЬ МЕДНЫХ КАБЕЛЕЙ
Разделение силовых кабелей и кабелей для передачи
данных должно соответствовать требованиям техники
безопасности
Кабели должны быть подключены правильно
При установке оборудования его необходимо проверить на
предмет повреждений
Оборудование должно быть правильно заземлено

143.

СВОЙСТВА КАБЕЛЕЙ UTP
Решения для
ограничения влияния
переходных помех:
взаимоподавление
различный шаг витков
в парах

144.

СТАНДАРТЫ ПРОКЛАДКИ КАБЕЛЕЙ UTP
Категория 3:
для голосовой связи
для телефонных линий
Категории 5, 5e, 6:
для передачи данных
Cat5 поддерживает скорость 100 Мбит/с и скорость 1000
Мбит/с (не рекомендуется)
Cat5e поддерживает скорость 1000 Мбит/с
Cat6 поддерживает скорость от 1000 Мбит/с до 10 Гбит/с
(скорость 10 Гбит/с не рекомендуется)

145.

ТИПЫ КАБЕЛЕЙ UTP
Тип кабеля
Стандарт
Прямой
Оба конца
T568A или
кабель
Ethernet
T568B
Применение
Подключает сетевой узел к сетевому
устройству, например к коммутатору или
концентратору
Соединяет два узла сети
Кроссовый Один конец
Соединяет два сетевых промежуточных
T568A, другой
кабель
устройства (коммутатор с коммутатором
Ethernet
конец T568B
или маршрутизатор с маршрутизатором)
Запатентован Присоединяет последовательный порт
Консольный компанией
рабочей станции к порту консоли
Cisco
маршрутизатора с помощью адаптера

146.

СВОЙСТВА ОПТОВОЛОКОННЫХ КАБЕЛЕЙ
Области использования:
корпоративные сети
технология «оптоволокно до квартиры» (FTTH)
сети дальней связи
подводные кабельные сети

147.

ТИПЫ ОПТОВОЛОКОННЫХ КАБЕЛЕЙ
Характеристика
Сердечник
Одномодовый кабель
Небольшой
Многомодовый кабель
Больше
Дисперсия
Меньше
Больше (больше
потерь сигнала)
+ (но не таких
больших, как при
одномодовом)
Светодиоды
Подходит для больших +
расстояний
Источник света
Использование
Лазеры
В магистральных
соединениях
комплекса зданий
с расстоянием
в несколько тысяч
метров
С локальными сетями
или на расстояниях
в пределах 200 м для
сети комплекса зданий

148.

ОПТОВОЛОКОННЫЕ РАЗЪЁМЫ
ST (Straight-Tip)
Один из первых механизмов коннекторов. Надёжно
фиксируется закручивающимся механизмом
байонетного типа
Иногда называют квадратным или стандартным
разъёмом. Широко используется в сетях, оснащён
механизмом с защёлкой push-pull для обеспечения
надёжного монтажа. Используется со всеми типами
кабелей
Симплексные LC Меньший по размеру вариант разъёма SC. Иногда
(Lucent Connector) называется малым или локальным разъёмом, быстро
набирает популярность из-за малого размера
Аналогичны симплексным LC, но с использованием
Дуплексные
многомодовые LC дуплексного разъёма
SC (Subscriber
Connector)

149.

ТЕСТИРОВАНИЕ ОПТОВОЛОКОННЫХ КАБЕЛЕЙ
Проблемы при оконцовке и сращивании кабелей:
смещение
зазор между торцами волокон
качество обработки торцов волокна
подводные кабельные сети

150.

ОПТОВОЛОКОННЫЕ И МЕДНЫЕ КАБЕЛИ. СРАВНЕНИЕ
Особенности при внедрении
UTP
Поддерживаемая пропускная
способность
Расстояние
От 10 Мбит/с до 10
Гбит/с
Небольшие (от 1 до
100 м)
Оптоволокно
От 10 Мбит/с до
100 Гбит/с
Большие (от 1 м
до 100 км)
Устойчивость к ЭМП и РЧП
Устойчивость к поражению
электрическим током
Низкая
Низкая
Высокая
Высокая
Расходы на средства передачи
Требуемые навыки
Минимум
Минимум
Максимум
Максимум
Правила ТБ
Минимум
Максимум

151.

СВОЙСТВА БЕСПРОВОДНОЙ СРЕДЫ ПЕРЕДАЧИ ДАННЫХ
Особенности беспроводной среды:
зона покрытия
помехи
безопасность
совместный доступ к средству подключения

152.

ТИПЫ СРЕДСТВ БЕСПРОВОДНОГО ПОДКЛЮЧЕНИЯ
Стандарты беспроводной передачи данных:
Wi-Fi: стандарт IEEE 802.11
Bluetooth: стандарт IEEE 802.15
WiMAX: стандарт IEEE 802.16

153.

БЕСПРОВОДНАЯ ЛОКАЛЬНАЯ СЕТЬ
Сетевые устройства:
беспроводная точка доступа (AP)
беспроводные сетевые платы

154.

КАНАЛЬНЫЙ УРОВЕНЬ
Уровень приложений
Уровень представлений
Сеансовый уровень
Транспортный уровень
Сетевой уровень
Канальный уровень
Физический уровень

155.

ПОДУРОВНИ КАНАЛЬНОГО УРОВНЯ
Сетевой уровень
Bluetooth
802.15
Физический уровень
Wi-Fi
802.11
Подуровень MAC
802.3
Ethernet
Канальный
уровень
Подуровень LLC

156.

ПРЕДОСТАВЛЕНИЕ ДОСТУПА К СРЕДЕ
Операции маршрутизатора:
принимает кадр из среды
деинкапсулирует кадр
инкапсулирует пакет в новый кадр
передаёт новый кадр

157.

УПРАВЛЕНИЕ ДОСТУПОМ К СРЕДЕ
Факторы выбора метода
управления доступом:
топология
совместное использование
средства подключения

158.

РАСПРОСТРАНЁННЫЕ ФИЗИЧЕСКИЕ ТОПОЛОГИИ WAN
Факторы выбора метода управления доступом:
«точка-точка» (Point-to-Point)
«звездообразная» (hub and spoke)
ячеистая (mesh)

159.

ФИЗИЧЕСКИЕ ТОПОЛОГИИ ЛОКАЛЬНЫХ СЕТЕЙ
Звезда (star)
Расширенная звезда (extended star)
Шина (bus)
Кольцо (ring)

160.

МЕТОДЫ УПРАВЛЕНИЯ ДОСТУПОМ К СРЕДЕ ПЕРЕДАЧИ
Конкурентный доступ
Управляемый доступ

161.

КОНКУРЕНТНЫЙ ДОСТУП CSMA/CD
PC1: Эта среда передачи данных доступна, поэтому я отправлю
кадр Ethernet на PC3
PC2: У меня есть кадр для отправки, но я должен дождаться
окончания получения кадра
PC2: Этот кадр предназначен не для меня, поэтому я
игнорирую его
PC3: Этот кадр предназначен для меня, поэтому я скопирую
кадр полностью

162.

КОНКУРЕНТНЫЙ ДОСТУП CSMA/CA
PC1: Я получаю кадр данных беспроводной сети
PC2: В кадре данных беспроводной сети я вижу, что канал
будет недоступен определённое время, поэтому я не могу
отправить
PC3: В кадре данных беспроводной сети я вижу, что канал
будет недоступен определённое время, поэтому я не могу
отправить

163.

КАДР
Компоненты:
заголовок
данные
концевик
Заголовок
Пакет (данные)
Концевик

164.

ПОЛЯ КАДРА
Заголовок
Начало
кадра
Адресация Тип Управление
Пакет
(данные)
Концевик
Данные
Обнаружение Конец
ошибок
кадра
Передающий узел путем логической обработки содержимого кадра
создает циклический избыточный код (cyclic redundancy check, CRC)
Значение этого кода помещается в поле контрольной
последовательности кадра (Frame Check Sequence, FCS) и предоставляет
информацию
о содержимом кадра
Поле FCS в концевике кадра Ethernet позволяет принимающему узлу
проверять кадр на наличие ошибок передачи

165.

АДРЕС УРОВНЯ 2
Заголовок L2
Сетевая
Сетевая
интерфейсная интерфейсная
плата места
плата
назначения
источника
IP-пакет L3
IP-адрес
источника
192.168.1.110
IP-адрес
назначения
172.16.1.99

166.

КАДРЫ LAN И WAN
Протоколы канального уровня:
Ethernet
беспроводная сеть 802.11
протокол «точка-точка» (протокол PPP)
HDLC
протокол ретрансляции кадров (протокол Frame Relay)

167.

ИНКАПСУЛЯЦИЯ ETHERNET
Сетевой уровень
Подуровень LLC
IEEE 802.3z
GigabitEthernet
IEEE 802.3u
FastEthernet
Физический уровень
IEEE 802.3
Ethernet
Подуровень MAC
Ethernet
Канальный
уровень
IEEE 802.2

168.

ПОДУРОВЕНЬ MAC
Инкапсуляция данных:
разделение кадра
адресация
обнаружение ошибок
Управление доступом к среде передачи данных:
управление процессом размещения кадров внутри и вне
передающей среды
восстановление передающей среды

169.

РАЗВИТИЕ ETHERNET
Год
Стандарт
1973
Ethernet
1980
1983
Стандарт DIX IEEE 802.3
Ethernet II
10 BASE-5
1985
IEEE 802.3a
10 BASE-2
Описание
Технология
Ethernet была
изобретена
сотрудником
корпорации
Xerox
Корпорации
DEC, Intel и
Xerox (DIX)
разработали
стандарт 10
Мбит/с для
передачи по
коаксиалу
Ethernet 10
Мбит/с по
тонкому
коаксиально
му кабелю
Ethernet 10
Мбит/с по
толстому
коаксиально
му кабелю

170.

ПОЛЯ КАДРА ETHERNET
8 Bytes
6 Bytes
Preamble Destination
Address
6 Bytes
Source
Address
2 Bytes 46 to 1500 Bytes 4 Bytes
Type
Data
Frame Check
Sequence
Поле Type определяет протокол верхнего уровня, инкапсулированный
в кадр Ethernet. Характерные значения – значения
в шестнадцатеричном формате 0x800 для IPv4 и 0x806 для ARP
Поле Data содержит инкапсулированные данные из более высокого
уровня, которые являются универсальной единицей данных
протокола (PDU) уровня 3, или пакетом IPv4
Длина всех кадров – не менее 64 байт

171.

MAC-АДРЕС И ШЕСТНАДЦАТЕРИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ
Десятичные
0
1
2
3
4
5
6
7
8
9
10
Двоичные
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
Шестнадцатеричные
0
1
2
3
4
5
6
7
8
9
A

172.

MAC-АДРЕС: ИДЕНТИФИКАЦИЯ ETHERNET
Уникальный идентификатор
организации (OUI)
24 бита
6 шестнадцатеричных цифр
00-60-2F
Cisco
Часть, назначаемая
производителем (сетевая
плата, интерфейсы)
24 бита
6 шестнадцатеричных цифр
3A-07-BC
Конкретное устройство

173.

ПРЕДСТАВЛЕНИЯ MAC-АДРЕСОВ

174.

ИНДИВИДУАЛЬНЫЙ И ШИРОКОВЕЩАТЕЛЬНЫЙ MAC-АДРЕСА
IP
источника
IP
назначения
Данные
пользователя
00-07-E9-42- 00-07-E9-63192.168.1.5 192.168.1.200
AC-28
CE-53
Кадр Ethernet
IP-пакет
MAC-адрес MAC-адрес
IP
назначения источника
IP назначения
источника
Данные
пользователя
FF-FF-FF-FF- 00-07-E9192.168.1.5
192.168.1.255
FF-FF
63-CE-53
Концевик
MAC-адрес MAC-адрес
назначения источника
Концевик
Кадр Ethernet
IP-пакет

175.

MAC-АДРЕС МНОГОАДРЕСНОЙ РАССЫЛКИ
MAC-адрес MAC-адрес
назначения источника
01-00-5E00-00-C8
00-07-E963-CE-53
Кадр Ethernet
IP-пакет
IP-адрес
IP-адрес
источника назначения
192.168.1.5
224.0.0.200
Концевик
Данные
пользователя

176.

ОСНОВНАЯ ИНФОРМАЦИЯ О КОММУТАТОРАХ
Port
MAC Address
1
2
3
4
MAC
00-0A
MAC
00-0B
MAC
00-0C
MAC 000D

177.

ПОЛУЧЕНИЕ ИНФОРМАЦИИ О MAC-АДРЕСАХ
Port
1
MAC Address
00-0A
1
A
MAC
00-0A
2
B
3
4
C
D
MAC 00- MAC
0B
00-0C
MAC
00-0D

178.

ФИЛЬТРАЦИЯ КАДРОВ
Port
1
4
MAC Address
00-0A
00-0D
1
2
3
4
A
B
C
D
MAC
00-0A
MAC
00-0B
MAC
00-0C
MAC
00-0D

179.

СПОСОБЫ ПЕРЕАДРЕСАЦИИ КАДРА НА КОММУТАТОРАХ
Коммутатор с промежуточным хранением получает кадр
целиком и вычисляет CRC. Если CRC допустимо, коммутатор
ищет адрес назначения, который определяет выходной
интерфейс. Затем кадр перенаправляется к правильному порту
Коммутатор со сквозной коммутацией пересылает данный кадр
до его полного получения. Поэтому как минимум адрес
назначения кадра должен быть прочтён раньше, чем кадр
можно будет перенаправить

180.

СКВОЗНАЯ КОММУТАЦИЯ (CUT-THROUGH)
Варианты:
коммутация с быстрой пересылкой
коммутация с исключением фрагментов
Некоторые коммутаторы настроены на использование сквозной
коммутации для каждого порта до тех пор, пока не будет
достигнуто указанное пользователем предельное количество
ошибок, после чего автоматически устанавливается коммутация
с промежуточным хранением. После того, как частота
повторения ошибок снизится до установленного предельного
значения, порт автоматически переключится на использование
сквозной коммутации

181.

БУФЕРИЗАЦИЯ ПАМЯТИ НА КОММУТАТОРАХ
Буферизация памяти на
базе портов
Буферизация совместно
используемой памяти
В процессе буферизации кадры
хранятся в очередях, связанных
с определёнными входящими
и исходящими портами
Все кадры помещаются в буфер,
который является общим для
всех портов коммутатора

182.

НАСТРОЙКА ДУПЛЕКСНОГО РЕЖИМА И СКОРОСТИ
A
Режим
дуплекс
Порт 1
Полнодуплексный Автоопределение Полнодуплексный
Полудуплексный
Полудуплексный
1000 Мбит/с
Скорость
100 Мбит/с
100 Мбит/с
10 Мбит/с
10 Мбит/с
Режим
дуплекс
Скорость

183.

ФУНКЦИЯ AUTO-MDIX
MDIX автоматически определяет необходимый тип
подключения и соответствующим образом настраивает
интерфейс

184.

УСТРОЙСТВО НАЗНАЧЕНИЯ В ТОЙ ЖЕ СЕТИ
MAC-адрес
назначения
Источник A
192.168.1.110
MAC-адрес
назначения
00-0B
00-0A
MAC-адрес
источника
00-0A
Уровень 2: заголовок кадра
Ethernet
00-0B
IP-адрес
источника
192.168.1.110
IP-адрес
назначения
Файловый
сервер
192.168.1.50
IP-адрес
назначения
192.168.1.50
Уровень 3: IP-пакет

185.

УСТРОЙСТВО НАЗНАЧЕНИЯ В УДАЛЁННОЙ СЕТИ
IP-адрес
назначения
MAC-адрес
назначения
A
Источник
000A
000C
MAC-адрес
назначения
00-0C
NI
C
R1
MAC-адрес
источника
00-0A
Уровень 2: заголовок кадра
Ethernet
NI
C
NI
C
R2
IP-адрес
источника
192.168.1.110
NI
C
Файловый
сервер
Назначение
IP-адрес
назначения
172.16.1.99
Уровень 3: IP-пакет

186.

ПРОТОКОЛ РАЗРЕШЕНИЯ АДРЕСОВ (ARP)
H1: Мне нужно отправить информацию на адрес 192.168.1.7, но у
меня есть только IP-адрес. Я не знаю MAC-адрес устройства,
которому присвоен этот IP-адрес
H1
H3
192.168.1.5
H2
192.168.1.6
192.168.1.8
H4
192.168.1.7

187.

ФУНКЦИИ ARP
H1: Мне нужно отправить ARP-запрос, чтобы узнать MAC-адрес
узла с IP-адресом 192.168.1.7
H1
H3
192.168.1.5
192.168.1.8
H2
H4
192.168.1.6
192.168.1.7

188.

ARP-ЗАПРОС
Это не
я
H1
H3
192.168.1.5
192.168.1.8
Это я. Я
вышлю свой
MAC-адрес
Это
не я.
H2
H4
192.168.1.6
192.168.1.7

189.

ARP-ОТВЕТ
H1
H3
192.168.1.5
192.168.1.8
Это я. Я
вышлю свой
MAC-адрес
H2
H4
192.168.1.6
192.168.1.7

190.

СЕТЕВОЙ УРОВЕНЬ
Основные процессы:
адресация оконечных устройств
инкапсуляция
маршрутизация
деинкапсуляция

191.

ИНКАПСУЛЯЦИЯ ПРОТОКОЛА IP
Инкапсуляция
транспортного
уровня
Заголовок
сегмента
Данные
Инкапсуляция
сетевого уровня
IP-заголовок
Данные
PDU сетевого уровня
IP-пакет

192.

ПРОТОКОЛ IP. БЕЗ УСТАНОВЛЕНИЯ СОЕДИНЕНИЯ
Отправитель не знает:
присутствует ли получатель на месте
доставлен ли пакет
прочитает ли его получатель
Получатель не знает:
когда ждать пакет

193.

ПРОТОКОЛ IP. НЕЗАВИСИМОСТЬ ОТ СРЕДЫ
Оптоволоконный
Медный
последовательный
Медный
Ethernet
IP-пакет
IP-пакет
Медный
Ethernet
Беспроводной
доступ
IPпакет

194.

ЗАГОЛОВОК ПАКЕТА IPV4
Байт 1
Байт 2
Байт 3
DS
Размер
Версия загоECN
ловка DSCP
Байт 4
Общий размер
Идентификация
Флаг
Смещение фрагмента
Время
Протокол
Контрольная сумма заголовка
существования
IP-адрес источника
IP-адрес назначения

20
байт

195.

ПРИМЕР ЗАГОЛОВКОВ IPV4 В ПРОГРАММЕ WIRESHARK

196.

ОГРАНИЧЕНИЯ IPV4
Основные недостатки IPv4:
нехватка IP-адресов
расширение таблицы интернет-маршрутизации
нехватка сквозных соединений

197.

ОБЩИЕ СВЕДЕНИЯ О ПРОТОКОЛЕ IPV6
Название
числа
Научное
представлен
ие
1 миллиард
10^9
1 секстиллион 10^21
1 септиллион
10^24
1 октиллион
10^27
1 нониллион
10^30
1 дециллион
10^33
1 ундециллион 10^36
Количество нулей
1 000 000 000
1 000 000 000 000 000 000 000
1 000 000 000 000 000 000 000 000
1 000 000 000 000 000 000 000 000 000
1 000 000 000 000 000 000 000 000 000 000
1 000 000 000 000 000 000 000 000 000 000 000
1 000 000 000 000 000 000 000 000 000 000 000
000

198.

ЗАГОЛОВОК ПАКЕТА IPV6
Байт 1
Версия
Байт 2
Класс
трафика
Байт 3
Байт 4
Метка потока
Следующий
заголовок
IP-адрес источника
Длина полезной нагрузки
IP-адрес назначения
Предел
переходов
40
байт

199.

ПРИМЕР ЗАГОЛОВКОВ IPV6 В ПРОГРАММЕ WIRESHARK

200.

РЕШЕНИЕ О ПЕРЕАДРЕСАЦИИ ПАКЕТОВ ХОСТОМ
Типы узлов назначений:
самому себе
локальный узел
удалённый узел

201.

ШЛЮЗ ПО УМОЛЧАНИЮ
Функции:
направляет трафик в другие сети
имеет локальный IP-адрес в том же диапазоне адресов, что
и другие хосты в сети
может принимать входные данные и передавать данные
наружу

202.

ТАБЛИЦЫ МАРШРУТИЗАЦИИ УЗЛА
Команды:
route print
netstat -r
Разделы:
список интерфейса
таблица маршрутизации IPv4
таблица маршрутизации IPv6

203.

РЕШЕНИЕ О ПЕРЕАДРЕСАЦИИ ПАКЕТОВ МАРШРУТИЗАТОРА
Информация в таблице маршрутизации:
маршруты с прямым подключением
удалённые маршруты
маршрут по умолчанию

204.

ОБЩИЕ СВЕДЕНИЯ О ТАБЛИЦЕ IPV4-МАРШРУТИЗАЦИИ

205.

ТАБЛИЦА МАРШРУТИЗАЦИИ МАРШРУТИЗАТОРА IPV4

206.

ЗАПИСИ ТАБЛИЦЫ МАРШРУТИЗАЦИИ С ПРЯМЫМ
ПОДКЛЮЧЕНИЕМ И УДАЛЁННОЙ СЕТИ
Источник
маршрута
Источник
маршрута
Сеть
назначения
Сеть
назначения
Исходящий
интерфейс
Административное
расстояние

207.

АДРЕС СЛЕДУЮЩЕГО ПЕРЕХОДА
PC
1
PC
2
10.1.1.0/24
192.168.10.0/24
.10
.10
G0/0
.1 209.165.200.224/30
.1
.225
.1
.226 R2 .1
R1 S0/0/0
.10
.10
G0/1
192.168.11.0/24
10.1.2.0/24

208.

МАРШРУТИЗАТОР – ЭТО ВЫЧИСЛИТЕЛЬНАЯ МАШИНА
Области использования:
филиалы
сети WAN
операторы связи
Компоненты:
ЦП
ОС
память

209.

Таблица
маршрутизации
Таблица ARP
Файл текущей
конфигурации
ОЗУ
Текущая версия IOS
Буфер
пакетов
NVRAM
Флешпамять
Файл
загрузочной
конфигурации
Файлы
IOS
Микропрограммное
обеспечение
управляющей
программы,
записанной в ПЗУ
(ограниченная IOS)
POST
ПАМЯТЬ МАРШРУТИЗАТОРА
ПЗУ

210.

ИНТЕРФЕЙСЫ LAN И WAN
Способы доступа к среде интерфейса:
консоль
Secure Shell (SSH)
Telnet

211.

ПРОЦЕСС ЗАГРУЗКИ МАРШРУТИЗАТОРА
ПЗУ
POST
Выполнение
процедуры POST
ПЗУ
Программа
начального запуска
Загрузка программы
начального запуска
Операционная
система Cisco IOS
Поиск и загрузка
операционной
системы
Конфигурация
Поиск и загрузка
файла конфигурации
или переход в режим
настройки
Флеш
TFTPсервер
NVRAM
TFTPсервер
Консоль

212.

АДРЕСА IPV4
192
11000000
.
168
10101000
.
10
00001010
.
10
00001010
Сопоставление IPv4-адреса в десятичном формате с точкойразделителем с IPv4-адресом в двоичном формате
Адрес в десятичном формате с точкой-разделителем: 192.168.10.10 – это
IP-адрес, назначенный компьютеру
Октеты: этот адрес состоит из 4 разных октетов
32-битный адрес: компьютер сохраняет адрес как целый 32-битный
поток данных

213.

ЧАСТИ СЕТИ И ХОСТА. МАСКА ПОДСЕТИ
IPv4-адрес
Сетевая часть
192
11000000
.
168
10101000
.
10
00001010
.
Узловая
часть
10
00001010

214.

ЛОГИЧЕСКАЯ ОПЕРАЦИЯ И
IP-адрес
.
168
10101000
.
10
00001010
.
Двоичное
192
11000000
10
00001010
Маска
подсети
255
11111111
.
255
11111111
.
255
11111111
.
0
00000000
Результаты
операции И
Сетевой
адрес
11000000
192
10101000
.
168
00001010
.
10
00000000
.
0

215.

ДЛИНА ПРЕФИКСА
32-битный адрес
Маска подсети
255.0.0.0
11111111.00000000.00000000.00000000
Длина префикса
/8
255.255.0.0
255.255.255.0
255.255.255.128
11111111.11111111.00000000.00000000
11111111.11111111.11111111.00000000
11111111.11111111.11111111.10000000
/16
/24
/25
255.255.255.192
255.255.255.224
11111111.11111111.11111111.11000000
11111111.11111111.11111111.11100000
/26
/27
255.255.255.240
255.255.255.248
11111111.11111111.11111111.11110000
11111111.11111111.11111111.11111000
/28
/29
255.255.255.252
11111111.11111111.11111111.11111100
/30

216.

СТАТИЧЕСКОЕ И ДИНАМИЧЕСКОЕ НАЗНАЧЕНИЕ IPV4-АДРЕСА
УЗЛУ

217.

ОДНОАДРЕСНАЯ ПЕРЕДАЧА
Адрес источника: 172.16.4.1
Адрес назначения: 172.16.4.253
172.16.4.1
172.16.4.2
172.16.4.3
172.16.4.253

218.

ШИРОКОВЕЩАТЕЛЬНАЯ РАССЫЛКА
Адрес источника: 172.16.4.1
Адрес назначения: 255.255.255.255
172.16.4.1
172.16.4.2
172.16.4.3
172.16.4.253

219.

МНОГОАДРЕСНАЯ РАССЫЛКА
Адрес источника: 172.16.4.1
172.16.4.253
172.16.4.1
172.16.4.2
172.16.4.3
224.10.10.5
172.16.4.4
224.10.10.5

220.

ОБЩЕДОСТУПНЫЕ И ЧАСТНЫЕ АДРЕСА IPV4
Блоки частных адресов:
10.0.0.0 /8
172.16.0.0 /12
192.168.0.0 /16

221.

IPV4-АДРЕСА СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ
адреса loopback (127.0.0.0 /8)
локальные адреса канала (169.254.0.0 /16)
адреса TEST-NET (192.0.2.0 /24)

222.

УСТАРЕВШАЯ КЛАССОВАЯ АДРЕСАЦИЯ
Диапазоны индивидуальных адресов:
класс A (от 0.0.0.0 /8 до 127.0.0.0 /8)
класс B (от 128.0.0.0 /16 до 191.255.0.0 /16)
класс C (от 192.0.0.0 /24 до 223.255.255.0 /24)

223.

БЕСКЛАССОВАЯ АДРЕСАЦИЯ
Классы
DиE
12,5 %
Класс C
12,5 %
Класс B
25 %
Класс A
Всего сетей: 128
Всего хостов в сети: 16 777 214
Класс A
50 %
Класс B
Всего сетей: 16 384
Всего хостов в сети: 65 534
Класс C
Всего сетей: 2 097 152
Всего хостов в сети: 254

224.

СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ ПРОТОКОЛОВ IPV4 И IPV6
Методы перехода:
двойной стек
туннелирование
преобразование

225.

ПРЕДСТАВЛЕНИЕ IPV6-АДРЕСОВ
X
:
0000

FFFF
X
:
X
:
000
0

0000
:

FFFF
FFFF
:
X
:
0000
:

FFFF
X
:
0000
:

FFFF
X
:
0000
:

FFFF
X
0000
:
0000
0000
0000
0000




1111
1111
1111
1111
4 шестнадцатеричных знака = 16 двоичных знаков
:
X
0000

:

FFFF
FFFF

226.

ПРАВИЛО 1. ПРАВИЛО 2
Предпочитаемый
формат
Без начальных нулей
Сжатый формат
2001:0DB8:0000:1111:0000:0000:0000:0200
2001: DB8:
0:1111:
2001:DB8:0:1111::200
0:
0:
0:200

227.

IPV6-АДРЕСА: ТИПЫ
индивидуальный (или одноадресной рассылки, unicast)
групповой (или многоадресной рассылки, multicast)
произвольный (или произвольной рассылки, anycast)
IPv6-адрес источника
IPv6-адрес назначения
2001:DB8:ACAD:1::10
2001:DB8:ACAD:1::8
2001:DB8:ACAD:1::1/64
2001:DB8:ACAD:1::/64

2001:DB8:ACAD:1::10/64
2001:DB8:ACAD:1::9/64
2001:DB8:ACAD:1::8/64
2001:DB8:ACAD:1::20/64

228.

ИНДИВИДУАЛЬНЫЕ IPV6-АДРЕСА
Типы:
глобальный индивидуальный адрес
локальный адрес канала
уникальный локальный адрес FC00::/7 – FDFF::/7
адрес Loopback ::1/128
неуказанный адрес ::/128
встроенный IPv4-адрес

229.

ЛОКАЛЬНЫЕ ИНДИВИДУАЛЬНЫЕ IPV6-АДРЕСА КАНАЛА
Пакет IPv6
IPv6-адрес источника
FE80::AAAA
IPv6-адрес назначения
FE80::DDDD
FE80::1/64

172.16.4.253
172.16.4.1
172.16.4.2
172.16.4.3
224.10.10.5

230.

СТРУКТУРА ГЛОБАЛЬНОГО ИНДИВИДУАЛЬНОГО
IPV6-АДРЕСА
Префикс глобальной
маршрутизации
001
Идентификатор Идентификатор
подсети
интерфейса
Диапазон первого гекстета:
0010 0000 0000 0000 (2000)
0011 1111 1111 1111 (3FFF)

231.

ПРЕФИКС ГЛОБАЛЬНОЙ МАРШРУТИЗАЦИИ IPV6 /48
48 бит
16 бит
64 бита
Префикс глобальной
маршрутизации
Идентификатор
подсети
Идентификатор
интерфейса
64 бита
Префикс маршрутизации A /48 +
идентификатор подсети 16 бит = префикс /64

232.

ПРИСВОЕННЫЕ ГРУППОВЫЕ АДРЕСА IPV6
IPv6-адрес источника
2001:ODB8:ACAD:1::1
IPv6-адрес назначения
FF02::1




2001:DB8:ACAD:1::10/64
2001:DB8:ACAD:1::9/64
2001:DB8:ACAD:1::8/64
2001:DB8:ACAD:1::20/64

233.

СООБЩЕНИЯ ICMPV4 И ICMPV6
Подтверждение узла
Узел назначения или сервис недоступны
Превышен интервал ожидания
Переадресация маршрута

234.

ЭХОЗАПРОС НА УДАЛЁННЫЙ ХОСТ
Примеры кодов сообщений о недоступном узле для ICMPv4:
0 – сеть недоступна
1 – узел недоступен
2 – протокол недоступен
3 – порт недоступен

235.

СООБЩЕНИЯ ICMPV6 RS И RA
Я буду отправлять
сообщения RA
каждые 200 секунд
Сообщение RA ICMPv6
Группе многоадресной рассылки на
все IPv6-устройства
Группе многоадресной рассылки на
все IPv6-маршрутизаторы
Сообщение RS
маршрутизатора ICMPv6
Я перезагрузился,
поэтому отправлю
сообщение RS,
чтобы запросить
ответ RA от
маршрутизатора

236.

ОБМЕН СООБЩЕНИЯМИ МЕЖДУ IPV6-УСТРОЙСТВАМИ
Я знаю
ваш IPv6адрес; а
какой у
вас MACадрес?
Группе многоадресной рассылки на
запрошенные узлы
Запрос соседнего узла (NS)
ICMPv6
Отправителю NS
(индивидуальный адрес)
Ответ соседнего узла
(NA) ICMPv6
Вот мой IPv6-адрес.
Вот мой MAC-адрес

237.

ВЫПОЛНЕНИЕ КОМАНДЫ PING.
ТЕСТИРОВАНИЕ ЛОКАЛЬНОГО СТЕКА

238.

ВЫПОЛНЕНИЕ КОМАНДЫ PING.
ТЕСТИРОВАНИЕ ПОДКЛЮЧЕНИЯ К ЛОКАЛЬНОЙ СЕТИ (LAN)
эхо-запрос
эхо-ответ
10.0.0.1
255.255.255.0
F0/1
10.0.0.254
255.255.255.0

239.

PING НА УДАЛЁННЫЙ УЗЕЛ
10.0.0.254
255.255.255.0
F1
10.0.1.254
255.255.255.0
F0
IP Routing Table
F0
10.0.1.0
F1
10.0.0.0
Echo request
Echo reply
10.0.0.1
255.255.255.0
10.0.0.253
255.255.255.0
10.0.0.2
255.255.255.
0
10.0.1.253
255.255.255.0
10.0.1.2
10.0.1.1
255.255.255.0
255.255.255.0

240.

ТРАССИРОВКА МАРШРУТА. ТЕСТИРОВАНИЕ ПУТИ
10.0.0.1
255.255.255.0
Traceroute
192.168.1.2
(TTL = 1)
192.168.1.2
255.255.255.0

241.

КОМАНДА TRACEROUTE (TRACERT). ТЕСТИРОВАНИЕ ПУТИ
Traceroute
192.168.1.2
(TTL = 1)
10.0.0.1
255.255.255.0
ICMP
Время истекло
Traceroute
192.168.1.2
(TTL = 2)
192.168.1.2
255.255.255.0

242.

ДОМЕНЫ ШИРОКОВЕЩАТЕЛЬНОЙ РАССЫЛКИ
G0/0
Интернет
R1
Широковещательный
домен

243.

ПРОБЛЕМЫ С КРУПНЫМИ ШИРОКОВЕЩАТЕЛЬНЫМИ
ДОМЕНАМИ
G0/0
Интернет
R1
LAN 1: 172.16.0.0/16
(400 пользователей)
LAN 2

244.

ПРИЧИНЫ ДЛЯ РАЗДЕЛЕНИЯ НА ПОДСЕТИ
Интернет
Администрация
LAN 1: 10.0.1.0 /24
Студенты
LAN 2: 10.0.2.0 /24
G0/0
Отдел кадров
G0/3 LAN 3: 10.0.3.0 /24
G0/1 R1
G0/2
Бухгалтерия
LAN 4: 10.0.4.0 /24

245.

РАЗДЕЛЕНИЕ НА ПОДСЕТИ НА ГРАНИЦЕ ОКТЕТОВ
Адрес подсети
(256 возможных
подсетей)
10.0.0.0/16
10.1.0.0/16
10.2.0.0/16
Диапазон узлов
(65 534 возможных узла
в каждой подсети)
10.0.0.1 – 10.0.255.254
10.1.0.1 – 10.1.255.254
10.2.0.1 – 10.2.255.254
Широковещательный
адрес
10.3.0.0/16
10.4.0.0/16

10.3.0.1 – 10.3.255.254
10.4.0.1 – 10.4.255.254

10.3.255.255
10.4.255.255

10.255.0.0/16
10.255.0.1 – 10.255.255.254
10.255.255.255
10.0.255.255
10.1.255.255
10.2.255.255

246.

РАЗДЕЛЕНИЕ НА ПОДСЕТИ С БЕСКЛАССОВОЙ АДРЕСАЦИЕЙ
(ПРИМЕР)
Адрес
192.
Сеть 192.168.1.0/24
168.
1.
0000
Маска
255.
255.
255.
Сетевая часть
0000
0000
0000
Узловая часть

247.

СОЗДАНИЕ ДВУХ ПОДСЕТЕЙ
PC1
192.168.1.0/25
G0/0
G0/1
PC2
192.168.1.128/25

248.

ФОРМУЛЫ РАЗДЕЛЕНИЯ НА ПОДСЕТИ
Формула расчёта количества подсетей: 2n
n – заимствованные биты
Формула расчёта количества узлов: 2n − 2
n – количество битов, оставшееся в части хоста

249.

СОЗДАНИЕ ПОДСЕТЕЙ С ПРЕФИКСОМ /16
Длина
префикса
/17
/18
/19
/20
Маска
подсети
Сетевой адрес (с – сеть, у – узел)
сссссссс.сссссссс.сууууууу.уууууууу
255.255.128.
11111111.11111111.10000000.0000
0
0000
сссссссс.сссссссс.ссуууууу.уууууууу
255.255.192.
11111111.11111111.11000000.0000
0
0000
сссссссс.сссссссс.сссууууу.уууууууу
255.255.224.
11111111.11111111.11100000.0000
0
0000
сссссссс.сссссссс.ссссуууу.уууууууу
255.255.240.
11111111.11111111.11110000.0000
0
Кол-во Кол-во
подсетей узлов
2
32766
4
16382
8
8 190
16
4 094

250.

СОЗДАНИЕ 1 000 ПОДСЕТЕЙ С ПРЕФИКСОМ /8
10
nnnnnnnn
Заимствование 1 бита:
Заимствование 2 бит:
21 = 2
22 = 4
Заимствование 3 бит:
Заимствование 4 бит:
Заимствование 5 бит:
23 = 8
24 = 16
25 = 32
Заимствование 6 бит:
Заимствование 7 бит:
26 = 64
27 = 128
Заимствование 8 бит:
Заимствование 9 бит:
28 = 256
29 = 512
.
.
0
hhhhhhhh
.
.
0
hhhhhhhh
.
.
0
hhhhhhhh

251.

РАЗДЕЛЕНИЕ НА ПОДСЕТИ НА ОСНОВЕ ТРЕБОВАНИЙ К УЗЛАМ
Маска
подсети
Маска подсети в двоичной системе Кол-во
(с – сеть, у – узел)
подсетей
Колво
узлов
255.255.
255.128
сссссссс.сссссссс.сссссссс.сууууууу
11111111.11111111.
11111111.10000000
2
126
/26
255.255.
255.192
4
62
/27
255.255.25
5.224
сссссссс.сссссссс.сссссссс.ссуууууу
11111111.
11111111.11111111.11000000
сссссссс.сссссссс.сссссссс.сссууууу
11111111.11111111.11111111.1110
0000
8
30
Длина
префикса
/25

252.

ПРИМЕР ТРЕБОВАНИЙ СЕТИ
Сетевая часть
Узловая часть
10101100.00010100.000000
00.00000000
10 бит в узловой
части
210 – 2 = 1 022 узла
172.16.0.0/22

253.

ТОПОЛОГИЯ СЕТИ. БАЗОВЫЕ ПОДСЕТИ
Здание
A
25 узлов
Здание
Б
20 узлов
Здание
В
15 узлов
Здание
Г
28 узлов
R1
R2
R3
R4

254.

МАСКИ ПОДСЕТИ ПРОИЗВОЛЬНОЙ ДЛИНЫ
30 узлов 30 узлов
30 узлов
30 узлов
30 узлов
30 узлов
30 узлов
30
узлов

255.

БАЗОВАЯ МОДЕЛЬ VLSM
Узловая часть
Десятичное
представление
с разделительными
точками
.00000000
192.168.20.0/24
0 11000000.10101000.00010100
1 11000000.10101000.00010100
.000
.001
00000
00000
192.168.20.0/27
192.168.20.32/27
2 11000000.10101000.00010100
3 11000000.10101000.00010100
.010
.011
00000
00000
192.168.20.64/27
192.168.20.96/27
Сетевая часть
11000000.10101000.00010100
Сети
LAN
А, Б,
В, Г

256.

VLSM НА ПРАКТИКЕ
Здание A
Здание Б
Здание В
Здание Г
192.168.20.0/27
192.168.20.32/27
192.168.20.64/27
192.168.20.96/27
R1
R2
R3
R4
192.168.20.224/30
192.168.20.228/30
192.168.20.232/30

257.

ПЛАНИРОВАНИЕ АДРЕСАЦИИ СЕТИ
?
Локальная сеть
студентов
Локальная сеть
преподавателей
Локальная сеть
администраторов

258.

ПЛАНИРОВАНИЕ ВЫДЕЛЕНИЯ АДРЕСОВ В СЕТИ
Предотвращение
дублирования
адресов
Планирование
выделения
адресов
Мониторинг
безопасности
и производительности
Обеспечение
и контроль
доступа

259.

ПРИСВОЕНИЕ АДРЕСОВ УСТРОЙСТВАМ
Сеть: 192.168.1.0/24
Использование
Узловые
устройства
Серверы
Принтеры
Промежуточные
устройства
Шлюз (LANинтерфейс
маршрутизатора)
Первый
.1
Последний
.229
.230
.240
.250
.239
.249
.253
.254

260.

ГЛОБАЛЬНЫЙ ИНДИВИДУАЛЬНЫЙ АДРЕС IPV6
48 бит
16 бит
64 бита
Префикс глобальной
маршрутизации
Идентификатор
подсети
Идентификатор
интерфейса
Префикс маршрутизации A /48 +
идентификатор подсети 16 бит = префикс /64
English     Русский Правила