520 likes | 867 Views
TCP/IP 簡介. Outlines. TCP/IP Protocol Stack Internet Protocol(IP) User Datagram Protocol(UDP) Transmission Control Protocol(TCP). TCP/IP Introduction. ARPANET & TCP/IP history Internet v.s. internet Internet: 以 ARPANET 為前身的世界性網路 internet: 指稱以 IP 所架構的網路. TCP/IP 的特點.
E N D
Outlines • TCP/IP Protocol Stack • Internet Protocol(IP) • User Datagram Protocol(UDP) • Transmission Control Protocol(TCP)
TCP/IP Introduction • ARPANET & TCP/IP history • Internet v.s. internet • Internet:以 ARPANET 為前身的世界性網路 • internet:指稱以 IP 所架構的網路
TCP/IP 的特點 • TCP/IP 是 Open Protocol Standard。 • TCP/IP 不受限於特定的網路硬體。 • TCP/IP 不受限於特定的作業系統。 • 適用的 Addressing(定址設計)。 • 標準化的高階協定,提供 Users 廣泛而一致的服務。
TCP/IP 與 OSI 的對應 4. 應用層Application Layer 7. Application Layer 6. Presentation Layer 5. Session Layer 3. 傳輸層 Host-to-host Transport Layer 4. Transport Layer 2. 網際層 Internet Layer 3. Network Layer 1. 網路存取層 Network Access Layer 2. Data Link Layer 1. Physical Layer
TCP/IP 的層級 4. 應用層 Application Layer 由網路應用程式與相關的處理程序所組成 3. 傳輸層 Host-to-host Transport Layer 提供端點對端點的資料傳遞服務 2. 網際層 Internet Layer 定義資料段並掌控資料的傳輸路徑 1. 網路存取層 Network Access Layer 定義存取實體網路的例行程序
TCP/IP 的資料結構 TCP 資料流(stream) UDP 訊息(message) 應用層 傳輸層 資料節(segment) 封包(packet) 網際層 資料段(datagram) 資料段(datagram) 網路存取層 訊框(frame) 訊框(frame)
TCP/IP 的資料封裝(Encapsulation) 應用層 資料 stream、message 發送 接收 傳輸層 表頭 資料 segment、packet 網際層 表頭 表頭 資料 datagram 封裝 Encapsulation 解封裝 Decapsulation 網路存取層 表頭 表頭 表頭 資料 frame Note: 表頭 header
網路存取層Network Access Layer • 包含 OSI 的最低二層,其功能為: • 把 IP 資料段封裝到網路所傳送的訊框內 • 把 IP 位址對應到網路使用的實體位址 • 網路存取協定種類繁多,各對應一種實體網路標準,以驅動程式的形態出現。 • 最常用的網路存取層協定: • RFC826,位址解析協定(Address Resolution Protocol,ARP),把IP位址對應成Ethernet位址。 • RFC894,規範 IP 資料段封裝的一套標準。
網際層 Internet Layer • 提供異質網路上的定址能力與資料封包格式的轉換。 • 最常用的網際層協定: • RFC 791,網際協定(Internet Protocol,IP),提供基本的封包傳送服務。 • RFC 792,網際控制訊息協定(Internet Control Message Protocol,ICMP),透過IP來傳送控制訊號。
傳輸層 Host-to-host Transport Layer • 提供端點對端點之間的資料傳輸服務。 • 最常用的網際層協定: • 使用者資料段協定(User Datagram Protocol,UDP),只負責將訊息傳到網路上,是一種不可靠、非連結導向的協定。 • RFC 793,傳輸控制協定(Transmission Control Protocol,TCP),會檢查資料是否循序正確的傳到網路上,提供可靠、連結導向的傳輸服務。 • 使用者依據應用程式的特性來選擇TCP或UDP。
可靠 v.s. 不可靠 • 可靠(reliable):檢查資料是否依適當順序正確地傳過網路 • 不可靠(unreliable):表示此協定不包含驗證資料是否正確到達網路另一端的技術。
連結導向 v.s. 非連結導向 • 連結導向(connection-oriented):在傳送資料前,會和遠端主機交換控制訊息(handshake),以確定對方已準備好接收資料。當handshake完成,就表示已建立connection。 • 非連結導向(connectionless):表示此協定只負責將訊息傳到網路上,不在傳輸資料前先建立connection ,不檢查資料是否被接收。
Connection-oriented v.s. Connectionless • Connection-oriented(WWW,FTP,Email,….) • Telephone System • Users first establishes a connection, uses the connection and then releases the connection. • Slow speed. • Connectionless(DNS,broadcast,….) • Postal System • No connection is established • Quick speed.
應用層 Application Layer • 定義如何利用傳輸層協定來遞送資料的程序。 • 大多為提供服務給使用者的 protocol。
常見的應用層協定(1/3) • telnet:網路終端機協定(Network Terminal Protocol),提供透過網路遠端登入(remote login)的服務。 • FTP:檔案傳輸協定(File Transfer Protocol),讓使用者可以與遠端的主機傳輸檔案。 • SMTP:簡易郵件傳送協定(Simple Mail Transfer Protocol),傳送電子郵件。 • HTTP:超文件傳輸協定(Hyper Test Transfer Protocol),透過網路傳送網頁。
常見的應用層協定(2/3) • DNS:網域名稱服務(Domain Name Server),將網路裝置的名稱對應到 IP 位址。 • OSPF:開放式最短路徑優先協定(Open Shortest Path First),網路設備可透過 OSPF 交換選徑資訊。 • NFS:網路檔案系統(Network File System),讓網路上每個主機可共享檔案。
常見的應用層協定(3/3) • SNMP:簡單網路管理協定(Simple Network Management Protocol),管理網路運作。
TCP/IP Architecture PING TFTP BOOTP Telnet FTP SMTP ICMP UDP TCP IP ARP RARP PPP RS-232C Driver Ethernet Driver UART Ethernet
網際協定(Internet Protocol,IP) • 提供基本封包傳送服務: • 定義 Internet 基本的傳送單位:資料段(segment)的格式。 • 定義 Internet 的定址方式。 • 在網路存取層與傳輸層之間移動資料。 • 決定資料段到遠端主機的路徑(route)。 • 執行資料段的分解與重組。
IP 的特性 • IP 提供非連線性的服務(Connectionless) • IP 在傳送資料前,不會和遠端主機交換控制訊息(handshake)建立連線。 • IP 是不可靠(Un-reliable)的協定 • IP 不具備錯誤偵測(Error Detection)與錯誤更正(Error Correction)的功能。 • Variable Length of Datagram • Best Effort Delivery
Variable Length of Datagram • 對 IPv4 而言,應用程式可調整 IP datagram 的長度的特性,使得 IP 可適用於各種不同的應用。 • 一個 datagram 容納(來自上層)的資料量最少為一個 byte,最多為 64K bytes。 • IP header 會含有所有傳送該 Datagram 的 Information。
Best-Effort Delivery • IP 不處理下列的問題 • Datagram遺失 • 延遲或順序不對 • 資料損壞 • Datagram 重覆接收 • 因為 IP 被設計用於任何實體網路,因此底層的實體網路可能不可靠,造成IP datagram 遺失、重覆接收、延遲、順序不對或損壞。IP上層的協定程式必須要處理這些問題。
IP 的資料段 Datagram Bit 0 4 8 16 24 31 1 版本 IHL 服務型態 總長度 2 識別碼 旗標 段落的偏移量 字組Word 3 存活時間 協定號碼 表頭的加總查核碼 表頭Header 4 來源位址 目的位址 5 6 選項 填補 資料由此開始…
IP Datagram Header欄位(1) • 版本(Version,4bits): IP 版本,目前為 version 4 • IHL (Internet Header Length,4bits):表頭長度(以32bits為單位) • 服務型態(Service Type,8bits):表示可靠性、precedence、delay、throughput 的旗標 • 總長度(Total Length,16bits): IP Datagram 的長度(以byte為單位)
IP Datagram Header欄位(2) • 識別碼(Identification,16bits):傳送端會將一個獨一無二的識別碼存在送出的 datagram 。當路由器重新切割datagram時,路由器會複製識別碼給每一個片段(fragment)。 • 旗標(Flags,3bits):指出 Datagram 分割成片段時的一些選項。 • 段落偏移量(Fragment Offset ,13bits ):指出此資料段是具有相同識別碼的第幾個。接收端使用識別碼及 IP 來源位址將片段重組時,利用段落偏移量欄位可將片段排續。
IP Datagram Header欄位(3) • 存活時間(Time To Live,8bits):設定此 Datagram可以經過幾個閘道器。 • 協定號碼或型態(Protocol Number 或 Type,8bits):利用協定號碼可決定是資料是來自那一個傳輸層協定。 • 表頭的加總查核碼( Header Checksum,16bits):每個閘道器都會檢查 IP Header 的 Checksum。
IP Datagram Header欄位(4) • 來源位址(Source Address,32bits):傳送端主機的 IP Address • 目的位址(Destination Address,32bits):目的地主機的 IP Address • 選項(Option):例如路由規格等傳送端可設定的選項等。 • 填補(Padding):加在Option後面使IP Header長度為32 bits倍數。 • 資料(Data,16bits):上層的資料,但應避免使IP datagram 超過 65536bytes。
IP 傳送資料的過程 • 以唯一的 IP 位址決定傳送路徑。 • 封裝且透過網路存取層傳送 IP 資料段。 • 傳送資料給傳輸層 • 利用header中的協定號碼決定是那一個傳輸層協定。 • 將萃取資料送給此傳輸層協定模組。 • 傳輸層協定以port 號碼決定資料屬於那一個應用行程。
網際控制訊息協定(Internet Control Message Protocol,ICMP) • 透過IP來傳送控制訊號 • 常用的功能: • 流量控制 • 偵測無法到達的目的地 • 重導路徑 • 偵測遠端主機
使用者資料段協定(User Datagram Protocol,UDP) • 只負責將訊息傳到網路上,是一種不可靠、非連結導向的協定。 • 簡單、效率高、延遲時間小 • 使AP在協定所在造成的額外負擔最少的情況下,經由網路交換訊息。
UDP 的封包 Packet 格式 Bit 0 16 31 來源埠Source Port 目的埠Destination Port 訊息長度 加總查核碼 Checksum 應用層傳來的訊息(Message)資料
UDP PacketHeader 欄位 • 來源埠(Source Port,16bits):傳送端主機的Port Number • 目的埠(Destination Port,16bits):目的地主機的Port Number • 訊息長度(Length,16bits):header+data的長度(以byte為單位) • 加總查核碼(Checksum,16bits):header+pseudo header+data • 資料(Data,16bits):應用層傳來的訊息(Message)資料
傳輸控制協定(Transmission Control Protocol,TCP) • 端點對端點之間的錯誤偵測與更正功能,提供可靠、連結導向的傳輸服務。 • 用 16 bits 的埠號(Port Number)決定所服務的上層AP。 • 以三段式交握(3-way & 4-way Hands-hake)來建立與結束連結。 • 以確認重傳(Positive Acknowledgement with Re-transmission,PAR)的方式來提供可靠性。
TCP 的資料節 segment Bit 0 4 8 16 24 31 1 來源埠 目的埠 2 序號 Sequence Number 字組Word 3 確認號碼 Acknowledge Number 表頭Header 4 偏移量 保留 旗標 訊框 Window 加總查核碼 checksum 緊急指標 5 6 選項 填補 資料由此開始…
TCP Segment Header 欄位(1) • 來源埠(Source Port,16bits):傳送端主機的port number • 目的埠(Destination Port,16bits):目的地主機的 port number • 序號(Sequence Number,32bits): • SYN=0:此序號指出該 Segment 的第一個 Byte 是整個 Stream 的第幾個 Byte。 • SYN=1:為初始序號(Initial Sequence Number,ISN),整個 Stream 的第一個 Segment 的第一個位元的號碼為 ISN+1。
TCP Segment Header 欄位(2) • 確認號碼(Acknowledge Number,32bits):代表下一次希望收到 Segment 的 Sequence Number。 • 資料位移(Data Offset,4 bits):TCP Header 的長度(以 32 bit 字組為單位) • 保留(Reserved,6 bits):均設為 0 • 訊窗(Windows,16 bits):緩衝器(Buffers)還能接收的 byte 數目。
TCP Segment Header 欄位(3) • 控制位元(Control Bits,6 bits): • URG:Urgent Pointer field significant • ACK:Acknowledgement field significant • PSH:Push Function • RST:Reset the connection • SYN:Synchronize sequence numbers • FIN:No more data from sender
TCP Segment Header 欄位(4) • 加總查核碼(Checksum,16bits):所有Header 與 Text 的 16 bit 字組的總和取其 1’s complement • 緊急指標(Urgent Pointer,16 bits) • 選項(Option) • 填補(Padding):加在Option後面使 TCP Header長度為32 bits倍數 • 資料(Data,16bits):上層的資料
3-way handshake 建立連結 • Host 1 設定同步訊號SYN(包含ISN)送給Host 2 • Host 2 收到 SYN 後設定ACK以及自己的SYN,通知 Host 1。 • Host 1 送出ACK給Host 2
4-way Handshake 結束連結 • Host 1 設定結束訊號FIN 送給Host 2 • Host 2 收到 FIN 後設定ACK以及自己的FIN,通知 Host 1。 • Host 1 送出ACK給Host 2
TCP 的確認重傳 • 以確認重傳(Positive Acknowledgement with Retransmission,PAR)的方式來提供可靠性。 • 封包遺失需要重傳。或是接收對方的 segment,使用 checksum 檢查是否正確: • good:送 ACK 給對方(確認)。 • bad:丟棄此 segment。經一段時間(timeout)對方發現沒有收到ACK便會重送(retransmit)此 segment。
資料遺失與重傳 設定重傳的timeout時間
可調節的重傳時間 計算每次收到回應的時間,便可求出此連結平均的 round-trip delay,以設定重傳的timeout時間
TCP 的流量控制(Flow Control) • TCP 將資料視為連續不斷的byte-stream,因此必需維護 bytes 順序與流量控制。 • 在建立 Connection 時,雙方以 SYN 通知對方自己的 ISN。每個 Segment 依照其 Sequence Number重組為 Stream。 • Receiver 利用 ACK 讓 Sender 知道它已接收那些資料,以及還能接收多少資料。
Sliding Window Window (specifies which streams are want to be received) 1 1001 2001 3001 4001 5001 6001 7001 Window Slides Window 已收到的資料 1 1001 2001 3001 4001 5001 6001 7001
流量控制範例一 Window=6000 已收到的資料 目前的segment 1001 2001 3001 4001 5001 6001 7001 Source 目前送出segment 的序號=4001 確認號碼=2001 起始序號(ISN)=0