資安筆記 - TCP / IP / UDP

資安筆記 - TCP / IP / UDP

白龍 Lv3

認識IP是甚麼

互聯網 Internetworking

雖然這個名詞很熟習,但是在生活中自由自在的我並沒有了解「網路」真正的涵義,所以就從這點基礎上開始解釋吧

網路「互聯」(Internetworking) 可以很簡單的知道就是兩個東西連在一起,要注意這個更一般生活中認識的 Internet 是不同的東西。

Internetworking是說把不同的網路連線到一起的過程,例如把日本和台灣的網路連在一起就是networking

在聯線的過程中也有許多不同的連線方式,例如

  • IPV4
  • IPV6
  • IPX
  • NVP

等,更多

互聯網路 Internet

而網路(Internet)指的就是經由Internetworking後許多網路連線起來的結果,就像是把美國、中國、日本、香港、歐洲…,所有國家聯線起來的網路,而你使用這個網路就是Internet

並且在使用Internet時只會通過一個大家認可標準的系統,就是大家熟知到的TCP / IP協定,所有你上網的協定都是透過這個協定

www (World Wide Weeb)

這是一個非常有趣的東西,很常看到但是卻不知道是甚麼,其實這就只是定義這是一個全球都可以訪問的網站而已,不會限於地區限制

IP 地址的介紹

甚麼是IP (Internet Protocal)

  • IP是 OSI Layer3 的協定

這是使用網路必要的協定之一,不過要特別注意IP並不是IP地址,這兩個詞性本生就不一樣,IP指的是網路協定,而IP地址指的是你在網路中的地址,是一個可以讓你在網路中可以互相訪問對方的資訊

現代網際網路的最基礎

我們目前熟悉的網路只功能應用在許多設備上,最主要的功能是host to host資料傳送,傳送過程中可能經過許多個路由器、交換機等網路設備,但是只要你有你自己的IP地址就不會有問題,常使用的傳輸模式有

  • TCP
  • UDP
  • PING

而每個傳輸模式都會有自己的功能特色,像是問題偵測、即時性、可靠性…

IP的特定

無連接性

只要你想要傳送訊息,你的設備不需要有功,不需要知道對方在不再,不需要計算傳送路近,你要做的就是傳送訊息就好,網路系統會自己幫你處理

如果是一班使用手機上傳,IP的傳送流程有像是A到B,B到C,C到D,是許多節點傳送的

不可靠傳送

因為剛剛說了,你不需要知道對方在不再,所以如果你發送的地址是一個沒有人的地址,那就會傳送失敗,使用IP傳送還有可能有以下風險

  • 封包遺失
  • 封包容易被延遲傳送
  • 封包可能為會重複

需要有識別方法

就像是假設你要寄信給某某人,你不能寫名字就寄信,因為有很多以重複名字的人,而寄信公司不知道你要寄給誰

這就像是網路的世界,你需要寫的門牌地址,一個不會重複的數字,這樣在網路的世界中才能成功傳送給你想要的人

特性

  • IP 位置 ( IP Address ) 全球唯一,不可重復
  • 不可亂設定,需要被分配
  • 隨時可以加入、退出
  • 一台節點、一個服務、一整個網路…
  • 可以將許多異質網路互相連接起來
    • 乙太網路、無線網路、光纖網路、衛星網路…

