Layered Outline

What’s a protocol?

protocols define format, order of messages sent and received among network entities, and actions taken on message transmission, receipt

TCP/IP 5 Layer

Application Layer HTTP、DHCP、RPC、P2P、DNS
Transport Layer UDP、TCP
Network Layer (IP) IP、ICMP、OSPF、BGP
Data-link Layer (MAC) MAC、VLAN、STP
Physical Layer 網路挑線

ISO/OSI 7 Layer

 Presentation: allow applications to interpret meaning of data. example: encryption, compression, machine-specific conventions.  Session: synchronization, checkpointing, recovery of data exchange.

只要是在網絡上跑的包,都是完整的。可以有下層沒上層,絕對不可能有上層沒下層。 IP address: 一個網卡在網絡世界的通訊地址,相當於我們現實世界的門牌號碼。 MAC address: 身份證,區域網內通信用。

  1. Mac在data link layer使用,IP在network layer使用,IP位置在區域網內可能發生改變,唯一性的MAC需要。
  2. mac位置全球唯一,固化在網卡裡。OS識別出來的mac位置可以更改,他是一個string,我們常說修改的mac指的是修改電腦註冊表中的紀錄。

OpenFlow: Flow Table Entries

operates between controller, switch.

Application Layer

HTTP ( Hyper Text Transfer Protocol )

Uses TCP; stateless. non-persistent HTTP ➡ at most one object sent over TCP connection,connection then closed. persistent HTTP ➡ multiple objects can be sent over single TCP connection between client, server. HTTP response time = 2RTT (建立TCP連線、請求和接收物件)+ file transmission time

server希望能識別使用者身分提供不同的內容,因HTTP是stateless,所以HTTP使用cookies

結合cookie和user所提供的帳號資訊,website能獲得大量使用者的相關資料,有可能販賣這些資訊(安全疑慮)

Web cache = proxy server ( server for original requesting client、client to origin server )

  1. proxy servers reduce response time for client request.
  2. proxy servers reduce traffic on an institution’s access link.

Electronic Mail

SMTP ( Simple Mail Transfer Protocol )

between mail servers to send email messages.

  1. TCP /port 25
  2. use persistent connections.

DNS ( Domain Name System )

A distributed, hierarchical database. Translate host name to IP address. ( UDP port/53 )

root DNS server、 TLD DNS server ( .com/.org/.edu/.gov )、 authoritative DNS server /au.thor.i.ta.tive/ Local DNS name server: each ISP (residential ISP, company, university) has one = DNS caching

video streaming and content distribution networks (CDNs)

DHCP ( Dynamic Host Configuration Protocol )

主要是用來提供在TCP/ IP網路上的主機可以自動的分配到IP及所需要的相關設定。 DHCP可分成兩個部分來看,一個是DHCP伺服器端,另一個是DHCP用戶端。

DHCP server有一個集中式的管理程式,主要負責設定網路各主機上所需要的IP資訊,並 提供給Client索取使用。DHCP用戶端是負責向DHCP伺服器索取所需要之相關IP資訊,並將資料註冊到該系統中。

Sockets

Transport Layer

what transport service does an app need?

  1. data integrity
  2. timing
  3. throughput
  4. security

TCP

DEF ➡ reliable transport、flow control、connection-oriented doesn’t provide ➡ timing, minimum throughput guarantee, security

TCP的增強特性 Fast Retransmit & Recovery (FRR),當receiver發現丟包時,發送重複的ACK給對方,當sender收到3個重複的ack時,就確人此packet為loss,馬上進行重傳(不需等待time out)

  1. 為了在不可靠的網路介面上建立可靠的傳送資料服務,TCP必須解決可靠性,flow control的問題,而且必須能為上層的應用程式來提供多個埠口,用來同時為多個應用程式提供資料,同時,TCP必須解決連接的問題,這樣子的話,TCP才是個可靠的通訊協定,而最後也要克服通訊安全的問題。
  2. TCP連接是可靠的,而且保証了傳送區段的順序,保証順序的能力是用一個序號來達成的,區段內也包括一個序列號,表示接收方準備好這個序號的區段,在TCP協定傳送一個區段時,它會同時把這個區段放入重新發送的序列中,同時啟動計數器,如果收到了確認訊息,就會把重送的區段序列刪除,如果超過計數時間時,就會將這個區段重送。

