More Related Content Similar to 7 встреча — Программирование компьютерных сетей (А. Свириденков) (20) 7 встреча — Программирование компьютерных сетей (А. Свириденков)1. Седьмая встреча SC{2}
Введение в программирование
компьютерных сетей
Анатолий Свириденков
Codedgers
Март 2013
2. Два типа связи
Сети:
● телекоммуникационные сети;
● компьютерные сети.
Коммутация:
● канальная коммутация;
● пакетная коммутация.
3. Канальная коммутация
● Элементарный канал – T1 ~ 2Mb;
● Составной канал – T3;
● Кратность каналов;
● Алло девушка? “Рубин” срочно!
7. Дейтограммы (udp)
● Нет соединений;
● Не гарантируется порядок;
● Доставка не гарантируется.
10. Взгляд со стороны
разработчика
● Беркли API или блокирующий режим
работы сокетов;
● BSD-like или не блокирующий режим
работы сокетов;
● Асинхронный режим работы.
12. 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.
13. Получение IP по имени
(DNS запрос)
● hostent *gethostbyname(const char *name);
● Иерархические запросы;
● Кеширование.
15. Установление связи
● 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);
17. Прием входящих соединений
int accept(int sockfd, sockaddr *cliaddr, socklen_t *addrlen);
while(true)
{
HANDLE newSocket = accept( sock, 0, 0 );
ProduceSocket(newSocket);
}
18. BSD-like сокеты
int select(
_In_ int nfds,
_Inout_ fd_set *readfds,
_Inout_ fd_set *writefds,
_Inout_ fd_set *exceptfds,
_In_ const struct timeval *timeout
);