IP小歷史

  • 研究如何讓不同的網路互相連接 | 美國國防部高等研究計劃署 ( ARPA ) 資助

  • 1973 年,由 文頓·瑟夫( Vint Cerf )、羅伯特·艾略特·卡恩 ( Robert Elliot Kahn ) 提出概念

  • 1974 年,首次發表 TCP/IP ( Internet Protocol v1 ) 論文

  • 1980 年, IP 被拆分為 IP ( RFC 761 ) 與 TCP ( RFC 760 ) 兩個協定

  • 1981 年,成為 IETF 標準:IPv4 ( 第四修訂版, RFC 791 )

  • 1983 年,ARPANET 拋棄 NCP 採用 IP

  • 1994 年,IPv4 加強版 ( RFC 1819 ) 被稱為 IPv5,實驗性質無普及

  • 1995 年,網路普及發現 IP 數量不足發明 -> IPv6 ( 1996 RFC 1883[不使用], 1998 RFC 2460 )

  • IPX 的歷史

    • Novell 於 1982 年提出
      最初運作於自家作業系統:Novell NetWare

    • 基於 ARPANET 的 NCP 所開發 ( 都是 OSI Layer 3 的協定 )
      1986 年成為 IEEE 802.2 標準

    • 1980 ~ 1990 輝煌時期

      • 易於管理,適合小型和中型網路 ( 區域網路 )
      • 多種作業系統內建:
        Microsoft Windows ( ~ ME ) / Windows NT、IBM OS/2、
        UnixWare、HP-UX、IBM AIX、NetBSD、FreeBSD、OpenBSD、
        Apple Macintosh 、Linux…
    • 1990年後

      • 更好的效能、擴展,尤其於大型的網路 ( 網際網路 )
      • 擁有 IPX 的優點,甚至更優 → 地址數量更大 ( IP Address:32 bit )
      • 提供多樣化的服務
        FTP、HTTP、SMTP、DNS、Telnet、SNMP…

特性

他沒有連接的協定,因此也不需要先建立連線

  • IPX 地址為 16bit (2^127)

IP的結構

IPV4 struc

  • Version
    就是表示這個IP是 IPV4 還是 IPV6,或著是其他的版本
    不過可以注意的是這兩個IP只有Version結構是一樣的,整體封包的結構是不一樣的
  • IHL header 長度
    就是從第一欄到五欄的長度
  • DS 優先權功能與設定
    再傳送資料時網路系統會比較這個封包的重要性,例如文字和語音的優先就不同
  • Total Length 你的資料小
    整理封包的大小
  • Identificaion & Flag & Fragment Offset
    網路編號,只有在使用後面兩個欄位時會用到,主要是在封包過大時會需要切分成兩個封包較不同的IP傳送這個封包
    在中間也會標示這個資料是這個封包的哪一部分,最後拼接時才會組出對的資料
    # 這個功能最好不希望被用到,因為最後新組裝時很麻煩
  • Time to Live (TTL)
    最早:表示這個封包在網路上會存放多久,超過那個時間就會被刪除
    現代:表示這個封包在網路上可以經過多少的路由器,防止封包風暴存在網路中
  • Protocal
    指的是這個資料的編號,可以表示這個封包中的編號資訊
  • Header Checksum
    可以計算自己的資料是不是正確的,但並不代表是data的checksum,只負責計算Header中的內容是否為正確的
  • 傳送方 IP地址
  • 接收方 IP地址
  • Option
    用於IP中的而外擴充,就是當你的封包中有其他特殊的事件要給接收方標註時,就會把東西放這
  • Padding
    就是要讓封包資料量滿足可以傳送的而度

不同的TTL設定

在伺服器中會比較高,因為要保證資料可以傳送到用戶中,但是對於用戶就不會設定高

分割控制

這就是剛剛講到的Flags和Fragment Offeset,不過這個系統幾乎不會被使用到,通常只會在路由器中發生

  • Flage 切分控制 (3bit)

    1. 是否有分割
    2. DF 是否要切分 (1 = 不切 | 0 = 都可以)
    3. MF 標示有切分的封包唯1,最後一個為0
  • Fragment Offset 分片偏移
    指的是每個分片的位置,也就是這個資料被切分後的順序

如果缺呢

就直接丟掉,這就使用切片的問題之一,有可能因為你的網路不穩定,導致你的封包其中一分片遺失,整個封包就會被丟棄

前身

  • IP : TOS / DS

因為不重要所以就偷懶吧
tos/ds

IP地址的來源

大家都說我有IP地址,但是這些地址到底是喇邊來誰分發的呢

IP是由 ICANN (Internet Corporation for Assigned Names and Numbers)機構所管理的,這個而真正管理IP的是IANA( Internet Assigned Numbers Authority ),而這個部門又授權以下午間公司可以發放IP

授權單位統稱為 RIRs

  • 歐洲 IP 網路資源協調中心 ( RIPE NCC, RIPE Network Coordination Centre, 1992 )
  • 亞太網路資訊中心 ( APNIC, Asia-Pacific Network Information Centre, 1993 )
  • 美洲網際網路號碼註冊管理機構 ( ARIN, American Registry for Internet Numbers, 1997 )
  • 拉丁美洲及加勒比網際網路地址註冊機構 ( LACNIC, Latin American and Caribbean Internet Address Registry, 1999 )
  • 非洲網路資訊中心 ( AfriNIC, African Network Information Centre, 2004 )

