02.3 (Конспект) SocketProgramming
Два варианта с которыми мы встречаемся при работе с сетевыми протоколами - это:
- Инкапсуляция, то есть вложенность данных более верхнего уровня в данные нижнего уровня.
- Независимость реализации сетевых протоколов между уровнями.
Идентификатор уровня TCP - это адрес отправителя, адрес получателя, код отправителя и код получателя (нужно для того чтобы отличать потоки, когда адреса одинаковые).
Сокет выглядит как портал, который принимает с одной стороны данные и "выплёвывает" на другом конце.
Два подхода для реализации передачи данных:
- TCP - с отслеживаем очерёдности данных и с отслеживанием ошибок
- UDP - без всего что есть в TCP
Потоковое подключение - гарантируется защита от переполнения.
RDM - очерёдность не гарантирована, а цельность - гарантированна
RAW - когда хотите посылать прямо Ethernet-фреймы
SEQPACKET - поток у которого отсутствует управление переполнением, зато присутствует проверка очерёдности.
Напишем программу, которая утилизирует соединение с помощью сокетов. Программа, которая получает датаграмму:
Теперь напишем программу, которая посылает одну датаграмму.
И вот результат их совместной работы:
Теперь напишем программу, которая использует TCP сокет: