TCP/IP是一個公認的網路通訊協議,是OSI七層的簡化,五層分別為物理層、鏈結層、網路層、傳輸層和應用層,下面用簡短的話分別解釋這五層是做什麼的 物理層(Ph...
之前在網站中看到有人提出問題"如何知道資料是否有正常的走vpn?",我之前也有這樣的疑問,經過簡單的資料尋找,再參考gvpe的說明,有幾個方...
接下來進入比較有趣的實作環節,第一步就是要能收到所有封包,Python真的是個好東西,只要五行程式碼就能監聽所有從router流過去的封包,而且不需要任何第三方...
Wifi的協議裡的常見加密方式有WEP和WPA/WPA2,WEP在2003年發現安全性不夠,所以逐漸被淘汰,現在看到的router AP幾乎都是使用WPA/WP...
ARP又名地址解析協議,是連結第二層與第三層的橋樑,我們知道第二層利用MAC address去找尋封包傳遞的目標,而第三層以上則是利用IP address,我們...
剛深入解構第三層的原理,接下來可以聊聊第三層最常見的應用-ping,ping可以說是網路工程師最常用到的工具,沒有之一,ping是基於ICMP,也就是第三層IP...
traceroute也是第三層-IP層著名的應用之一,利用traceroute可以知道封包從你的電腦到另一端電腦走了什麼路徑,雖然每次走的路徑可能會不一樣,但是...
一開始可能有點無聊,但還是要說一下現代的計算機網路是如何組成的,如果具有這方面的基礎可以跳到Day04,知道大家不喜歡看太多字,理論的地方字盡量少一點。 電腦之...
我們的目標是用Python進行網路封包分析,為了能模擬「流過去」的環境,如果對環境建置不敢興趣可以跳過這一節,監聽的時候一律對本地發送封包也行,不過本地環境必須...
這裡一併解說第二層及第三層,第二層利用MAC地址去找尋封包的目的地位置,而第三層IP層主要為路由功能,利用IP地址將封包送達不同網段的IP,路由器和交換機會紀錄...
checksum是為了保證 header 或 data 不被破壞而發展出來的機制,IP層有IP層的checksum,TCP有TCP的checksum,計算方式都...
Python socket發送封包有很多種方式和API,例如send、sendto、sendall等等,如果你的socket是TCP的socket,那麼在接收到...
TCP header的封包較為複雜,且TCP有保證可靠傳輸的機制,所以花兩小節來講,第一小節先講理論,TCP是怎麼保證可靠傳輸、壅塞控制等等。 TCP是基於by...
我們知道作業系統有分kernel space和user space,user space要透過system call去呼叫kernel space進行I/O的操...
小弟碩士剛畢業,經歷了Leetcode、作業系統、計算機網路等輪番轟炸的面試,本想著這些也只有面試才會問,結果剛開始上班就接到了一個功能 - 要抓取網路上的封包...
上一回說了這三個函數_buildEthHeader()、 _buildIPHeader()、 _buildTCPHeader(tcp_len, seq, ack...
講了太多硬知識,來講個有趣的,也就是中間人攻擊(Man-in-the-Middle)的原理,中間人攻擊能讓同個局域網下的電腦在發送封包時經過你的電腦,再轉給路由...
上一節講了TCP的原理,這裡就是實驗證明的環節了!第一步,還是要寫程式去解析TCP的header同UDP,我們的packet前面已經解析了長度為14的第二層鏈接...
接下來是實驗的環節了,在server端先啟動ping server #> python ping.py 在client端發送ping ># pin...
第四層的目的是為數據傳輸提供可靠性、流量控制、壅塞控制、多路複用等服務,這一層之上的應用也有了port的概念,除了要指定ip address之外,還需要指定po...
在Day13和Day14介紹了TCP的封包結構,TCP是連接導向的協議,所以在建立連線前需要和對方確認和對方的通信收發是正常的,在斷開連接也需要和對方確認沒有額...
DNS是基於UDP的一項網路應用服务。它由一個将domain name和ip address相互映射的一個分散式資料庫,能够使人更方便地访问網際網路和http一...
走過最難的TCP,接下來是比較簡單的環節了,這兩天,我們來實作一個基於UDP的DNS server 還是一樣,我們要從第二層構建header,但是和前幾天的TC...
四向揮手顧名思義,就是要和TCP連線說byebye了,為什麼要說byebye呢?client需求結束直接斷開不就好了嗎?如果client直接斷開,不和serve...
HTTP是一个Client和Server之间request和response的标准,通常使用TCP协议,預設的port是80,常見於網頁、Restful API...
前面聊到四向揮手的過程,接下來是demo的部分,和三向交握一樣,需要nc指令在HostA啟動TCP的servernc -l 172.17.0.5 80 在Hos...
在Day11中我們介紹完ARP有說如何發起中間人攻擊,DNS spoofing就是成為中間人後的一種網路攻擊方法,DNS並沒有想ARP有個table會在本地電腦...
很快就來到最後一個實作了,自幹一個ping Server,分散式的應用越來越流行,同一個應用不再是靠共享記憶體,而是靠網路線串接各台機器,那分散式的基礎設施靠什...
接下來我們利用_buildEthHeader、_buildIPHeader和_buildUDPHeader來建構一個完整的DNS server首先,在監聽到pa...
昨天我們走到了這裡,成功地讓 ns 可以跟 host (root namespace) 溝通: 但我們發現,還是無法跟 host 以外的網路溝通,很出現的錯誤訊...