Ⅰ tcp/ip協議
TCP/IP協議棧
(按TCP/IP參考模型劃分)
應用層 FTP SMTP HTTP ...
傳輸層 TCP UDP
網路層 IP ICMP ARP
鏈路層 乙太網 令牌環 FDDI ...
包含了一系列構成互聯網基礎的網路協議。
這些協議最早發源於美國國防部的DARPA互聯網項目。
TCP/IP字面上代表了兩個協議:TCP傳輸控制協議和IP互聯網協議。
時間回放到1983年1月1日,在這天,互聯網的前身Arpanet中,TCP/IP協議取代了舊的網路核心協議NCP(Network Core Protocol),從而成為今天的互聯網的基石。最早的的TCP/IP由Vinton Cerf和Robert Kahn兩位開發,慢慢地通過競爭戰勝了其它一些網路協議的方案,比如國際標准化組織ISO的OSI模型。TCP/IP的蓬勃發展發生在上世紀的90年代中期。當時一些重要而可靠的工具的出世,例如頁面描述語言HTML和瀏覽器Mosaic,導致了互聯網應用的飛束發展。
隨著互聯網的發展,目前流行的IPv4協議(IP Version 4,IP版本四)已經接近它的功能上限。IPv4最致命的兩個缺陷在於:
地址只有32位,IP地址空間有限;
不支持服務等級(Quality of Service, Qos)的想法,無法管理帶寬和優先順序,故而不能很好的支持現今越來越多的實時的語音和視頻應用。因此IPv6 (IP Version 6, IP版本六) 浮出海面,用以取代IPv4。
TCP/IP成功的另一個因素在與對為數眾多的低層協議的支持。這些低層協議對應與OSI模型 中的第一層(物理層)和第二層(數據鏈路層)。每層的所有協議幾乎都有一半數量的支持TCP/IP,例如: 乙太網(Ethernet),令牌環(Token Ring),光纖數據分布介面(FDDI),端對端協議( PPP),X.25,幀中繼(Frame Relay),ATM,Sonet, SDH等。
TCP/IP協議棧組成
整個通信網路的任務,可以劃分成不同的功能塊,即抽象成所謂的 」 層」 。用於互聯網的協議可以比照TCP/IP參考模型進行分類。TCP/IP協議棧起始於第三層協議IP(互聯網協議) 。所有這些協議都在相應的RFC文檔中討論及標准化。重要的協議在相應的RFC文檔中均標記了狀態: 「必須「 (required) ,「推薦「 (recommended) ,「可選「 (elective) 。其它的協議還可能有「 試驗「(experimental) 或「 歷史「(historic) 的狀態。
必須協議
所有的TCP/IP應用都必須實現IP和ICMP。對於一個路由器(router) 而言,有這兩個協議就可以運作了,雖然從應用的角度來看,這樣一個路由器 意義不大。實際的路由器一般還需要運行許多「推薦「使用的協議,以及一些其它的協議。
在幾乎所有連接到互聯網上的計算機上都存在的IPv4 協議出生在1981年,今天的版本和最早的版本並沒有多少改變。升級版IPv6 的工作始於1995年,目的在與取代IPv4。ICMP 協議主要用於收集有關網路的信息查找錯誤等工作。
推薦協議
每一個應用層(TCP/IP參考模型 的最高層) 一般都會使用到兩個傳輸層協議之一: 面向連接的TCP傳輸控制協議和無連接的包傳輸的UDP用戶數據報文協議 。 其它的一些推薦協議有:
TELNET (Teletype over the Network, 網路電傳) ,通過一個終端(terminal)登陸到網路(運行在TCP協議上)。
FTP (File Transfer Protocol, 文件傳輸協議) ,由名知義(運行在TCP協議上) 。
SMTP (Simple Mail Transfer Protocol,簡單郵件傳輸協議) ,用來發送電子郵件(運行在TCP協議上) 。
DNS (Domain Name Service,域名服務) ,用於完成地址查找,郵件轉發等工作(運行在TCP和UDP協議上) 。
ECHO (Echo Protocol, 回繞協議) ,用於查錯及測量應答時間(運行在TCP和UDP協議上) 。
NTP (Network Time Protocol,網路時間協議) ,用於網路同步(運行在UDP協議上) 。
SNMP (Simple Network Management Protocol, 簡單網路管理協議) ,用於網路信息的收集和網路管理。
BOOTP (Boot Protocol,啟動協議) ,應用於無盤設備(運行在UDP協議上)。
可選協議
最常用的一些有
支撐萬維網WWW的超文本傳輸協議HTTP,
動態配置IP地址的DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),
收郵件用的POP3 (Post Office Protocol, version 3, 郵局協議) ,
用於加密安全登陸用的SSH (Secure Shell,用於替代安全性差的TELNET) ,
用於動態解析乙太網硬體地址的ARP (Address Resolution Protocol,地址解析協議) 。
範例: 不同計算機運行的不同協議
一個簡單的路由器上可能會實現ARP, IP, ICMP, UDP, SNMP, RIP。
WWW用戶端使用ARP, IP, ICMP, UDP, TCP, DNS, HTTP, FTP。
一台用戶電腦上還會運行如TELNET, SMTP, POP3, SNMP, ECHO, DHCP, SSH, NTP。
無盤設備可能會在固件比如ROM中實現了ARP, IP, ICMP, UDP, BOOT, TFTP (均為面向數據報的協議,實現起來相對簡單)。
Ⅱ 簡述tcp協議的工作過程
TCP/IP協議(又名:網路通訊協議)即傳輸控制協議/互聯網協議,是一個網路通信模型,以及一整個網路傳輸協議家族。這一模型是Internet最基本的協議,也是Internet國際互聯網路的基礎,由網路層的IP協議和傳輸層的TCP協議組成。 其定義了電子設備如何連入網際網路,以及數據如何在它們之間傳輸的標准。TCP負責發現傳輸的問題,而IP是給網際網路的每一台聯網設備規定一個地址。
為了減少網路設計的復雜性,大多數網路都採用分層結構。對於不同的網路,層的數量、名字、內容和功能都不盡相同。在相同的網路中,一台機器上的第N層與另一台機器上的第N層可利用第N層協議進行通信,協議基本上是雙方關於如何進行通信所達成的一致。
不同機器中包含的對應層的實體叫做對等進程。在對等進程利用協議進行通信時,實際上並不是直接將數據從一台機器的第N層傳送到另一台機器的第N層,而是每一層都把數據連同該層的控制信息打包交給它的下一層,它的下一層把這些內容看做數據,再加上它這一層的控制信息一起交給更下一層,依此類推,直到最下層。最下層是物理介質,它進行實際的通信。相鄰層之間有介面,介面定義下層向上層提供的原語操作和服務。相鄰層之間要交換信息,對等介面必須有一致同意的規則。層和協議的集合被稱為網路體系結構。
每一層中的活動元素通常稱為實體,實體既可以是軟體實體,也可以是硬體實體。第N層實體實現的服務被第N+1層所使用。在這種情況下,第N層稱為服務提供者,第N+1層稱為服務用戶。
服務是在服務接入點提供給上層使用的。服務可分為面向連接的服務和面向無連接的服務,它在形式上是由一組原語來描述的。這些原語可供訪問該服務的用戶及其他實體使用。
TCP是面向連接的通信協議,通過三次握手建立連接,通訊完成時要拆除連接,由於TCP是面向連接的所以只能用於端到端的通訊。
TCP提供的是一種可靠的數據流服務,採用「帶重傳的肯定確認」技術來實現傳輸的可靠性。TCP還採用一種稱為「滑動窗口」的方式進行流量控制,所謂窗口實際表示接收能力,用以限制發送方的發送速度。
如果IP數據包中有已經封好的TCP數據包,那麼IP將把它們向『上』傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最後到接收方。
面向連接的服務(例如 Telnet、 FTP、 rlogin、 X Windows和 SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收 域名資料庫),但使用UDP傳送有關單個主機的信息。
Ⅲ TCP報文的格式及TCP協議的工作原理
TCP報文格式
源埠和目的埠:都是16個比特,分別表示發送方和接收方的埠號。埠號和IP地址構成套接字(socket)地址的主要內容。源端和目的端的套接字合起來唯一地表示一條連接。網路應用程序在通信時直接向套接字發送和接收數據。
序列號和確認號:都是32位的無符號整數,可以表示0-4G(232)位元組的范圍。其中,序列號表示數據部分第一個位元組的序列號,而確認號表示該數據報的接收者希望對方發送的下一個位元組的序號(即序號小於確認號的數據都已正確地被接收)。
頭長度(HLEN):表示TCP報文頭的長度。長度以32-bit為單位來計算。所以如果選項部分的長度不是4個位元組的整數倍,則要加上填充(padding)。
保留域:緊接在頭長度欄位後有6個比特,應該把它設置為0。
再後則是6個標志位。標志位特定的含義:
URG(urgent)為緊急數據標志。如果它為1,則表示本數據報中包含緊急數據。此時緊急數據指
針表示的值有效。它表示在緊急數據之後的第一個位元組的偏侈值(即緊急數據的總長度)。
ACK(acknowledge)為確認標志位。如果ACK為1,則表示報文中的確認號是有效的。否則,報文
中的確認號無效,接收端可以忽略它。
PSH(push)標志位。被置位後,要求發送方的TCP協議軟體馬上發送該數據報,接收方在收到數據後也應該立即上交給應用程序,即使其接收緩沖區尚未填滿。
RST(reset)標志位。用來復位一條連接。RST標志置位的報文稱為復位報文。一般情況下,如果TCP收到的一個報文明顯不是屬於該主機上的任何個連接,則向遠端發送一個復位報文。
SYN(synchronous)標志位。用來建立連接,讓連接雙方同步序列號。如果SYN=1而ACK=0,則表示該數據報為連接請求,如SYN=1而ACK=1則表示是接受連接。
FIN(finish)標志位。表示發送方已經沒有數據要傳輸了,希望釋放連接。
窗口(window)欄位。窗口表示的是從被確認的位元組開始,發送方最多可以連續發送的位元組的個數。接收方通過設置該窗口值的大小,可以調節源端發送數據的速度,從而實現流控。
校驗和(checksum)域。是TCP協議提供的一種檢錯機制。與我們在前面的章節中學過的UDP協議類似,在計算校驗和時不僅要計算TCP報文自身(報文頭和數據),還要增加一些額外的信息內容 – 12個位元組的「偽包頭」。
TCP/IP(Transmission Control Protocol/Internet Protocol的簡寫,中文譯名為傳輸控制協議/互聯網路協議)協議是Internet最基本的協議,簡單地說,就是由底層的IP協議和TCP協議組成的。
在Internet沒有形成之前,各個地方已經建立了很多小型的網路,稱為區域網,Internet的中文意義是「網際網」,它實際上就是將全球各地的區域網連接起來而形成的一個「網之間的網(即網際網)」。然而,在連接之前的各式各樣的區域網卻存在不同的網路結構和數據傳輸規則,將這些小網連接起來後各網之間要通過什麼樣的規則來傳輸數據呢?這就象世界上有很多個國家,各個國家的人說各自的語言,世界上任意兩個人要怎樣才能互相溝通呢?如果全世界的人都能夠說同一種語言(即世界語),這個問題不就解決了嗎?TCP/IP協議正是Internet上的「世界語」。
TCP/IP協議的開發工作始於70年代,是用於互聯網的第一套協議。
Ⅳ TCP的網路協議
當應用層向TCP層發送用於網間傳輸的、用8位位元組表示的數據流,TCP則把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)通常受該計算機連接的網路的數據鏈路層的最大傳送單元(MTU)限制。之後TCP把數據包傳給IP層,由它來通過網路將包傳送給接收端實體的TCP層。
TCP為了保證報文傳輸的可靠 ,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然後接收端實體對已成功收到的位元組發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那麼對應的數據(假設丟失了)將會被重傳。 在數據正確性與合法性上,TCP用一個校驗和函數來檢驗數據是否有錯誤,在發送和接收時都要計算校驗和;同時可以使用md5認證對數據進行加密。 在保證可靠性上,採用超時重傳和捎帶確認機制。 在流量控制上,採用滑動窗口 協議,協議中規定,對於窗口內未經確認的分組需要重傳。 在擁塞控制上,採用廣受好評的TCP擁塞控制演算法(也稱AIMD演算法)。該演算法主要包括三個主要部分:1)加性增、乘性減;2)慢啟動;3)對超時事件做出反應。 TCP/IP(Transmission Control Protocol/Internet Protocol) 即傳輸控制協議/網間協議,是一個工業標準的協議集,它是為廣域網(WAN)設計的。它是由ARPANET網的研究機構發展起來的。
TCP/IP的標准在一系列稱為RF C的文檔中公布。文檔由技術專家、特別工作組、或RFC編輯修訂。公布一個文檔時,該文檔被賦予一個RFC編號,如RFC959(FTP的說明文檔)、RFC793(TCP的說明文檔)、RFC791(IP的說明文檔)等。最初的RFC一直保留而從來不會被更新, 如果修改了該文檔,則該文檔又以一個新號碼公布。因此,重要的是要確認你擁有了關於某個專題的最新RFC文檔。通常在RFC的開頭部分,有相關RFC的更新(update)、排錯(errata)、作廢(obsolete)信息,提示讀者信息的時效性。 TCP的首部格式圖右圖所示:
---Source Port是源埠,16位。
---Destination Port是目的埠,16位。
---Sequence Number是發送數據包中的第一個位元組的序列號,32位。
---Acknowledgment Number是確認序列號,32位。
---Data Offset是數據偏移,4位,該欄位的值是TCP首部(包括選項)長度除以4。
---標志位: 6位,URG表示Urgent Pointer欄位有意義:
ACK表示Acknowledgment Number欄位有意義
PSH表示Push功能,RST表示復位TCP連接
SYN表示SYN報文(在建立TCP連接的時候使用)
FIN表示沒有數據需要發送了(在關閉TCP連接的時候使用)
Window表示接收緩沖區的空閑空間,16位,用來告訴TCP連接對端自己能夠接收的最大數據長度。
---Checksum是校驗和,16位。
---Urgent Pointers是緊急指針,16位,只有URG標志位被設置時該欄位才有意義,表示緊急數據相對序列號(Sequence Number欄位的值)的偏移。 TCP是網際網路中的傳輸層協議,使用三次握手協議建立連接。當主動方發出SYN連接請求後,等待對方回答SYN+ACK ,並最終對對方的 SYN 執行 ACK 確認。這種建立連接的方法可以防止產生錯誤的連接,TCP使用的流量控制協議是可變大小的滑動窗口協議。
TCP三次握手的過程如下: 客戶端發送SYN(SEQ=x)報文給伺服器端,進入SYN_SEND狀態。 伺服器端收到SYN報文,回應一個SYN (SEQ=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態。 客戶端收到伺服器端的SYN報文,回應一個ACK(ACK=y+1)報文,進入Established狀態。 三次握手完成,TCP客戶端和伺服器端成功地建立連接,可以開始傳輸數據了。 建立一個連接需要三次握手,而終止一個連接要經過四次握手,這是由TCP的半關閉(half-close)造成的。具體過程如下圖所示。
(1) 某個應用進程首先調用close,稱該端執行「主動關閉」(active close)。該端的TCP於是發送一個FIN分節,表示數據發送完畢。
(2) 接收到這個FIN的對端執行 「被動關閉」(passive close),這個FIN由TCP確認。
注意:FIN的接收也作為一個文件結束符(end-of-file)傳遞給接收端應用進程,放在已排隊等候該應用進程接收的任何其他數據之後,因為,FIN的接收意味著接收端應用進程在相應連接上再無額外數據可接收。
(3) 一段時間後,接收到這個文件結束符的應用進程將調用close關閉它的套接字。這導致它的TCP也發送一個FIN。
(4) 接收這個最終FIN的原發送端TCP(即執行主動關閉的那一端)確認這個FIN。
既然每個方向都需要一個FIN和一個ACK,因此通常需要4個分節。
注意:
(1) 「通常」是指,某些情況下,步驟1的FIN隨數據一起發送,另外,步驟2和步驟3發送的分節都出自執行被動關閉那一端,有可能被合並成一個分節。
(2) 在步驟2與步驟3之間,從執行被動關閉一端到執行主動關閉一端流動數據是可能的,這稱為「半關閉」(half-close)。
(3) 當一個Unix進程無論自願地(調用exit或從main函數返回)還是非自願地(收到一個終止本進程的信號)終止時,所有打開的描述符都被關閉,這也導致仍然打開的任何TCP連接上也發出一個FIN。
無論是客戶還是伺服器,任何一端都可以執行主動關閉。通常情況是,客戶執行主動關閉,但是某些協議,例如,HTTP/1.0卻由伺服器執行主動關閉。
Ⅳ 關於TCP/IP協議的具體實際例子
BGP、 LDP等。
Ⅵ 有沒有TCP協議操作JSON的例子或者教程
1)XML 和JSON是兩種完全不同的數據表達方式。他們分別採用完全不同格式將原始數據轉換成XML或者JOSN格式數據;然後再將XML或JOAN格式的數據還原為原始數據
2)Socket是用來編寫TCP/IP或UDP/IP通信程序的;HTTP是使用TCP/IP的「應用層協議」,HTTP協議利用(藉助於) TCP/IP 實現傳輸。
3)XML和JSON都可以藉助HTTP進行傳輸
一個形象的比喻:TCP/IP是由SOCKET修建公路,HTTP是公路上跑的車,XML或JSON是車裝載的貨物。
Ⅶ 請用最簡單的話,最容易理解的話講一下什麼是TCP/IP協議,舉個例子
就象寫信寄信一樣,TCP是寫信,裝信,IP是信封上的地址.
TCP是把信息分段,打包,發送,IP是要發到的地址
Ⅷ TCP與UDP應用的例子有哪些
兩種協議都是傳輸層協議,為應用層提供信息載體.TCP協議是基於連接的可靠協議,有流量控制和差錯控制,也正因為有可靠性的保證和控制手段,所以傳輸效率比UDP低;UDP協議是基於無連接的不可靠協議,沒有控制手段,僅僅是將數據發送給對方,因此效率比TCP要高.
TCP一般用於文件傳輸(FTP HTTP 對數據准確性要求高,速度可以相對慢),發送或接收郵件(POP IMAP SMTP 對數據准確性要求高,非緊急應用),遠程登錄(TELNET SSH 對數據准確性有一定要求,有連接的概念)等等;
UDP一般用於即時通信(QQ聊天 對數據准確性和丟包要求比較低,但速度必須快),在線視頻(RTSP 速度一定要快,保證視頻連續,但是偶爾花了一個圖像幀,人們還是能接受的),網路語音電話(VoIP 語音數據包一般比較小,需要高速發送,偶爾斷音或串音也沒有問題)等等.
Ⅸ TCP與UDP應用的例子有哪些
1、TCP應用
(1)FTP:文件傳輸協議;
(2)SSH:安全登錄、文件傳送(SCP)和埠重定向;
(3)Telnet:不安全的文本傳送;
(4)SMTP:簡單郵件傳輸協議Simple Mail Transfer Protocol (E-mail);
(5)HTTP:超文本傳送協議 (WWW);
2、UDP應用
(1)流媒體
採用TCP,一旦發生丟包,TCP會將後續包緩存起來,等前面的包重傳並接收到後再繼續發送,延遲會越來越大。基於UDP的協議如WebRTC是極佳的選擇。
(2)實時游戲
對實時要求較為嚴格的情況下,採用自定義的可靠UDP協議,比如Enet、RakNet(用戶有sony online game、minecraft)等,自定義重傳策略,能夠把丟包產生的延遲降到最低,盡量減少網路問題對游戲性造成的影響。
採用UDP的經典游戲如FPS游戲Quake、CS,著名的游戲引擎Unity3D採用的也是RakNet。
(3)物聯網
2014年google旗下的Nest建立Thread Group,推出了物聯網通信協議Thread,完善物聯網通信。
全球將近50%的人都在使用互聯網,人們不斷的追求更快、更好的服務,一切都在變化,在越來越多的領域,UDP將會搶佔TCP的主導地位。
(4)QQ 文件傳輸、QQ語音、QQ視頻
對於網路通訊質量要求不高的情況下,要求網路通訊速度能盡量快捷方便,就可以使用UDP技術。