TCP/IP Review

圓圓小熊(Maruマル)
6 min readJun 2, 2018

--

之前在面試某個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:

  1. End node verification: the two endpoint of any data transfer are responsible for making sure it was successful -- no centralized control scheme
  2. 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:

  1. Addressing: Physical Addressing: Every network-connected hardware device has a unique ID(Machine Access Code), Logical Addressing: 192.168.1.1
  2. Routing: specialized devices that move data across networks, isolate a subnet's traffic from the entire network.
  3. Name Resolution: DNS
  4. Error Checking and Flow Control: Ports
  5. 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:

  1. 用於告知傳送端,下個預期接收的 序列號 (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)。

  1. 用戶端通過向伺服器端傳送一個SYN來建立一個主動開啟,作為三路握手的一部分。用戶端把這段連線的序號設定為亂數A
  2. 伺服器端應當為一個合法的SYN回送一個SYN/ACK。ACK的確認碼應為A+1,SYN/ACK包本身又有一個隨機產生的序號B
  3. 最後,用戶端再傳送一個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

--

--

圓圓小熊(Maruマル)
圓圓小熊(Maruマル)

Written by 圓圓小熊(Maruマル)

在日本東京打拼的軟體工程師。喜歡滑雪,旅遊,吃美食,寫程式,參加Meetup,以及比價。最近沈迷寫Chatbot,Django以及把玩AWS。

No responses yet