Połączenie TCP
ważność krytycznamierzonysposób tcp
Czy port 80/443 serwera odpowiada na połączenie. Podstawowy sygnał, że serwer żyje — pada zanim HTTP zdąży odpowiedzieć.
WIKI
artykuł z 16.09.2026 · źródeł 10Połączenie TCP to parametr monitoringu stron internetowych, który sprawdza, czy serwer przyjmuje połączenie TCP na porcie usługi WWW: 80 dla HTTP albo 443 dla HTTPS. Pomiar kończy się jednym z trzech wyników: połączenie przyjęte, połączenie odrzucone albo brak odpowiedzi w wyznaczonym czasie. TCP (Transmission Control Protocol) jest protokołem połączeniowym, który za pomocą numerów portów wskazuje usługi aplikacyjne i rozdziela strumienie danych między hostami [1].
Jak działa
Połączenie TCP jest wyznaczone przez parę gniazd, czyli adresów IP z numerami portów po obu stronach [1]. Serwer, który czeka na klientów, utrzymuje port w stanie LISTEN, oznaczającym oczekiwanie na żądanie połączenia od dowolnego zdalnego hosta [1]. Połączenie powstaje w trójetapowym uzgadnianiu (ang. three-way handshake): klient wysyła segment SYN, serwer odpowiada segmentem z flagami SYN i ACK, a klient potwierdza go segmentem ACK [1].
Jeśli na porcie nie działa żadna aplikacja, połączenie nie istnieje, a odpowiedzią na przychodzący segment jest reset (RST) [1]. Według RFC 9293 próba otwarcia połączenia może zawieść na trzy sposoby: przez wyczerpanie ponownych transmisji segmentu SYN, przez otrzymanie RST albo przez komunikat ICMP Port Unreachable [1]. Komunikaty ICMP Destination Unreachable norma dzieli na błędy miękkie, po których TCP nie może przerwać połączenia, i twarde, po których powinien je przerwać [1]. Brak odpowiedzi nie jest wynikiem natychmiastowym: stos TCP ponawia SYN, a ponawianie SYN musi trwać co najmniej 3 minuty, zanim połączenie zostanie zamknięte [1].
Sprawdzenie strony przechodzi przez kilka warstw. Przeglądarka najpierw pyta DNS o adres serwera, a dopiero potem wysyła żądanie HTTP, przesyłane przez TCP/IP [4]. HTTP działa ponad niezawodnym połączeniem warstwy transportowej lub sesji [3], a kod statusu jest częścią odpowiedzi serwera i opisuje wynik żądania [3]. Awaria TCP oznacza więc, że do wymiany HTTP w ogóle nie doszło. Błąd HTTP, np. kod 500, oznacza, że połączenie powstało, a serwer odpowiedział [3]. Przyjęte połączenie TCP nie mówi nic o poprawności certyfikatu, kodzie odpowiedzi ani treści strony.
Standardy i specyfikacje
- RFC 9293 opisuje TCP: stany połączenia, trójetapowe uzgadnianie, reset i ponawianie SYN [1].
- Rejestr portów IANA przypisuje port 80 usłudze
http, a port 443 usłudzehttps, opisanej jako HTTP przez TLS/SSL; oba wpisy odsyłają do RFC 9110 [2]. - RFC 9110 ustala, że przy braku portu w adresie domyślny dla
httpjest TCP 80, a dlahttpsTCP 443, zarezerwowany dla HTTP przez TLS [3]. Przy połączeniu HTTPS klient musi zweryfikować tożsamość serwera, czyli sprawdzić certyfikat [3]. Sonda TCP kończy pracę przed tym etapem. - RFC 9114 definiuje HTTP/3 jako odwzorowanie semantyki HTTP na protokół QUIC, udostępniany na portach UDP [9]. Gdy UDP jest zablokowane, klienci powinni przejść na wersje HTTP oparte na TCP [9]. Sonda TCP nie sprawdza więc dostępności HTTP/3.
Zagrożenia i skutki
Brak usługi na porcie. Port jest zamknięty, gdy host odpowiada, ale żadna aplikacja na nim nie nasłuchuje [5]. Taki obraz daje zatrzymany proces serwera WWW, na przykład po awarii albo w trakcie restartu.
Filtrowanie. Port jest filtrowany, gdy filtr pakietów nie dopuszcza sondy: może to być osobny firewall, reguły routera albo firewall na samym hoście [5]. Filtry częściej po cichu porzucają pakiety, niż odsyłają komunikat ICMP [5]. Program Fail2Ban analizuje logi i po zbyt wielu nieudanych logowaniach zmienia reguły firewalla tak, by odrzucać nowe połączenia z danego adresu IP przez ustalony czas [8]. Jeśli taka blokada obejmie adres sondy, strona dla zwykłych użytkowników może działać, a pomiar pokaże awarię.
Przepełnienie kolejki. Argument backlog funkcji listen określa maksymalną długość kolejki oczekujących połączeń [6]. Gdy kolejka jest pełna, klient może dostać błąd ECONNREFUSED albo żądanie zostanie zignorowane, a późniejsza próba może się udać [6].
SYN flood. Atak SYN flooding to metoda odmowy usługi, w której atakujący wysyła serię segmentów SYN, często z podszytych adresów, i zapełnia kolejkę półotwartych połączeń [7]. Przy pełnej kolejce kolejne SYN są ignorowane albo zastępują niedokończone połączenia, a prawidłowe żądania są odrzucane [7]. Zachowanie zależy od implementacji i może obejmować wysyłanie RST [7].
Pomiar z jednej lokalizacji. Brak odpowiedzi nie musi oznaczać awarii serwera. Nmap ponawia sondy, bo pakiet mógł zginąć z powodu przeciążenia sieci, a nie filtrowania [5]. Nagios Core, żeby unikać fałszywych alarmów przy przejściowych problemach, pozwala ustalić, ile razy sprawdzenie ma zostać powtórzone, zanim stan uzna się za rzeczywisty problem [10].
Przykłady
| Wynik sondy | Co zobaczy sonda | Typowa przyczyna |
|---|---|---|
| Połączenie przyjęte | SYN-ACK, uzgadnianie kończy się ACK [1] | aplikacja nasłuchuje na porcie [5] |
| Odrzucone | segment RST [1] | serwer WWW zatrzymany, nic nie nasłuchuje [5] |
| Nieosiągalny | komunikat ICMP Port Unreachable lub Destination Unreachable [1] | cel nieosiągalny po drodze, filtr odsyłający błąd [1] [5] |
| Brak odpowiedzi | ponawiane SYN bez odpowiedzi do limitu czasu [1] | firewall porzucający pakiety, blokada IP sondy [5] [8] |
| Przejściowe odrzucenia lub brak odpowiedzi | ECONNREFUSED albo zignorowane SYN [6] | pełna kolejka połączeń, SYN flood [6] [7] |
| Przyjęte, strona nie działa | połączenie TCP poprawne, błąd w wyższej warstwie [3] | kod 5xx, błąd certyfikatu, problem z treścią [3] |
- [1] RFC 9293 — Transmission Control Protocol (TCP) · IETF
- [2] Service Name and Transport Protocol Port Number Registry · IANA
- [3] RFC 9110 — HTTP Semantics · IETF
- [4] How the web works · MDN Web Docs
- [5] Port Scanning Basics — Nmap Reference Guide · Nmap Project
- [6] listen(2) — Linux manual page · man7.org
- [7] RFC 4987 — TCP SYN Flooding Attacks and Common Mitigations · IETF
- [8] Fail2Ban — README · Fail2Ban Project
- [9] RFC 9114 — HTTP/3 · IETF
- [10] State Types — Nagios Core Documentation · Nagios Enterprises
STATS
wyniki z systemu · tylko liczby zbiorcze- Stron zmierzonych
- 270w ostatnim dniu pomiaru
- OK
- 538odczytów
- Fail
- 6odczytów
- Nie dało się sprawdzić
- 10timeout, blokada, limit zapytań
- Udział fail
- 1,1%bez „nie dało się”
- Stron łącznie
- 272choć jeden odczyt
- OK
- 74865odczytów
- Fail
- 378odczytów
- Nie dało się sprawdzić
- 2854timeout, blokada, limit zapytań
- Udział fail
- 0,5%bez „nie dało się”
| Dzień | fail | nie dało się sprawdzić | ok |
|---|---|---|---|
| 08.10.2026 | 6 odczytów | 106 odczytów | 1670 odczytów |
| 09.10.2026 | 8 odczytów | 105 odczytów | 1669 odczytów |
| 10.10.2026 | 13 odczytów | 142 odczyty | 1627 odczytów |
| 11.10.2026 | 8 odczytów | 18 odczytów | 1756 odczytów |
| 12.10.2026 | 6 odczytów | 16 odczytów | 1760 odczytów |
| 13.10.2026 | 11 odczytów | 17 odczytów | 1754 odczyty |
| 14.10.2026 | 6 odczytów | 68 odczytów | 1708 odczytów |
| 15.10.2026 | 8 odczytów | 98 odczytów | 1676 odczytów |
| 16.10.2026 | 6 odczytów | 96 odczytów | 1680 odczytów |
| 17.10.2026 | 6 odczytów | 97 odczytów | 1679 odczytów |
| 18.10.2026 | 9 odczytów | 105 odczytów | 1668 odczytów |
| 19.10.2026 | 6 odczytów | 98 odczytów | 1678 odczytów |
| 20.10.2026 | 6 odczytów | 100 odczytów | 1676 odczytów |
| 21.10.2026 | 6 odczytów | 44 odczyty | 1741 odczytów |
| 22.10.2026 | 7 odczytów | 19 odczytów | 1756 odczytów |
| 23.10.2026 | 7 odczytów | 19 odczytów | 1756 odczytów |
| 24.10.2026 | 9 odczytów | 26 odczytów | 1747 odczytów |
| 25.10.2026 | 6 odczytów | 71 odczytów | 1705 odczytów |
| 26.10.2026 | 6 odczytów | 100 odczytów | 1676 odczytów |
| 27.10.2026 | 6 odczytów | 104 odczyty | 1672 odczyty |
| 28.10.2026 | 6 odczytów | 101 odczytów | 1675 odczytów |
| 29.10.2026 | 6 odczytów | 102 odczyty | 1679 odczytów |
| 30.10.2026 | 9 odczytów | 100 odczytów | 1769 odczytów |
| 31.10.2026 | 10 odczytów | 104 odczyty | 1764 odczyty |
| 01.11.2026 | 11 odczytów | 50 odczytów | 1817 odczytów |
| 02.11.2026 | 10 odczytów | 22 odczyty | 1905 odczytów |
| 03.11.2026 | 18 odczytów | 19 odczytów | 1941 odczytów |
| 04.11.2026 | 21 odczytów | 33 odczyty | 2072 odczyty |
| 05.11.2026 | 25 odczytów | 100 odczytów | 1907 odczytów |
| 06.11.2026 | 6 odczytów | 10 odczytów | 538 odczytów |
- Otwarte teraz
- 15stron: 15
- Nowe w ostatnim dniu
- 8205.11.2026
- Otwarte od początku
- 448stron: 179
- Zamknięte
- 433od początku
- Mediana trwania
- 6 h 0 minod wykrycia do zamknięcia
| Ustalenie | Skutek | Otwarte teraz | Łącznie | Zamknięte |
|---|---|---|---|---|
| Połączenie TCP tcp | strona nie odpowiada | 15 | 448 | 433 |
| Dzień | nowe ustalenia |
|---|---|
| 08.10.2026 | 4 ustalenia |
| 09.10.2026 | 3 ustalenia |
| 10.10.2026 | 79 ustaleń |
| 11.10.2026 | 3 ustalenia |
| 12.10.2026 | 0 ustaleń |
| 13.10.2026 | 4 ustalenia |
| 14.10.2026 | 28 ustaleń |
| 15.10.2026 | 4 ustalenia |
| 16.10.2026 | 0 ustaleń |
| 17.10.2026 | 1 ustalenie |
| 18.10.2026 | 12 ustaleń |
| 19.10.2026 | 2 ustalenia |
| 20.10.2026 | 4 ustalenia |
| 21.10.2026 | 0 ustaleń |
| 22.10.2026 | 3 ustalenia |
| 23.10.2026 | 1 ustalenie |
| 24.10.2026 | 11 ustaleń |
| 25.10.2026 | 29 ustaleń |
| 26.10.2026 | 5 ustaleń |
| 27.10.2026 | 2 ustalenia |
| 28.10.2026 | 0 ustaleń |
| 29.10.2026 | 2 ustalenia |
| 30.10.2026 | 1 ustalenie |
| 31.10.2026 | 3 ustalenia |
| 01.11.2026 | 1 ustalenie |
| 02.11.2026 | 1 ustalenie |
| 03.11.2026 | 1 ustalenie |
| 04.11.2026 | 7 ustaleń |
| 05.11.2026 | 82 ustalenia |
| 06.11.2026 | 0 ustaleń |
- Przebiegów
- 60sposób tcp
- W 30 dni
- 0przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- 20461 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 22.09.2026Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.
| Obszar i ważność | Dostępność · krytyczna (D01) |
|---|---|
| Workflow i częstotliwość | creato_ping_avail_v2 działa na LAB247Skaner 2.0, rytm „dostepnosc”: premium co 15 min, reszta co 3–12 h · Dawny workflow n8n avail_v2; od 20.09 te same sondy w rytmie kohort skanera. Sposób ssl daje odczyt ssl_expiry (dni do wygaśnięcia certyfikatu); odczyty trafiają do check_results. |
| Sonda i helper | sposób tcp · CREATO_PING/helpers/tcp_check.py |
| Testy |
|
| Typ wyniku | enum: ok / fail / timeout + czas połączenia |
| Jednostka | ms (czas do nawiązania połączenia) |
| Próg i reguła | Timeout 2,0 s (+0,5 s marginesu wyłącznika). Odrzucenie albo błąd sieci = fail, brak odpowiedzi w czasie = timeout. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/config.py → TIMEOUTS["tcp"]CREATO_PING/helpers/site_params.py → CRITICAL_CHECK_TYPES |
| Retencja odczytów | Surowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Spłaszczony wynik jedzie dodatkowo do tabeli `check_results` bazy LAB247 (skrzynka `state/checks_outbox` → timer co 10 min); tej tabeli kod LAB247 nie czyści. |
| Karta przepisana z | CREATO_PING/helpers/tcp_check.py · CREATO_PING/helpers/config.py · CREATO_PING/helpers/site_params.py · LAB247/site/src/lib/ingest/apply.ts · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026 |
tcp: bramka polityki otwarta (gate=true) → sprawa w skanerze → Serwer nie przyjmuje połączenia — waga 4 → ocena 7–8 (pomarańczowy), status strony „wysoki”, dopóki sprawa jest otwarta. Okres łaski: 1. porażka zakłada sprawę ze statusem IN PROGRESS, której wskaźnik NIE liczy (`ocena.py` pomija sprawy niepotwierdzone), 2. porażka z rzędu potwierdza sprawę i dopiero wtedy usterka wchodzi do oceny. Pierwszy odczyt ok zamyka sprawę. tcp jest sprawdzeniem krytycznym: potwierdzona porażka to najcięższa usterka, jaką ten parametr może dać.
| Kod | Finding | Severity | Pewność | Skutek | Finding / alarm | Waga → ocena | Co zrobić |
|---|---|---|---|---|---|---|---|
| D01.01 | Połączenie TCPtcp | Wysoka | Ewidentne | strona nie odpowiada | tak / tak | waga 4 → ocena 7–8 (pomarańczowy) | Sprawdź hosting: serwer, firewall, limit połączeń. |
| Kod i klucz | D01.01 · tcp · w tabeli typów |
|---|---|
| Co znaczy | Port 443/80 serwera nie odpowiada na połączenie. |
| Kiedy powstaje | Check otwiera połączenie TCP przez asyncio.open_connection(domena, port 443). Status timeout, gdy minie 2,5 s (2,0 s + 0,5 s marginesu); status fail przy każdym wyjątku połączenia.Należy do typów krytycznych w CRITICAL_CHECK_TYPES (site_params.py:19), więc po 2. porażce dostaje DOWN. |
| Severity · pewność | Wysoka · Ewidentne |
| Skutek dla strony | strona nie odpowiada · zakłada Finding · alarm tak |
| Waga → ocena | waga 4 → ocena 7–8 (pomarańczowy) |
| Klasyfikacja | OCSF 1.9.0: poza klasami Findingu |
| Rekord OCSF | finding_info.analytic.uid = "D01.01" · analytic.name = "tcp" · finding_info.types = ["D01 Połączenie TCP"] |
| Co zrobić | Sprawdź hosting: serwer, firewall, limit połączeń. |
| Wersje typu |
|
LOOP
pętli: 2Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Sygnał: Strona wisiała na DOWN, choć działała: hosting klienta zbanował IP serwera monitoringu (SYN porzucany, nie odrzucany) po serii automatycznych odpytań. · dotyczy też: Kod odpowiedzi HTTP, SSL: ważność certyfikatu
- 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
- 2. Werdyktręczniedostępność potwierdzona z innych lokalizacji
- 3. Miarabrakliczników trafności wtedy nie było
- 4. Kartabrakkarta parametru powstała 2026-09-16
- 5. Zmianazrobionezewnętrzny cross-check i nowy status strony
- 6. Replaybrakbrak zapisanych odczytów do replayu
| Data | Zmiana | Powód | Wpływ na system | Commit · replay |
|---|---|---|---|---|
| 2026-07-19 | Timeout TCP/HTTP z naszego serwera sprawdzany z zewnątrz; odpowiedź z innych lokalizacji = status BLOKADA zamiast DOWN.helpers/network_block_check.py · helpers/site_params.py | Blokada sieciowa monitoringu to inny mechanizm niż blokada UA — działa poniżej HTTP. | cały system Nowy status strony w kolejności pierwszeństwa, nad DOWN — zmienia status każdej strony, nie tylko tego parametru. | 8c0c0c6bez replayubez zapisu zatwierdzenia |
Sygnał: Adres bez www odpowiadał 200, a forma z www miała certyfikat samopodpisany — silnik eskalował to do DOWN. · dotyczy też: Rozwiązywanie DNS, Kod odpowiedzi HTTP, SSL: ważność certyfikatu, Przekierowanie www ↔ bez www
- 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
- 2. Werdyktręcznieużytkownicy widzą sprawną stronę, więc alarm był fałszywy
- 3. Miarabrakliczników trafności wtedy nie było
- 4. Kartabrakkarta parametru powstała 2026-09-16
- 5. Zmianazrobionesprawdzenie częściowej dostępności i status CONFIG
- 6. Replaybrakbrak zapisanych odczytów do replayu
| Data | Zmiana | Powód | Wpływ na system | Commit · replay |
|---|---|---|---|---|
| 2026-08-04 | Częściowa dostępność (jedna forma 200, druga zepsuta) daje status CONFIG, który bije DOWN.helpers/site_params.py · helpers/partial_availability_check.py | Błąd konfiguracji do naprawy to nie awaria; realny DOWN zostaje, gdy nie odpowiada żadna forma. | cały system Nowy status strony nad DOWN; dotyczy wszystkich sprawdzeń krytycznych (tcp, dns, http, ssl). | 091e318bez replayubez zapisu zatwierdzenia |