後來又成立了號碼資源組織 RIR( NRO, Number Resource Organization, 2003 ),由 RIRs 組成的一個 RIR 間的協調單位、執行共識、參與全球網路治理討論

所以說到底真正分發IP的是RIRs,所以每當你辦一條中華電信的網路時,就會分發一個外網IP給你,這個IP是可以方問全球的IP,也可以是全球訪問你的IP

但是以現在因為IPV4位置不夠了,所以個人網路只能申請一個個人網路,不過還是看提供商啦

IP格式

目前主流有兩種格是,就v4和v6的格式

  • V4 (4byte) xxx.xxx.xxx.xxx (數字)
  • V6 (16byte) xxx:xxx::xxx:xxx (數字加字母)

除了最常使用的10進位寫法,還是有其他表示方式如下

  • 2 進制:0110 1000 . 0001 0010 . 0000 1110 . 0110 0101
  • 16 進制:68 12 0E 65
  • 10 進制:104.18.14.101

IP分類

最常見的就是 <IP> + <HostID>

但是細節還是有許多不同的分類,類如Class a, Class b, Class c,這些不同的就是第一個數字占用的數字例如

  • A : 0xxxx.xxxx.xxxx.xxx
  • B : 10xxxx.xxxxxx.xxxxx.xxx
  • C : 110xxxx.xxxx.xxxx.xxxx

好的點不清楚,先說這些是用二進位的方式表示,不過更簡單的看法就是1.0.0.0開始就是A、128.0.0.0開始就是B、192.0.0.0開始就是C,以下就是更請處的圖表

  • A : 神話

    • 網段範圍:1.0.0.0 - 127.255.255.255
    • 網段數量:2^7=128
    • 主機數量:2^24=16,777,216
  • B : 稀有

    • 網段範圍: 128.0.0.0 - 191.255.255.255
    • 網段數量:2^14=16,384
    • 主機數量:2^16=65,535
  • C : 一般

    • 網段範圍: 192.0.0.0 - 223.255.255255
    • 網段數量:2^21=2,097,152
    • 主機數量:2^8=256

那個分類就是表示這個IP的稀有度,可看到網段數量就是代表這個IP的數量,例如神話就是只有128個IP可以使用在全世界中,目前我知道的只有1.1.1.1是cloudflare的vpn

如何看其他人IP

在CMD中輸入nslookup <IP/Domain>,就可以顯示這個網域或IP的相關資訊

IP位置的種類

IP類別組

公有IP

  • 用於公共網路
  • IP為ISP所分配,能夠時與公共網路連線

私有IP (正式名稱:專用網路)

  • 使用於內部的網路
  • 也會有3個網段(ABC)
  • 通常由內部的DHCP分配網路,並且步行直接與公共網路溝通,也被稱為區域網路

保留IP位置

保留IP為 RFC 1918 的補充說明敘述應該如何使用 ( 目的 ),並定義新的保留 IP 位址 ( 各有 RFC 繼續補充 )

  • 0.0.0.0/8:用於傳送到本機 ( 目的無效、未知、不可用 )
  • 127.0.0.0/8:回環地址、迴路地址 ( Loopback Address,中國用詞:回送位址 ) ( 本機連用 )
  • 169.254.xx.xx/16:鏈路本地位址 ( Link-local Address )
    微軟 ( 帝國影響力 ) 自建的 “自動專用IP定址 ( APIPA )” 成標準
    Client 端無法取得 DHCP 時的臨時網段
  • 192.0.2.0/24:網路測試用途
  • 224.0.0.0/4:多播 ( 群播、組播 ) 用途
    不能分配給使用者使用 ( 亦不能當作公有 IP 發送 )

IP分類

