
{"id":2195,"date":"2026-07-29T12:34:44","date_gmt":"2026-07-29T11:34:44","guid":{"rendered":"https:\/\/www.kanda.com\/blog\/?p=2195"},"modified":"2026-07-29T12:35:14","modified_gmt":"2026-07-29T11:35:14","slug":"can-bus-explained-part-2","status":"publish","type":"post","link":"https:\/\/www.kanda.com\/blog\/programming\/can-bus-explained-part-2\/","title":{"rendered":"CAN Bus Explained Part 2"},"content":{"rendered":"\n<div id = \"can-series-preview\">\n\n<header class=\"article-header\">\n\n    <img decoding=\"async\"\n        class=\"hero-image\"\n        src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/CANBUS-part2-heroimage.jpg\"\n        alt=\"CAN Bus Explained Part 2\">\n\n    <div class=\"article-header-text\">\n\n        <p class=\"series-title\">\n            CAN BUS EXPLAINED\n        <\/p>\n\n        <h1>\n            Part 2: Frames, Arbitration and Fault Tolerance\n        <\/h1>\n\n    <\/div>\n\n<\/header>\n\n<\/div>\n\n\n\n<!--more-->\n\n\n\n<style data-wp-block-html=\"css\">\n\/* ==========================================================\n   CAN Bus Explained Series\n   ========================================================== *\/\n\n\/* ----------------------------------------------------------\n   Root Container\n   ---------------------------------------------------------- *\/\n\n.can-series {\n\n    max-width: 1040px;\n\n    margin: 0 auto;\n\n    padding: 0 32px 80px;\n\n    color: #222;\n\n    font-family:\n        \"Segoe UI\",\n        Roboto,\n        Helvetica,\n        Arial,\n        sans-serif;\n\n    font-size: 18px;\n\n    line-height: 1.75;\n}\n\n\/* ----------------------------------------------------------\n   Global\n   ---------------------------------------------------------- *\/\n\n.can-series * {\n\n    box-sizing: border-box;\n}\n\n.can-series img {\n\n    display: block;\n\n    max-width: 100%;\n\n    height: auto;\n}\n\n\/* ----------------------------------------------------------\n   Header\n   ---------------------------------------------------------- *\/\n\n.can-series .article-header {\n\n    margin-bottom: 56px;\n}\n\n.can-series .hero-image {\n\n    width: 100%;\n\n    border-radius: 10px;\n\n    margin-bottom: 28px;\n}\n\n.can-series .article-header-text {\n\n    max-width: 900px;\n}\n\n\/* ----------------------------------------------------------\n   Series Title\n   ---------------------------------------------------------- *\/\n\n.can-series .series-title {\n\n    margin: 0 0 10px;\n\n    color: #5f6d7a;\n\n    font-size: 0.88rem;\n\n    font-weight: 700;\n\n    letter-spacing: 0.18em;\n\n    text-transform: uppercase;\n}\n\n\/* ----------------------------------------------------------\n   Main Title\n   ---------------------------------------------------------- *\/\n\n.can-series h1 {\n\n    margin: 0;\n\n    color: #173550;\n\n    font-size: 2.65rem;\n\n    line-height: 1.18;\n\n    font-weight: 700;\n}\n\n\/* ----------------------------------------------------------\n   Section Headings\n   ---------------------------------------------------------- *\/\n\n.can-series h2 {\n\n    margin:\n\n        0\n        0\n        26px;\n\n    color: #173550;\n\n    font-size: 2rem;\n\n    font-weight: 650;\n\n    line-height: 1.25;\n}\n\n\/* ----------------------------------------------------------\n   Paragraphs\n   ---------------------------------------------------------- *\/\n\n.can-series p {\n\n    margin: 0 0 22px;\n}\n\n\/* ----------------------------------------------------------\n   Sections\n   ---------------------------------------------------------- *\/\n\n.can-series section {\n\n    margin-bottom: 68px;\n}\n\n\/* ----------------------------------------------------------\n   Links\n   ---------------------------------------------------------- *\/\n\n.can-series a {\n\n    color: #005ea8;\n\n    text-decoration: none;\n}\n\n.can-series a:hover {\n\n    text-decoration: underline;\n}\n\n\/* ----------------------------------------------------------\n   Responsive\n   ---------------------------------------------------------- *\/\n\n@media (max-width: 900px) {\n\n    .can-series {\n\n        padding:\n\n            0\n            24px\n            70px;\n\n        font-size: 17px;\n    }\n\n    .can-series h1 {\n\n        font-size: 2.25rem;\n    }\n\n    .can-series h2 {\n\n        font-size: 1.75rem;\n    }\n\n}\n\n@media (max-width: 600px) {\n\n    .can-series {\n\n        padding:\n\n            0\n            18px\n            60px;\n    }\n\n    .can-series .hero-image {\n\n        border-radius: 6px;\n\n        margin-bottom: 22px;\n    }\n\n    .can-series h1 {\n\n        font-size: 1.9rem;\n    }\n\n    .can-series h2 {\n\n        font-size: 1.55rem;\n    }\n\n}\n\n\/* ==========================================================\n   Lists\n   ========================================================== *\/\n\n.can-series ul,\n.can-series ol {\n\n    margin:\n        22px\n        0\n        26px\n        28px;\n\n    padding: 0;\n}\n\n.can-series li {\n\n    margin-bottom: 10px;\n}\n\n.can-series li:last-child {\n\n    margin-bottom: 0;\n}\n\n\/* ==========================================================\n   Figures\n   ========================================================== *\/\n\n.can-series .article-figure {\n\n    margin:\n        40px\n        auto\n        44px;\n\n    text-align: center;\n}\n\n.can-series .article-figure img {\n\n    width: 100%;\n\n    border: 1px solid #d9dee5;\n\n    border-radius: 8px;\n\n    background: #ffffff;\n}\n\n\/* Hero images remain untouched *\/\n\n.can-series .hero-image {\n\n    border: none;\n\n    background: none;\n}\n\n\/* ==========================================================\n   Tables\n   ========================================================== *\/\n\n.can-series table {\n\n    width: 100%;\n\n    margin:\n        36px\n        0;\n\n    border-collapse: collapse;\n\n    font-size: 0.95rem;\n\n    background: #ffffff;\n}\n\n.can-series th {\n\n    padding: 14px 16px;\n\n    text-align: left;\n\n    font-weight: 650;\n\n    color: #ffffff;\n\n    background: #173550;\n}\n\n.can-series td {\n\n    padding: 13px 16px;\n\n    border-bottom: 1px solid #e4e8ed;\n\n    vertical-align: top;\n}\n\n.can-series tbody tr:nth-child(even) {\n\n    background: #f8fafc;\n}\n\n\/* ==========================================================\n   Inline Code\n   ========================================================== *\/\n\n.can-series code {\n\n    padding:\n        2px\n        6px;\n\n    border-radius: 4px;\n\n    background: #f4f6f8;\n\n    color: #a23500;\n\n    font-family:\n        Consolas,\n        \"Courier New\",\n        monospace;\n\n    font-size: 0.94em;\n}\n\n\/* ==========================================================\n   Code Blocks\n   ========================================================== *\/\n\n.can-series pre {\n\n    overflow-x: auto;\n\n    margin:\n        34px\n        0;\n\n    padding: 20px 22px;\n\n    border-radius: 8px;\n\n    background: #252b34;\n\n    color: #eef2f6;\n}\n\n.can-series pre code {\n\n    padding: 0;\n\n    background: transparent;\n\n    color: inherit;\n}\n\n\/* ==========================================================\n   Navigation\n   ========================================================== *\/\n\n.can-series .article-navigation {\n\n    display: flex;\n\n    justify-content: space-between;\n\n    gap: 40px;\n\n    margin-top: 80px;\n\n    padding-top: 34px;\n\n    border-top: 1px solid #d8dde3;\n}\n\n.can-series .article-navigation a {\n\n    display: flex;\n\n    flex-direction: column;\n\n    gap: 6px;\n\n    color: #173550;\n\n    font-weight: 600;\n\n    transition: color 0.18s ease;\n}\n\n.can-series .article-navigation a:hover {\n\n    color: #005ea8;\n\n    text-decoration: none;\n}\n\n.can-series .article-navigation span {\n\n    font-size: 0.95rem;\n\n    font-weight: 400;\n\n    color: #5f6d7a;\n\n    line-height: 1.45;\n}\n\n.can-series .next-article {\n\n    text-align: right;\n\n    margin-left: auto;\n}\n\n\/* ==========================================================\n   Mobile\n   ========================================================== *\/\n\n@media (max-width: 600px) {\n\n    .can-series .article-navigation {\n\n        flex-direction: column;\n\n        gap: 24px;\n    }\n\n    .can-series .next-article {\n\n        text-align: left;\n\n        margin-left: 0;\n    }\n\n\n    .can-series section {\n\n        margin-bottom: 52px;\n    }\n\n    .can-series .article-figure {\n\n        margin:\n            30px\n            auto\n            34px;\n    }\n\n    .can-series table {\n\n        font-size: 0.9rem;\n    }\n\n}\n\n\/* ==========================================================\n   Text Selection\n   ========================================================== *\/\n\n.can-series ::selection {\n\n    background: #d6ebff;\n\n    color: #000;\n}\n\n\/* ==========================================================\n   Strong & Emphasis\n   ========================================================== *\/\n\n.can-series strong {\n\n    font-weight: 650;\n}\n\n.can-series em {\n\n    font-style: italic;\n}\n\n\/* ----------------------------------------------------------\n   Horizontal Rules\n   ---------------------------------------------------------- *\/\n\n.can-series hr {\n\n    margin: 64px 0;\n\n    border: 0;\n\n    border-top: 1px solid #d9dee5;\n}\n\n\/* ----------------------------------------------------------\n   Prevent Wide Content Overflow\n   ---------------------------------------------------------- *\/\n\n.can-series table,\n.can-series pre,\n.can-series .article-figure {\n\n    max-width: 100%;\n}\n\n\/* ==========================================================\n   Better Paragraph Rhythm\n   ========================================================== *\/\n\n.can-series h2 + p {\n\n    margin-top: 0;\n}\n\n.can-series p:last-child {\n\n    margin-bottom: 0;\n}\n\n\/* ==========================================================\n   Keyboard Focus\n   ========================================================== *\/\n\n.can-series a:focus-visible {\n\n    outline: 2px solid #3d8fd9;\n\n    outline-offset: 3px;\n\n    border-radius: 3px;\n}\n\n\/* ==========================================================\n   Print\n   ========================================================== *\/\n\n@media print {\n\n    .can-series {\n\n        max-width: none;\n\n        padding: 0;\n\n        color: #000;\n\n        font-size: 11pt;\n\n        line-height: 1.5;\n    }\n\n    .can-series .article-navigation {\n\n        display: none;\n    }\n\n    .can-series .hero-image,\n    .can-series .article-figure,\n    .can-series table {\n\n        break-inside: avoid;\n    }\n\n}\n<\/style>\n\n<div class=\"can-series\">\n\n<main>\n\n<article>\n\n<section id=\"introduction\">\n\n<h2>Introduction<\/h2>\n\n<p>\n    In Part&nbsp;1 we explored why CAN was developed, how a CAN network is structured and how differential signalling provides exceptional immunity to electrical noise.\n<\/p>\n\n<p>\n    Those physical-layer concepts explain how information travels across the network, but they do not explain <em>what<\/em> is actually being transmitted or how dozens of electronic control units can communicate simultaneously without descending into chaos.\n<\/p>\n\n<p>\n    That responsibility lies with the CAN protocol itself.\n<\/p>\n\n<p>\n    In this article we examine the structure of CAN messages, how nodes compete for access to the shared bus, the timing requirements that make reliable communication possible and the sophisticated error-handling mechanisms that have made CAN one of the world&#8217;s most dependable industrial communication protocols.\n<\/p>\n\n<\/section>\n\n<section id=\"can-frame-overview\">\n\n<h2>CAN Frame Overview<\/h2>\n\n<p>\n    Every exchange of information on a CAN network is carried within a structured data packet known as a <strong>CAN frame<\/strong>.\n<\/p>\n\n<p>\n    Rather than transmitting raw bytes, CAN organises information into well-defined fields that allow every node on the network to identify, validate and interpret each message consistently.\n<\/p>\n\n<p>\n    Each field serves a specific purpose, from identifying the message and transporting application data to detecting transmission errors and marking the end of the frame.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig05-classical-can-frame-format.jpg\" alt=\"Classical CAN frame format\">\n<\/figure>\n\n<p>\n    Although several frame types exist within the CAN specification, the data frame is by far the most commonly encountered and forms the basis of almost all normal network communication.\n<\/p>\n\n<\/section>\n\n<section id=\"standard-and-extended-frames\">\n\n<h2>Standard and Extended Frames<\/h2>\n\n<p>\n    CAN supports two message identifier formats.\n<\/p>\n\n<p>\n    The original specification defines an 11-bit identifier, commonly referred to as the <strong>standard frame format<\/strong>. As networks became increasingly complex, an extended 29-bit identifier was introduced to provide a significantly larger address space.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig06-standard-vs-extended.jpg\" alt=\"Standard versus extended CAN frame identifiers\">\n<\/figure>\n\n<p>\n    Importantly, both formats can coexist on the same physical network. The arbitration mechanism ensures that nodes using either identifier format continue to communicate reliably while maintaining deterministic bus access.\n<\/p>\n\n<p>\n    The choice between standard and extended identifiers is determined by the requirements of the higher-level protocol and the number of unique messages that must be supported by the network.\n<\/p>\n\n<\/section>\n\n<section id=\"bus-arbitration\">\n\n<h2>Bus Arbitration<\/h2>\n\n<p>\n    One of the defining characteristics of CAN is that it is a <strong>multi-master<\/strong> protocol. Any node on the network may begin transmitting whenever the bus is idle.\n<\/p>\n\n<p>\n    Naturally, this raises an important question:\n<\/p>\n\n<p>\n    <em>What happens if two nodes start transmitting at exactly the same time?<\/em>\n<\/p>\n\n<p>\n    Rather than treating simultaneous transmissions as collisions, CAN resolves them using a process known as <strong>non-destructive bitwise arbitration<\/strong>.\n<\/p>\n\n<p>\n    Every transmitting node continuously monitors the bus while sending its identifier. Dominant bits always overwrite recessive bits on the physical network, allowing the highest-priority message to continue uninterrupted while lower-priority nodes automatically cease transmission.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig07-can-arbitration.jpg\" alt=\"CAN bus arbitration\">\n<\/figure>\n\n<p>\n    This approach provides two major advantages:\n<\/p>\n\n<ul>\n    <li>No bandwidth is wasted by collisions.<\/li>\n    <li>The highest-priority message always gains immediate access to the bus.<\/li>\n<\/ul>\n\n<p>\n    Because arbitration occurs during the identifier field, message identifiers represent both the identity of a message and its priority within the network.\n<\/p>\n\n<\/section>\n\n<section id=\"message-priority\">\n\n<h2>Message Priority<\/h2>\n\n<p>\n    Unlike many communication protocols where priority is assigned separately, CAN embeds priority directly into the message identifier.\n<\/p>\n\n<p>\n    Numerically lower identifiers contain more dominant bits near the beginning of the arbitration field and therefore have higher priority.\n<\/p>\n\n<p>\n    For example:\n<\/p>\n\n<ul>\n    <li><code>0x080<\/code> has higher priority than <code>0x180<\/code>.<\/li>\n    <li><code>0x001<\/code> has higher priority than almost every other message on the network.<\/li>\n    <li><code>0x7FF<\/code> is the lowest-priority standard identifier.<\/li>\n<\/ul>\n\n<p>\n    Careful allocation of identifiers is therefore an important part of CAN network design. Safety-critical messages such as braking or steering are typically assigned higher priorities than diagnostic or informational traffic.\n<\/p>\n\n<\/section>\n\n<section id=\"bit-timing\">\n\n<h2>Bit Timing<\/h2>\n\n<p>\n    Reliable communication depends not only on message format but also on every node interpreting each transmitted bit at precisely the correct instant.\n<\/p>\n\n<p>\n    To achieve this, each CAN bit is divided into a number of time segments that allow receivers to synchronise with the transmitter while compensating for oscillator tolerances and propagation delays.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig08-bit-timing.jpg\" alt=\"CAN bit timing\">\n<\/figure>\n\n<p>\n    A typical bit consists of:\n<\/p>\n\n<ul>\n    <li>Synchronization Segment (<code>Sync_Seg<\/code>)<\/li>\n    <li>Propagation Segment (<code>Prop_Seg<\/code>)<\/li>\n    <li>Phase Buffer Segment 1 (<code>Phase_Seg1<\/code>)<\/li>\n    <li>Phase Buffer Segment 2 (<code>Phase_Seg2<\/code>)<\/li>\n<\/ul>\n\n<p>\n    Together these segments determine the location of the sampling point, which is the instant at which receivers determine whether the transmitted bit is dominant or recessive.\n<\/p>\n\n<p>\n    Selecting appropriate bit timing parameters is essential for achieving reliable communication, particularly on long networks or at higher data rates.\n<\/p>\n\n<\/section>\n\n<section id=\"bit-stuffing\">\n\n<h2>Bit Stuffing<\/h2>\n\n<p>\n    CAN uses a technique known as <strong>bit stuffing<\/strong> to maintain clock synchronisation between transmitting and receiving nodes.\n<\/p>\n\n<p>\n    Whenever five consecutive bits of the same polarity are transmitted, the controller automatically inserts a complementary stuff bit into the bit stream.\n<\/p>\n\n<p>\n    The receiving controller removes these bits automatically before reconstructing the original message, making the process completely transparent to the application.\n<\/p>\n\n<p>\n    In addition to maintaining synchronisation, incorrect bit stuffing also provides another mechanism for detecting transmission errors.\n<\/p>\n\n<\/section>\n\n<section id=\"error-detection\">\n\n<h2>Error Detection<\/h2>\n\n<p>\n    One of the primary reasons for CAN&#8217;s widespread adoption is its exceptional reliability. Rather than relying on a single error-checking mechanism, the protocol employs multiple independent techniques to detect communication faults before corrupted data can propagate through the network.\n<\/p>\n\n<p>\n    During every transmission, both the transmitting node and all receiving nodes continuously monitor the integrity of the message.\n<\/p>\n\n<p>\n    CAN implements several complementary error detection mechanisms, including:\n<\/p>\n\n<ul>\n    <li>Cyclic Redundancy Check (CRC)<\/li>\n    <li>Frame format checking<\/li>\n    <li>Bit monitoring<\/li>\n    <li>Bit stuffing verification<\/li>\n    <li>Acknowledgement monitoring<\/li>\n<\/ul>\n\n<p>\n    If any of these mechanisms detects an inconsistency, the current transmission is immediately aborted and an error frame is generated to notify every node on the network.\n<\/p>\n\n<p>\n    The original message is then retransmitted automatically, ensuring reliable delivery without intervention from the application software.\n<\/p>\n\n<\/section>\n\n<section id=\"fault-confinement\">\n\n<h2>Fault Confinement<\/h2>\n\n<p>\n    Detecting communication errors is only part of the solution. CAN must also prevent faulty nodes from disrupting an otherwise healthy network.\n<\/p>\n\n<p>\n    To achieve this, every controller continuously evaluates its own behaviour using two internal error counters:\n<\/p>\n\n<ul>\n    <li>Transmit Error Counter (TEC)<\/li>\n    <li>Receive Error Counter (REC)<\/li>\n<\/ul>\n\n<p>\n    These counters increase when communication errors occur and decrease again following successful transmissions or receptions.\n<\/p>\n\n<p>\n    Depending on their values, the controller automatically transitions through three operating states.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig09-fault-confinement.jpg\" alt=\"CAN fault confinement states\">\n<\/figure>\n\n<ul>\n    <li><strong>Error Active<\/strong> \u2014 Normal operation with full participation on the network.<\/li>\n    <li><strong>Error Passive<\/strong> \u2014 The node remains operational but has a reduced influence on bus communication.<\/li>\n    <li><strong>Bus Off<\/strong> \u2014 The controller disconnects itself from the network to prevent further disruption.<\/li>\n<\/ul>\n\n<p>\n    This automatic fault confinement mechanism ensures that a malfunctioning controller cannot continuously corrupt communication for every other node connected to the bus.\n<\/p>\n\n<p>\n    Once the underlying fault has been resolved, recovery procedures defined by the CAN specification allow normal operation to resume safely.\n<\/p>\n\n<\/section>\n\n<section id=\"why-can-is-so-reliable\">\n\n<h2>Why CAN Is So Reliable<\/h2>\n\n<p>\n    The combination of deterministic arbitration, differential signalling and comprehensive error handling gives CAN a level of robustness that few communication protocols can match.\n<\/p>\n\n<p>\n    Rather than depending on any single protective feature, CAN layers multiple mechanisms together:\n<\/p>\n\n<ul>\n    <li>Differential signalling rejects electrical noise.<\/li>\n    <li>Non-destructive arbitration eliminates message collisions.<\/li>\n    <li>CRC verification detects corrupted frames.<\/li>\n    <li>Bit monitoring validates transmitted data.<\/li>\n    <li>Automatic retransmission recovers from transient faults.<\/li>\n    <li>Fault confinement isolates malfunctioning nodes.<\/li>\n<\/ul>\n\n<p>\n    These mechanisms operate continuously and transparently, allowing networks to maintain reliable communication even in electrically noisy or safety-critical environments.\n<\/p>\n\n<\/section>\n\n<section id=\"key-takeaways\">\n\n<h2>Key Takeaways<\/h2>\n\n<p>\n    In this article we explored the protocol layer that makes CAN such an effective communication system.\n<\/p>\n\n<p>\n    We examined how CAN frames are structured, how deterministic arbitration allows multiple nodes to share a common bus, how accurate bit timing ensures reliable sampling and how multiple layers of error detection and fault confinement combine to produce one of the most dependable communication protocols ever developed.\n<\/p>\n\n<p>\n    These concepts form the foundation for understanding more advanced developments such as CAN FD and modern diagnostic techniques.\n<\/p>\n\n<p>\n    In <strong>Part&nbsp;3<\/strong>, we build on these foundations by exploring CAN FD, practical network design considerations and the hardware and software tools required to analyse and debug real CAN systems.\n<\/p>\n\n<\/section>\n\n<\/article>\n\n<nav class=\"article-navigation\">\n\n    <a class=\"previous-article\" href=\"https:\/\/www.kanda.com\/blog\/microcontrollers\/can-bus-explained-part-1\">\n        \u2190 Previous Article\n        <span>CAN Bus Explained Part 1: Origins, Architecture and Differential Signalling<\/span>\n    <\/a>\n\n    <a class=\"next-article\" href=\"https:\/\/www.kanda.com\/blog\/microcontrollers\/can-bus-explained-part-3\">\n        Next Article \u2192\n        <span>CAN Bus Explained Part 3: CAN FD, Network Design and Debugging<\/span>\n    <\/a>\n\n<\/nav>\n\n<\/main>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>CAN BUS EXPLAINED Part 2: Frames, Arbitration and Fault Tolerance<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[22],"tags":[70],"class_list":["post-2195","post","type-post","status-publish","format-standard","placeholder-for-hentry","category-programming","tag-avr-handheld"],"_links":{"self":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts\/2195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/comments?post=2195"}],"version-history":[{"count":2,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts\/2195\/revisions"}],"predecessor-version":[{"id":2202,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts\/2195\/revisions\/2202"}],"wp:attachment":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/media?parent=2195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/categories?post=2195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/tags?post=2195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}