---
# System prepended metadata

title: CSE350期中筆記
tags: [NSYSU]

---

# CSE350期中筆記
###### tags: `NSYSU`
## Chapter1
1. Packet switching vs Circuit switching
2. Internet Delay & packet lost
3. Protocal stack & OSI model
4. Encapsulation
## Chapter2
1. Client & Server
	+ 伺服器端有固定的 IP 位址且永遠開啟並等候要求，通常單一伺服器無法容納所有用戶端的請求，所以一個資料中心 (Data Center) 有許多主機來建立一個虛擬伺服器。
2. P2P(Peer to Peer) architecture:
	+ 利用一對對間歇性連線主機 (Peer) 之間進行的直接通訊。
	+ Peer 不屬於服務提供者，所以不會透過專門的伺服器進行通訊。
	+ Self-scalability: Peer 之間會透過散佈檔案傳給其他 Peer 而增加系統的服務容量。
	+ Advantage: 通常不需要大量的伺服器基礎設施和伺服器頻寬。
	+ Challenge:
		+ 對 ISP 友善：P2P 會將視訊串流與檔案傳輸應用等上傳資料流從伺服器移向家用 ISP而帶給 ISP 壓力。	
		+ 安全性:因高度分散與開放的本質。	
		+ 誘因:仰賴使用者貢獻。
		+ 由於每個peer不一定會在線上，所以會有管理上的困難	
3. Transport service requirements: Common apps(舉例)
	+ data integrity
	+ security
	+ timing
	+ throughput
4. TCP VS UDP (PPT 2-15)
	+ TCP
		+ Properties:
			+ reliable data transfer
			+ flow control
			+ congestion control
			+ connection-oriented
		+ Defact: Don't provide
			+ timing guarantee
			+ minimum throughput guarantee
			+ security
	+ UDP
		+ Property:
			+ unreliable data transfer
		+ Defact: Don't provide
			+ reliability
			+ flow control
			+ congestion control
			+ timing, throughput guarantee
			+ security
			+ connection setup
5. HTTP is "stateless"
	+ server maintains no information about past client requests
	    + state壞處:程式會變得很複雜
6. HTTP non-persistent figure & persistent
	+ non-persistent HTTP
		+ at most one object sent over TCP connection
			+ connection then closed
		+ downloading multiple objects required multiple
			connections
		+ Round-Trip Time(RTT) def: time for a small 
			packet to travel from client to server and 
			back.
		+ Response time(downloading an object)
			+ one RTT to initiate TCP connection
			+ one RTT for HTTP request and first few bytes
				of HTTP response to return
			+ file transmission time
			+ Total: 2RTT + file transmission time
		+ Defact:
			+ 2 RTT/object
			+ OS overhead for each TCP connection 
	+ persistent HTTP
		+ multiple objects can be sent over single TCP
			connection between client, server.
		+ one RTT for all the referenced objects.
7. Proxy sever: soft state
	+ Proxy server(web cache)會保存最近被請求過的物件副本，
		如果使用者請求的物件沒有在proxy server裡的話，proxy
		server會向原本的server請求物件
	+ soft state: 保存最近被請求過的物件副本，過一段時間就要
		重新跟原本server請求物件
		
8. Pull & Push
	+ Pull: Client主動向Server發出request(如:HTTP)
	+ Push: Server主動向Client傳輸資料(如:SMTP)
9. DNS records
	+ RR format:(name, value, type, ttl)
	+ type A
		+ name = hostname
		+ value = IP address
	+ type NS
		+ name = domain
		+ value = hostname of authoritative name server 
			for this domain.
	+ type CNAME
		+ name = alias name for some canonical(the real)
			name
		+ value = canonical name
	+ type MX
		+ value = name of mailserver associated with name
## Chapter3
1. Multiplexing & Demultiplexing(PPT 3-11)
	+ Multiplexing at sender
		+ Handle data from multiple sockets, add transport
			header.
	+ Demultiplexing at receiver
		+ Use header info to deliver received segments to 
			correct socket.
	+ How works
		+ Host receives IP datagrams and uses IP addresses 
			& port numbers to direct segment to appropriate
			socket.