要注意喔,這個跟MAC地址的廣播是不同的東西,兩者是獨立分開的資訊

  • 單播 ( Unicast )
    一對一的通訊方式,最常使用的方式 (就是Host to Host)
    把封包送給特定的設備
  • 多播 ( Multicast, 群播,中國用詞:組播 )
    一對多的通訊方式
    把封包送到多播位址,所有多播內的設備都可以接收到
  • 廣播 ( Broadcast )
    一對所有的通訊方式
    把封包送到廣播位址 ( Host ID 全為 1 ),
    所有網路中的設備都會收到

特殊的Class

  • D : 未知

    • 網段範圍 : 224.0.0.0 – 239.255.255.255
    • 沒有網段和主機數量,因為這不是公共IP
  • E : 未知

    • 網段範圍 : 240.0.0.0 - 255.255.255.255
    • 沒有網段和主機數量,因為這不是公共IP

以上兩個Class的特色就是沒有網段和主機,因此沒有人可以拿到個IP地址

封包如何傳輸

傳輸過程

以一圖表示,當主機A想要傳送資料到B時可能會遇到的困難

# 顏色越深代表路由器網路品質月好

圖

第一個橘色很順利,因為網路很順利,路近也都正確

  • R6 -> R1 -> R4 -> R7 -> 到達主機

但是到第二個時,傳輸的路徑判斷錯誤,他的傳輸路近為

  • R6 -> R2 -> R3 -> R4 -> R7 -> 到達主機
    # 路徑較長,延遲較高

最後一個封包太多資訊了,並且路徑又選錯了,他的路徑為

  • R6 -> R2

    • R3 -> R4 -> R7 -> 到達主機
    • R3 -> R1 -> R4 -> R7 -> 到達主機
    • R3 -> R4 -> R7 -> 到達主機
  • 到達主機後把分片資料拼接起來

如何查看網路傳輸路近

在cmd中輸入tracert -d <追中IP>,終端機就會輸出你當前網路在傳送封包時經過的路徑,上限為30個,如果途中可能有多個封包就代表你的封包有經過切分處理

Ping 小工具

什麼事 Ping

懂一點電腦的人應該都是到 Ping 這個指令,就是用來檢查你的網路是否可用的小工具,但是它的功能其實還有更多

Ping 的發送形式

  • 格式使用 ICMP (使用IP封裝在data中)
  • 發送要求與問題的回送

Ping 的功能

  • 常見的詢問與要求
    Ping就是在網路一個可以訪問其他網路的工具,你可以要求對方回應(Type 8)或是要求時間戳記(Type 13)

  • 常見的問題與回送
    除了要求對方回應以外,你也可以用TTL參數調查在封包的傳送過程中哪個路由器有問題,傳送到哪個位置時封包丟失。除了上述所提到的問題外,也有以下的問題

其他封包丟失原因

  • 接收者回覆對方要求,Type 00, Code 0 ( Response )
  • 接收者回覆時間戳記,Type 14, Code 0 ( Timestamp Response )
  • 目的地主機無法抵達,Type 03, Code 1 ( Destination host unreachable )
  • 目的地協定無法抵達,Type 03, Code 3 ( Destination port unreachable )
  • TTL 逾時,停止傳送,Type 11, Code 0 ( TTL expired in transit )
  • 封包重新導向到主機,Type 05, Code 1 ( Redirect Datagram for the Host )

回傳資訊

會接收到的返回訊息有,延遲MS往返時間RRS存留時間 TTL

ICMP 表頭

ICMP header

  • checksum : 用來計算封包內容有沒有傳輸錯誤
  • Identifier : 識別碼 (不常用)
  • Sequence Number : 一個不知道的數字 (不常用)
  • data : 用來測試的傳輸資料

傳輸遇到的困難

Ping會遇到的傳輸問題

  • 不能保證 “成功傳送”,也確認不了
    封包可能遺失、中途損毀、因 TTL 被丟棄…
    目的地找不到、到不了、到了沒開機…

  • 資料的封包不一定照順序到 (封包的 Data)
    先送而後到:怎麼知道?
    重送沒關係:如何通知他收到了,或是別再送了!

  • 兩端點的傳輸速能協調
    需要讓推方知道你點個設備的傳輸速度,過快過慢都有可能導致封包流失

  • 電腦需要同時接收和下載
    需要分辨個封包是下載還是接收的封包

解決方案

