# dns

> The dns identity: Domain Name System. Every field and what is required.

`dns` is the Domain Name System (RFC 1035). The target is `host:port` (default 53). The step sends and receives raw datagram bytes as hex over UDP, and the session persists across steps, so a solution can stage an exchange and continue it.

## Write it in English

A step reads as sentences, the same byte-session forms as [tcp](/docs/solution/identity/tcp/): `send hex "<hex>"` (or `send hex of "<text>"`), `receive <n> bytes`, `receive until "<hex>"`, `port <n>`, `timeout <n> seconds`, `close the connection`, and `expect ...`.

## Fields

`dns` uses the byte-session fields from [tcp](/docs/solution/identity/tcp/): `send`, `recv`, `recv_until`, `timeout`, `close`, and `capture`. Each send is one datagram and each read returns the next datagram.

## Example

```text
dns query
  # send a DNS query and look for the response
  send hex "abcd0100000100000000000003777777..."
  recv 512
  expect "abcd8180" in the response
```