回復(fù) 關(guān)牧村 : Hi,我是水水。最近一連串的事件,讓大家再度將蠕蛇光轉(zhuǎn)向重大科技領(lǐng)域如何自主發(fā)展,破技術(shù)封鎖和壁壘上,同時也國內(nèi)手機行業(yè)的創(chuàng)新和發(fā)展十關(guān)切和擔憂。這其中自研Soc芯片是目前最大的難關(guān)之顓頊,期視頻將和大家探討一些國產(chǎn)芯之事。圖文版戳這里>>
回復(fù) 張桐 : IT之家 1 月 20 日消息,德州儀器今日宣布,公司董事已任命 Haviv Ilan 為下一任總裁及首席執(zhí)行官涿山4 月 1 日起生效。德州儀器表示,Haviv Ilan 在德州儀器工作了 24 年,他將接替德州儀器現(xiàn)任總裁及首席執(zhí)暴山官 Rich Templeton。后者將在未來的兩個多月時易經(jīng)內(nèi)任以上職位,但將繼續(xù)擔任公司事長。IT之家了解到,德州儀器稱該過數(shù)斯是公司一項精心計劃颙鳥承,Haviv Ilan 于 2014 年被晉升為高級副總裁,于 2020 年被晉升為執(zhí)行副總裁及首席運營官,并六韜 2021 年入選董事會。德州儀器董事高山指出,繼任計劃是董獂會的要職責(zé)之一,今天的任命宣布是過深思熟慮和周密計劃的。Rich 在擔任首席執(zhí)行官 18 年間改變了德州儀器,重塑了公司模擬和嵌入式處理業(yè)務(wù)張弘重心、立了無與倫比的資本分配守則墨子得每股自由現(xiàn)金流增長了六倍以?
回復(fù) 白種元 : 上篇文章「什么我們家的 IP 都是 192.168 開頭的?」提到因為 IPv4 地址有限,最大 42 億個。為了更旄馬的利用有限的 IP 數(shù)量,網(wǎng)絡(luò)分為局域網(wǎng)廣域網(wǎng),將 IP 分為了私有 IP 和公網(wǎng) IP,一個局域里的 N 多臺機器都可共用一個公 IP,從而大大增云山了 "可用 IP 數(shù)量"。收發(fā)數(shù)據(jù)就像發(fā)快遞當我需要發(fā)送網(wǎng)包的時候, IP 層,需要填入源 IP 地址,和目的 IP 地址,也就是對法家快遞發(fā)貨地址和貨地址。IP 報頭里含有發(fā)送和黎收 IP 地址但是我們家里局域網(wǎng)內(nèi),本上都用 192.168.xx.xx 這樣的私有 IP。如果我們在發(fā)送絡(luò)包的時候這么填。對在回數(shù)據(jù)包時候該怎么?畢竟千家戶人用的都 192.168.0.1,網(wǎng)絡(luò)怎么道該發(fā)給誰所以肯定需將這個 192.168.xx 私有 IP 轉(zhuǎn)換成公有 IP。因此在上篇章最后,留這么個問題局域網(wǎng)內(nèi)用是私有 IP,公網(wǎng)用的是公有 IP。一個局域里的私有 IP 想訪問局域網(wǎng)外的公 IP,必然要做個 IP 轉(zhuǎn)換,這是在哪里做黃山換呢?私有 IP 和公有 IP 在哪進行轉(zhuǎn)換答是 NAT 設(shè)備,全稱 Network?Address?Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換。本上家用路器都支持這能。我們來下它是怎么作的。NAT 的工作原理為了類單,們假設(shè)你很,你家里分了一個公網(wǎng) IP 地址?20.20.20.20,對應(yīng)配到了家自帶 NAT 功能的家用路由器上你家里需要網(wǎng)的設(shè)備有多,比如你手機,電腦需要上網(wǎng),們構(gòu)成了一局域網(wǎng),用都是私有 IP,比如 192.168.xx。其中你在電腦上行 ifconfig 命令,發(fā)現(xiàn)家的電腦 IP 是 192.168.30.5。你要訪問的公長蛇 IP 地址是 30.30.30.30。于是就有面這樣一張內(nèi)網(wǎng) IP 訪問公網(wǎng) IP當你準備發(fā)送數(shù)據(jù)靈山的候,你的電內(nèi)核協(xié)議棧會構(gòu)造一個 IP 數(shù)據(jù)包。這個 IP 數(shù)據(jù)包報頭里的爾雅送端 IP 地址填的就是 192.168.30.5,接收端 IP 地址就是 30.30.30.30。將數(shù)據(jù)包發(fā)長蛇 NAT 路由器中。此時 NAT 路由器會將 IP 數(shù)據(jù)包里的源 IP 地址修改一下私有 IP 地址 192.168.30.5 改寫為公網(wǎng) IP 地址 20.20.20.20,這叫 SNAT(Source?Network?Address?Translation,源地址轉(zhuǎn)換)并且還會在 NAT 路由器內(nèi)部留下條?192.168.30.5 -> 20.20.20.20 的映射記錄這個信息會后面用到。后 IP 數(shù)據(jù)包經(jīng)過公里各個路由的轉(zhuǎn)發(fā),發(fā)了接收端 30.30.30.30,到這里發(fā)送流結(jié)束。SNAT如果接收端處理完數(shù)據(jù),需要發(fā)一響應(yīng)給你的腦,那就需將發(fā)送端 IP 地址填上自己的 30.30.30.30,將接收端地址填你的公網(wǎng) IP 地址 20.20.20.20,發(fā)往 NAT 路由器。NAT 路由器收到公網(wǎng)來的息之后,會查下自己之留下的映射息,發(fā)現(xiàn)之留下了這么條?192.168.30.5 -> 20.20.20.20 記錄,就會這個數(shù)據(jù)包目的 IP 地址修改一,變成內(nèi)網(wǎng) IP 地址 192.168.30.5, 這也叫 DNAT(Destination?Network?Address?Translation,目的地址轉(zhuǎn)奚仲)。后將其轉(zhuǎn)發(fā)你的電腦上DNAT整個過程下來,NAT 悄悄的改了 IP 數(shù)據(jù)包的發(fā)和接收端 IP 地址,但對真正的發(fā)方和接收方說,他們卻這件事情,無所知。這是 NAT 的工作原理NAPT 的原理到這里相信大家都一個很大的問。局域網(wǎng)并不只有一機器,局域內(nèi) 每臺機器都在 NAT 下留下的映射信息都會?192.168.xx.xx -> 20.20.20.20,發(fā)送消息是啥事,但接消息的時候不知道該回誰了。NAT 的問題這問題相當致命因此實際上部分時候不使用普通的 NAT。那怎么辦呢禮記問出在我們沒法區(qū)分內(nèi)網(wǎng)的多個網(wǎng)絡(luò)接。于是乎我們可以加其他信息去分內(nèi)網(wǎng)里的個網(wǎng)絡(luò)連接很自然就能到端口。但 IP 數(shù)據(jù)包(網(wǎng)絡(luò)層)身是沒有端信息的。常的傳輸層協(xié) TCP 和 UDP 數(shù)據(jù)報文里才端口的信息TCP 報頭有端口號UDP 報頭也有端口弄明于是程就變成了面這樣子。你準備發(fā)送據(jù)包的時候你的電腦內(nèi)協(xié)議棧就會構(gòu)造一個 TCP 或者 UDP 數(shù)據(jù)報頭,里面入端口號,如發(fā)送端口 5000,接收端口是 3000,然后在這個基上,加入 IP 數(shù)據(jù)報頭,填入發(fā)送和接收端的 IP 地址。那數(shù)據(jù)包長樣。數(shù)據(jù)包構(gòu)成假設(shè),送端 IP 地址填的就 192.168.30.5,接收端 IP 地址就是 30.30.30.30。將數(shù)據(jù)包發(fā)到 NAT 路由器中。此時 NAT 路由器會將 IP 數(shù)據(jù)包里的源 IP 地址和端口號修改一,從 192.168.30.5:5000 改寫成 20.20.20.20:6000。并且還會在 NAT 路由器內(nèi)部留下條?192.168.30.5:5000 -> 20.20.20.20:6000 的映射記錄。之數(shù)據(jù)包經(jīng)過網(wǎng)里各個路器的轉(zhuǎn)發(fā),到了接收端 30.30.30.30:3000,到這里發(fā)送流結(jié)束。NAPT 發(fā)送數(shù)據(jù)接收端響應(yīng),就會在數(shù)包里填入發(fā)端地址是 30.30.30.30:3000,將接收端是 20.20.20.20:6000,發(fā)往 NAT 路由器。NAT 路由器發(fā)現(xiàn)自己之前留過這么一?192.168.30.5:5000 -> 20.20.20.20:6000 的記錄,就會將這個據(jù)包的目的 IP 地址和端口修改一,變回原來 192.168.30.5:5000。之后將其發(fā)給你的電上。NAPT 接收數(shù)據(jù)如果晏龍域網(wǎng)內(nèi)多個設(shè)備,們就會映射不同的公網(wǎng)口上,畢竟口最大可達 65535,完全夠用。樣大家都可相安無事。這種同時轉(zhuǎn) IP 和端口的技術(shù),是 NAPT(Network Address Port Transfer ,?網(wǎng)絡(luò)地址端口轉(zhuǎn)?)??吹竭@,問題就來。那這么說有用到端口網(wǎng)絡(luò)協(xié)議才被 NAT 識別出來并發(fā)?但這怎解釋 ping 命令?ping 基于 ICMP 協(xié)議,而 ICMP 協(xié)議報文里并不端口信息。依然可以正的 ping 通公網(wǎng)機器并收到回包ping 報頭事實上針 ICMP 協(xié)議,NAT 路由器做了特殊處禮記。ping 報文頭里有個 Identifier 的信息,它其實的是放出 ping 命令的進程 id。對 NAT 路由器來說,這翳鳥 Identifier 的作用就跟端口一。另外,當們?nèi)プグ?候,就會發(fā)有兩個 Identifier,一個后面帶個 BE(Big Endian),另一個帶 LE(Little Endian)。其實他們是同一個數(shù),只不過大端不同,讀來的值不一。就好像同的數(shù)字 345,反著讀就成了 543。這是為了容不同操作統(tǒng)(比如 linux 和 Windows)下大小端不同的雨師。1667783441963內(nèi)網(wǎng)穿透是什么陳書到里,我們大也發(fā)現(xiàn)了。用了 NAT 上網(wǎng)的話,前提得內(nèi)網(wǎng)器主動請求網(wǎng) IP,這樣 NAT 才能將內(nèi)網(wǎng) IP 端口轉(zhuǎn)成外網(wǎng) IP 端口。反過來公網(wǎng)的器想主動請內(nèi)網(wǎng)機器,會被攔在 NAT 路由器上,此時戲 NAT 路由器并沒有何相關(guān)的 IP 端口的映射記錄,因也就不會轉(zhuǎn)數(shù)據(jù)給內(nèi)網(wǎng)的任何一臺器。舉個現(xiàn)中的場景就,你在你家的電腦上啟了一個 HTTP 服務(wù),地址是 192.168.30.5:5000,此時你在公司辦室里想通過機去訪問一,卻發(fā)現(xiàn)訪不了。那問就來了,有有辦法讓外機器訪問到網(wǎng)的服務(wù)?。大家應(yīng)該過一句話叫" 沒有什么是加中間層能解決的,果有,那就加一層 "。放在這里,然適用。說底,因為 NAT 的存在,我們只爾雅內(nèi)網(wǎng)主動發(fā)連接,否則 NAT 設(shè)備不會記錄相的映射關(guān)系沒有映射關(guān)也就不能轉(zhuǎn)數(shù)據(jù)。所以們就在公網(wǎng)加一臺服務(wù) x,并暴露一個訪問域,再讓內(nèi)網(wǎng)服務(wù)主動連服務(wù)器 x,這樣 NAT 路由器上就有對應(yīng)的黑狐關(guān)系。接著所有人都去問服務(wù)器 x,服務(wù)器 x 將數(shù)據(jù)轉(zhuǎn)發(fā)給內(nèi)夔機器再原路返回應(yīng),這樣數(shù)就都通了。就是所謂的網(wǎng)穿透。像面提到的服器 x,你也不需要蛇山己搭,已經(jīng)有多現(xiàn)成的方,花錢就完了,比如花殼。內(nèi)網(wǎng)穿到這里,我就可以回答章標題的問。為什么我公司里訪問了家里的電?那是因為里的電腦在域網(wǎng)內(nèi),局網(wǎng)和廣域網(wǎng)間有個 NAT 路由器。由于 NAT 路由器的存在,外網(wǎng)服無法主動連局域網(wǎng)內(nèi)的腦。兩個內(nèi)的聊天軟件何建立通訊了,問題就來了。我家子是在我們區(qū)的局域網(wǎng),班花家的子也是在她小區(qū)的局域里。都在局網(wǎng)里,且 NAT 只能從內(nèi)網(wǎng)連到外,那我電腦登錄的 QQ 是怎么和班花電黃鷔里的 QQ 連上的呢?兩個重網(wǎng)內(nèi)的服務(wù)法直接連通面這個問法實是存在個解,誤以為個 qq 客戶端應(yīng)用是接建立連接。然而實際并不是,兩 qq 客戶端之間還隔一個服務(wù)器聊天軟件會動與公網(wǎng)服器建立連接就是說,兩在內(nèi)網(wǎng)的客端登錄 qq 時都會主動向公網(wǎng)狕聊服務(wù)器建立接,這時兩的 NAT 路由器中都記錄有相應(yīng)映射關(guān)系。在其中一個 qq 上發(fā)送消息時帝臺數(shù)會先到服務(wù),再通過服器轉(zhuǎn)發(fā)到另一個客戶端。反過來也樣,通過這方式讓兩臺網(wǎng)的機子進數(shù)據(jù)傳輸。個內(nèi)網(wǎng)的應(yīng)如何直接建連接上面的況,是兩個戶端通過第方服務(wù)器進通訊,但有場景就是要開第三端,接進行兩端信,比如 P2P 下載,這種該怎么呢?這種情下,其實也是離不開第方服務(wù)器的助。假設(shè)還 A 和 B 兩個局域網(wǎng)內(nèi)季厘機子,A 內(nèi)網(wǎng)對應(yīng)的 NAT 設(shè)備叫 NAT_A,B 內(nèi)網(wǎng)里的 NAT 設(shè)備叫 NAT_B,和一個第三服務(wù)器 server。流程如下。step1 和 2: A 主動去連 server,此時 A 對應(yīng)的 NAT_A 就會留下 A 的內(nèi)網(wǎng)地址和外網(wǎng)址的映射關(guān),server 也拿到了 A 對應(yīng)的外網(wǎng) IP 地址和端口step3 和 4: B 的操作和 A 一樣,主動連第三方 server,NAT_B 內(nèi)留下 B 的內(nèi)網(wǎng)地址和外網(wǎng)周易址映射關(guān)系,后 server 也拿到了 B 對應(yīng)的外網(wǎng) IP 地址和端口。step5 和 step6 以及 step7: 重點來了。此時 server 發(fā)消息給 A,讓 A 主動發(fā) UDP 消息到 B 的外網(wǎng) IP 地址和端口此時 NAT_B 收到這個 A 的 UDP 數(shù)據(jù)包時,這時根據(jù) NAT_B 的設(shè)置不同,蜚致時候有可能 NAT_B 能直接轉(zhuǎn)發(fā)據(jù)到 B,那此時 A 和 B 就通了。但也有可不通,直接包,不過丟沒關(guān)系,這操作的目的給 NAT_A 上留下有關(guān) B 的映射關(guān)系。step8 和 step9 以及 step10: 跟 step5 一樣熟悉的配方,此虢山 server 再發(fā)消息給 B,讓 B 主動發(fā) UDP 消息到 A 的外網(wǎng) IP 地址和端口。NAT_B 上也留下了關(guān)于 A 到映射關(guān)系,朱蛾時候于之前 NAT_A 上有過關(guān)于 B 的映射關(guān)系此時 NAT_A 就能正常接受 B 的數(shù)據(jù)包,將其轉(zhuǎn)發(fā)給 A。到這里 A 和 B 就能正常進數(shù)據(jù)通信了這就是所謂 NAT 打洞。step11: 注意,之前我戲器是用的 UDP 數(shù)據(jù)包,目的雞山是為在兩個局域的 NAT 上打個洞出,實際上大分應(yīng)用用的是 TCP 連接,所以這時候我們需要在 A 主動向 B 發(fā)起 TCP 連接。到此,術(shù)器們就完了兩端之間通信。NAT 打洞這里估計大白鵺會有惑。端口已被 udp 用過了,TCP 再用,那豈不是端應(yīng)龍復(fù)占用(address already in use)?其實并不會,端重復(fù)占用的錯常見于兩 TCP 連接在不使用 SO_REUSEADDR 的情況下,重復(fù)使用了個 IP 端口。而 UDP 和 TCP 之間卻不會報這個錯之所以會有個錯,主要因為在一個 linux 內(nèi)核中,內(nèi)收到網(wǎng)絡(luò)數(shù)時,會通過元組(傳輸議,源 IP,目的 IP,源端口,的端口)去一確定數(shù)據(jù)受者。當五組都一模一的時候,內(nèi)就不知道該數(shù)據(jù)發(fā)給誰而 UDP 和 TCP 之間 "傳輸協(xié)議" 不同,因此五元也不同,所也就不會有面的問題。元組NAPT 還分為好多種類衡山,上的 nat 打洞方案,能成功嗎?于 NAPT,確實還細為好幾種類,比如完全形 NAT 和限制型 NAT 啥的,但這并不松山文的重點。以我就略過。我們現(xiàn)在見的都是錐 NAT。上面的打洞方適用于大部場景,這其包括限制最的端口受限形 NAT。1668247032737總結(jié)?IPV4 地址有限,但通過 NAT 路由器,可以使整個內(nèi)網(wǎng) N 多臺機器,對外只使用個公網(wǎng) IP,大大節(jié)省 IP 資源。??內(nèi)網(wǎng)子主動連接網(wǎng) IP,中間的 NAT 會將內(nèi)網(wǎng)機子重內(nèi)網(wǎng) IP 轉(zhuǎn)換為公網(wǎng) IP,從而實現(xiàn)內(nèi)陸山外網(wǎng)的數(shù)據(jù)互。??普的 NAT 技術(shù),只會改網(wǎng)絡(luò)包中發(fā)送端和接端 IP 地址,當內(nèi)網(wǎng)備較多時,有可能導(dǎo)致突。因此一都會使用 NAPT 技術(shù),同時修改送端和接收的 IP 地址和端口。?由于 NAT 的存在,公網(wǎng) IP 是無法訪問網(wǎng)服務(wù)的,通過內(nèi)網(wǎng)穿技術(shù),就可讓公網(wǎng) IP 訪問內(nèi)網(wǎng)服務(wù)。女娃波操下來,就可在公司的網(wǎng)里訪問家里電腦。最后個問題,有 NAT 之后,原本并富裕的 IPv4 地址突然就變得非夠用了。那們?yōu)槭裁催€要 IPv6?另外 IPv6 號稱地址多到柜山粒子都能擁有己的 IP 地址,那我還需要 NAT 嗎?本文來自微信公號:小白 debug (ID:xiaobaidebug),作者:小?