把不可靠的 Layer 3網路架構 變可靠,要如何做到呢。這時TCP和UDP就出現了,以下為簡單的介紹

  • UDP : 不可靠 -> 不可靠
  • TCP : 不可靠 -> 可靠

那這樣為什麼還要保流不可靠的UDP呢?

TCP & UDP

UDP ( User Datagram Protocol )

一個IP只能提供主機到主機的傳輸,那我們要如何讓一個IP可以同時接收和發送,並且可以辨識不同的程序呢,在這之前我們要了解UDP是甚麼

UDP的本質

簡單來說就是一個「主機對主機」的封包傳送服務,用來分辨不同的封包原理是利用Port來區分,如果檢查封包在傳輸的過程中有沒有丟失可以使用Checksum來檢查傳送內容有沒有錯,在傳送個過程不需要預先建立連線,所以反應快沒有檢查機制

以下為列點整理

  • 兩個端點的 “程序到程序 ( Process to Process )” 的服務
    程序的運作,由作業系統負責
    程序的封包,UDP 來管理 : 將封包標示 Port 號來識別是哪個程序的
  • 內容的正確性
    錯誤偵測:使用 Checksum ( CRC16 )
  • 即時性
    無預先連接機制 ( 想傳就傳 )
    反應快,沒有過多檢查機制

UDP的表頭

在了解UDP前,先看一下他的封包結構吧

UDP header

  • Source Port : 來源位置
  • Destination Port : 發速位置
  • Length : 長度 (UDP大小)
  • CheckSum : 前面都講過了
  • Data : 資料本體

這邊其實我們就解決一件事情了,可以看到 Source 和 Destination Port,再想想你可能都有看過xxx.xxx.xxx.xxx:Port,這個port就是用來分辨一個IP中不同的接口,因此如果我們把接收和發送的port都設置成不同的,我們就可以讓電腦去分辨哪個port傳送的資料是接收,哪個是發送

適合使用場景

如果要速度快的東西要用甚麼傳輸呢,沒錯就是看影片,刷手機打電話或是打遊戲的延遲,這些需要速度快的網路都要使用UDP連線。所以簡單還說就是需要低延遲並且資料小即使資料損失也沒有關西的服務,還是看不懂就看這張圖吧

so gay

使用UDP的傳輸協定

  • DCHP
  • DNS
  • SNMP
  • NTP

我們可以看到其實要使用UDP的服務都有以下特點

  • 要求速度快,低延遲
  • 資料小,不多
  • 如果有細節損失也不重要

這些提到的特徵我們再去對應上訴所提到的服務使用網路,就可以發現其實這些服務使用網路的狀況都符合這些特徵,不過我這邊還是介紹一個在生活中很常使用但是有不常見到的服務 - DHCP

UDP - DHCP

在我們認知中需要使用網路通訊都會需要一個IP去上網,但是你要在哪裡拿到這個IP呢,雖然之前有說到都會自己分配一個IP到你家嗎,是沒錯,不過這裡講到的是手機或是浮動IP,那這些IP又是誰分配給你的呢,沒錯就是DHCP (Dynamic Host Configuration Protocol)

當電腦或手機拿到DHCP給你的IP就會自己去設定DHCP Server給你的IP,自動把IP Address、Netmask、Default Gateway ( Port )、DNS等這些都設定好,不過給你的這個IP並不是給你永久使用而是有一個限制時間的,但是不用擔心,因為你的手機或電腦會自動幫你續約伺服器。

如何查看自己有沒有使用DHCP

cmd中輸入ipconcfig /all,就可查看到DHCP伺服器的選項,就可以知道你目前的IP和剩餘的續約時間

另外一個方式是

  • 開啟設定 -> 網際網路存取 → "正在連線的網路"
  • 網際網路和網際網路設定 → 變更介面卡選項 → "使用的網路卡" 左鍵打開 → 詳細資料

目前以上都是在Client Side所提到的內容,但是對於管理者來說他可以設定當使用者的設備請求喔個IP時要發送哪組,哪一組不能使用等資訊


但是如果你需要傳輸一個你寫了2年的博士論文時,你一定不希望教授時看的是一個研究成果被刪掉的論文吧,這時候你就需要使用TCP(aka 無損傳輸)

TCP ( Transmission Contral Protocol )

