-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
2248 lines (1736 loc) · 109 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css">
<link rel="stylesheet" href="/lib/pace/pace-theme-minimal.min.css">
<script src="/lib/pace/pace.min.js"></script>
<script id="hexo-configurations">
var NexT = window.NexT || {};
var CONFIG = {
hostname: new URL('https://www.sysctl.me').hostname,
root: '/',
scheme: 'Gemini',
version: '7.7.0',
exturl: false,
sidebar: {"position":"left","width":320,"display":"post","padding":18,"offset":12,"onmobile":false},
copycode: {"enable":true,"show_result":true,"style":"mac"},
back2top: {"enable":true,"sidebar":true,"scrollpercent":true},
bookmark: {"enable":false,"color":"#222","save":"auto"},
fancybox: true,
mediumzoom: false,
lazyload: false,
pangu: false,
comments: {"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},
algolia: {
appID: '',
apiKey: '',
indexName: '',
hits: {"per_page":10},
labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
},
localsearch: {"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},
path: 'search.xml',
motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}
};
</script>
<meta name="description" content="真正的粉丝">
<meta property="og:type" content="website">
<meta property="og:title" content="Sysctl">
<meta property="og:url" content="https://www.sysctl.me/index.html">
<meta property="og:site_name" content="Sysctl">
<meta property="og:description" content="真正的粉丝">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="Goooo">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="https://www.sysctl.me/">
<script id="page-configurations">
// https://hexo.io/docs/variables.html
CONFIG.page = {
sidebar: "",
isHome: true,
isPost: false
};
</script>
<title>Sysctl</title>
<noscript>
<style>
.use-motion .brand,
.use-motion .menu-item,
.sidebar-inner,
.use-motion .post-block,
.use-motion .pagination,
.use-motion .comments,
.use-motion .post-header,
.use-motion .post-body,
.use-motion .collection-header { opacity: initial; }
.use-motion .site-title,
.use-motion .site-subtitle {
opacity: initial;
top: initial;
}
.use-motion .logo-line-before i { left: initial; }
.use-motion .logo-line-after i { right: initial; }
</style>
</noscript>
<link rel="alternate" href="/atom.xml" title="Sysctl" type="application/atom+xml">
</head>
<body itemscope itemtype="http:https://schema.org/WebPage">
<div class="container use-motion">
<div class="headband"></div>
<header class="header" itemscope itemtype="http:https://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-meta">
<div>
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<span class="site-title">Sysctl</span>
<span class="logo-line-after"><i></i></span>
</a>
</div>
<p class="site-subtitle">Too young, too simple. Sometimes, naive & stupid</p>
</div>
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
</div>
</div>
<nav class="site-nav">
<ul id="menu" class="menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section"><i class="fa fa-fw fa-home"></i>首页</a>
</li>
<li class="menu-item menu-item-about">
<a href="/about/" rel="section"><i class="fa fa-fw fa-user"></i>关于</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>标签</a>
</li>
<li class="menu-item menu-item-categories">
<a href="/categories/" rel="section"><i class="fa fa-fw fa-th"></i>分类</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>归档</a>
</li>
<li class="menu-item menu-item-search">
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
</a>
</li>
</ul>
</nav>
<div class="site-search">
<div class="popup search-popup">
<div class="search-header">
<span class="search-icon">
<i class="fa fa-search"></i>
</span>
<div class="search-input-container">
<input autocomplete="off" autocorrect="off" autocapitalize="none"
placeholder="搜索..." spellcheck="false"
type="text" id="search-input">
</div>
<span class="popup-btn-close">
<i class="fa fa-times-circle"></i>
</span>
</div>
<div id="search-result"></div>
</div>
<div class="search-pop-overlay"></div>
</div>
</div>
</header>
<div class="reading-progress-bar"></div>
<a href="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/xth0331" class="github-corner" title="Follow me on GitHub" aria-label="Follow me on GitHub" rel="noopener" target="_blank"><svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
<main class="main">
<div class="main-inner">
<div class="content-wrap">
<div class="content">
<div class="posts-expand">
<article itemscope itemtype="http:https://schema.org/Article" class="post-block home" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://www.sysctl.me/2020/10/24/Networking/Fix-ex2300-can-not-load-kernel/">
<span hidden itemprop="author" itemscope itemtype="http:https://schema.org/Person">
<meta itemprop="image" content="/images/img.png">
<meta itemprop="name" content="Goooo">
<meta itemprop="description" content="真正的粉丝">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http:https://schema.org/Organization">
<meta itemprop="name" content="Sysctl">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a href="/2020/10/24/Networking/Fix-ex2300-can-not-load-kernel/" class="post-title-link" itemprop="url"> 解决某厂交换机无法“can’t load kernel”的问题</a>
</h1>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2020-10-24 18:00:00 / 修改时间:18:20:31" itemprop="dateCreated datePublished" datetime="2020-10-24T18:00:00+08:00">2020-10-24</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http:https://schema.org/Thing">
<a href="/categories/Linux/" itemprop="url" rel="index">
<span itemprop="name">Linux</span>
</a>
</span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-comment-o"></i>
</span>
<span class="post-meta-item-text">Disqus:</span>
<a title="disqus" href="/2020/10/24/Networking/Fix-ex2300-can-not-load-kernel/#comments" itemprop="discussionUrl">
<span class="post-comments-count disqus-comment-count" data-disqus-identifier="2020/10/24/Networking/Fix-ex2300-can-not-load-kernel/" itemprop="commentCount"></span>
</a>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="故障现象描述"><a href="#故障现象描述" class="headerlink" title="故障现象描述"></a>故障现象描述</h1><ol>
<li><p>尝试升级交换机版本(这里应该因为某种原因导致升级失败)。</p>
</li>
<li><p>尝试进入所谓的<code>recover</code>模式 ,也就是<code>FreeBSD</code>的<code>loader</code>,并尝试使用<code>install --format</code>将已有的文件系统重写(也叫格式化安装)。</p>
</li>
<li><p>这时候会得到如下错误:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">panic: free: guard1 fail @ 0x45c40 from /.amd/svl-engdata1vs1/occamdev/build/freebsd/head/20160518.183540_fbsd-builder_head.327854/src/lib/libstand/dosfs.c:248</span><br><span class="line">--> Press a key on the console to reboot <--</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h1 id="交易过程"><a href="#交易过程" class="headerlink" title="交易过程"></a>交易过程</h1><p>此处省略砍价过程…</p>
<p>我:你文档是盲流子文档,有没有官方文档。</p>
<p>K:这就是官方文档。</p>
<p>我:肯定不是,我自己找吧。</p>
<hr>
<p>十分钟后,我确实遇到同样的错误,再次扯皮。</p>
<p>我:你这包不对吧?</p>
<p>K:肯定对。</p>
<p>我:你有没有别的,img格式的。</p>
<p>K:下载中。</p>
<hr>
<blockquote>
<p>这时基本是确定了包不对,文档也不是解决这个问题的文档,使用Google大法。基本定位是<code>loader</code>模式的状态下,并没有从<code>USB</code>设备引导,由于对BSD不熟悉,但是应该原因类似<code>GRUB</code>引导设备不对差不了多少😂。</p>
</blockquote>
<hr>
<p>我:拿到IMG包。</p>
<h1 id="名词描述"><a href="#名词描述" class="headerlink" title="名词描述"></a>名词描述</h1><h2 id="load模式"><a href="#load模式" class="headerlink" title="load模式"></a><code>load</code>模式</h2><p>这个就是<code>FreeBSD</code>内核引导的最后阶段,会检测控制台和磁盘,识别从哪块盘引导。</p>
<h3 id="currdev"><a href="#currdev" class="headerlink" title="currdev"></a>currdev</h3><p>选择默认设备。</p>
<h3 id="include"><a href="#include" class="headerlink" title="include"></a>include</h3><p>处理脚本文件。依次读取每个文件进入内存,然后将其中的每一行传递。</p>
<h2 id="dd"><a href="#dd" class="headerlink" title="dd"></a>dd</h2><p>convert and copy a file。</p>
<h1 id="开搞"><a href="#开搞" class="headerlink" title="开搞"></a>开搞</h1><ul>
<li><p>首先将img.gz包解压,并将其写入到usb设备(win直接解压就好):</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gzip -d xxx.img.gz</span><br></pre></td></tr></table></figure>
</li>
<li><p>确定USB是哪个,此处仅写Mac上的方法:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">diskutil list <span class="comment"># 找到你的usb,我这是disk2</span></span><br><span class="line">diskutil umountDisk /dev/disk2 <span class="comment"># 卸载</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>将img镜像写入usb设备(其他刻录软件也可):</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">dd <span class="keyword">if</span>=/path/to/file.img of=/dev/disk2 bs=1m</span><br></pre></td></tr></table></figure>
</li>
<li><p>拔掉USB。</p>
</li>
<li><p>接到某厂坏了的交换机。</p>
</li>
<li><p>插上什么<code>console</code>线。</p>
</li>
<li><p>通过COMx连上。</p>
</li>
<li><p>执行reboot(主要为了重新识别USB设备)。</p>
</li>
<li><p>进入<code>loader</code>模式后。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">set</span> currdev=<span class="string">"disk1s1a"</span> <span class="comment"># 设置引导设备为disk1s1a</span></span><br><span class="line">include /boot/loader.rc <span class="comment"># 执行/boot/loader.rc脚本文件</span></span><br></pre></td></tr></table></figure>
</li>
</ul>
<h1 id="结束"><a href="#结束" class="headerlink" title="结束"></a>结束</h1><p>等待重写完成,就可以通过默认用户名:<code>root</code>,密码:空,进入系统。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http:https://schema.org/Article" class="post-block home" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://www.sysctl.me/2020/10/01/Other/Daily-complaints20200930/">
<span hidden itemprop="author" itemscope itemtype="http:https://schema.org/Person">
<meta itemprop="image" content="/images/img.png">
<meta itemprop="name" content="Goooo">
<meta itemprop="description" content="真正的粉丝">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http:https://schema.org/Organization">
<meta itemprop="name" content="Sysctl">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a href="/2020/10/01/Other/Daily-complaints20200930/" class="post-title-link" itemprop="url">又是拖延的一年,0202</a>
</h1>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2020-10-01 17:00:11" itemprop="dateCreated datePublished" datetime="2020-10-01T17:00:11+08:00">2020-10-01</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2020-09-30 19:24:37" itemprop="dateModified" datetime="2020-09-30T19:24:37+08:00">2020-09-30</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http:https://schema.org/Thing">
<a href="/categories/Other/" itemprop="url" rel="index">
<span itemprop="name">Other</span>
</a>
</span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-comment-o"></i>
</span>
<span class="post-meta-item-text">Disqus:</span>
<a title="disqus" href="/2020/10/01/Other/Daily-complaints20200930/#comments" itemprop="discussionUrl">
<span class="post-comments-count disqus-comment-count" data-disqus-identifier="2020/10/01/Other/Daily-complaints20200930/" itemprop="commentCount"></span>
</a>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>明天要放假了(虽然只有四天),这一年的工作中充斥的琐事(大于60%),那么琐事是什么呢?</p>
<blockquote>
<p>琐事就是运维服务中手动性的,重复性的,可以被自动化的,战术性,没有持久价值的工作。</p>
<p> ── Google SRE</p>
</blockquote>
<p>(当然,也包括主观认为不怎么喜欢做但又不得不做的事😂。</p>
<p>回想去年年底也是许了不少愿,包括但不限于把<code>Golang</code>,<code>Kubernetes</code>学个差不多,监控弄得像个人样,<code>Terraform</code>和<code>Ansible</code>去处理些边缘业务的自动化顺带Gitlab,还有就是去看<em>渴望力量系列</em>,现在看,今年的进度四舍五入约等于0。</p>
<p>今年的工作中,扮演的角色就很有趣,之前我其实只要做好自己管理的系统就好了,其余时间可以自己去找些东西学习,搭建测试,去满足需求就好了,所以琐事的比例很小。今年感觉自己需要参与的工作(不是数量,而是类别)变多了,多数也就是配合作用(也就是无法做主),其实也很舒服,但是嘛,毕竟还需要协调资源(传话)去配合其他老师,免不了与人沟通。就贼难受。</p>
<h1 id="琐事"><a href="#琐事" class="headerlink" title="琐事"></a>琐事</h1><ol>
<li>堡垒机日常工作</li>
<li>疫情+校庆这段期间虚拟机的交付,虽然用了<code>terraform</code>,但是后端状态并没有持久化,很烦。</li>
<li>需求翻译,我很奇怪这个事,但是也有收获,比如我理解运维与开发之间的矛盾是如何产生的,233333。</li>
<li>写毫无意义的日报(工作记录很有意思,但是我这种,意义:0)。</li>
<li>跟一些工程师沟通,跟你们沟通使我变得更菜。</li>
</ol>
<h1 id="非琐事"><a href="#非琐事" class="headerlink" title="非琐事"></a>非琐事</h1><ol>
<li><code>terraform</code>真香,尝到了甜头。</li>
<li>读《Kubernetes In Action》,K8s大法好,这本书香。</li>
<li>配合大佬。</li>
<li>Netbox</li>
<li>vSphere Tanzu Cluster</li>
<li>有一丁点安全意识了,知道不关防火墙了。</li>
</ol>
<h1 id="收获"><a href="#收获" class="headerlink" title="收获"></a>收获</h1><ol>
<li>以后不准备用CentOS了。</li>
<li>Kubernetes的理念是真的巧妙。</li>
<li>与人沟通,并非易事。</li>
<li>与人协作,先确认价值观,价值观不符时,做好自己的就好。</li>
<li>找到一个合适的团队很难,不要拿自己的标准衡量别人。</li>
</ol>
<h1 id="吐槽"><a href="#吐槽" class="headerlink" title="吐槽"></a>吐槽</h1><p>有些厂商的工程师,真的差劲。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http:https://schema.org/Article" class="post-block home" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://www.sysctl.me/2020/06/13/Linux/OPENSSH/Convert-OpenSSH-Key/">
<span hidden itemprop="author" itemscope itemtype="http:https://schema.org/Person">
<meta itemprop="image" content="/images/img.png">
<meta itemprop="name" content="Goooo">
<meta itemprop="description" content="真正的粉丝">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http:https://schema.org/Organization">
<meta itemprop="name" content="Sysctl">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a href="/2020/06/13/Linux/OPENSSH/Convert-OpenSSH-Key/" class="post-title-link" itemprop="url">配置OPENSSH</a>
</h1>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2020-06-13 23:20:00" itemprop="dateCreated datePublished" datetime="2020-06-13T23:20:00+08:00">2020-06-13</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2020-06-14 01:05:09" itemprop="dateModified" datetime="2020-06-14T01:05:09+08:00">2020-06-14</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http:https://schema.org/Thing">
<a href="/categories/Linux/" itemprop="url" rel="index">
<span itemprop="name">Linux</span>
</a>
</span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-comment-o"></i>
</span>
<span class="post-meta-item-text">Disqus:</span>
<a title="disqus" href="/2020/06/13/Linux/OPENSSH/Convert-OpenSSH-Key/#comments" itemprop="discussionUrl">
<span class="post-comments-count disqus-comment-count" data-disqus-identifier="2020/06/13/Linux/OPENSSH/Convert-OpenSSH-Key/" itemprop="commentCount"></span>
</a>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="转换OpenSSH-private-key为RSA-private-key"><a href="#转换OpenSSH-private-key为RSA-private-key" class="headerlink" title="转换OpenSSH private key为RSA private key"></a>转换OpenSSH private key为RSA private key</h1><p>今天下午,想把本机的<code>Private KEY</code>添加到堡垒机,倒是也没仔细看,直接复制粘贴到堡垒机中,低能堡垒机提示说私钥格式无效。</p>
<p>==WTF?==</p>
<p>应该是SSH版本太高了,看了下发现第一行有区别(内容也不同)。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"># OpenSSH_8.1p1</span><br><span class="line">-----BEGIN OPENSSH PRIVATE KEY-----</span><br><span class="line">xxx</span><br><span class="line">-----END OPENSSH PRIVATE KEY-----</span><br><span class="line"># OpenSSH_7.5p1</span><br><span class="line">-----BEGIN RSA PRIVATE KEY-----</span><br><span class="line">xxx</span><br><span class="line">-----END RSA PRIVATE KEY-----</span><br></pre></td></tr></table></figure>
<p>0202年了,SSH版本也要升级到8.0了,先不管了,转换吧,一条命令:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">cp ~/.ssh/id_rsa /tmp/path/to/key</span><br><span class="line"><span class="comment"># 就这一条</span></span><br><span class="line">ssh-keygen -p -N <span class="string">""</span> -m pem -f /tmp/path/to/key</span><br><span class="line"><span class="comment"># 记得保管好呀</span></span><br><span class="line">rm -f /tmp/path/to/key</span><br></pre></td></tr></table></figure>
<p>复制<code>private key</code>转换后填到堡垒机,删掉,一定保管好<code>private key</code>。</p>
<p>==堡垒机是真的垃圾,谁家都一样。==</p>
<p>以后在家基本告别电脑了,我家一条是真的爱玩电脑hhhh。</p>
<p><img src="https://blog-image.nos-eastchina1.126.net/yitiao01" alt=""></p>
<p><img src="https://blog-image.nos-eastchina1.126.net/yitiao02" alt=""></p>
<p><img src="https://blog-image.nos-eastchina1.126.net/yitiao03" alt=""></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http:https://schema.org/Article" class="post-block home" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://www.sysctl.me/2020/04/11/Networking/How-to-testing-UDP-port/">
<span hidden itemprop="author" itemscope itemtype="http:https://schema.org/Person">
<meta itemprop="image" content="/images/img.png">
<meta itemprop="name" content="Goooo">
<meta itemprop="description" content="真正的粉丝">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http:https://schema.org/Organization">
<meta itemprop="name" content="Sysctl">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
<a href="/2020/04/11/Networking/How-to-testing-UDP-port/" class="post-title-link" itemprop="url">如何测试一个端口是否可达</a>
</h1>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2020-04-11 11:00:00 / 修改时间:22:20:27" itemprop="dateCreated datePublished" datetime="2020-04-11T11:00:00+08:00">2020-04-11</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http:https://schema.org/Thing">
<a href="/categories/Linux/" itemprop="url" rel="index">
<span itemprop="name">Linux</span>
</a>
</span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-comment-o"></i>
</span>
<span class="post-meta-item-text">Disqus:</span>
<a title="disqus" href="/2020/04/11/Networking/How-to-testing-UDP-port/#comments" itemprop="discussionUrl">
<span class="post-comments-count disqus-comment-count" data-disqus-identifier="2020/04/11/Networking/How-to-testing-UDP-port/" itemprop="commentCount"></span>
</a>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="TCP与UDP连接"><a href="#TCP与UDP连接" class="headerlink" title="TCP与UDP连接"></a>TCP与UDP连接</h1><blockquote>
<p> 看结果请直接拉到底↓</p>
</blockquote>
<p><code>TCP</code>和<code>UDP</code>协议是两个不同的协议,用于处理IP网络(Internet)中的客户端之间的数据通信。</p>
<p>在传统<code>OSI</code>模型中,<code>TCP</code>和<code>UDP</code>是<em>传输层协议</em>。其中<code>TCP</code>是<strong>面向连接</strong>的协议,而<code>UDP</code>是<strong>无连接</strong>协议。</p>
<h2 id="TCP"><a href="#TCP" class="headerlink" title="TCP"></a>TCP</h2><p>从理论上讲,传输层协议可以是一个非常简单的,但是不能将TCP协议称为简单协议。为什么要使用与TCP一样复杂的传输层?最重要的原因取决于IP的不可靠性。实际上,TCP下的所有层都不可靠,并且逐跳传递数据报。IP层逐跳传送数据报,并且不能保证传送数据报。这是一个无连接系统。IP只是处理数据报的路由。如果出现问题,IP会立即丢弃该数据包,并在此过程中将错误消息返回给发送方。确定通过网络发送的数据报的状态并在部分已被丢弃的情况下处理信息重发的任务落在TCP上。</p>
<p>大多数用户将TCP和IP视为紧密的对,但是TCP可以并且经常与其他传输协议一起使用。</p>
<p>例如,在文件传输协议(FTP)和简单邮件传输协议(SMTP)中都使用TCP或其中的一部分,它们都不使用IP。</p>
<p>传输控制协议为IP层和上层提供了大量服务。最重要的是,它为上层提供了面向连接的协议,该协议使应用程序可以确保通过网络发送的数据报被完整接收。在此角色下,TCP充当提供可靠通信的消息验证协议。如果数据报已损坏或丢失,则通常由TCP(不是较高层中的应用程序)来处理重传。</p>
<p>TCP管理来自更高层的数据报流,以及来自IP层的传入数据报。它必须确保优先事项和安全得到尊重。TCP必须能够处理其上期望输入数据报的应用程序的终止,以及较低层的故障。TCP还必须维护TCP层内外所有数据流的状态表。将这些服务隔离在一个单独的层中,可以在不考虑流控制或消息可靠性的情况下设计应用程序。没有TCP层,每个应用程序都必须自己实现服务,这是资源的浪费。</p>
<p>TCP位于传输层,位于IP之上,但位于上层及其应用程序之下,如下图所示。TCP仅驻留在实际处理数据报的设备上,以确保数据报已从源计算机传递到目标计算机。它不驻留在仅路由数据报的设备上,因此网关中没有TCP层。这是有道理的,因为在网关上,数据报在分层模型中不需要比IP层更高。</p>
<h3 id="TCP报头结构"><a href="#TCP报头结构" class="headerlink" title="TCP报头结构"></a>TCP报头结构</h3><p>TCP段作为Internet数据报发送。Internet协议报头包含几个信息字段,包括源和目标主机地址。TCP头跟随Internet头,提供特定于TCP协议的信息。这种划分允许存在TCP以外的主机级别协议。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"> 0 1 2 3</span><br><span class="line"> 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line">| Source Port | Destination Port |</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line">| Sequence Number |</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line">| Acknowledgment Number |</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line">| Data | |U|A|P|R|S|F| |</span><br><span class="line">| Offset| Reserved |R|C|S|S|Y|I| Window |</span><br><span class="line">| | |G|K|H|T|N|N| |</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line">| Checksum | Urgent Pointer |</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line">| Options | Padding |</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line">| data |</span><br><span class="line">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span><br><span class="line"></span><br><span class="line"> TCP Header Format</span><br><span class="line"></span><br><span class="line"> 请注意,一个刻度表示一位位置。</span><br></pre></td></tr></table></figure>
<div class="table-container">
<table>
<thead>
<tr>
<th>名称</th>
<th>含义</th>
<th>长度</th>
</tr>
</thead>
<tbody>
<tr>
<td>Source Port</td>
<td>源端口号</td>
<td>16</td>
</tr>
<tr>
<td>Destination Port</td>
<td>目的端口号</td>
<td>16</td>
</tr>
<tr>
<td>Sequence Number</td>
<td>此段中第一个数据八位位组的序列号(存在SYN时除外)。如果存在SYN,则序列号为初始序列号(ISN),而第一个数据字节为ISN + 1。</td>
<td>32</td>
</tr>
<tr>
<td>Acknowledgment Number</td>
<td>如果设置了ACK控制位,则该字段包含该段的发送者希望接收的下一个序列号的值。建立连接后,将始终发送该连接。</td>
<td>32</td>
</tr>
<tr>
<td>Data Offset</td>
<td>TCP报头中的32位字的数量。这指示数据从何处开始。TCP头(甚至包括选项在内的一个头)的整数是32位长。</td>
<td>4</td>
</tr>
<tr>
<td>Reserved</td>
<td>保留以备将来使用。必须为零。</td>
<td>6</td>
</tr>
<tr>
<td>Control Bits</td>
<td>控制位 — 从左至右</td>
<td>6</td>
</tr>
<tr>
<td>URG</td>
<td>紧急指针字段意义重大</td>
<td>1</td>
</tr>
<tr>
<td>ACK</td>
<td>确认字段有效</td>
<td>1</td>
</tr>
<tr>
<td>PSH</td>
<td>推送功能</td>
<td>1</td>
</tr>
<tr>
<td>RST</td>
<td>重置连接</td>
<td>1</td>
</tr>
<tr>
<td>SYN</td>
<td>同步序列号</td>
<td>1</td>
</tr>
<tr>
<td>FIN</td>
<td>没有来自发件人的更多数据</td>
<td>1</td>
</tr>
<tr>
<td>Window</td>
<td>此字节的数量以该段的发送方愿意接受的确认字段中指示的位数开始。</td>
<td>8</td>
</tr>
<tr>
<td>Checksum</td>
<td>校验和字段是标头和文本中所有16位字的一个人的补码之和的16位一个人的补码。如果段中包含奇数个要校验和的标题和文本八位位组,则最后一个八位组将在右边填充零,以形成一个16位字用于校验和。打击垫不作为片段的一部分发送。在计算校验和时,校验和字段本身将替换为零。<br />校验和还覆盖了概念上以TCP头为前缀的96位伪头。该伪标头包含源地址,目标地址,协议和TCP长度。这样可以为TCP提供保护,以防止路由错误的段。该信息在Internet协议中承载,并通过IP上TCP的调用参数或结果在TCP /网络接口中传输。</td>
<td>16</td>
</tr>
<tr>
<td>Urgent Pointer</td>
<td>此字段传达紧急指针的当前值,作为与该段中序列号的正偏移量。紧急指针指向紧随紧急数据之后的八位位组的序号。仅在设置了URG控制位的段中解释此字段。</td>
<td>16</td>
</tr>
<tr>
<td>Options</td>
<td>选项可能会占用TCP标头末尾的空间,并且是8位长度的倍数。所有选项都包含在校验和中。选项可以在任何八位位组边界上开始。选项的格式有两种情况:</td>
<td>8的倍数</td>
</tr>
<tr>
<td></td>
<td>情况1:一个八位组。</td>
<td></td>
</tr>
<tr>
<td></td>
<td>情况2:八位位组,选项长度的八位位组和实际的选项数据八位位组。选项长度计算选项类型和选项长度的两个八位位组以及选项数据八位位组。请注意,选项列表可能比数据偏移量字段暗示的要短。超出选项结尾选项的标头内容必须为标头填充(即零)。</td>
</tr>
</tbody>
</table>
</div>
<h3 id="TCP通讯"><a href="#TCP通讯" class="headerlink" title="TCP通讯"></a>TCP通讯</h3><p>在将TCP用于任何实际有用的目的(即发送数据)之前,必须在希望通信的两个设备之间建立连接。此过程通常称为连接建立,涉及交换消息,该消息将两个设备从其初始连接状态(CLOSED)转换为正常操作状态(ESTABLISHED)。</p>
<p><strong>连接建立功能</strong></p>
<p>建立连接过程实际上会完成几件事,因为它创建了适合于数据交换的连接:</p>
<p><em>联系和通信:</em> 客户端和服务器相互联系,并通过相互发送消息建立通信。在这一点之前,服务器通常甚至不知道它将与之对话的客户端,因此它在连接建立期间就发现了这一点。</p>
<p><em>序列号同步:</em> 每个设备都让对方知道其首次传输要使用的初始序列号。</p>
<p><em>参数交换:</em> 控制TCP连接操作的某些参数由两个设备交换。</p>
<p><strong>用于建立连接的控制消息:SYN和ACK</strong></p>
<p>TCP使用控制消息来管理联系和通信过程。但是,没有任何特殊的TCP控制消息类型。所有TCP消息均使用相同的段格式。TCP报头中的一组控制标志指示段是用于控制目的还是仅用于承载数据。使用控制消息时,以下标志会更改。</p>
<p><em>SYN:</em> 该位指示该段正在用于初始化连接。参考上面提到的序列号同步,SYN表示同步。</p>
<p><em>ACK:</em> 此位指示发送网段的设备正在传送对其已接收消息(例如SYN)的确认。</p>
<p><strong>正常连接建立:“三次握手”</strong></p>
<p>为了建立连接,每个设备必须发送一个SYN并从另一个设备接收一个ACK。因此,从概念上讲,需要在设备之间传递四个控制消息。但是,当一个人可以同时通信时,在单独的消息中发送SYN和ACK效率很低。因此,在连接建立中的正常事件序列中,通过设置两个相关位(有时称为SYN + ACK的消息)来一起发送SYN之一和ACK之一。这总共产生了三个消息,因此,连接过程称为三次握手。</p>
<blockquote>
<p>关键: 在TCP客户端和服务器之间建立连接的正常过程包括三个步骤:</p>
</blockquote>
<ul>
<li><p>客户端发送SYN消息</p>
</li>
<li><p>服务器发送结合了客户端SYN的ACK并包含服务器SYN的消息</p>
</li>
<li>然后客户端发送针对服务器的SYN的ACK。这称为TCP三次握手。</li>
</ul>
<p><img src="https://blog-image.nos-eastchina1.126.net/tcpfsm.png" alt=""></p>
<p>连接在其生存周期内会经历一系列状态,这包括:</p>
<div class="table-container">
<table>
<thead>
<tr>
<th>状态名称</th>
<th>状态含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>LISTEN</td>
<td>正在等待来自任何远程TCP和端口的连接请求</td>
</tr>
<tr>
<td>SYN-SENT</td>
<td>发送连接请求后等待匹配的连接请求</td>
</tr>
<tr>
<td>SYN-RECEIVED</td>
<td>已接收并发送连接请求后,等待确认连接请求确认</td>
</tr>
<tr>
<td>ESTABLISHED</td>
<td>一个开放的连接,接收到的数据可以传递给用户。连接的数据传输阶段的正常状态</td>
</tr>
<tr>
<td>FIN-WAIT-1</td>
<td>等待来自远程TCP的连接终止请求,或者等待先前发送的连接终止请求的确认</td>
</tr>
<tr>
<td>FIN-WAIT-2</td>
<td>等待来自远程TCP的连接终止请求</td>
</tr>
<tr>
<td>CLOSE-WAIT</td>
<td>正在等待本地用户的连接终止请求</td>
</tr>
<tr>
<td>CLOSING</td>
<td>等待来自远程TCP的连接终止请求确认</td>
</tr>
<tr>
<td>LAST-ACK</td>
<td>等待先前发送给远程TCP的连接终止请求的确认(包括对它的连接终止请求的确认)。</td>
</tr>
<tr>
<td>TIME-WAIT</td>
<td>等待足够的时间以确保远程TCP收到其连接终止请求的确认。</td>
</tr>
<tr>
<td>CLOSED</td>
<td>完全没有连接状态。</td>
</tr>
</tbody>
</table>
</div>
<h2 id="UDP"><a href="#UDP" class="headerlink" title="UDP"></a>UDP</h2><p><img src="https://blog-image.nos-eastchina1.126.net/Fig2_UDPwork.jpg" alt=""></p>
<p>UDP是一种无连接且不可靠的传输协议,这两个端口用于标识源计算机和目标计算机内的端点。当不需要可靠的传送时,使用用户数据报协议代替TCP。但是,从不使用UDP发送重要数据,例如网页,数据库信息等。流媒体(例如视频,音频等)使用UDP,因为它提供速度。</p>
<p><strong>为什么UDP比TCP快?</strong></p>
<p>UDP比TCP快的原因是因为没有任何形式的流控制。UDP不会进行错误检查,错误纠正或确认。UDP只与速度有关。因此,当Internet上发送的数据受到冲突的影响时,就会出现错误。</p>
<p>UDP数据包称为8字节标头的用户数据报。用户数据报的格式如图3所示。在用户数据报中,前8个字节包含头信息,其余字节包含数据。</p>
<p><strong>UDP数据报</strong></p>
<p><img src="https://blog-image.nos-eastchina1.126.net/Fig3_udp_userdatagrams.jpg" alt=""></p>
<div class="table-container">
<table>
<thead>
<tr>
<th>名称</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td><em>Source port number</em></td>
<td>正在传输数据的源主机使用的端口号。它是16位长。因此,端口号的范围是0到65,535。</td>
</tr>
<tr>
<td><em>Destination port number</em></td>
<td>正在获取数据的目标主机使用的端口号。它也是16位长,并且端口范围的数量与源主机相同。</td>
</tr>
<tr>
<td><em>length</em></td>
<td>字段是一个16位字段。它包含用户数据报,标头和数据的总长度。</td>
</tr>
<tr>
<td><em>Checksum</em></td>
<td>UDP校验和是可选的。它用于检测数据错误。如果该字段为零,则不计算校验和。然后计算得出的true字段包含1。</td>
</tr>
</tbody>
</table>
</div>
<p><strong>UDP的特征</strong></p>
<p>UDP的特征如下。</p>
<ul>
<li><p>端到端。UDP可以识别计算机上运行的特定进程。</p>
</li>
<li><p>不可靠的无连接传送</p>
</li>
</ul>
<p>UDP使用无连接通信设置。在这种情况下,UDP无需在发送数据之前建立连接。通信仅由数据段本身组成</p>
<ul>
<li><p>尽力而为</p>
</li>
<li><p>无应答,无顺序,无流量控制</p>
</li>
<li><p>可能会丢失,重复,延迟,乱序或失去连接</p>
</li>
<li><p>快速,低开销</p>
</li>
</ul>
<ol>
<li>适用于可靠的本地网络</li>
<li>RTP(实时传输协议)</li>
</ol>
<h3 id="在通讯中使用端口"><a href="#在通讯中使用端口" class="headerlink" title="在通讯中使用端口"></a>在通讯中使用端口</h3><p>接收到数据之后,计算机必须具有某种处理机制。考虑到用户已打开三个应用程序,例如Web浏览器,telnet会话和FTP会话。这三个应用程序都正在通过网络移动数据。因此,应该有某种机制来确定操作系统将哪些流量绑定到哪个应用程序。要处理这种情况,请使用网络端口。可用端口的范围是0到65535。其中0到1023是众所周知的端口 ,1023到49151是注册端口,49152到65535是动态端口。</p>
<p><img src="https://blog-image.nos-eastchina1.126.net/TCP_and_UDP_ports.jpg" alt=""></p>
<p>使用UDP协议的常见端口:</p>
<div class="table-container">
<table>
<thead>
<tr>
<th>端口</th>
<th>服务</th>
</tr>
</thead>
<tbody>
<tr>
<td>7</td>
<td>Echo</td>
</tr>
<tr>
<td>9</td>
<td>Discard</td>
</tr>
<tr>
<td>11</td>
<td>Users</td>
</tr>
<tr>
<td>13</td>
<td>Daytime</td>
</tr>
<tr>
<td>17</td>
<td>Quote</td>
</tr>
<tr>
<td>19</td>
<td>Chargen</td>
</tr>
<tr>
<td>53</td>
<td>Nameserver</td>
</tr>
<tr>
<td>67</td>
<td>Bootps</td>
</tr>
<tr>
<td>68</td>
<td>Bootpc</td>
</tr>
<tr>
<td>69</td>
<td>TFTP</td>
</tr>
<tr>
<td>111</td>
<td>RPC</td>
</tr>
<tr>
<td>123</td>
<td>NTP</td>
</tr>
</tbody>
</table>
</div>
<h3 id="UDP通信"><a href="#UDP通信" class="headerlink" title="UDP通信"></a>UDP通信</h3><p>在UDP连接中,客户端根据他们开始连接的程序设置唯一的源端口号。UDP不限于一对一交互。可以使用广播或多播寻址提供一对多交互。与单台服务器通信的许多客户端可以提供多对一交互。多对多交互只是这些技术的扩展。</p>
<h1 id="TCP-vs-UDP"><a href="#TCP-vs-UDP" class="headerlink" title="TCP vs UDP"></a>TCP vs UDP</h1><div class="table-container">
<table>
<thead>
<tr>
<th></th>
<th>UDP</th>
<th>TCP</th>
</tr>
</thead>
<tbody>
<tr>
<td>是否连接</td>
<td>无连接</td>
<td>面向连接</td>
</tr>
<tr>
<td>是否可靠</td>
<td>不可靠传输,不使用流量控制和拥塞控制</td>
<td>可靠传输,使用流量控制和拥塞控制</td>
</tr>
<tr>
<td>连接对象个数</td>
<td>支持一对一,一对多,多对一和多对多交互通信</td>
<td>只能是一对一通信</td>
</tr>
<tr>
<td>传输方式</td>
<td>面向报文</td>
<td>面向字节流</td>
</tr>
<tr>
<td>首部开销</td>
<td>首部开销小,仅8字节</td>
<td>首部最小20字节,最大60字节</td>
</tr>
<tr>
<td>适用场景</td>
<td>适用于实时应用(IP电话、视频会议、直播等)</td>
<td>适用于要求可靠传输的应用,例如文件传输</td>
</tr>
</tbody>
</table>
</div>