<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Network on Wimi's Space</title><link>https://wimi.space/tags/network/</link><description>Recent content in Network on Wimi's Space</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 13 Oct 2021 15:20:30 +0800</lastBuildDate><atom:link href="https://wimi.space/tags/network/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 WireShark 分析 TCP 协议</title><link>https://wimi.space/posts/2021/10/network-tcp-desc/</link><pubDate>Wed, 13 Oct 2021 15:20:30 +0800</pubDate><guid>https://wimi.space/posts/2021/10/network-tcp-desc/</guid><description>&lt;h2 id="网络分层">网络分层&lt;/h2>
&lt;p>计算机网络的各层及其协议的集合被称为网络的体系结构，按照不同的维度，其常被分为七层、五层、四层网络结构。&lt;/p>
&lt;p>&lt;img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/1/17/16fb20a7abacc050~tplv-t2oaga2asx-watermark.awebp" alt="">&lt;/p>
&lt;p>「图片来自&lt;a href="https://juejin.cn/post/6844904049800642568">掘金&lt;/a>」&lt;/p>
&lt;p>数据包从上到下，每经过一层就在数据包前加上该层的 Header 进行封包操作，再经过物流传输比特流，到另一台设备中再层层解包，从而取出对应的数据。数据包在每一层，都有不同的英文术语来对应，如五层模型中的数据包对应以下的名称：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>层级&lt;/th>
 &lt;th>名称术语&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>应用层&lt;/td>
 &lt;td>HTTP Packet&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>传输层&lt;/td>
 &lt;td>TCP Segment&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>网络层&lt;/td>
 &lt;td>IP Packet&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>链路层&lt;/td>
 &lt;td>Frame&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>物理层&lt;/td>
 &lt;td>Bits&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>我们可以用一个公式来表示每一层协议的构成：&lt;/p>
&lt;blockquote>
&lt;p>Packet = Protocol Header + Payload&lt;/p>&lt;/blockquote>
&lt;p>每一层的包都可以用这个公式来表示。有了这个认知之后，对于每一层协议的学习，最后就落实到每一层 Header 的学习上了。&lt;/p>
&lt;p>我们可用利用 WireShark 工具来形象地查看各层的数据：
&lt;img src="https://static.wimi.space/blog/network-tcp-wireshark.jpg" alt="">&lt;/p>
&lt;p>自上而下分别对应五层模型的物理层、链路层、网络层、传输层、应用层。&lt;/p>
&lt;h2 id="tcp-协议">TCP 协议&lt;/h2>
&lt;p>TCP 是一种面向连接的、可靠的基于字节流的传输层通信协议。TCP 将用户数据打包成报文段，发送给另一端，另一端对收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。&lt;/p>
&lt;p>TCP 的特点有：&lt;/p>
&lt;ul>
&lt;li>TCP 是面向连接的运输层协。&lt;/li>
&lt;li>每一条 TCP 连接只能有两个端点，每一条TCP连接只能是点对点的。&lt;/li>
&lt;li>TCP 提供可靠交付的服务。&lt;/li>
&lt;li>TCP 提供全双工通信。&lt;/li>
&lt;li>面向字节流。&lt;/li>
&lt;/ul>
&lt;p>TCP 的 Header 结构如下：&lt;/p>
&lt;p>&lt;img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/1/17/16fb20a7abb90abd~tplv-t2oaga2asx-watermark.awebp" alt="">&lt;/p>
&lt;p>「图片来自&lt;a href="https://juejin.cn/post/6844904049800642568">掘金&lt;/a>」&lt;/p>
&lt;h3 id="三次握手">三次握手&lt;/h3>
&lt;p>TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。&lt;/p>
&lt;p>所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在 Socket 编程中，这一过程由客户端执行 Connect 来触发。&lt;/p></description></item><item><title>IPv4 Network &amp; CIDR</title><link>https://wimi.space/posts/2021/03/network-ipv4-and-cidr/</link><pubDate>Wed, 10 Mar 2021 13:26:44 +0800</pubDate><guid>https://wimi.space/posts/2021/03/network-ipv4-and-cidr/</guid><description>&lt;h2 id="ipv4网络分类">IPv4网络分类&lt;/h2>
&lt;blockquote>
&lt;p>&lt;a href="https://www.sojson.com/convert/subnetmask.html">子网掩码在线换算&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>IPv4地址被分为三部分：&lt;/p>
&lt;ul>
&lt;li>网络部分（network）&lt;/li>
&lt;li>子网部分（subnetwork）(现在常被认为是网络部分的一部分)&lt;/li>
&lt;li>主机部分（host）&lt;/li>
&lt;/ul>
&lt;h3 id="各个类别的范围">各个类别的范围&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>分类&lt;/th>
 &lt;th>前缀码&lt;/th>
 &lt;th>开始地址&lt;/th>
 &lt;th>结束地址&lt;/th>
 &lt;th>对应CIDR修饰&lt;/th>
 &lt;th>默认子网掩码&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>A类地址&lt;/td>
 &lt;td>0&lt;/td>
 &lt;td>0.0.0.0&lt;/td>
 &lt;td>127.255.255.255&lt;/td>
 &lt;td>/8&lt;/td>
 &lt;td>255.0.0.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>B类地址&lt;/td>
 &lt;td>10&lt;/td>
 &lt;td>128.0.0.0&lt;/td>
 &lt;td>191.255.255.255&lt;/td>
 &lt;td>/16&lt;/td>
 &lt;td>255.255.0.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>C类地址&lt;/td>
 &lt;td>110&lt;/td>
 &lt;td>192.0.0.0&lt;/td>
 &lt;td>223.255.255.255&lt;/td>
 &lt;td>/24&lt;/td>
 &lt;td>255.255.255.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>D类地址&lt;/td>
 &lt;td>1110&lt;/td>
 &lt;td>224.0.0.0&lt;/td>
 &lt;td>239.255.255.255&lt;/td>
 &lt;td>/4&lt;/td>
 &lt;td>未定义&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>E类地址&lt;/td>
 &lt;td>1111&lt;/td>
 &lt;td>240.0.0.0&lt;/td>
 &lt;td>255.255.255.255&lt;/td>
 &lt;td>/4&lt;/td>
 &lt;td>未定义&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="按位来表示">按位来表示&lt;/h3>
