1、更新源
cd /etc/apt/
sudo cp sources.list sources.list.save?????????????? 將原鏡像備份
sudo vim sources.list ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 將原鏡像修改成阿里源/清華源,如所述
阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
清華源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
上述操作完畢后,保存退出,執行下列:
sudo apt-get update
2、wireshark使用 抓包工具
1、安裝
1) wireshark的官方下載網站:www.wireshark.org/
2) Linux sudo apt install wireshark
3) 啟動sudo wireshark
設置中文 Edit->Preferences->Appaerance->Language->Chinese
2、抓包
- wireshark是捕獲機器上的某一塊網卡的網絡包,當你的機器上有多塊網卡的時候,你需要選擇一個網卡。
- 雙擊需要的網卡,開始抓包
3. wireshark與對應的OSI七層模型
服務器和客戶端的代碼不能都運行在ubuntu,因為wireshark抓的是流經真實網卡的數據包。
若將服務器客戶端都運行在ubuntu,數據直接經過虛擬網卡通信,而不會經過真實網卡。
4、包頭分析
4.1?以太網頭
以太網中封裝了源mac地址以及目的mac地址,還有ip類型,以太網又稱之為mac頭
0X0800?只接收發往本機的mac的ip類型的數據幀?
0X0806?只接收發往本機的ARP類型的數據幀
0x8035?只接受發往本機的RARP類型的數據幀
0X0003??接收發往本機的MAC所有類型:ip,arp,rarp數據幀,接收從本機發出去的數據幀,
混雜模式打開的情況下,會接收到非發往本地的MAC數據幀
4.2 IP頭
IP頭中需要掌握用于拆包的部分:id flags fregment_offset
兩個IP地址:源IP與目的IP地址。
TTL:time to live, 指定數據幀可以最多經過幾個路由器。當數據幀被目標方接收后,TTL清除為0.
Linux TTL:64 Winodws:TTL 128
4.3 UDP頭
4.4 TCP頭
Seq:序列號,占4個字節,用于給數據段進行編號的。所有非應答包的數據段,都有seq。
Ack:應答號,用于應答非應答包(握手包,揮手包,數據包)。告訴對方下一次從這個seq編號發送數據包。
SYN? 握手包? ? 連接的時候產生的包
FIN? ? 揮手包? ? 斷開連接產生的包
PSG? ?數據包? ?傳輸數據的時候產生的包
ACK? ?應答包
PSH? ? ? ? ? ?ACK = Seq + len
SYN FIN? ? ACK = Seq + 1
5、TCP三次握手
三次握手的發起方,肯定是客戶端
SYN(同步序號,表示此報文是一個連接請求或者連接接收報文),
ACK(確認位,對接收到報文的確認)
FIN(表示發送方發送完數據,用來釋放一個連接)
第一次握手:客戶端向服務器端發送一個SYN J,表示客戶端向服務器端發送一個連接請求報文,該報文的初始序列號為J。客戶端進入SYN_SENT狀態,等待服務器端確認。
第二次握手:服務器端向客戶端響應一個SYN K, 表示服務器端向客戶端發送一個連接請求報文,該報文的初始序列號為K。并對SYN J進行確認ACK J+1,服務器端進入SYN_RCVD狀態。
第三次握手:客戶端再向服務器端發送一個確認ACK K+1。客戶端和服務器端進入ESTABLISHED狀態,完成三次握手,隨后客戶端和服務器端就可以開始傳送數據了。
6、TCP四次揮手
由于TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務后就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN后仍能發送數據。先進行關閉的一方將執行主動關閉,而另一方被動關閉。
A-----主動關閉方? ?B----被動關閉方
第一次揮手:A發送一個FIN包(FIN=1,seq = u)給B,進入FIN_WAIT_1狀態
第二次揮手:B接收到FIN包,給A發送一個ACK包(ACK=1,ack = u+1),并進入CLOSE_WAIT狀態。A接收到ACK包后,進入FIN_WAIT_2狀態。如果有數據沒有發送完成,則繼續發送,直到發送完成為止
第三次揮手:B發送一個FIN包(FIN=1,seq = w)進入LAST_ACK狀態
第四次揮手:A收到FIN包,回復一個ACK包(ACK=1,ack=w+1)。B收到A的ACK后關閉連接
7、UDP心跳
- 在UDP傳輸中,如何知道對端掉線
- 心跳包機制。規定每隔指定時間后發送一個心跳包給服務器,服務器回復心跳包應答。
- 如果期間服務器多次沒有收到心跳包,或者客戶端多次沒有收到應答,則代表對端掉線。