Sliding Window: data flow control的技巧,它要求sender host在傳送一定量的data以後,必須接收對放的確認。 Window Size是由destination決定,而且會依網路流量調整並非一成不變(maybe congestion),The destination can send an acknowledgment at any time。

TCP socket identified by 4-tuple:

• source IP address • source port number • dest IP address • dest port number

Demux (由下到上傳到socket): receiver uses all four values to direct segment to appropriate socket. each socket identified by its own 4-tuple. (不同的source ip address or port number,就會轉交給兩份不同的socket)

TCP congestion control

flow control ➡ receiver 控制sender別送太多 (Receive Window)

cwnd (Congestion Window, bytes) ➡ 限制TCP sender資料送入網路的速率,為了避免congestion,值應該都< cwnd。

rate = cwnd (量) / RTT bytes/sec ssthresh = cwnd / 2

MSS: ( Maximum Segment Size ) ➡ MSS是TCP數據包次能夠傳輸的最大數據分段。建立連線之前雙方講好,因TCP為雙向連線,所以兩邊傳遞之最大值可以不一樣

爲了達到最佳的傳輸效能,TCP協議在建立連接的時候通常要協商雙方的MSS值,這個值TCP協議在實現的時候往往用MTU值代替(需要減去IP數據包包頭的大小20Bytes和TCP數據段的包頭20Bytes)所以一般MSS值1460,通訊雙方會根據雙方提供的MSS值得最小值确定爲這次連接的最大MSS值。


Slow Start ➡ initial.cwnd = 1MSS,每當receiver得到一次確認後就增加 1 MSS (各將cwnd+1,double cwnd), 此一過程造成每回RTT中傳送速率倍增,因此TCP的傳送速率從低速開始,接下來會以指數性地成長。

指數成長 cwnd = cwnd + 1 出2回2 出4回4 出8回8,傳的單位是per ack,每次回來幾個ack就+1幾次。

Success Event

  1. increase exponentially (new ack)
  2. Slow start to congestion avoidance, cwnd gets to 1/2 of its value before timeout (when cwnd >= ssthresh)

Loss Event ( timeout )

  1. cut cwnd = 1 MSS.
  2. ssthresh = cwnd / 2

Congestion Avoidance ➡ 線性成長 cwnd = cwnd+1 (cwnd = cwnd + MSS * (MSS / cwnd) )

cwnd全收完ack,整個cwnd才+1。

Fast Recovery ➡ sender重複收到3次相同ack時,可能是packet loss了,

當收到三個重複的ACKReno就會認爲丢包了,并認定網絡中發生了擁塞。Reno會把當前的ssthresh的值設置爲當前cwnd的一半,但是并不會回到slow start階段,而是将cwnd設置爲(更新後的)ssthresh+3MSS,之後cwnd呈線性增長。

TCP New Reno

NewReno是基於Reno的改進版本,主要是改進了Fast Recovery。

NewReno需要收到該窗口内所有數據包的确認後才會退出快速恢複狀态,從而更一步提高吞吐量。

TCP SACK

TCP SACK在TCP Reno基礎上增加了:

  1. 選擇确認(Selective Acknowledgements,SACK)
  2. 選擇重傳(Selective Retransmission)

SACK就是改變TCP的確認機制,最初的TCP隻確認當前已連續收到的數據,SACK則把亂序等信息會全部告訴對方,從而減少數據發送方重傳的盲目性。比如說序號1,2,3,5,7的數據收到了,那麼普通的ACK隻會確認序列號4,而SACK會把當前的5,7已經收到的信息在SACK選項裏面告知對端,從而提高性能,當使用SACK的時候,NewReno算法可以不使用,因爲SACK本身攜帶的信息就可以使得發送方有足夠的信息來知道需要重傳哪些包,而不需要重傳哪些包。

