7 встреча — Программирование компьютерных сетей (А....

20
Седьмая встреча SC{2} Введение в программирование компьютерных сетей Анатолий Свириденков Codedgers Март 2013

Upload: smolensk-computer-science-club

Post on 16-Jun-2015

443 views

Category:

Education


2 download

DESCRIPTION

7 встреча Smolensk Computer Science Club Презентация Анатолия Свириденкова про программирование компьютерных сетей ВКонтакте: http://vk.com/scsc7 Видео: http://www.youtube.com/watch?v=WebX_8mUc1o

TRANSCRIPT

Page 1: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Седьмая встреча SC{2}

Введение в программирование компьютерных сетей

Анатолий СвириденковCodedgers

Март 2013

Page 2: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Два типа связи

Сети:

● телекоммуникационные сети;● компьютерные сети.

Коммутация:

● канальная коммутация;● пакетная коммутация.

Page 3: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Канальная коммутация

● Элементарный канал – T1 ~ 2Mb;

● Составной канал – T3;

● Кратность каналов;

● Алло девушка? “Рубин” срочно!

Page 4: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Пакетная коммутация

● Заголовок, тело, хвост;

● Буферизация;

● Сохранение с продвижением.

Page 5: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Методы продвижения пакетов

● Дейтаграмма;

● Логическое соединение;

● Виртуальный канал.

Page 6: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

В чем сила, брат?

Page 7: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Дейтограммы (udp)

● Нет соединений;

● Не гарантируется порядок;

● Доставка не гарантируется.

Page 8: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Логическое соединение (TCP)

● Установление и разрыв соединения;

● Тройное рукопожатие;

● “Гарантия” доставки.

Page 9: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Виртуальный канал (тоннель)

● Разный носитель (tcp, udp, http);

● Base 64;

● Возможно шифрование;

● XXX over YYY.

Page 10: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Взгляд со стороны разработчика

● Беркли API или блокирующий режим работы сокетов;

● BSD-like или не блокирующий режим работы сокетов;

● Асинхронный режим работы.

Page 11: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Berkeley API

● Выпущены в 1983-м году;

● 4.2BSD Unix;

Page 12: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Cокетыint socket(int domain, int type, int protocol);

domain:● PF_INET – IPv4;● PF_INET6 - IPv6;● PF_UNIX – файлы в unix.

type:● SOCK_STREAM - TCP;● SOCK_DGRAM – UDP;● SOCK_RAW – IP.

protocol:● IPPROTO_TCP;● IPPROTO_UDP;● и т.д., например - IPPROTO_DCCP.

Page 13: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Получение IP по имени (DNS запрос)

● hostent *gethostbyname(const char *name);

● Иерархические запросы;

● Кеширование.

Page 14: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

http://www.root-servers.org/

Page 15: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Установление связи

● int connect(int sockfd, const sockaddr *serv_addr, socklen_t addrlen);

● int bind(int sockfd, const sockaddr *my_addr, socklen_t addrlen);

● int listen(int sockfd, int backlog);

● shutdown(int sockfd, int flag);

● close(int sockfd);

Page 16: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Передача данных

● send● recv● sendto● recvfrom● sendmsg● recvmsg

Page 17: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Прием входящих соединений

int accept(int sockfd, sockaddr *cliaddr, socklen_t *addrlen);

while(true){ HANDLE newSocket = accept( sock, 0, 0 ); ProduceSocket(newSocket);}

Page 18: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

BSD-like сокеты

int select( _In_ int nfds, _Inout_ fd_set *readfds, _Inout_ fd_set *writefds, _Inout_ fd_set *exceptfds, _In_ const struct timeval *timeout);

Page 19: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Асинхронные сокеты

● WSAXXXX функции;

● boost::asio.

Page 20: 7 встреча — Программирование компьютерных сетей (А. Свириденков)

Вопросы?