沒錯,TCP就是一種不會讓檔案傳輸時會有資料不見的技術

TCP 的表頭

TCP header

前兩個我就不講了,因為偷相同

  • Sequence Number : 傳送順序檢查碼
  • Acknowledgment Number : 確認檢查碼
  • Header Lenght : 長度
  • Rederved : 保留位置
  • URG : 緊急資料 -> 會讓Urgent Pointer先執行
  • ACK : 回覆已收到完整訊息
  • PSH : 表示封包傳送完成的資料
  • RST : 斷線,不想服務某IP,拒絕服務
  • SYN : 同步,三方交握,交換檢查碼數字
  • FIN : 結束,三方交握完後結束傳輸
  • Window : 表示TCP的Buffer緩衝區大小 (預設65k),做流量控制表示記憶體還夠不夠接收資訊
  • Checksum :P
  • Urgent Pointer : 緊急指令?
  • Option : 自定期其他東西,包跨自緩衝區大小
  • Padding :
  • Data : 資訊本體

# 三方交握在後面,先讀完

要特別說明一下Sequence num和Acknowledgment num這兩個data,因為他們就是TCP運作的核心,這兩個數值就是在使用者與使用者傳輸時會一直確認自己的封包傳送到哪,如果兩個檢查碼的數字不符合就代表雙方的資料對不上,就會自動重新傳送直到確認對方收到的資料是正確的為止

三方交握

這邊就開始複雜了,我們剛剛有提一個專有名詞叫做「三次交握」,這個名詞就是指說使用TCP前都需要的建立連線,建立連線的過程使用的技術就是三次交握

廢話不多說,具體建立的過程就是這樣

我們首先把Sequence撿寫成SEQ,把Acknowledgment檢寫成ACK

  1. 在建立連線前你會發發送給服務方一個SEQ數字,這個數字是隨機的
  2. 當服務方接收到後就會回應 ACK(你的SEQ + 1),表示我收到了,同時也回應伺服器自己產生的SEQ給你

# 所以到這邊有兩個SEQ,一個是你發送的,一個是伺服器自己產生的
3. 接下來你收到伺服器回應你的兩個數值後,你會回傳 ACK(你一開始的SEQ + 1) 和 ACK(伺服器SEQ + 1)

以比較圖像的方式顯示就是這樣的..
TCP

四次交握

有開始就要有結束,四次交握就是在TCP把檔案傳輸完成時需要結束連線的程序,他的流程是這樣的

  1. 當你的裝置想要結束連線時會發送一個FIN-SEQ給服務商表示我要結束了
  2. 接下來伺服器會回傳一個 ACK(你的SEQ+1) 和 伺服器自己產生的SEQ

到這裡其實已經關閉了,但是對於伺服器來講還沒關閉,所以到這裡是半關閉狀態

  1. 現在換伺服器結束連線了,所以會發送一個全新的 SEQ 和 ACK(你的SEQ+1)
  2. 接下來你的裝置接收到伺服器的關閉訊號就會回傳 SEQ(一開始的SEQ+1) 和 ACK(伺服器的SEQ+1)

這邊以圖片顯示
TCP4

另外一種結束

但是假設你今天馬上結束服務就會有以下狀況發生,
因為你已經結束了,所以伺服器端只能傳送檔案給你,接著再發送結束的程序

開啟TCP連線後,其實跟UDP很相似,同樣也是使用Port來分辨傳送與接收的封包,比較不一樣的是在傳送時會使用Sequece number標示目前封包傳送到的位置,因此不需要更對方說我總共有多少個封包,或是每個封包代的資料數量

TCP 功能

一開始就依直強調TCP可以確認內容的正確性,這是因為他有重新發送的自動機制,具體運作的機制是這樣

  • 確認送達、內容無誤、順序正確…
    傳送端收到來自接收端的 “我收到了”(ACK) 通知封包
  • 一個等待時間內沒收到
    重傳 → 等待回應
  • 一連串重傳還是等不到
    斷線

Windows Size

剛有提到Window Size,這個地方就是控制我們緩衝區的大小。緩衝區就是去暫存接收傳送過來的資料,緩衝區越大對方就知道可以傳送更多資料過來,速度就會增快;反之如果你的緩衝很小那對方就會知道我不需要把流量放在你這邊,因為你緩衝一下就滿了。