TCP ECN ( Explicit Congestion Notification )

ECN = 11 = router已遇到擁塞狀況 當router將 IP paecket的 ECN 欄位設定為 11 時,receiver就會接到路徑中congestion的通知。ECN 使用 TCP header向傳送端指出網路正遇到擁塞狀況,同時向接收端指出傳送端已經從接收端接到擁塞指標,並且降低傳輸速率。

receiver sets ECE bit on receiver-to-sender ACK segment to notify sender of congestion

TCP Vegas

Vegas將RTT的增加作為congestion network的信號,RTT增加(cwnd減小)、RTT減小(cwnd增加)。 Vegas 通過比較實際throughput和expect throughput來調節cwnd的大小。

期望吞吐量:Expected = cwnd / BaseRTT (RTT lowest)。 實際吞吐量:Actual = cwnd / RTT。 – Diff = ExpectedRate – ActualRate. – if Diff < a . increase CongestionWindow linearly. – else if Diff > b. decrease CongestionWindow linearly. – Else. leave CongestionWindow unchanged.

網絡中 Vegas 與其它算法共存的情況下,基於丟包的擁塞控制算法會嘗試填滿網絡中的緩沖區,導緻 Vegas 計算的 RTT 增大,進而降低擁塞窗口,使得傳輸速度越來越慢,因此 Vegas 未能在 Internet 上普遍採用。

AIMD: TCP sender收到ACK,成功cwnd + 1,失敗cwnd = cwnd / 2 (加性增,乘性減) Linear decrease in Vegas does not violate AIMD since it Happens before packets loss.

tcp vegas / reno: Fast Retransmit ➡ Fast Recovery

Randowm Early Detection (RED)

Router所採許的一種策略,透過queue平均長度來detect congestion (AvgLen),計算丢棄的概率來discard packet.

RED is good at keeping avg. queue size steady. Thresholds are hard to determine.

Sequence Number

TCP以向前參照確認來提供區段排序作業,每個資料在傳輸前都會先加以編號,到目的地工作站時,TCP會將這些區段重新組成完整的訊息。若資料中少了某個順序號碼,就會重傳該區段。區段傳出後,若在一段特定時間內沒有收到確認,也會要求重傳。

UDP (best effort)

DEF ➡ unreliable data transfer doesn’t provide ➡ reliability、flow control、congestion control、timing、 throughput guarantee、security、connection setup(handshaking)

Network Layer

Router examines header fields in all IP datagrams passing through it. Two key functions:

  1. forwarding ( data plane ): move packets from router’s input to appropriate router output. (怎麼轉送)
  2. routing ( control plane ): determine route taken by packets from source to destination. (路怎麼走)

Router Architecture

Longest prefix matching: when looking for forwarding table entry for given destination address, use longest address prefix that matches destination address.

Switching fabrics: transfer packet from input buffer to appropriate output buffer.

隊頭阻塞Head-of-line blocking或縮寫為HOL blocking): 它的原因是一列的第一個數據包(隊頭)受阻而導緻整列數據包受阻。例如它有可能在緩存式輸入的交換機中出現,有可能因為傳輸順序錯亂而出現,亦有可能在HTTP流水線中有多個請求的情況下出現。

IPv4

DEF ➡ 10.100.122.2被點分割為4個部分(Byte),每個Byte = 8個bit,所以ipv4為32 bit address。 由 0開頭 到 127結尾的IP 是 A Class 由 128開頭 到 191結尾的IP是 B Class 由 192開頭 到 223結尾的則為 C Class

Private Addresses

Net ID、Host ID與Mask

