Skip to main content

Интернет Програмиране - Основи

Основи на Мрежовото Програмиране: Преглед на TCP/IP, Протоколи и Технологии

TCP/IP Протоколи

TCP/IP е основният комуникационен протокол в Интернет, разделяйки се на два основни компонента:

  • TCP (Transmission Control Protocol): Гарантира доставянето на пакети от източника до крайната дестинация, осигурявайки надеждност и последователност.
  • IP (Internet Protocol): Отговаря за маршрутизацията на пакетите, като използва уникални IP адреси за идентификация на устройства в мрежата.

OSI Модел

OSI (Open Systems Interconnection) моделът е концептуална рамка, която се използва за разбиране и проектиране на мрежови системи. Той се състои от седем слоя:

  1. Физически Слой: Управлява преноса на сурови битове по физическата среда.
  2. Data Link Слой: Отговаря за мрежовата комуникация и корекция на грешки на физическия слой.
  3. Мрежови Слой: Маршрутизира пакети, включително IP адресация и маршрутизация.
  4. Транспортен Слой: Управлява край-до-край доставката на данни (TCP, UDP).
  5. Сесиен Слой: Управлява сесии между комуникиращи се устройства.
  6. Презентационен Слой: Конвертира данните във формат, който приложният слой може да използва.
  7. Приложен Слой: Интерфейсът между мрежовата услуга и крайния потребител.

Други Важни Протоколи и Технологии

  • HTTP (Hypertext Transfer Protocol): Основен протокол за трансфер на данни в World Wide Web.
  • HTTPS (HTTP Secure): Версия на HTTP с добавено криптиране чрез SSL/TLS.
  • SSL/TLS (Secure Sockets Layer / Transport Layer Security): Протоколи за криптиране на мрежови комуникации.
  • WebSocket: Технология, която осигурява двупосочна комуникация по една единствена TCP връзка.
  • FTP (File Transfer Protocol): Протокол за трансфер на файлове между клиент и сървър.
  • SSH (Secure Shell): Протокол за сигурен достъп до отдалечени системи.

Примерен Java Код за Създаване на TCP Сървър и Клиент

TCP Сървър

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerDemo {
public static void main(String[] args) throws IOException {
// Създаване на ServerSocket на порт 1211
ServerSocket server = new ServerSocket(1211);

// Сървърът "слуша" за входящи връзки
Socket socket = server.accept();

// Създаване на Scanner обект за четене на данни от клиента
Scanner scan = new Scanner(socket.getInputStream());

// Прочитане на числото, изпратено от клиента
int number = scan.nextInt();

// Изпращане на отговор обратно към клиента
PrintStream printout = new PrintStream(socket.getOutputStream());
printout.println((number % 2 == 0) ? "Your number is even" : "Your number is odd");

// Затваряне на сървъра
server.close();
}
}

TCP Клиент

import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.InputMismatchException;
import java.util.Scanner;

public class ClientDemo {
public static void main(String args[]) throws IOException {
// Създаване на сокет към сървъра
Socket s = new Socket("127.0.0.1", 1211);

// Създаване на Scanner за четене от конзолата
Scanner scan = new Scanner(System.in);

// Създаване на Scanner за четене на отговор от сървъра
Scanner scan2 = new Scanner(s.getInputStream());

// Изпращане на число към сървъра
PrintStream printout = new PrintStream(s.getOutputStream());
System.out.println("Enter some value:");
try {
int number = scan.nextInt();
printout.println(number);

// Четене на отговора от сървъра и извеждане на конзолата
String input = scan2.nextLine();
System.out.println(input);
} catch (InputMismatchException e) {
System.out.println("Enter a correct value");
} finally {
// Затваряне на ресурсите
if (s != null) s.close();
if (scan != null) scan.close();
if (scan2 != null) scan2.close();
}
}
}

В тези примери, сървърът приема число от клиента, проверява дали е четно или нечетно и изпраща отговор обратно. Клиентът изпраща числото и чака отговор от сървъра.