> ## Documentation Index
> Fetch the complete documentation index at: https://checklyhq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# TCP Monitors Overview

> Monitor the availability and performance of your TCP services.

<Tip>
  **Monitoring as Code**: Learn more about the [TCP Monitor Construct](/constructs/tcp-monitor).
</Tip>

## What are TCP Monitors?

Use TCP monitors to verify that your non-HTTP services are working as expected. TCP monitors work by establishing a connection to a host and port, then checking the speed and validity of the response.

For example, use these checks to verify that:

* Your mail server is online and responds to IMAPS requests quickly
* Your FTP server responds correctly to commands
* Your custom TCP-based service returns the expected response when sent a health check message

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/checkly-422f444a/Q-mo1I-Hc45T0Oic/images/next/tcp-monitor-overview-light.png?fit=max&auto=format&n=Q-mo1I-Hc45T0Oic&q=85&s=8b238831848557644ee6b6ef0ab03d43" alt="TCP monitor overview" style={{width: "100%"}} width="2084" height="1200" data-path="images/next/tcp-monitor-overview-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/checkly-422f444a/Q-mo1I-Hc45T0Oic/images/next/tcp-monitor-overview-dark.png?fit=max&auto=format&n=Q-mo1I-Hc45T0Oic&q=85&s=81a292ecc6228029667efd75b13be223" alt="TCP monitor overview" style={{width: "100%"}} width="2084" height="1200" data-path="images/next/tcp-monitor-overview-dark.png" />
</Frame>

## How TCP Monitoring Works

TCP monitors perform connection-level checks:

1. **Connection Attempt** - Establishes a TCP connection to your service
2. **Port Verification** - Confirms the service is listening on the specified port
3. **Response Validation** - Optionally validates service responses based on your configured assertions

## TCP Monitor Results

Select a specific check run to review its results:

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/daJfNuXC-nCaf4db/images/tcp-monitor-results-page.png?fit=max&auto=format&n=daJfNuXC-nCaf4db&q=85&s=e738e773bf865985c732462a37b99365" alt="TCP monitor results page" width="2729" height="1339" data-path="images/tcp-monitor-results-page.png" />
</Frame>

* **Summary:** Displays the monitor target (hostname and port), the monitor state (`success` for passed and degraded runs, or `error` for failed runs), the request status code and the total check run duration

* **Error details:** If the check failed, the error status code and message log will be shown

* **Request data:** If a payload was sent, it is shown alongside the response received from the server

* **Timing phases:** For each request, we capture the following timing metrics:
  * DNS: Time taken to resolve the hostname to an IP address (if a hostname was provided)
  * Connect: Time taken to establish the TCP connection (SYN, SYN-ACK, ACK)
  * Data: Time taken to send the payload and receive the response data

Learn more in our documentation on [Results](/concepts/results).

## Troubleshooting

<Accordion title="TCP monitors on port 25 time out">
  TCP monitors to port 25 (SMTP) may fail with a SOCKET\_TIMEOUT error from some Checkly locations.

  This happens because [AWS blocks outbound traffic on port 25 by default to prevent spam](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html#port-25-throttle). Some Checkly public locations run on AWS, so connections to port 25 cannot be established from those regions.

  **Workarounds:**

  * Run the check from a [Private Location](/platform/private-locations/overview) where port 25 is allowed

  * Use an alternative SMTP port such as 587 or 465 if supported
</Accordion>
