TCP/IP Review
之前在面試某個IT公司,被問了許多OS及網路的問題。
在我的記憶裡,已經還了一大部分給老師,當天表現得差強人意。
因此痛定思痛決心來整理及複習TCP/IP的相關資料。
I Review TCP/IP by watching the movie from youtube
https://www.youtube.com/watch?v=b9HafRqtVWc
Q: What is TCP/IP
A: TCP/IP is a set of data transfer protocols used by modern data networks.
TCP/IP provides a complete system for formatting, transmitting and receiving data on a network.
Tha protocols that make up TCP/IP define:
How data is transmitted across a network
How data should be formatted so other networked systems can understand it
Q: TCP/IP Applications
A: SMTP, IMAP, POP(email), HTTP(Web), SSH(Secure Access), NFS and FTP(file transfer)
Q: Tell me about decentralize Data Networking.
A:
- End node verification: the two endpoint of any data transfer are responsible for making sure it was successful -- no centralized control scheme
- Dynamica routing: End nodes can transfer data over multiple paths, and the network chooses the best(fastest, most reliable) path for each individual data transfer
Q: 5 Core networking problems?
A:
- Addressing: Physical Addressing: Every network-connected hardware device has a unique ID(Machine Access Code), Logical Addressing: 192.168.1.1
- Routing: specialized devices that move data across networks, isolate a subnet's traffic from the entire network.
- Name Resolution: DNS
- Error Checking and Flow Control: Ports
- Interoperability: Standards (RFC;requests for comments)
Q: Data Encapsulation?
A: OSI 7
(Application, Presentation, Session, Transport, Network, Data Link, Physical)
Protocol Data Unit(PDU) => the header + data
- * Layer 2 (Data Link) Add not only the header , but also Tailor
- * Layer 1 (Physical) Add nothing
Q: Explain Acknowledgement in TCP.
A:
- 用於告知傳送端,下個預期接收的 序列號 (Sequence Number)。
2. 用於告知傳送端,小於此值的資料位元組,皆已正確接收。
Q: Explain Sequence Numbers in TCP.
A: TCP協定使用序號(sequence number)標識每端發出的位元組的順序,從而另一端接收資料時可以重建順序,無懼傳輸時的包的亂序交付或丟包。在傳送第一個包時(SYN包),選擇一個亂數作為序號的初值,以克制TCP序號預測攻擊.
參考:Wiki + Youtube教學
Q: Explain Handshake in TCP.
A: TCP協定的執行可劃分為三個階段:連線建立(connection establishment)、資料傳送(data transfer)和連線終止(connection termination)。
TCP用三路握手(或稱三次握手,three-way handshake)過程建立一個連線。在連線建立過程中,很多參數要被初始化,例如序號被初始化以保證按序傳輸和連線的強壯性。
TCP連線的正常建立
一對終端同時初始化一個它們之間的連線是可能的。但通常是由一端開啟一個通訊端(socket)然後監聽來自另一方的連線,這就是通常所指的被動開啟(passive open)。伺服器端被被動開啟以後,用戶端就能開始建立主動開啟(active open)。
- 用戶端通過向伺服器端傳送一個SYN來建立一個主動開啟,作為三路握手的一部分。用戶端把這段連線的序號設定為亂數A。
- 伺服器端應當為一個合法的SYN回送一個SYN/ACK。ACK的確認碼應為A+1,SYN/ACK包本身又有一個隨機產生的序號B。
- 最後,用戶端再傳送一個ACK。當伺服端收到這個ACK的時候,就完成了三路握手,並進入了連線建立狀態。此時包的序號被設定為收到的確認號A+1,而回應號則為B+1。
參考:Wiki +Youtube教學
Q: Explain The Receive Window in TCP.
A:
用來做流量控制,避免主機分組傳送得過快而使接收方來不及完全收下,一般由接收方通告給傳送方進行調控。
TCP使用滑動窗口協定實現流量控制。接收方在「接收窗口」域指出還可接收的位元組數量。傳送方在沒有新的確認包的情況下至多傳送「接收窗口」允許的位元組數量。接收方可修改「接收窗口」的值。
參考:Wiki +Youtube教學
Q: Explain MTU.
A: 最大傳輸單元(英語:Maximum Transmission Unit,縮寫MTU),被定義在資料鏈結層,上面所能通過的最大數據包大小(以字節為單位)。最大傳輸單元這個參數通常與通信接口有關(網絡接口卡、串口等)。
因為若Frame太大,會造成以下情形
- 傳輸需耗損大量的 緩衝區 (buffer) 大小
- 傳輸媒介可能被某一傳送端獨佔,造成堵塞
- …
參考:https://notfalse.net/23/mtu
Q: Explain RTT.
A: 來回通訊延遲(Round-trip delay time),測量由發送信息至收到回應的所需時間(ms),也就是一個封包的來回時間。
參考:Wiki