DEF ➡ 定義與切割網路用途,不同類型的IP會對應到有著不同的Net_ID。 A Class的IP / default mask : 前面1 byte數字 = Net ID,其餘三組 = Host ID / 255.0.0.0 B Class的IP / default mask: 前面2 byte數字 = Net ID,另兩組 = Host ID / 255.255.0.0 C Class的IP / default mask: 前面3 byte數字 = Net ID,剩下的一組 = Host / 255.255.255.0

Q: 132.21.0.0, find the class, the block, and the range of the addresses? A: The class is B. The block has a Net_ID of 132.21. The addresses range from 132.21.0.0 to 132.21.255.255.

Supernet (CIDR)與 Subnet

Supernet ➡ 利用 Subnet Mask 重新定義較短的Net ID,借用Net ID後面幾個bit。
Subnet ➡ 利用 Subnet Mask 重新定義較長的Net ID,借用Host ID前面幾個bit,後面當作子網路的host address。

**Host_Id之mask切法: 看要幾個sub-net(切幾個1出去),剩下0為該sub-net下可使用的ip address個數。 **右移 Net_Id之mask切法: 看要幾個class(切幾個0出去) 左移 205.16.37.24/29 : 8 addresses in the block. mask address: 255.255.255.X

destination AND mask = supe rnet/subnet address.

以network block跟network block之間為為單位進行分割。

Q: 201.70.64.0, need 6 subnets. Design the subnets A: 8 -3 = 5(host_id_0s) subnets共8個. The number of address in each subnet is 32 = 代表1個subnet中(總共8個),可容納32個不同的host ip address

Q: We need to make a supernetwork out of 16 class C blocks. What is the supernet mask? A: 11111111 11111111 11110000 00000000 ( net_id左移4 bit )。

Delivery and Routing of IP Packets

Routing IP Packets Policy: Direct delivery ➡ Host-specific ➡ Network-specific ➡ Default indirect delivery: destination is in another network. If not present, use direct delivery. Host-specific: the entry in the destination field is host-specific address. If not present, destination field is network-specific address.

next-hop為該host到題目指定router的前一個router input ip address (到題目指定router)。

IPv6

other changes from IPv4:

  1. checksum: removed entirely to reduce processing time at each hop
  2. options: allowed, but outside of header, indicated by “Next Header” field
  3. ICMPv6: new version of ICMP

IP Packet

IP packet = header(控制資訊) + payload(資料本身) IP Header(最短20、最常60): 長度為4 Bytes的倍數 IP Payload(最短8、最常65515)

HLEN = Header Length(佔4 bits),紀錄此IP header的長度,HLEN的計算是以4 Bytes為基本單位。例如:HLEN欄位值為0101,即代表IP header的長度為5 ×4 = 20 Bytes,最長可達15×4 = 60 Bytes

Identification (16 bits) ➡ 若packet在傳輸過程中因為MTU的限制,導致傳輸過程中,將packet切割成幾個Fragments進行傳送,而因為每個IP packet到達目的裝置的先後順序可能與出發時的順序不同,因此接收端在進行packet重組時,便必須以Identification進行判斷IP packet原來的順序,以便能將屬於相同資料packet的fragment組合在一起。

Total Length (16 bits) ➡ 記錄整個packet的長度,包含IP header及IP所帶資料內容的總和。

Protocol: which protocol to use.

Time To Live(存活時間)➡ 佔8 Bits,記錄IP封包的「存活時間」,以限制IP封包在路由器之間轉送的次數。當IP封包每經過一部路由器時,路由器便會將Time to Live欄位值減1,當路由器收到此欄位值為1的IP封包時,便直接將之丟棄,不再轉送。

Flag(封包切割旗標)➡ 佔3 Bits,主要對IP封包的切割提供控制訊息。 第1個bit: 未定義。 第2個bit: D 是否可以切割 第3個bit: M 0 = 最後fragmentation,1 = 尚有其他fragmentation。 If the M bit is 0, it means that there are no more fragments If the M bit is 1, it means that there is at least one more fragment

