Вы находитесь на странице: 1из 21

Основы работы в сети на Java

0
План лекции

• Протоколы транспортного уровня


• Понятие сокета
• Пакет java.net
• Классы Socket и ServerSocket

1
Модель OSI
Сетевая модель OSI — Базовая Эталонная Модель Взаимодействия Открытых Систем
(ЭМВОС)) — сетевая модель стека (магазина) сетевых протоколов OSI/ISO (ГОСТ Р СО/МЭК 7498-1
99). Посредством данной модели различные сетевые устройства могут взаимодействовать друг с
другом. Модель определяет различные уровни взаимодействия систем. Каждый уровень
выполняет определённые функции при таком взаимодействии.

• Прикладной уровень
• Уровень представления
• Сеансовый уровень
• Транспортный уровень
• Сетевой уровень
• Уровень соединения
• Физический уровень

2
Модель OSI

3
Internet Protocol
• IP - протокол интернета, является
низкоуровневым маршрутизирующим
сетевым протоколом, разбивающим
данные на небольшие пакеты и
посылающим их через сеть по
определенному адресу, что не гарантирует
доставки всех этих пакетов по этому адресу.

4
Transmission Control Protocol

• TCP – основанный
на соединениях
протокол, обеспечивающий
надежную передачу
данных между двумя
компьютерами
с сохранением порядка
данных

• Используется в: HTTP, FTP, Telnet и др.

5
User Datagram Protocol
• UDP – не основанный на соединениях
протокол, реализующий пересылку
независимых пакетов данных, называемых
дейтаграммами, от одного компьютера
к другому без гарантии их доставки.

6
Модель «Клиент-сервер»
• Порядок работы
– Каждая из сторон виртуального соединения называется
«сокет» (socket)
– Процесс-сервер инициализируется при запуске и далее
бездействует, ожидая поступления запроса от клиента
– Процесс-клиент посылает запрос на установление
соединения с сервером, требуя выполнить для него
определенную функцию

• Виды приложений-серверов
– Сервер последовательной обработки запросов
– Сервер параллельной обработки запросов

7
Понятие порта
app app app app

port port port port


TCP or UDP
Packet
Data port # data

• Сокет привязывается к порту


• Порты 0-1023 зарезервированы

8
Интерфейс сокетов
• В 80-ых годах американское правительственное
агентство по поддержке исследовательских проектов
(ARPA), финансировало реализацию протоколов
TCP/IP для UNIX в Калифорнийском университете в г.
Беркли
• Разработан интерфейс
прикладного программирования
для сетевых приложений
TCP/IP (TCP/IP API)
• TCP/IP sockets или
Berkeley sockets

9
Абстракция сокета

• Сетевое соединение – это процесс передачи данных по


сети между двумя компьютерами или процессами
• Сокет – конечный пункт передачи данных
• Для программ сокет – одно из окончаний сетевого
соединения
• Для установления соединения каждая из сетевых
программ должна иметь свой собственный сокет
• Сокет связан с номером порта

10
Абстракция сокета

p
o connection
server r
t request
client

p
o
server r p
t o
r client
port t
connection

11
А что же на Java?

• Все низкоуровневое взаимодействие


скрыто от пользователя

• Существует семейство классов,


обеспечивающих настройку сокетов и
работу с ними

12
Пакет java.net

• Java для работы в сети имеет специальный пакет java.net,


содержащий класс Socket, что в переводе означает
«гнездо». Ключевыми классами для реализации
взаимодействия программ по протоколу TCP являются :
• java.net.ServerSocket - класс реализует серверный сокет,
который ожидает запросы, приходящие от клиентов по
сети, и может отправлять ответ.
• java.net.Socket - класс реализует клиентский сокет.

13
Адресация

• IP-адресация
InetAddress

Inet4Address Inet6Address

• Адрес сокета
SocketAddress

InetSocketAddress

14
Общая схема соединения

15
Класс Socket
• Реализует клиентский сокет и его функции
• Конструкторы
– Socket()
– Socket(InetAddress address, int port)
– Socket(InetAddress address, int port,
InetAddress localAddr, int localPort)
– Socket(String host, int port)
– Socket(String host, int port, InetAddress localAddr,
int localPort)
• Методы
– void close()
– InetAddress getLocalAddress()
– InputStream getInputStream()
– OutputStream getOutputStream()
– static void setSocketImplFactory(SocketImplFactory
fac)
– И прочие…

16
Порядок работы
с клиентским сокетом
• Открытие сокета
• Открытие потока ввода и/или потока
вывода для сокета
• Чтение и запись в потоки согласно
установленному протоколу общения с
сервером
• Закрытие потоков ввода-вывода
• Закрытие сокета
17
18
Класс ServerSocket
• Реализует серверный сокет и его функции
• Конструкторы
– ServerSocket()
– ServerSocket(int port)
– ServerSocket(int port, int backlog)
• Методы
– void close()
– Socket accept()
– void bind(SocketAddress endpoint)
– И прочие…

19
20

Оценить