因此我們可以知道其實主要控制流量大小的是使用者,有絕對的流量控制權……嗎

壅塞控制

這個詞對比現實的語言中這個意思就是,網路好慢,網路好卡,而在網路世界就是我重新發送封包的數量變多、封包資料掉的很多、對方回應我收到的時間格很久,這時候系統就會自動把分配給你的流量降低。所以上面的那個「嗎」,其實不完全是對的,有時候還是會看伺服器想要分配給你多少流量

那假設你的網路變好了,我們要如何解決這個問題呢,其實沒有解決方案,因為這是伺服器覺得你的速度變慢,不是你能控制。當然這只是你當前連線的伺服器,因此如果你今天去別的伺服器下載檔案,你的速度就是現在網路變好的速度

常見服務 HTTP

每次你瀏覽一個網站時使用的連線方式就是TCP - http/s連線,連線的過程是這樣子的

  • 找到 www.網站名稱.com 網址 → 查 DNS 取得 IP → 連線 網站 IP …

成功連上去後,HTTP服務才會開始把資料傳送到你的裝置中,包含CSS、HTML、JAVASCRIPT等所有檔案,不過HTTP傳送完成後就會直接斷線,不會再更新檔案,除非你有跟對方說我還要更多。但是我們為了優化這個過程就出現了HTTPS

如果使用加密連線 https

其實跟Http沒有多大的差別,就只是在傳輸檔案的過程中把你的data加密起來讓人家看不到
除了可以加密以外也支持不會斷線的連線,也就是說傳送完成檔案後不會讓連線掛掉,之後你想要在傳送檔案時對方server就可以及時的在更新你網站顯示的內容。此外也支持使用database,更方便儲存使用者資料等

加密連線所使用的Server port就是80 port,你使用的port是隨機的,但是超過1024

除了網站以外其實也可以用於下載檔案、上傳、影音串流等,比較特殊的用法是API其實也沒有很特殊啦,使用API在網路上使用量比一班瀏覽網站更多

常見服務 電子郵件

功能其實不必多介紹了,大家都使用過了,這邊只討論他的傳送協定標準

接收郵件與訊息的機制是

  • Server
    打開信箱郵件:TCP 110 Port ( POP3 ) → 995 Port ( POP3S ) …
    轉傳送郵件:TCP 25 Port ( SMTP ) → 465 Port ( SSMTP ) …
  • Client 使用 TCP Random Port ( 1024↑)
  • 現代的使用習慣:Web Mail
    前端:Web Server → 後端 Mail Server

以上這些資訊其實過過水就好,沒有這麼重要(其實就是我懶得寫)

常見的IP與IP地址問題

常見問題

其實最常見的問題都是DHCP問題,因為因為這個DHCP就是分配IP給你的伺服器,如果DHCP伺服器不理你或著是根本沒有開,那你就沒有IP,沒有IP就不能使用網路,以下是有可能出現的問題

  • 你的IP設定錯誤
  • DHCP沒有分配給你IP
  • DHCP的IP已經分配完畢
  • DHCP拒絕給你一個IP
  • DHCP伺服器根本沒開lol

還有一個有可能影響到網路問題就是Gateway和DNS,這兩個不多說,主要就是限制你不能上網

有網路但不能連線

情境是這樣的,你今天想要連線三個網站(a, b, c),你連線的到A和B但是卻連線不到C,那基本上可以確定是C伺服器問題,有可能是因為

  • 伺服器沒開機
  • 伺服器拒絕你的連線
  • 伺服器網路設定問題

假設今天還有內網伺服器D,你也連線不到,那有可能是因為

  • 伺服器沒開啟
  • 防火牆Port沒有開啟,把你擋掉
  • 防火牆禁止了Protocol的某個port
  • 你路由器問題,你沒有在他伺服器的內網中

有時正常有時異常 (超煩)

最先檢查就是察看實體主機的問題,但一下網路線有沒有鬆動或是過熱。如果這些都正常那可以去檢查網路的限流設定或是優先權設定,限制就是是限制你能使用多少的流量,假設你超過你就不能繼續使用,優先權則是網路流量優先分配給誰使用,通常是分配伺服器的上傳和下載流量