![](https://i.imgur.com/EwRvfCB.png)
2. Checksum: 1's complement
	+ Treat segment contents, including header fields, as 
		sequence of 16-bit integers.
![](https://i.imgur.com/f5xvSN9.png)	
3. Reliable Data Transfer(RDT)
![](https://i.imgur.com/oiaQVXU.png)
	
	+ RDT1.0: reliable transfer over a reliable channel
		+ underlying channel perfectly reliable
			+ no bit errors
			+ no loss of packets
	![](https://i.imgur.com/CVK33iT.png)
	+ RDT2.0: channel with bit errors
		+ underlying channel may flip bits in packet, but won't loss packets
			+ checksum to detect bit errors
		+ Recover from errors
			+ ACKs
			+ NAKs
		+ New features
			+ error detection
			+ receiver feedback
		![](https://i.imgur.com/am8G6Ph.png)
	+ RDT2.1:
		+ sender
			+ sender retransmits current pkt if ACK/NAK corrupted
			+ sender adds sequence number to each pkt
		![](https://i.imgur.com/f1u7wOM.png)
		+ receiver
			+ receiver discards (doesn’t deliver up) duplicate pkt
		![](https://i.imgur.com/EFp17nG.png)
	+ RDT2.2: A NAK-free protocol
		+ using ACKs only
		+ receiver sends ACK for last pkt received OK
			+ receiver must explicitly include seq # of pkt being ACKed 
		+ duplicate ACK at sender results in same action as NAK: retransmit current pkt 
	+ RDT3.0:
		+ Reason
			+ underlying channel can also lose packets.
		+ Approach
			+ sender waits reasonable amount of time of ACK
				+ retransmits if no ACK received in this 
					time
				+ if packet (or ACK) just delayed:
					+ retransmission will be duplicate, but
						seq #'s already handles this.
					+ receiver must specify seq# of pkt 
						being ACKed.
				+ requires countdown timer
		+ Sender
		![](https://i.imgur.com/Oef9Oex.png)
		
4. (PPT 3-45) 為何$U_{sender} = \frac{3L/R}{RTT + L/R}$中$RTT$不用乘3
![](https://i.imgur.com/AgwtR8Q.png)
ANS: $lim_{n\to\infty} \frac{n(3L/R)}{n(RTT+L/R)+2L/R} = \frac{3L/R}{RTT+L/R}$
5. Go-Back-N
	+ sender
		+ ACK(n):ACKs all pkts up to, including seq#n -> 
			cumulative ACK
			+ may receive duplicate ACKs(see receiver)
		+ timer for oldest in-flight pkt
		+ timeout(n): retransmit packet n and all higher 
			seq# pkts in window
		![](https://i.imgur.com/iRTuOwJ.png)
	+ receiver
		+ always send ACK for correctly-received pkt with
			highest in-order seq#
			+ may generate duplicate ACKs
			+ need only remember expectedseqnum
		+ out-of-order pkt
			+ discard(don't buffer)
			+ re-ACK pkt with highest in-order seq#
	![](https://i.imgur.com/Scu14BD.png)

6. (PPT 3-52 下圖有錯)
![](https://i.imgur.com/9VarLQZ.png)
圖中紅框部分: 上圖尚未送出封包下圖卻已經ACK
7. selective repeat sender & receiver
	+ sender
		+ case1: 收到上層的資料
			+ 當收到上層的資料，sender檢查下一個可以傳的封包序號，
				如果序號在窗格裡則把資料封裝成封包並送出。
			+ 如果序號沒有在窗格裡則存入緩衝區或者退回上層，稍後再傳。
		+ case2: Timeout
			+ 每個傳出去的封包都會有一個計時器
			+ 如果該封包的計時器超過一定時間，則重傳該封包並重新開始
				計時器
		+ case3: 收到ACK(n)
			+ 收到序號n的ACK則把序號n的封包標記為已收到
			+ 如果序號n在窗格內且序號等於send_base則將
				send_base設為序號最小的未確認封包上。
	+ receiver
		+ case1: 接收到的封包序號位於\[rcv_base, rcv_base+N-1\]
			+ 回傳該封包的ACK給sender
			+ 若該封包之前沒收到過則存入緩衝區
			+ 若該封包的序號等於rcv_base，則之前存入緩衝區的封包
				都往上層傳(與rcv_base連續的封包)
		+ case2: 接收到的封包序號位於\[rcv_base-N, rcv_base-1\]
			+ 回傳該封包的ACK給sender且不存入緩衝區
		+ Default: 不做任何事
8. TCP sender & receiver
	+ sender
		+ events
			+ data rcvd from app
				+ create segment with seq#
				+ seq# is byte-stream number of first data
					byte in segment
				+ start timer if not already running
			+ timeout
				+ retransmit segment that caused timeout
				+ restart timer
			+ ack rcvd
				+ if ack acknowledges previously unacked 
					segments 
					+ update what is known to be ACKed
					+ start timer if there are still unacked
						segments
					
9. TCP Ack generation

| event    |  TCP receiver action|
| -------- | -------- |
| 按預期seq編號到達，所有預期編號之前的區段皆已ACK    | 等待下一區段到達再ACK，至多等待500ms    |
| 按預期seq編號到達，有區段尚未ACK | 立刻送出一筆ACK，一次確認兩筆區段 |
| 比預期seq編號大的區段到達，出現Gap | 立刻送出duplicate ACK，指出預期seq編號 |
| 抵達區段可填補Gap | 立刻送出ACK，指出Gap底部 |

10. TCP fast retransmit:網路不算差時可以快速重傳
    + 逾時重送的機制，等待timeout會拖延重送遺失封包
    + 利用"Duplicate ACK"來偵測封包的遺失
        + sender通常一次送出大量區段，當區段遺失時便會收到許多相同的duplicate ACK
        + 當sender收到3個以上相同data的ACK，就會認為區段已遺失，不需等待timeout即重送

11. TCP 3-way handshake
![](https://i.imgur.com/Qg6450R.png)
    
12. TCP slow-start 變化圖
![](https://i.imgur.com/rAq6qdp.png)

13. TCP Congestion control FSM diagram
![](https://i.imgur.com/rBGbGGv.png)

14. TCP 不公平的原因
	+ 假設只有TCP連線會通過瓶頸連結且所有連線都有相同的RTT
	+ 每對主機與目的端之間都只存在單筆TCP連線
	+ RTT較短會有更高的產出率
15. TCP close connection
![](https://i.imgur.com/ze2wtYp.png)