&lt;blockquote>
&lt;p>n 表示该二进制位是网络位&lt;/p>
&lt;p>H 表示该二进制位是主机位&lt;/p>
&lt;p>X 表示该二进制位无特定作用&lt;/p>&lt;/blockquote>
&lt;pre>&lt;code class="language-text">A类地址
 0. 0. 0. 0 = 00000000.00000000.00000000.00000000
127.255.255.255 = 01111111.11111111.11111111.11111111
 0nnnnnnn.HHHHHHHH.HHHHHHHH.HHHHHHHH
B类地址
128. 0. 0. 0 = 10000000.00000000.00000000.00000000
191.255.255.255 = 10111111.11111111.11111111.11111111
 10nnnnnn.nnnnnnnn.HHHHHHHH.HHHHHHHH

C类地址
192. 0. 0. 0 = 11000000.00000000.00000000.00000000
223.255.255.255 = 11011111.11111111.11111111.11111111
 110nnnnn.nnnnnnnn.nnnnnnnn.HHHHHHHH

D类地址
224. 0. 0. 0 = 11100000.00000000.00000000.00000000
239.255.255.255 = 11101111.11111111.11111111.11111111
 1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

E类地址
240. 0. 0. 0 = 11110000.00000000.00000000.00000000
255.255.255.255 = 11111111.11111111.11111111.11111111
 1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX
&lt;/code>&lt;/pre>
&lt;h2 id="ipv4子网划分">IPv4子网划分&lt;/h2>
&lt;p>子网的划分是一个将主机部分的若干位分配到网络部分的过程。例如，对于一个给定的A类网络：10.0.0.0，子网掩码 255.255.0.0 可以将其划分为256个子网（从 10.0.0.0 到 10.255.0.0）第一个八位位组表示网络地址，第二个表示子网号，而最后两个表示主机部分。用&lt;strong>子网掩码对主机地址进行位与操作&lt;/strong>，就能够提取出完整的子网地址。&lt;/p></description></item></channel></rss>