<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tips on Son's Notebook</title><link>https://sntpham.github.io/docs/work/tips/</link><description>Recent content in Tips on Son's Notebook</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 04 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://sntpham.github.io/docs/work/tips/index.xml" rel="self" type="application/rss+xml"/><item><title>Tutorial on Kicad, Solidworks for Quick Prototyping</title><link>https://sntpham.github.io/docs/work/tips/2025-12-24-tutorial-on-kicad-solidworks-for-quick-prototyping/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://sntpham.github.io/docs/work/tips/2025-12-24-tutorial-on-kicad-solidworks-for-quick-prototyping/</guid><description>&lt;p&gt;Hello, fellow students! I&amp;rsquo;m Son, a beginner in KiCad and SolidWorks. The steps below will help you get familiar with KiCad or SolidWorks quickly. I hope that after following these basic steps, you&amp;rsquo;ll be able to start building simple prototypes.&lt;/p&gt;
&lt;h1 id="final-product"&gt;Final Product&lt;a class="anchor" href="#final-product"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;figure&gt;&lt;img src="https://sntpham.github.io/docs/work/tips/2025-12-24-tutorial-on-kicad-solidworks-for-quick-prototyping/tut-assets/tut_full_assembly.png" width="400px"&gt;
&lt;/figure&gt;

&lt;h1 id="kicad"&gt;Kicad&lt;a class="anchor" href="#kicad"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;figure&gt;&lt;img src="https://sntpham.github.io/docs/work/tips/2025-12-24-tutorial-on-kicad-solidworks-for-quick-prototyping/tut-assets/tut_kicad_schematic.png" width="400px"&gt;
&lt;/figure&gt;

