---
title: 'CoAP protocol for the Internet of Things - traffic study'
url: 'https://ra1ahq.blog/en/protokol-coap-dlya-interneta-veshei-izuchenie-trafika'
markdown: 'https://ra1ahq.blog/en/protokol-coap-dlya-interneta-veshei-izuchenie-trafika.md'
lang: en
date: '2021-06-18'
description: 'Using WireShark, we were able to capture two packets of the new CoAP network protocol. Contra'
taxonomy:
  category:
    - blog
  tag:
    - безопасность
  archives_month:
    - jun_2021
  archives_year:
    - '2021'
---

# CoAP protocol for the Internet of Things - traffic study

18 

 June 

 2021 

 ![CoAP protocol for the Internet of Things - traffic study](https://ra1ahq.blog/images/e/8/5/6/c/e856c6da641edc9b869c08831fc4d8b18b42ba8b-title.png)11:35

### CoAP protocol for the Internet of Things - traffic study

 [безопасность](https://ra1ahq.blog/en/tag:%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C) 

18 June 2021 11:35

Using WireShark, we were able to capture two packets of the new CoAP network protocol.

Contrained Application Protocol (RFC 7252 standard) is designed for the Internet of Things and operates on the basis of UDP. This simple protocol allows machines to communicate with each other (M2M - machine to machine).

**The first packet is a device request to server 188.34.167.226:**
`Frame 13: 103 bytes on wire (824 bits), 103 bytes captured (824 bits) on interface 0`
`Ethernet II, Src: Keenetic_0f:40:ef (50:ff:20:0f:40:ef), Dst: router.lan (c4:ad:34:45:6a:fb)`
`Internet Protocol Version 4, Src: 192.168.0.73 (192.168.0.73), Dst: static.226.167.34.188.clients.your-server.de (188.34.167.226)`
`0100 .... = Version: 4`
`.... 0101 = Header Length: 20 bytes (5)`
`Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)`
`Total Length: 89`
`Identification: 0xfaca (64202)`
`Flags: 0x4000, Don't fragment`
`Time to live: 64`
`Protocol: UDP (17)`
`Header checksum: 0x1ad3 [validation disabled]`
`[Header checksum status: Unverified]`
`Source: 192.168.0.73 (192.168.0.73)`
`Destination: static.226.167.34.188.clients.your-server.de (188.34.167.226)`
`User Datagram Protocol, Src Port: 56911 (56911), Dst Port: coap (5683)`
`Source Port: 56911 (56911)`
`Destination Port: coap (5683)`
`Length: 69`
`Checksum: 0x8392 [unverified]`
`[Checksum Status: Unverified]`
`[Stream index: 1]`
`Constrained Application Protocol, Confirmable, POST, MID:41783`
`01.. .... = Version: 1`
`..00 .... = Type: Confirmable (0)`
`.... 1000 = Token Length: 8`
`Code: POST (2)`
`Message ID: 41783`
`Token: 398d7e264ddd9768`
`Opt Name: #1: Uri-Path: a`
`Opt Name: #2: Uri-Query: cid=4cef9cfe-af0c-11e8-8f23-df6cd39224ef`
`Opt Name: #3: Uri-Query: r=ru`
`[Response In: 59]`
`[Uri-Path: /a]`

**The second packet is the server response**

`Frame 59: 75 bytes on wire (600 bits), 75 bytes captured (600 bits) on interface 0`
`Ethernet II, Src: router.lan (c4:ad:34:45:6a:fb), Dst: Keenetic_0f:40:ef (50:ff:20:0f:40:ef)`
`Internet Protocol Version 4, Src: static.226.167.34.188.clients.your-server.de (188.34.167.226), Dst: 192.168.0.73 (192.168.0.73)`
`0100 .... = Version: 4`
`.... 0101 = Header Length: 20 bytes (5)`
`Differentiated Services Field: 0x40 (DSCP: CS2, ECN: Not-ECT)`
`Total Length: 61`
`Identification: 0xa920 (43296)`
`Flags: 0x4000, Don't fragment`
`Time to live: 52`
`Protocol: UDP (17)`
`Header checksum: 0x7859 [validation disabled]`
`[Header checksum status: Unverified]`
`Source: static.226.167.34.188.clients.your-server.de (188.34.167.226)`
`Destination: 192.168.0.73 (192.168.0.73)`
`User Datagram Protocol, Src Port: coap (5683), Dst Port: 56911 (56911)`
`Source Port: coap (5683)`
`Destination Port: 56911 (56911)`
`Length: 41`
`Checksum: 0x38a3 [unverified]`
`[Checksum Status: Unverified]`
`[Stream index: 1]`
`Constrained Application Protocol, Acknowledgement, 2.04 Changed, MID:41783`
`01.. .... = Version: 1`
`..10 .... = Type: Acknowledgement (2)`
`.... 1000 = Token Length: 8`
`Code: 2.04 Changed (68)`
`Message ID: 41783`
`Token: 398d7e264ddd9768`
`End of options marker: 255`
`[Request In: 13]`
`[Response Time: 0.049948917 seconds]`
`[Uri-Path: /a]`
`Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 2`
`Data (20 bytes)`
`Data: 3138382e3133342e38362e3232363a3536393131`
`[Length: 20]`

**CoAP packet analysis:**
Destination port -**5683**, protocol **UDP**.
The first one passes a pointer (**Uri-Query: cid=**) in the second the value is returned (**Data**).
Server **static.226.167.34.188.clients.your-server.de**(188.34.167.226)
Request Packet Length **89** byte, the response consists of **41** byte.

As you can see, in this case the response contains a string in the form of a set of hexadecimal numbers without spaces:
31 38 38 2e 31 33 34 2e 38 36 2e 32 32 36 3a 35 36 39 31 31
(This digital data may contain, for example, control commands for the end device or, conversely, telemetry for the server - bit fields about on/off device buttons, information about temperature, voltage, toner level, number of printed pages).

### What is the Internet of Things protocol CoAP

The CoAP protocol is a simplified HTTP protocol running over UDP.
Unlike the HTTP protocol, which is strictly text-based, CoAP can also transmit binary data in the request and response.

Since UDP does not guarantee delivery, reception control is implemented.

In order to save transmission channel resources, the CoAP protocol very often uses "**Piggy-backed**" answer. (In logistics in the field of cargo transportation, this term "[piggyback](https://www.merriam-webster.com/dictionary/piggyback)" means **passing cargo delivery**). Here, along with the receipt, the *result* of processing the request is immediately sent.

ДляWhen transmitting text in requests and responses, UTF-8 encoding is used. If a string is used as a request or payload, its length does not exceed 270 bytes. What is done for low-power devices (with a small amount of RAM). But some tags may be repeated several times to convey all the necessary information.

**Security**: The response must match the request (*"Request/Response Matching"*).
In a piggy-backed response, the response token must match the request token.

Request:
![request](https://ra1ahq.blog/images/9/b/d/8/8/9bd88c772810a62d0a77f7c4c606b6b0fd3ac788-request.png "request")

Answer:
![response](https://ra1ahq.blog/images/f/0/8/5/9/f085927089ff4e0a34d4826a178d40b7c6283279-response.png "response")

I note that the time between request and response is short - only 50 milliseconds.

### Description of the request and response fields

Options are divided into two groups: “critical” and “optional”. The difference is how *unrecognized* parameters are processed by the endpoint:

- optional parameters, if their value is not recognized by the endpoint, MUST be silently ignored.
- unrecognized parameters of the "critical" class in a correctly composed request MUST cause a "Bad Option" error. This response must include a human-readable error message.
- all unrecognized "critical" messages in the response MUST be rejected with a restart message
- optional parameters in the server response not recognized by the client MUST be silently ignored.

Critical and optional messages should be distinguished from “mandatory” messages. No option in CoAP is mandatory. All these rules are designed to handle unrecognized (or unrealized) requests and responses.

| No. | Critical | Name | Format | Length, bytes | Description |
|---|---|---|---|---|---|
| 1 | YES | Content-Type | uint | 0-2 | Message format type 0 - text/plain; charset=utf-8  40 - application/link-format  41 - application/xml  42 - application/octet-stream  47 - application/exi  50 = application/json |
| 2 | no | Max-Age | uint | 0-4 | 60 seconds by default - maximum response time in seconds from 0 to 2^32-1 |
| 3 | YES | Proxy-Uri | string | 1-270 | The request is to the proxy, not to the server. Contains a URI for a request to a proxy; Proxy-Uri can be thought of as a request to a cache. |
| 4 | no | ETag | hidden | 1-8 | Additional "shortcut" for security verification. The response will only be returned if the Etag check by the server is successful. If the verification is successful, the server is *obliged* to send a response. |
| 5 | YES | **Uri-Host** | string | 1-270 | Internet host - a server serving requests. |
| 6 |  | Location-Path | string | 1-270 | Similar to Uri-Path, but can be specified multiple times in a request |
| 7 | YES | **Uri-Port** | uint | 0-2 | Internet port on the server |
| 8 |  | Location-Query | string | 1-270 | Similar to Uri-Query, but can be specified multiple times in a query |
| 9 | YES | **Uri-Path** | string | 1-270 | Internet - absolute path on the server to the resource |
| 11 | YES | Token | hidden | 1-8 | Security token (Token in response and request must match) |
| 12 | no | Accept | uint | 0-2 | For data types accepted by the *client*, see Content-Type |
| 13 | YES | If-Match | hidden | 0-8 | Prerequisites. The response will only be received if the condition is met (together with the ETag tag) - used for concurrent requests to update data from several clients to avoid data overwriting |
| 15 | YES | Uri-Query | string | 1-270 | The name of the destination resource on the destination server. Can contain any characters except "." And "..". Encoding of (Russian) letters using % is not used. Only UTF-8 characters are implied. |
| 21 | YES | If-None-Match | no | 0 | Reverse If-Match condition. The response will only come if the condition **not completed**. See If-Match - the operating logic is reversed. |

### Conclusions:

1. Studying Internet of Things packets using WireShark reveals only the external part of the protocol (you can find out the IP address of the server, the requested URI resource and the response - data in encoded or otherwise unreadable form for humans).
2. Although the request and data were decoded, it is impossible to understand the internal logic of the application: to find out what the device is intended for, and who is the owner of the domain where the data was sent.
3. The packets I intercepted are very short - approximately 40-89 bytes long. Packets come in groups: request-response.
4. The time period between transmissions (packets and groups) in the CoAP standard can be quite significant - from several minutes to many months and even years.

### Protecting CoAP with DTLS

If increased security is needed and protection of content from being read and modified during transmission, CoAP can be used together [DTLS](https://ru.wikipedia.org/wiki/DTLS)- implementation of TLS over UDP. When using DTLS, connections and protocols are protected, as well as the data itself.

---

**Sources:**

- [IETF.PRG draft standard, description](https://tools.ietf.org/id/draft-ietf-core-coap-08.html)
- [RFC 7252, final standard](https://datatracker.ietf.org/doc/html/rfc7252)
- [Wikipedia Article (Eng)](https://en.wikipedia.org/wiki/Constrained_Application_Protocol)

    **Links:**
- <https://coap.technology/>

### Related publications

 [ ![](https://ra1ahq.blog/images/c/d/1/b/a/cd1ba6390f15bdb4cbf899d5dc57e5acdc845984-secur.png) Checklist for checking your web browser before visiting sites that collect information about visitors ](https://ra1ahq.blog/en/cheklist-dlya-proverki-veb-brauzera-pered-posesheniem-saitov-sobirayushikh-informaciyu-o-posetitelyakh) 

 [ ![](https://ra1ahq.blog/images/e/3/d/3/1/e3d311d144affe4e3665d3912f7d6d3369106df4-ipv6en.png) Particular settings of the dnscrypt proxy for IPv6 usage ](https://ra1ahq.blog/en/osobennost-nastroiki-proksi-dnscrypt-dlya-ipv6) 

 [ ![](https://ra1ahq.blog/images/4/e/e/e/9/4eee9735461eb9af683f49bad42d1a72bd88a035-9999.png) Launching DOH on Linux - DNS name to IP addresses resolution over HTTPS ](https://ra1ahq.blog/en/zapusk-v-linux-doh-razresheniya-imyon-v-ip-adresa-dns-cherez-https) 

 [ ![No picture](https://ra1ahq.blog/user/themes/mytheme/images/no-image.png) Troubleshooting L2TP/IPsec connection errors "Could not add IPsec connection" and "no acceptable traffic selectors found" ](https://ra1ahq.blog/en/ustranenie-oshibok-podklyucheniya-l2tp-ipsec-could-not-add-ipsec-connection-i-no-acceptable-traffic-selectors-found) 

 [ ![No picture](https://ra1ahq.blog/user/themes/mytheme/images/no-image.png) Some amateur radio websites are not accessible on the Internet from Russia ](https://ra1ahq.blog/en/chast-radiolyubitelskikh-veb-saitov-nedostupna-v-internet-iz-rossii) 

[ Backward](https://ra1ahq.blog/en/usadba-mikhailovka-v-strelne-zabytyi-brilliant "Previuous page")

[ Forward ](https://ra1ahq.blog/en/reshenie-problemy-ischeznoveniya-prav-na-komandu-sudo "Next page")

## Languages

- [Русский](https://ra1ahq.blog/posts/protokol-coap-dlya-interneta-veshei-izuchenie-trafika)
- [English](https://ra1ahq.blog/en/protokol-coap-dlya-interneta-veshei-izuchenie-trafika)
- [Deutsch](https://ra1ahq.blog/de/posts/protokol-coap-dlya-interneta-veshei-izuchenie-trafika)
- [Français](https://ra1ahq.blog/fr/posts/protokol-coap-dlya-interneta-veshei-izuchenie-trafika)
- [中文 (简体) (cn)](https://ra1ahq.blog/zh-cn/posts/protokol-coap-dlya-interneta-veshei-izuchenie-trafika)

## Theme

## RSS feeds

 [ Atom 1.0](https://ra1ahq.blog/en/.atom) [ RSS](https://ra1ahq.blog/en/.rss) 

## Popular tags

 [APRS](https://ra1ahq.blog/en/tag:APRS) [CW](https://ra1ahq.blog/en/tag:CW) [DX](https://ra1ahq.blog/en/tag:DX) [FM](https://ra1ahq.blog/en/tag:FM) [Linux](https://ra1ahq.blog/en/tag:Linux) [VHF](https://ra1ahq.blog/en/tag:VHF) [antennas](https://ra1ahq.blog/en/tag:antennas) [firefox](https://ra1ahq.blog/en/tag:firefox) [morse](https://ra1ahq.blog/en/tag:morse) [soundtrack](https://ra1ahq.blog/en/tag:soundtrack) [video](https://ra1ahq.blog/en/tag:video) [windows](https://ra1ahq.blog/en/tag:windows) [youtube](https://ra1ahq.blog/en/tag:youtube) [КВ](https://ra1ahq.blog/en/tag:%D0%9A%D0%92) [ТВ](https://ra1ahq.blog/en/tag:%D0%A2%D0%92) [УКВ](https://ra1ahq.blog/en/tag:%D0%A3%D0%9A%D0%92) [антенны](https://ra1ahq.blog/en/tag:%D0%B0%D0%BD%D1%82%D0%B5%D0%BD%D0%BD%D1%8B) [безопасность](https://ra1ahq.blog/en/tag:%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C) [длинные волны](https://ra1ahq.blog/en/tag:%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B2%D0%BE%D0%BB%D0%BD%D1%8B) [путешествия](https://ra1ahq.blog/en/tag:%D0%BF%D1%83%D1%82%D0%B5%D1%88%D0%B5%D1%81%D1%82%D0%B2%D0%B8%D1%8F) [религия](https://ra1ahq.blog/en/tag:%D1%80%D0%B5%D0%BB%D0%B8%D0%B3%D0%B8%D1%8F) [соревнования](https://ra1ahq.blog/en/tag:%D1%81%D0%BE%D1%80%D0%B5%D0%B2%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) [спутники](https://ra1ahq.blog/en/tag:%D1%81%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA%D0%B8) [средние волны](https://ra1ahq.blog/en/tag:%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B8%D0%B5%20%D0%B2%D0%BE%D0%BB%D0%BD%D1%8B) [схемы](https://ra1ahq.blog/en/tag:%D1%81%D1%85%D0%B5%D0%BC%D1%8B) [тесты](https://ra1ahq.blog/en/tag:%D1%82%D0%B5%D1%81%D1%82%D1%8B) [трансивер](https://ra1ahq.blog/en/tag:%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%B8%D0%B2%D0%B5%D1%80) [управление](https://ra1ahq.blog/en/tag:%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5) [фотографии](https://ra1ahq.blog/en/tag:%D1%84%D0%BE%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%B8) 

## Random post

 [ I'll be lucky!](https://ra1ahq.blog/en/random) 

## Archive of posts

- [ October 2026 ✒ 4 ](https://ra1ahq.blog/en/archives_month:oct_2026)
- [ September 2026 ✒ 9 ](https://ra1ahq.blog/en/archives_month:sep_2026)
- [ August 2026 ✒ 6 ](https://ra1ahq.blog/en/archives_month:aug_2026)
- [ July 2026 ✒ 13 ](https://ra1ahq.blog/en/archives_month:jul_2026)
- [ June 2026 ✒ 8 ](https://ra1ahq.blog/en/archives_month:jun_2026)
- [ May 2026 ✒ 2 ](https://ra1ahq.blog/en/archives_month:may_2026)
- [ April 2026 ✒ 6 ](https://ra1ahq.blog/en/archives_month:apr_2026)
- [ March 2026 ✒ 3 ](https://ra1ahq.blog/en/archives_month:mar_2026)
- [ February 2026 ✒ 7 ](https://ra1ahq.blog/en/archives_month:feb_2026)
- [ January 2026 ✒ 8 ](https://ra1ahq.blog/en/archives_month:jan_2026)
- [ December 2025 ✒ 12 ](https://ra1ahq.blog/en/archives_month:dec_2025)
- [ November 2025 ✒ 9 ](https://ra1ahq.blog/en/archives_month:nov_2025)
- [ October 2025 ✒ 8 ](https://ra1ahq.blog/en/archives_month:oct_2025)
- [ September 2025 ✒ 5 ](https://ra1ahq.blog/en/archives_month:sep_2025)
- [ August 2025 ✒ 8 ](https://ra1ahq.blog/en/archives_month:aug_2025)
- [ July 2025 ✒ 6 ](https://ra1ahq.blog/en/archives_month:jul_2025)
- [ June 2025 ✒ 10 ](https://ra1ahq.blog/en/archives_month:jun_2025)
- [ May 2025 ✒ 4 ](https://ra1ahq.blog/en/archives_month:may_2025)
- [ April 2025 ✒ 4 ](https://ra1ahq.blog/en/archives_month:apr_2025)
- [ March 2025 ✒ 4 ](https://ra1ahq.blog/en/archives_month:mar_2025)
- [ February 2025 ✒ 11 ](https://ra1ahq.blog/en/archives_month:feb_2025)
- [ December 2024 ✒ 8 ](https://ra1ahq.blog/en/archives_month:dec_2024)
- [ November 2024 ✒ 2 ](https://ra1ahq.blog/en/archives_month:nov_2024)
- [ October 2024 ✒ 8 ](https://ra1ahq.blog/en/archives_month:oct_2024)
- [ September 2024 ✒ 3 ](https://ra1ahq.blog/en/archives_month:sep_2024)
- [ August 2024 ✒ 5 ](https://ra1ahq.blog/en/archives_month:aug_2024)
- [ July 2024 ✒ 9 ](https://ra1ahq.blog/en/archives_month:jul_2024)
- [ June 2024 ✒ 6 ](https://ra1ahq.blog/en/archives_month:jun_2024)
- [ May 2024 ✒ 7 ](https://ra1ahq.blog/en/archives_month:may_2024)
- [ April 2024 ✒ 5 ](https://ra1ahq.blog/en/archives_month:apr_2024)
- [ March 2024 ✒ 5 ](https://ra1ahq.blog/en/archives_month:mar_2024)
- [ February 2024 ✒ 5 ](https://ra1ahq.blog/en/archives_month:feb_2024)
- [ January 2024 ✒ 6 ](https://ra1ahq.blog/en/archives_month:jan_2024)
- [ December 2023 ✒ 7 ](https://ra1ahq.blog/en/archives_month:dec_2023)
- [ November 2023 ✒ 4 ](https://ra1ahq.blog/en/archives_month:nov_2023)
- [ October 2023 ✒ 8 ](https://ra1ahq.blog/en/archives_month:oct_2023)
- [ September 2023 ✒ 7 ](https://ra1ahq.blog/en/archives_month:sep_2023)
- [ August 2023 ✒ 4 ](https://ra1ahq.blog/en/archives_month:aug_2023)
- [ July 2023 ✒ 7 ](https://ra1ahq.blog/en/archives_month:jul_2023)
- [ June 2023 ✒ 7 ](https://ra1ahq.blog/en/archives_month:jun_2023)
- [ May 2023 ✒ 5 ](https://ra1ahq.blog/en/archives_month:may_2023)
- [ April 2023 ✒ 6 ](https://ra1ahq.blog/en/archives_month:apr_2023)
- [ March 2023 ✒ 5 ](https://ra1ahq.blog/en/archives_month:mar_2023)
- [ February 2023 ✒ 2 ](https://ra1ahq.blog/en/archives_month:feb_2023)
- [ January 2023 ✒ 5 ](https://ra1ahq.blog/en/archives_month:jan_2023)
- [ December 2022 ✒ 7 ](https://ra1ahq.blog/en/archives_month:dec_2022)
- [ November 2022 ✒ 8 ](https://ra1ahq.blog/en/archives_month:nov_2022)
- [ October 2022 ✒ 6 ](https://ra1ahq.blog/en/archives_month:oct_2022)
- [ September 2022 ✒ 9 ](https://ra1ahq.blog/en/archives_month:sep_2022)
- [ August 2022 ✒ 8 ](https://ra1ahq.blog/en/archives_month:aug_2022)
- [ July 2022 ✒ 4 ](https://ra1ahq.blog/en/archives_month:jul_2022)
- [ June 2022 ✒ 9 ](https://ra1ahq.blog/en/archives_month:jun_2022)
- [ May 2022 ✒ 7 ](https://ra1ahq.blog/en/archives_month:may_2022)
- [ April 2022 ✒ 3 ](https://ra1ahq.blog/en/archives_month:apr_2022)
- [ March 2022 ✒ 4 ](https://ra1ahq.blog/en/archives_month:mar_2022)
- [ February 2022 ✒ 6 ](https://ra1ahq.blog/en/archives_month:feb_2022)
- [ January 2022 ✒ 7 ](https://ra1ahq.blog/en/archives_month:jan_2022)
- [ December 2021 ✒ 7 ](https://ra1ahq.blog/en/archives_month:dec_2021)
- [ November 2021 ✒ 7 ](https://ra1ahq.blog/en/archives_month:nov_2021)
- [ October 2021 ✒ 7 ](https://ra1ahq.blog/en/archives_month:oct_2021)
- [ September 2021 ✒ 10 ](https://ra1ahq.blog/en/archives_month:sep_2021)
- [ August 2021 ✒ 6 ](https://ra1ahq.blog/en/archives_month:aug_2021)
- [ July 2021 ✒ 7 ](https://ra1ahq.blog/en/archives_month:jul_2021)
- [ June 2021 ✒ 7 ](https://ra1ahq.blog/en/archives_month:jun_2021)
- [ May 2021 ✒ 7 ](https://ra1ahq.blog/en/archives_month:may_2021)
- [ April 2021 ✒ 4 ](https://ra1ahq.blog/en/archives_month:apr_2021)
- [ March 2021 ✒ 4 ](https://ra1ahq.blog/en/archives_month:mar_2021)
- [ February 2021 ✒ 3 ](https://ra1ahq.blog/en/archives_month:feb_2021)
- [ January 2021 ✒ 4 ](https://ra1ahq.blog/en/archives_month:jan_2021)
- [ December 2020 ✒ 8 ](https://ra1ahq.blog/en/archives_month:dec_2020)
- [ November 2020 ✒ 2 ](https://ra1ahq.blog/en/archives_month:nov_2020)
- [ October 2020 ✒ 3 ](https://ra1ahq.blog/en/archives_month:oct_2020)
- [ September 2020 ✒ 3 ](https://ra1ahq.blog/en/archives_month:sep_2020)
- [ August 2020 ✒ 5 ](https://ra1ahq.blog/en/archives_month:aug_2020)
- [ July 2020 ✒ 5 ](https://ra1ahq.blog/en/archives_month:jul_2020)
- [ June 2020 ✒ 8 ](https://ra1ahq.blog/en/archives_month:jun_2020)
- [ May 2020 ✒ 10 ](https://ra1ahq.blog/en/archives_month:may_2020)
- [ April 2020 ✒ 4 ](https://ra1ahq.blog/en/archives_month:apr_2020)
- [ March 2020 ✒ 2 ](https://ra1ahq.blog/en/archives_month:mar_2020)
- [ January 2020 ✒ 1 ](https://ra1ahq.blog/en/archives_month:jan_2020)
- [ December 2019 ✒ 2 ](https://ra1ahq.blog/en/archives_month:dec_2019)

## Search

## Weather forecast

[На 14 дней](https://world-weather.ru/pogoda/russia/saint_petersburg/14days/)
[world-weather.ru](https://world-weather.ru/)

---

## Navigation

- Parent: [RA1AHQ](https://ra1ahq.blog/en/index.md)
- Previous: [Solving the problem of disappearance of rights to the Sudo team](https://ra1ahq.blog/en/reshenie-problemy-ischeznoveniya-prav-na-komandu-sudo.md)
- Next: [The Mikhailovka estate in Strelna - a forgotten diamond](https://ra1ahq.blog/en/usadba-mikhailovka-v-strelne-zabytyi-brilliant.md)