IP Packet切割與重組

router中必須有IP packet的切割與重組機制,即是將過長的packet加以切割,以便能在MTU較小的網路上傳輸。切割後的IP封包,會由目的裝置重組,恢復成原來IP封包的模樣。

IP 會將封包切割成多個較小的 (小於 MTU) fragment,使其能透過data-link傳輸 , 目的端接收完所有fragment後,再將fragment進行重組。

IP Fragmentation中IPv4 與 IPv6,其封包大小上限,分別為 65535 與 65575 Bytes。 遠遠超出了data-link的frame大小。

MTU ( Maximum Transmission Unit )

DEF ➡ data-link中的MTU規範了frame的大小上限。 乙太網路 (Ethernet) 中的MTU: 1500 個位元組。

ICMP ( Internet Control Message Protocol )

ping是基於ICMP完成的。它的目的就是讓我們能夠檢測網路的連線狀況,也能確保連線的準確性,不過由於僅是控制訊息的傳遞並無詳細的指導,所以一般而言來源端並不處理該訊息

ARP ( Address Resolution Protocol )

DEF ➡ 已知IP address,求MAC address的protocol,利用「吼」的方式。發送一個broadcast packet,誰是這個IP誰來回答。switch會記住發來請求的sender的mac address,而switch學習到的結果稱為forwarding table(有過期時間)。

Routing Protocol

RIP ( Routing Information Protocol )

  1. RIP version 2 supports CIDR.
  2. RIP uses the services of UDP on well-known port 520.

OSPF ( Open Shortest Path First )

由於OSPF路由協定的產生,是為了解決RIP路由協定的設備數量的問題,所以OSPF路由協定就沒有設備數量(Hop Count)的限制。會使用LSA的方式與其他路由器設備交換資訊,而不只是Routing Table的更新資訊而已。每一台路由器設備會自行計算屬於自己的「最佳網路路徑」,而這樣的資訊在各個路由器設備之間是不完全相同的。一個LSA封包中包含了介面的資訊、所使用的網路路徑評判標準(Metric)以及其他相關的資訊。當然,關於路徑的選擇,OSPF路由協定是採用最短路徑優先演算法(Shortest Path First Algorithm)。

每一台路由器設備會自行計算屬於自己的「最佳網路路徑」,而這樣的資訊在各個路由器設備之間是不完全相同的。

  1. In OSPF, all routers have the same link state database.
  2. OSPF packets are encapsulated in IP datagrams.

Autonomous System: 由一個單位管理,例如 ISP、超級大學校、大公司等等,什麼都大的組織。每個 AS 裡面的路由表都自己管,隻要事先宣告自己持有什麼網段就行了。

BGP ( Border Gateway Protocol )

routing among the ISPs ,BGP會自動決定各種狀態下的router,決定東西從哪邊走,該在哪邊停(外部網路下)。 維護router table來實現AS之間的可達性。

Simple Network Management Protocol (SNMP ) = 簡單網路管理協定一方面不僅可使用於網路設備之日常維運作業,亦可提供網路維運人員即時監控設備異常事件發生及因應處理。

其他

HUB(集線器)

DEF ➡ 完全在physical layer工作,它會將自己收到的每一個byte,都複製到其他port上去。 缺: 不管某個介面是否需要,所有的bit都會被發送出去,然後讓主機來判斷是不是需要。

digital subscriber line (DSL): network line and telephone line to central office DSLAM. cable network: 共享頻寬,需要分散式的多重存取協定,用來協調傳輸,避免碰撞。

大部分packet switch使用store-and-forward transmission (儲存轉送傳輸),router必須先接收到整個封包,才開始將第一個位元傳輸到外部連結。

Packet Switching vs Circuit Switching: 網際網路使用此,資源不會被保留(queueing delay loss)/資料會被預約保留 queueing delay: packet arrival rate to link (temporarily) exceeds output link capacity.