&lt;h2 id="requirement"&gt;Requirement&lt;a class="anchor" href="#requirement"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;First, we need to define what we&amp;rsquo;re designing. Our goal is to create a fuse box for voltage sense lines.&lt;/p&gt;
&lt;p&gt;We have a total of 11 sense lines, and each one must have a fuse to protect the end device or downstream device. Our device can handle up to 300mA at peak, so choosing a 500mA fuse seems like a good option.&lt;/p&gt;</description></item><item><title>Things I wish I knew working on a research paper</title><link>https://sntpham.github.io/docs/work/tips/2026-04-02-how-i-write-my-paper/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><guid>https://sntpham.github.io/docs/work/tips/2026-04-02-how-i-write-my-paper/</guid><description>&lt;p&gt;Hi community fellows. This note is based on my experience. And I hope it will save you time working on a research paper for the first time. In this note, I will show how I organize files and folders to make a research more systematic.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Date: 4/2/2026
Revision: 4/2/2026&lt;/code&gt;&lt;/pre&gt;&lt;!-- raw HTML omitted --&gt;
&lt;h2 id="survey--or-review"&gt;Survey ( or review)&lt;a class="anchor" href="#survey--or-review"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The purpose of a research is to find something new or make an improvement on existing thing. To do so we need to review existing works.&lt;/p&gt;</description></item><item><title>Build hugo site with github page</title><link>https://sntpham.github.io/docs/work/tips/2026-07-04-build-hugo-site-with-github-page/</link><pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate><guid>https://sntpham.github.io/docs/work/tips/2026-07-04-build-hugo-site-with-github-page/</guid><description>&lt;p&gt;The reason I want to move to Hugo is because it is more modern and flexible compared to my Jekyll site.&lt;/p&gt;
&lt;p&gt;The instruction is quite clear on their site &lt;a href="https://gohugo.io/host-and-deploy/host-on-github-pages/"&gt;https://gohugo.io/host-and-deploy/host-on-github-pages/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First, as always we need to create a github repo, and clone it in our local machine.&lt;/p&gt;
&lt;p&gt;Next, we will need to create a Hugo project. I&amp;rsquo;m using Windows so I will select Extended-edition &lt;a href="https://gohugo.io/installation/windows/#extended-edition"&gt;here&lt;/a&gt;. To access PowerShell, from command prompt we can type &lt;code&gt;pwsh&lt;/code&gt;&lt;/p&gt;</description></item><item><title>English Connectives</title><link>https://sntpham.github.io/docs/work/tips/2023-05-04-english-connectives/</link><pubDate>Thu, 04 May 2023 00:00:00 +0000</pubDate><guid>https://sntpham.github.io/docs/work/tips/2023-05-04-english-connectives/</guid><description>&lt;p&gt;After many hours of googling, mermaid is finally run on Github Page, thanks to &lt;a href="https://jojozhuang.github.io/tutorial/jekyll-diagram-with-mermaid/"&gt;Jojozhuang&lt;/a&gt;. I may not write another note for mermaid so I put the info here.&lt;/p&gt;
&lt;p&gt;First, we need to add &lt;code&gt;mermaid: true&lt;/code&gt; into our post layout. Second, we need to use div tag as below.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;lt;!--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt; to use mermaid in Jekyll we need to wrap it with &amp;lt;div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;mermaid&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; your_mermaid_chart
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: this tutorial is for Jekyll. Currently, this site is ran on Hugo with Book theme. For this theme, we only need to add fenced code blocks:&lt;/p&gt;</description></item><item><title>Explaining TCP flows</title><link>https://sntpham.github.io/docs/work/tips/2021-08-27-explaining-tcp-flows/</link><pubDate>Fri, 27 Aug 2021 00:00:00 +0000</pubDate><guid>https://sntpham.github.io/docs/work/tips/2021-08-27-explaining-tcp-flows/</guid><description>&lt;p&gt;A few days ago, I wrote a note detailing how to set up a simple TCP client and server using netcat. Today, I have taken things a step further by capturing packets in Wireshark and providing a step-by-step explanation of how the TCP flow works. In the table below, you can find a general overview of this process.&lt;/p&gt;
&lt;hr&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Flow&lt;/th&gt;
					&lt;th&gt;Packet captured from Wireshark&lt;/th&gt;
					&lt;th&gt;Explaination&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;client -[SYN]-&amp;gt; server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 24491, Dst Port: 5000, Seq: 0, Len: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Source Port: 24491&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Destination Port: 5000&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number: 0&lt;/strong&gt; (relative sequence number)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 4126488336&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 1 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment Number: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 1000 &amp;hellip;. = Header Length: 32 bytes (8)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Flags: 0x002 (SYN)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Window: 65535&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Calculated window size: 65535]&lt;!-- raw HTML omitted --&gt; Checksum: 0xd6b0 [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
					&lt;td&gt;First, client says &amp;ldquo;hi there, I&amp;rsquo;d like to connect, here is my number &lt;strong&gt;xxxxxxx36&lt;/strong&gt; &amp;ldquo;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;When client send a SYN packet to server. Wireshark will show you the relative sequence, or ACK number which is 0. But actually, it is a random number .&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client &amp;lt;-[SYN,ACK]- server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 5000, Dst Port: 24491, Seq: 0, Ack: 1, Len: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Source Port: 5000&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Destination Port: 24491&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number: 0&lt;/strong&gt; (relative sequence number)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 547479085&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 1 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment Number: 1&lt;/strong&gt; (relative ack number)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 4126488337&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 1000 &amp;hellip;. = Header Length: 32 bytes (8)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Flags: 0x012 (SYN, ACK)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Window: 65535&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Calculated window size: 65535]&lt;!-- raw HTML omitted --&gt; Checksum: 0xd7d0 [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; Options: (12 bytes), Maximum segment size, No-Operation (NOP), Window scale, No-Operation (NOP), No-Operation (NOP), SACK permitted&lt;!-- raw HTML omitted --&gt; [SEQ/ACK analysis]&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;/td&gt;
					&lt;td&gt;Server responses &amp;ldquo;oh sure, I&amp;rsquo;ve received your number &lt;strong&gt;xxxxxxx36&lt;/strong&gt;. And I add one to keep track, so now it is &lt;strong&gt;xxxxxxx37&lt;/strong&gt;. Please take my number &lt;strong&gt;xxxxxxx85&lt;/strong&gt; &amp;ldquo;&lt;!-- raw HTML omitted --&gt;After received the packet from client, server will send its own Sequence number &lt;strong&gt;547479085&lt;/strong&gt; and Ackowledgement number.&lt;!-- raw HTML omitted --&gt;The Acknowledge number is the client&amp;rsquo;s Sequence number + 1 which is &lt;strong&gt;4126488337&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client -[ACK]-&amp;gt; server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 24491, Dst Port: 5000, Seq: 1, Ack: 1, Len: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Source Port: 24491&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Destination Port: 5000&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number: 1 (relative sequence number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 4126488337&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 1 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment Number: 1 (relative ack number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 547479086&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 0101 &amp;hellip;. = Header Length: 20 bytes (5)&lt;!-- raw HTML omitted --&gt; Flags: 0x010 (ACK)&lt;!-- raw HTML omitted --&gt; Window: 10233&lt;!-- raw HTML omitted --&gt; [Calculated window size: 2619648]&lt;!-- raw HTML omitted --&gt; [Window size scaling factor: 256]&lt;!-- raw HTML omitted --&gt; Checksum: 0xeace [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; [SEQ/ACK analysis]&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;/td&gt;
					&lt;td&gt;Client responses &amp;ldquo;I&amp;rsquo;ve received your number &lt;strong&gt;xxxxxxx85&lt;/strong&gt;. And I add one to keep track, so now it is &lt;strong&gt;xxxxxxx86&lt;/strong&gt;. We are synced&amp;rdquo;&lt;!-- raw HTML omitted --&gt;Client verifies receiving packet from the server by sending ACK (acknowledge) message.&lt;!-- raw HTML omitted --&gt; The ACK number is server&amp;rsquo;s Squence number + 1, &lt;strong&gt;547479086&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client -[PSH,ACK]-&amp;gt; server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 24491, Dst Port: 5000, Seq: 1, Ack: 1, Len: 34&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Source Port: 24491&lt;!-- raw HTML omitted --&gt; Destination Port: 5000&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 34]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number: 1 (relative sequence number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 4126488337&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;[Next Sequence Number: 35 (relative sequence number)]&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment Number: 1 (relative ack number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 547479086&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 0101 &amp;hellip;. = Header Length: 20 bytes (5)&lt;!-- raw HTML omitted --&gt; Flags: 0x018 (PSH, ACK)&lt;!-- raw HTML omitted --&gt; Window: 10233&lt;!-- raw HTML omitted --&gt; [Calculated window size: 2619648]&lt;!-- raw HTML omitted --&gt; [Window size scaling factor: 256]&lt;!-- raw HTML omitted --&gt; Checksum: 0xd07d [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; [SEQ/ACK analysis]&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;TCP payload (34 bytes)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt;Data (34 bytes)&lt;/td&gt;
					&lt;td&gt;Now, client starts sending messages with flag &lt;strong&gt;PSH&lt;/strong&gt; meaning &amp;ldquo;I have packed all the good stuffs, please send it imediately&amp;rdquo;&lt;!-- raw HTML omitted --&gt; Also, Next Sequence Number is expected to be 35 because it is sending out 34 bytes payload. ACK number is still &lt;strong&gt;547479086&lt;/strong&gt; because it has not received anything from server&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client &amp;lt;-[ACK]- server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 5000, Dst Port: 24491, Seq: 1, Ack: 35, Len: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Source Port: 5000&lt;!-- raw HTML omitted --&gt; Destination Port: 24491&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; Sequence Number: 1 (relative sequence number)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 547479086&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 1 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment Number: 35 (relative ack number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 4126488371&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 0101 &amp;hellip;. = Header Length: 20 bytes (5)&lt;!-- raw HTML omitted --&gt; Flags: 0x010 (ACK)&lt;!-- raw HTML omitted --&gt; Window: 10233&lt;!-- raw HTML omitted --&gt; [Calculated window size: 2619648]&lt;!-- raw HTML omitted --&gt; [Window size scaling factor: 256]&lt;!-- raw HTML omitted --&gt; Checksum: 0xeaac [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; [SEQ/ACK analysis]&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;/td&gt;
					&lt;td&gt;After receiving the packet, server sends the ACK with previous ACK payload size (34). 4126488337 + 34 = &lt;strong&gt;4126488371&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client -[FIN,ACK]-&amp;gt; server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 24491, Dst Port: 5000, Seq: 35, Ack: 1, Len: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Source Port: 24491&lt;!-- raw HTML omitted --&gt; Destination Port: 5000&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number: 35 (relative sequence number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 4126488371&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 36 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment Number: 1 (relative ack number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 547479086&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 0101 &amp;hellip;. = Header Length: 20 bytes (5)&lt;!-- raw HTML omitted --&gt; Flags: 0x011 (FIN, ACK)&lt;!-- raw HTML omitted --&gt; Window: 10233&lt;!-- raw HTML omitted --&gt; [Calculated window size: 2619648]&lt;!-- raw HTML omitted --&gt; [Window size scaling factor: 256]&lt;!-- raw HTML omitted --&gt; Checksum: 0xeaab [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;/td&gt;
					&lt;td&gt;After sending a note, client terminal is close, so it sends FIN (finish?) and ACK to server. At this time, both Sequence number and ACK number are the same as the above because server did not send anything.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client &amp;lt;-[ACK]- server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 5000, Dst Port: 24491, Seq: 1, Ack: 36, Len: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Source Port: 5000&lt;!-- raw HTML omitted --&gt; Destination Port: 24491&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; Sequence Number: 1 (relative sequence number)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 547479086&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 1 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment Number: 36 (relative ack number)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 4126488372&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 0101 &amp;hellip;. = Header Length: 20 bytes (5)&lt;!-- raw HTML omitted --&gt; Flags: 0x010 (ACK)&lt;!-- raw HTML omitted --&gt; Window: 10233&lt;!-- raw HTML omitted --&gt; [Calculated window size: 2619648]&lt;!-- raw HTML omitted --&gt; [Window size scaling factor: 256]&lt;!-- raw HTML omitted --&gt; Checksum: 0xeaab [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; [SEQ/ACK analysis]&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;/td&gt;
					&lt;td&gt;After receiving the FIN flag, server response with an ACK message + 1.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client &amp;lt;-[FIN,ACK]- server&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Transmission Control Protocol, Src Port: 5000, Dst Port: 24491, Seq: 1, Ack: 36, Len: 0&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Source Port: 5000&lt;!-- raw HTML omitted --&gt; Destination Port: 24491&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; Sequence Number: 1 (relative sequence number)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Sequence Number (raw): 547479086&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 2 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; Acknowledgment Number: 36 (relative ack number)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Acknowledgment number (raw): 4126488372&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; 0101 &amp;hellip;. = Header Length: 20 bytes (5)&lt;!-- raw HTML omitted --&gt; &lt;strong&gt;Flags: 0x011 (FIN, ACK)&lt;/strong&gt;&lt;!-- raw HTML omitted --&gt; Window: 10233&lt;!-- raw HTML omitted --&gt; [Calculated window size: 2619648]&lt;!-- raw HTML omitted --&gt; [Window size scaling factor: 256]&lt;!-- raw HTML omitted --&gt; Checksum: 0xeaaa [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;/td&gt;
					&lt;td&gt;Now, server closes its portal &amp;ldquo;hey client, I&amp;rsquo;m done with you&amp;rdquo;. Notice, Seq, and ACK are the same as above because server has not received anything from client.c&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;client -[ACK]- &amp;gt;server&lt;/td&gt;
					&lt;td&gt;Transmission Control Protocol, Src Port: 24491, Dst Port: 5000, Seq: 36, Ack: 2, Len: 0&lt;!-- raw HTML omitted --&gt; Source Port: 24491&lt;!-- raw HTML omitted --&gt; Destination Port: 5000&lt;!-- raw HTML omitted --&gt; [Stream index: 0]&lt;!-- raw HTML omitted --&gt; [TCP Segment Len: 0]&lt;!-- raw HTML omitted --&gt; Sequence Number: 36 (relative sequence number)&lt;!-- raw HTML omitted --&gt; Sequence Number (raw): 4126488372&lt;!-- raw HTML omitted --&gt; [Next Sequence Number: 36 (relative sequence number)]&lt;!-- raw HTML omitted --&gt; Acknowledgment Number: 2 (relative ack number)&lt;!-- raw HTML omitted --&gt; Acknowledgment number (raw): 547479087&lt;!-- raw HTML omitted --&gt; 0101 &amp;hellip;. = Header Length: 20 bytes (5)&lt;!-- raw HTML omitted --&gt; Flags: 0x010 (ACK)&lt;!-- raw HTML omitted --&gt; Window: 10233&lt;!-- raw HTML omitted --&gt; [Calculated window size: 2619648]&lt;!-- raw HTML omitted --&gt; [Window size scaling factor: 256]&lt;!-- raw HTML omitted --&gt; Checksum: 0xeaaa [unverified]&lt;!-- raw HTML omitted --&gt; [Checksum Status: Unverified]&lt;!-- raw HTML omitted --&gt; Urgent Pointer: 0&lt;!-- raw HTML omitted --&gt; [SEQ/ACK analysis]&lt;!-- raw HTML omitted --&gt; [Timestamps]&lt;/td&gt;
					&lt;td&gt;&amp;ldquo;Okay server, I have received your farewell letter so I will increase the ACK # to one &amp;ldquo;.&lt;!-- raw HTML omitted --&gt; Let reverse engineering, Client&amp;rsquo;s seq:36, in which we know it has sent 1 byte for SYN, 1 byte for FIN, and the rest are the payload. Client&amp;rsquo;s ack:2 shows us that it received 1 SYN and 1 FIN from server&lt;!-- raw HTML omitted --&gt; Also, Server&amp;rsquo;s seq:1 means it has sent 1 byte for SYN, and probally closes. That is why we don&amp;rsquo;t see the 2 seq. Server&amp;rsquo;s ack:36 shows that clent sent 1 SYN, 1 FIN, and 34 bytes of payload.&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Quick Note - Decibel dB vs dBm</title><link>https://sntpham.github.io/docs/work/tips/2021-08-24-quick-note-db-dbm/</link><pubDate>Tue, 24 Aug 2021 00:00:00 +0000</pubDate><guid>https://sntpham.github.io/docs/work/tips/2021-08-24-quick-note-db-dbm/</guid><description>&lt;link rel="stylesheet" href="https://sntpham.github.io/katex/katex.min.css" /&gt;&lt;script defer src="https://sntpham.github.io/katex/katex.min.js"&gt;&lt;/script&gt;&lt;script defer src="https://sntpham.github.io/katex/auto-render.min.js" onload="renderMathInElement(document.body, {&amp;#34;delimiters&amp;#34;:[{&amp;#34;left&amp;#34;:&amp;#34;$$&amp;#34;,&amp;#34;right&amp;#34;:&amp;#34;$$&amp;#34;,&amp;#34;display&amp;#34;:true},{&amp;#34;left&amp;#34;:&amp;#34;\\(&amp;#34;,&amp;#34;right&amp;#34;:&amp;#34;\\)&amp;#34;,&amp;#34;display&amp;#34;:false},{&amp;#34;left&amp;#34;:&amp;#34;\\[&amp;#34;,&amp;#34;right&amp;#34;:&amp;#34;\\]&amp;#34;,&amp;#34;display&amp;#34;:true}]});"&gt;&lt;/script&gt;
&lt;p&gt;Many of us have heard about decibel unit in our daily lives, as it can be used to describe the loudness of our speakers, the strength of our antennas, or the signal strength from a transceiver. But what exactly are decibels (dB) and dBm? In this discussion, let&amp;rsquo;s explore these concepts and expand our understanding.&lt;/p&gt;
&lt;h2 id="explanation"&gt;Explanation&lt;a class="anchor" href="#explanation"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Deci-bel is ten time of a Bel (10 x Bel)&lt;br&gt;
Bel is named after an inventor Alexander Graham Bell, in Bell Lab.&lt;br&gt;
It is an unit of a ratio on base 10 logarithm scale&lt;br&gt;
Bel is defined as $$X = \log\frac{P2}{P1} $$&lt;/p&gt;</description></item><item><title>TCP/UDP Flow Analysis with Wireshark and Windows Subsystem for Linux</title><link>https://sntpham.github.io/docs/work/tips/2021-08-20-learn-tcp-udp-with-wireshark-and-wsl/</link><pubDate>Fri, 20 Aug 2021 00:00:00 +0000</pubDate><guid>https://sntpham.github.io/docs/work/tips/2021-08-20-learn-tcp-udp-with-wireshark-and-wsl/</guid><description>&lt;p&gt;During many of my interviews, I have been asked whether I understood TCP and UDP, and how they differed from each other. While I knew that TCP had an error-checking procedure that made the protocol more reliable but slower than UDP, my understanding was limited. Although I had learned about the detailed structure of these protocols in school, I didn&amp;rsquo;t have a chance to get hands-on experience with them. However, I later discovered an easy way to explore TCP and UDP packets using Windows Subsystem for Linux (WSL) and WireShark. As a result, I would like to share what I have learned today.&lt;/p&gt;</description></item></channel></rss>