Dalam pelajaran/siaran ini, kita akan bercakap tentang Rangkaian.
Pengenalan kepada Bit, Isyarat dan Paket
Keupayaan untuk menyampaikan dan bertukar maklumat melalui rangkaian komunikasi dunia telah merevolusikan cara orang bekerja, bermain dan hidup. Pada permulaan abad ini, Akademi Kejuruteraan Kebangsaan A.S. menyenaraikan 20 teknologi dengan kesan masyarakat paling ketara pada abad ke-20. Senarai ini termasuk inovasi yang mengubah hidup seperti elektrifikasi, kereta dan kapal terbang. Ia juga termasuk empat teknologi komunikasi—radio dan televisyen, telefon, Internet dan komputer—yang asas teknologinya menjadi tumpuan buku ini.
Anehnya, Internet berada di kedudukan #13 sahaja, kerana ia dibangunkan pada akhir abad ini, dan jawatankuasa itu percaya kesannya yang paling ketara akan berlaku pada abad ke-21. Ramalan itu nampaknya tepat: penyebaran rangkaian wayarles dan peranti mudah alih, kebangkitan rangkaian sosial dan pada bila-bila masa, di mana-mana sahaja komunikasi telah mengubah perdagangan, hubungan sosial, malah mendorong perubahan sosial dan politik.
Komunikasi adalah asas kepada kehidupan moden. Sukar untuk membayangkan kehidupan tanpa Internet, aplikasinya atau peranti mudah alih rangkaian. Menjelang awal 2011, lebih 5 bilion telefon mudah alih telah aktif di seluruh dunia, lebih satu bilion dengan ketersambungan "jalur lebar" – melebihi bilangan pengguna elektrik, kasut, berus gigi atau tandas pada tahun 2011!
Objektif
Siaran/pelajaran ini (apa sahaja panggilan anda) bertujuan untuk menerangkan cara rangkaian komunikasi berfungsi. Ini patut dikaji kerana dua sebab:
- untuk memahami prinsip reka bentuk dan teknik analisis yang digunakan dalam sistem ini;
- kerana idea teknikal adalah relevan dengan bidang lain dalam sains komputer (CS) dan kejuruteraan elektrik (EE). Ini menjadikan mempelajari sistem komunikasi cara terbaik untuk mempelajari konsep yang boleh digunakan secara meluas.
Di MIT(Institut Teknologi Massachusetts), pelajar tahun kedua mengikuti kursus sedemikian, dengan sedikit pendedahan kepada kebarangkalian dan siri Fourier.
Secara tradisinya, "komunikasi peringkat rendah" (cara maklumat bergerak merentasi satu pautan) telah dianggap sebagai topik EE, manakala "rangkaian" (membina rangkaian berbilang pautan) telah menjadi topik CS. Kursus komunikasi digital tradisional jarang menangani pembinaan rangkaian, dan kursus rangkaian komputer menganggap komunikasi melalui pautan fizikal sebagai kotak hitam. Buku ini bertujuan untuk merapatkan jurang ini, memberikan pemahaman menyeluruh tentang kedua-dua aspek.
Kami akan merangkumi sistem komunikasi hujung ke hujung: daripada sumber dengan maklumat untuk dihantar, kepada paket (mesej dipecahkan untuk penghantaran), kepada bit ("0" atau "1"), kepada isyarat (bentuk gelombang analog dihantar melalui pautan seperti wayar, gentian, radio atau gelombang akustik). Kami akan memeriksa rangkaian yang pelbagai: pautan titik ke titik yang mudah, media kongsi dengan berbilang nod dan rangkaian berbilang hop yang lebih besar disambungkan untuk membentuk rangkaian yang lebih besar.
Tema
Tiga cabaran adalah penting kepada komunikasi digital: kebolehpercayaan, perkongsian dan kebolehskalaan. Bahagian pengenalan ini memfokuskan pada dua yang pertama.
Kebolehpercayaan
Banyak faktor yang menyebabkan komunikasi tidak boleh dipercayai. Kami akan mengkaji teknik untuk meningkatkan kebolehpercayaan, yang kesemuanya menggunakan lebihan untuk mencapai kebolehpercayaan dengan komponen yang tidak boleh dipercayai, bergantung pada kegagalan komponen bebas.
Cabaran utama ialah mengatasi hingar, gangguan, ralat bit, kehilangan paket (daripada ralat yang tidak dapat dibetulkan, limpahan baris gilir atau kegagalan pautan/perisian), yang semuanya merendahkan kualiti komunikasi.
Selain kebolehpercayaan, kelajuan juga penting. Teknik kebolehpercayaan sering menggunakan redundansi, mengurangkan kelajuan. Banyak sistem komunikasi mengimbangi kebolehpercayaan dan kelajuan.
Kelajuan komunikasi telah meningkat secara mendadak, daripada kilobit sesaat pada awal 1980-an kepada 100 Megabit sesaat secara wayarles dan 1-10 Gigabit sesaat berbanding pautan berwayar hari ini.
Kami akan meneroka sebab komunikasi tidak boleh dipercayai dan cara menanganinya, menggunakan kod pembetulan ralat, mengendalikan gangguan antara simbol, protokol penghantaran semula dan penghalaan toleransi kesalahan.
Perkongsian yang cekap
Pautan khusus untuk setiap pasangan nod sangat mahal. Perkongsian adalah penting. Kami akan mengkaji perkongsian pautan titik ke titik, media kongsi dan rangkaian berbilang hop.
我们将介绍共享介质(与以太网、WiFi、蜂窝网络和卫星网络相关)、调制/解调(通过不同频率传输)和介质访问控制 (MAC) 协议(管理网络节点行为的规则) 。我们将探讨时间共享(每个节点在专用时间内进行传输)和频率共享(划分带宽)。然后我们将转向多跳网络,其中许多通信共享链接,由交换机协调。
关键问题包括多个通信如何共享网络、消息如何穿越网络以及如何确保跨多跳网络的可靠通信。
共享技术和可靠性机制决定网络效率。效率可以定义为最小化给定要求的成本或最大化给定网络的“有用工作”(聚合吞吐量、吞吐量变化和平均延迟/等待时间)。这篇文章重点讨论吞吐量和延迟。
可扩展性
可扩展性(设计处理大尺寸的网络)很重要。这篇文章简要介绍了它,为后面的课程留下详细讨论。
概要与计划
本课程分为四个部分:源代码以及位、信号和数据包的抽象,按顺序学习。
- 来源:我们从信息、熵、源编码(数据压缩)、霍夫曼编码和 Lempel-Ziv-Welch 算法的基础知识开始。
- 位:我们通过纠错码来克服位错误:线性分组码和卷积码。
- 信号:我们涵盖调制/解调、使用线性时不变 (LTI) 通道建模信号失真、时域/频域表示以及通道/滤波器的频率响应。
- 数据包:我们研究 MAC 协议的介质共享、多跳网络中的路由以及可靠的数据传输协议。
信息、熵和源代码的动机
克劳德·香农 (Claude Shannon) 的信息理论(发展于 20 世纪 40 年代末)是一个开创性的想法,它改变了许多技术领域,特别是通信系统和网络。本章介绍信息背后的直觉,以数学方式定义信息,并将其与熵(数据源的属性)联系起来。
这些概念可以在通信或存储之前实现高效的数据压缩,从而可以在不失真的情况下恢复原始数据。 核心思想是源编码,它将数据源中的每个符号映射到具有所需属性的代码字。消息是符号序列。我们的重点是无损源编码,可以从未损坏的传输中完美恢复原始消息。
信息与熵
香农在哈特利工作的基础上,意识到信息可以被普遍定义,独立于应用程序或消息语义。通信涉及发送者 (S) 选择几种可能的消息之一并将其发送给接收者 (R)。例如,S可以表示英国到达路线:
- 如果陆路则为“1”
- 如果是海运则为“2”
如果每个选择的可能性相同(没有先验知识),则传达的信息为 1 位。该位可以对选择进行编码。 1000 个这样的独立事件可以用 1000 位进行编码。
如果先验知识表明一种选择的概率较高(例如,由于风暴而选择陆地),那么可能性较小的消息(海洋)会传达更多信息。 同样,波士顿 1 月份 75°F 的气温比 32°F 的气温更能提供信息。
有关事件的信息取决于其概率 (p)。较低的概率(不太可能发生的事件)意味着较高的信息。
信息的定义
Hartley 将信息 (I) 定义为:
I = log(1/p) = -log(p) (2.1)
采用以2为底的对数,信息单位为比特。 对数函数确保可加性:来自两个独立事件A和B(概率pA和pB)的信息相加:
IA IB = log(1/pA) log(1/pB) = log(1/(pA*pB)) = log(1/P(A 和 B))
示例
熵
熵 (H) 量化一组互斥事件的预期信息。如果事件 i 的概率为 pi:
H(p1, p2, ... pN) = Σ pi * log(1/pi) (2.2)
熵以位为单位测量,代表平均不确定性。对于概率为 p 和 1-p 的两个互斥事件:
H(p, 1-p) = -p*log(p) - (1-p)*log(1-p) (2.3)
H(p)는 p = 1/2를 기준으로 대칭이며 p = 1/2에서 최대 1비트입니다. H(0) = H(1) = 0. 엔트로피는 항상 음수가 아니며 H(p1, p2, ... pN) ≤ log N입니다.
소스 코드
소스 코딩은 메시지를 효율적으로 인코딩합니다. 많은 메시지에는 표준 인코딩(ASCII, 이미지 픽셀, 오디오 샘플)이 있습니다. 고정 길이 인코딩으로 쉽게 조작할 수 있습니다.
그러나 이러한 인코딩은 비효율적일 수 있습니다. 영어 텍스트에서는 'e'가 'x'보다 더 자주 나타납니다. 더 적은 비트로 'e'를 인코딩하고 더 많은 비트로 'x'를 인코딩하면 평균 메시지 길이를 줄일 수 있습니다. 이는 정보 개념과 일치합니다. 즉, 빈도가 높은 기호(pi가 높음)는 더 적은 정보를 전달하고 더 적은 비트가 필요합니다.
코드는 정보를 비트 시퀀스로 매핑합니다. 코드워드는 코드의 비트 시퀀스입니다. 소스 코드는 인코딩된 메시지 길이를 정보 내용(엔트로피)에 맞춰 데이터를 압축하는 것을 목표로 합니다.
예: 1000개 등급(A, B, C, D)을 확률로 인코딩:
고정 길이 인코딩: 2비트/등급(총 2000비트). 디코딩은 간단하지만 비효율적입니다.
가변 길이 인코딩(예): A=10, B=0, C=110, D=111. 길이는 메시지에 따라 다릅니다. 디코딩에는 순차적 처리가 필요합니다. 이 예제 코드는 최적이 아닙니다.
얼마나 많은 압축이 가능합니까?
이상적으로 압축은 정보를 표현하는 데 필요한 비트만 사용합니다. 엔트로피(식 2.2)는 모호성을 방지하는 데 필요한 평균 비트 수의 하한을 제공합니다. 더 적은 비트를 전송하면 수신자에서 해결되지 않은 선택이 발생합니다.
등급 예시에서 등급당 예상되는 정보는 1.626비트입니다. 1000개 등급을 인코딩하려면 평균 1626비트가 필요합니다. 예제 가변 길이 코드는 1667비트를 사용하므로 최적이 아닙니다. 등급의 인코딩 시퀀스는 압축을 향상시킬 수 있습니다.
좋은 코드를 찾는 것은 어렵습니다. 때로는 상황별 코드가 매우 효율적일 수 있습니다(예: 발신자와 수신자가 모두 모든 소네트를 알고 있는 경우 단 8비트를 사용하여 셰익스피어 소네트를 인코딩).
왜 압축인가?
압축은 여러 가지 장점을 제공합니다.
- 빠른 전송: 메시지가 짧을수록 전송 시간이 줄어들고 네트워크 용량이 늘어납니다.
- 효율적인 리소스 사용: 메시지가 작을수록 네트워크 리소스(대역폭, 버퍼)가 절약되어 더 많은 통신이 가능합니다.
- 오류가 발생하기 쉬운 링크에 대한 처리량 향상: 오류 수정 코딩 전 압축을 통해 오류 복원력을 위한 최적화된 중복성을 제공합니다.
압축은 일반적으로 엔드 투 엔드 기능(애플리케이션 계층)이지만 데이터가 압축 가능하고 중복성이 포함된 경우 링크 계층에도 적용될 수 있습니다. 다음 장에서는 Huffman 코드와 LZW(Lempel-Ziv-Welch) 압축을 다룹니다.
압축 알고리즘: Huffman 및 Lempel-Ziv-Welch(LZW)
이 장에서는 메시지 압축(메시지가 일련의 기호임)을 위한 두 가지 소스 코딩 알고리즘, 즉 허프만 코딩과 Lempel-Ziv-Welch(LZW)에 대해 설명합니다. 허프만 코딩은 기호 확률이 알려져 있고 독립적일 때 효율적입니다. LZW는 적응형이므로 확률에 대한 사전 지식이 필요하지 않습니다. 둘 다 널리 사용됩니다(GIF, JPEG, MPEG, MP3 등).
좋은 소스코드의 속성
코드는 알파벳(텍스트, 픽셀 강도 또는 추상 기호)의 기호를 코드워드에 매핑합니다. 바이너리 코드워드는 많은 통신 채널에 편리합니다.
예: 6.02의 인코딩 등급: A=1, B=01, C=000, D=001. 일련의 등급은 0010001110100001로 전송되고 "DCAAABCB"로 디코딩될 수 있습니다.
순간 코드: 기호는 해당 코드워드가 수신되는 즉시 해독됩니다. 위의 등급 인코딩은 즉각적입니다. 순간적이지 않은 코드는 앞을 내다보거나 끝에서부터 디코딩해야 하므로 디코딩하기가 더 어렵습니다.
코드 트리 및 접두어 없는 코드: 코드 트리는 코드를 시각화합니다. 이진 코드 트리에서 가장자리에는 0 또는 1로 레이블이 지정됩니다. 루트에서 기호까지의 경로는 해당 인코딩을 제공합니다. 접두사가 없는 코드는 리프 노드에만 기호가 있으므로 코드워드가 다른 코드워드의 접두사가 되지 않도록 합니다. 접두어가 없는 코드는 즉시 적용됩니다.
예상 코드 길이(L): 확률 pi 및 코드워드 길이 li를 갖는 N 기호의 경우: L = Σ pi * 리. 압축에는 L이 작은 코드가 바람직합니다. 최적 코드에는 최소 L이 있습니다. Shannon은 L ≥ H(엔트로피)를 보여주며, 엔트로피를 달성하는 코드는 점근적으로 존재합니다.
허프만 코드
허프만 코드는 주어진 기호 확률에 따라 효율적인 인코딩을 제공합니다. 가능성이 높은 기호는 코드가 더 짧아집니다.
Huffman의 알고리즘은 가능성이 가장 낮은 기호부터 시작하여 상향식 코드 트리를 구축합니다.
- Input: Set S daripada tupel (kebarangkalian, simbol).
- Gabungkan dua simbol paling kecil kemungkinan ke dalam tuple baharu (simbol gabungan, jumlah kebarangkalian). Tambahkan tupel baharu pada S.
- Ulang langkah 2 sehingga S hanya mempunyai satu tuple (akarnya).
Pokok kod yang terhasil mentakrifkan kod panjang berubah-ubah.
Sifat Kod Huffman
- Bukan keunikan: Berbilang kod optimum (dan pokok) mungkin wujud disebabkan pemutusan ikatan sewenang-wenangnya semasa pembinaan pokok.
- Keoptimuman: Kod Huffman mempunyai jangkaan panjang minimum antara kod segera untuk simbol bebas yang diambil daripada taburan kebarangkalian tetap yang diketahui.
LZW: Kod Sumber Panjang Pembolehubah Adaptif
Pengekodan Huffman ringkas berdasarkan kebarangkalian huruf mempunyai had. Pengekodan mudah suai, yang melaraskan kepada kandungan mesej, boleh berprestasi lebih baik. LZW ialah algoritma penyesuaian yang popular.
LZW membina jujukan simbol pemetaan jadual rentetan kepada/dari indeks N-bit. Jadual (2^N entri) dimulakan dengan jujukan bait tunggal (0-255). Pengekodan:
- Kumpul bait semasa urutan (S) berada dalam jadual.
- Apabila S bait seterusnya (b) tiada dalam jadual:
- Hantar kod untuk S.
- Tambahkan S b pada jadual.
- Tetapkan semula S kepada b.
- Ulang sehingga semua bait diproses; kemudian hantar kod untuk S akhir.
Penyahkod membina semula jadual apabila ia menerima kod, membolehkannya memulihkan mesej asal.
Pemerhatian LZW:
- Rakus: Cari padanan paling lama.
- Adaptif: Entri jadual menggambarkan urutan mesej sebenar.
- Suboptimum: Mungkin termasuk entri yang tidak digunakan.
- Mampatan boleh ubah: Mampatan meningkat apabila jadual penuh.
- Pemulaan semula jadual: Jadual ditetapkan semula apabila penuh, menyesuaikan diri dengan perubahan kebarangkalian. Sesetengah varian menggunakan kod CLEAR untuk tetapan semula eksplisit.
Kenapa Digital? Abstraksi Komunikasi dan Isyarat Digital
Bab ini menerangkan komunikasi analog dan digital, memfokuskan pada masalah dengan analog dan rasional untuk digital. Ia membentangkan kaedah untuk menghantar dan menerima data digital melalui pautan komunikasi analog (perlu kerana pautan fizikal pada asasnya adalah analog pada tahap terendah). Ia juga memperkenalkan model komunikasi berlapis: mesej → paket → bit → isyarat, yang menjadi asas untuk seluruh buku.
Sumber Data
Teknologi komunikasi membolehkan pengguna (manusia atau aplikasi) bertukar-tukar mesej. Sumber data boleh menjadi digital (cth., data jana komputer) atau analog (cth., video, audio, data sensor). Sistem moden sering mendigitalkan semua data, tanpa mengira sumbernya.
Kenapa Digital?
Komunikasi digital cemerlang kerana dua sebab:
- Modulariti: Abstraksi digital membolehkan membina sistem besar dengan mengarang modul.
- Pemprosesan Canggih: Ia membenarkan penggunaan algoritma untuk meningkatkan kualiti data dan prestasi sistem.
Walau bagaimanapun, pautan fizikal adalah analog, memerlukan penukaran digital-ke-analog dan analog-ke-digital.
Mengapa analog adalah semula jadi dalam banyak aplikasi
Perwakilan analog memetakan dengan baik kepada sifat pautan fizikal. Contoh:
TV hitam-putih: Pencahayaan imej (warna kelabu) diwakili oleh paras voltan (0V = hitam, 1V = putih).
Telefon analog: Gelombang bunyi ditukar kepada isyarat elektrik.
Isyarat analog boleh dihantar pada tahap voltan/intensiti/panjang gelombang yang berbeza, diukur dengan mudah oleh penerima.
Jadi mengapa tidak analog?
Tiada pautan komunikasi bebas ralat. Bunyi dan herotan mengganggu isyarat, dan ralat ini terkumpul merentasi pelbagai peringkat penghantaran (kesan melata). Ini menjadikan sistem analog sukar untuk dibina dengan pasti, terutamanya yang kompleks. Isyarat digital menangani masalah ini.
Isyarat Digital: Memetakan Bit kepada Isyarat
Isyarat digital menggunakan nilai diskret untuk mewakili bit, membolehkan perbezaan yang mantap daripada hingar. Isyarat binari menggunakan dua voltan: V0 untuk "0" dan V1 untuk "1". V0 dan V1 mesti diasingkan secukupnya untuk mengendalikan bunyi.
Penerima menggunakan voltan ambang (Vth = (V0 V1) / 2) untuk memetakan voltan yang diterima kepada bit (voltan
本课中的信号
传输信号是保持特定时间的固定电压波形。 连续信号由离散时间样本表示。 采样率(每秒采样数)由发送者和接收者商定。 采样间隔是采样之间的时间。
时钟传输
发送方和接收方必须就时钟速率达成一致。位在时钟转换时发送。 Samples_per_bit 是每比特的样本数。接收器从接收到的样本中的转换推断时钟边沿。
挑战:
- 时钟同步:发送器和接收器时钟可能不同。 解决方案:接收器根据检测到的转换进行自适应定时。
- 确保频繁转换:时钟恢复所需。解决方案:线路编码(例如8b/10b)。
时钟和数据恢复
接收方时钟可能比发送方时钟稍快或稍慢。 接收器根据转换动态调整其采样索引:
- 如果当前点和前一个点之间的中间样本与当前样本相同(采样太晚):将索引增加samples_per_bit - 1。
- 如果中途样本不同(采样太早):增加samples_per_bit 1。
- 如果没有转换:增加samples_per_bit。
初始校正由传输开始时交替的 0 和 1 训练序列辅助。
8b/10b 线路编码
8b/10b 解决 DC 平衡和频繁转换问题。它将 8 位符号映射到 10 位传输符号,确保:
- 0 或 1 的最大运行长度为 5 位。
- 任何样本中 1 和 0 计数之间的最大差异为 6。
- 特殊的 7 位序列可实现数据包边界检测。
编码过程:
- 数据包数据被分为字节。
- 每个字节映射到一个 10 位符号。
- 数据包由训练序列和用于同步的 SYNC 模式构成。
通信抽象
一个通信系统涉及几个模块:Mapper(比特到信号)、Demapper(信号到比特)、Channel Coding(纠错)、Channel Decoding。消息被分成数据包并通过多个链路传输。 三个关键抽象是数据包、位和信号。 本书重点关注这些内容以及它们在通信网络中的交互。
使用纠错码应对位错误
本章讨论可靠数字通信的技术,重点是添加冗余以应对通信通道和存储介质中不可避免的位错误。 核心概念是通道编码:在发送方编码并在接收方解码以纠正错误或检测不可纠正的错误。 本章重点介绍错误校正代码,特别是线性块代码和(后来的)卷积代码。
位错误和 BSC
二进制对称信道 (BSC) 模型使用单个参数 ε(位翻转概率)来表征位错误,其中传输的位以概率 ε 翻转,独立于其他位。 ε 可以凭经验估计。 大小为 S 位的数据包的数据包错误概率 (PER):
PER = 1 - (1 - ε)^S (5.1)
当 ε
现实世界的通道可能会出现突发错误,其中错误概率取决于历史记录(如果最近的位也出错,则错误概率更高)。
最简单的代码:重复
A 重复代码 将位 b 编码为 n 个 b 副本。 码率为1/n。 最大似然解码 根据收到的码字选择最有可能的消息。对于 BSC,这意味着选择与接收到的码字具有最多共同位的码字。
重复码的解码错误概率(见原文公式5.3)。概率随着码率呈指数下降,但由于开销较高而效率低下。
嵌入和汉明距离
两个 n 位字之间的汉明距离 (HD) 是不同位位置的数量。对于单纠错 (SEC),任何两个有效码字之间的 HD 必须至少为 3。具有最小汉明距离 D 的代码可以检测 D-1 错误并纠正底层(D/2 -1) 错误。
线性分组码和奇偶校验计算
线性块码 (n, k) 使用消息位上的线性函数(加权和)将 k 位消息映射到 n 位码字。 代数块代码在块内执行此类操作。 (n,k,d)码表示具有最小汉明距离“d”的分组码。码率 = k/n。
线性码要求任意两个码字之和也是一个码字。 全零码字存在于任何线性码中。线性分组码的最小汉明距离等于最小非零码字的权重(1的数量)。 二进制线性代码使用模2算术(伽罗瓦域F2)。
矩形奇偶校验 SEC 代码
奇偶校验 是位的模 2 和。 偶校验码为每条消息添加一个奇偶校验位,使码字具有偶校验。这会检测到单个错误 (HD=2)。
矩形奇偶校验码将 k 位排列到 r x c 数组中,并添加行和列奇偶校验。码字:消息行奇偶校验列奇偶校验。长度:n = rc r c。该代码是 SEC 代码 (HD=3)。 解码涉及检查行和列奇偶校验,如果两个奇偶校验都指示错误,则纠正相应的位。
SEC 代码需要多少个奇偶校验位?
任何线性代码都可以转换为系统代码(消息位后跟奇偶校验位)。对于 SEC,奇偶校验组合的数量 (2^(n-k)) 必须大于或等于可纠正情况的数量 (n 1):
n 1 ≤ 2^(n-k) (5.6)
奇偶校验位计数至少随消息位呈对数增长。
汉明码
汉明码是具有对数奇偶校验位增长的高效 SEC 代码。 每个奇偶校验位保护多个数据位,单个错误会产生独特的奇偶校验错误组合。
校正子位 (Ei) 在接收器处通过检查奇偶校验来计算。综合症位的组合表示错误位(如果有)。
汉明码的构造有逻辑吗?
汉明码构造:
- 将奇偶校验位分配给 2 的幂(1、2、4、8、...)的索引。
- 将数据位分配给剩余索引。
- 数据位di包含在pj的奇偶校验计算中当且仅当索引(pj)有助于索引(di) 以二进制表示形式(按位 AND 非零)。
作为二进制数处理的校正子位((7,4) 示例中的 E3E2E1)给出了要纠正的位的索引。
注意:这只是 Web 开发所需的信息。对于 Sysops 来说,网络及其基础知识是两个学期的课程。
以上是互联网如何运作?第2部分的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

10款趣味横生的jQuery游戏插件,让您的网站更具吸引力,提升用户粘性!虽然Flash仍然是开发休闲网页游戏的最佳软件,但jQuery也能创造出令人惊喜的效果,虽然无法与纯动作Flash游戏媲美,但在某些情况下,您也能在浏览器中获得意想不到的乐趣。 jQuery井字棋游戏 游戏编程的“Hello world”,现在有了jQuery版本。 源码 jQuery疯狂填词游戏 这是一个填空游戏,由于不知道单词的上下文,可能会产生一些古怪的结果。 源码 jQuery扫雷游戏

本教程演示了如何使用jQuery创建迷人的视差背景效果。 我们将构建一个带有分层图像的标题横幅,从而创造出令人惊叹的视觉深度。 更新的插件可与JQuery 1.6.4及更高版本一起使用。 下载

本文讨论了在浏览器中优化JavaScript性能的策略,重点是减少执行时间并最大程度地减少对页面负载速度的影响。

本文演示了如何使用jQuery和ajax自动每5秒自动刷新DIV的内容。 该示例从RSS提要中获取并显示了最新的博客文章以及最后的刷新时间戳。 加载图像是选择

Matter.js是一个用JavaScript编写的2D刚体物理引擎。此库可以帮助您轻松地在浏览器中模拟2D物理。它提供了许多功能,例如创建刚体并为其分配质量、面积或密度等物理属性的能力。您还可以模拟不同类型的碰撞和力,例如重力摩擦力。 Matter.js支持所有主流浏览器。此外,它也适用于移动设备,因为它可以检测触摸并具有响应能力。所有这些功能都使其值得您投入时间学习如何使用该引擎,因为这样您就可以轻松创建基于物理的2D游戏或模拟。在本教程中,我将介绍此库的基础知识,包括其安装和用法,并提供一


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境