Tcp/Ip協議中tcp與http詳解

剛開始遇到別人問tcp與http的區別是什麼?當時就想着他們都是網絡通信協議,

http(超文本傳輸協議):是一種請求/響應式的無狀態鏈接,就是瀏覽器向服務器發送請求,服務器給瀏覽器反饋請求的數據 ,然後連接就自動消失了;

tcp(傳輸控制協議):是一種瀏覽器向服務器發送一個連接請求,服務器允許連接,然後瀏覽再向服務器發送數據,如果服務器爲接收到或接受的數據不完整,就會要求瀏覽器重新發送請求;並且這種連接是長連接,需要瀏覽器發送關閉請求,然後服務器 纔會與瀏覽器斷開連接;建立連接需要3次握手,斷開連接需要4次握手。


tcp/ip協議:

從協議分層模型方面來講,TCP/IP由四個層次組成:網絡接口層、網絡層、傳輸層、應用層。

TCP/IP協議並不完全符合OSI的七層參考模型。OSI(Open System Interconnect)是傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。而TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。由於ARPNET的設計者注重的是網絡互聯,允許通信子網(網絡接口層)採用已有的或是將來有的各種協議,所以這個層次中沒有提供專門的協議。實際上,TCP/IP協議可以通過網絡接口層連接到任何網絡上,例如X.25交換網或IEEE802局域網。

TCP/IP結構對應OSI結構
TCP/IP OSI
應用層 應用層
表示層
會話層
主機到主機層(TCP)(又稱傳輸層) 傳輸層
網絡層(IP)(又稱互聯層) 網絡層
網絡接口層(又稱鏈路層) 數據鏈路層
物理層

網絡接口層

物理層是定義物理介質的各種特性:

1、機械特性。

2、電子特性。

3、功能特性。

4、規程特性。

數據鏈路層是負責接收IP數據包並通過網絡發送之,或者從網絡上接收物理幀,抽出IP數據包,交給IP層。

常見的接口層協議有:

Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等。

網絡層

負責相鄰計算機之間的通信。其功能包括三方面。

一、處理來自傳輸層的分組發送請求,收到請求後,將分組裝入IP數據報,填充報頭,選擇去往信宿機的路徑,然後將數據報發往適當的網絡接口。

二、處理輸入數據報:首先檢查其合法性,然後進行尋徑--假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報尚未到達信宿,則轉發該數據報。

三、處理路徑、流控、擁塞等問題。

網絡層包括:IP(Internet Protocol)協議、ICMP(Internet Control Message Protocol)

控制報文協議、ARP(Address Resolution Protocol)地址轉換協議、RARP(Reverse ARP)反向地址轉換協議。

IP是網絡層的核心,通過路由選擇將下一條IP封裝後交給接口層。IP數據報是無連接服務。

ICMP是網絡層的補充,可以回送報文。用來檢測網絡是否通暢。

Ping命令就是發送ICMP的echo包,通過回送的echo relay進行網絡測試。

ARP是正向地址解析協議,通過已知的IP,尋找對應主機的MAC地址

RARP是反向地址解析協議,通過MAC地址確定IP地址。比如無盤工作站還有DHCP服務。

傳輸層

提供應用程序間的通信。其功能包括:一、格式化信息流;二、提供可靠傳輸。爲實現後者,傳輸層協議規定接收端必須發回確認,並且假如分組丟失,必須重新發送,即耳熟能詳的“三次握手”過程,從而提供可靠的數據傳輸。

傳輸層協議主要是:傳輸控制協議TCP(Transmission Control Protocol)和用戶數據報協議UDP(User Datagram protocol)。

應用層

向用戶提供一組常用的應用程序,比如電子郵件、文件傳輸訪問、遠程登錄等。遠程登錄TELNET使用TELNET協議提供在網絡其它主機上註冊的接口。TELNET會話提供了基於字符的虛擬終端。文件傳輸訪問FTP使用FTP協議來提供網絡內機器間的文件拷貝功能。

應用層協議主要包括如下幾個:FTP、TELNET、DNS、SMTP、RIP、NFS、HTTP。

FTP(File Transfer Protocol)是文件傳輸協議,一般上傳下載用FTP服務,數據端口是20H,控制端口是21H。

Telnet服務是用戶遠程登錄服務,使用23H端口,使用明碼傳送,保密性差、簡單方便。

DNS(Domain Name Service)是域名解析服務,提供域名到IP地址之間的轉換。

SMTP(Simple Mail Transfer Protocol)是簡單郵件傳輸協議,用來控制信件的發送、中轉。

RIP (Router Information Protocol)是路由信息協議,用於網絡設備之間交換路由信息。

NFS (Network File System)是網絡文件系統,用於網絡中不同主機間的文件共享。

HTTP(Hypertext Transfer Protocol)是超文本傳輸協議,用於實現互聯網中的WWW服務。

總結
OSI中的層 功能 TCP/IP協議族
應用層 文件傳輸,電子郵件,文件服務,虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,RIP,Telnet
表示層 數據格式化,代碼轉換,數據加密 沒有協議
會話層 解除或建立與別的接點的聯繫 沒有協議
傳輸層 提供端對端的接口 TCP,UDP
網絡層 數據包選擇路由 IP,ICMP,OSPF,BGP,IGMP,ARP,RARP
數據鏈路層 傳輸有地址的幀以及錯誤檢測功能 SLIP,CSLIP,PPP,MTU,ARP,RARP
物理層 二進制數據形式在物理媒體上傳輸數據 ISO2110,IEEE802,IEEE802.2

網絡層中的協議主要有IP,ICMP,IGMP等,由於它包含了IP協議模塊,所以它是所有基於TCP/IP協議網絡的核心。在網絡層中,IP模塊完成大部分功能。ICMP和IGMP以及其他支持IP的協議幫助IP完成特定的任務,如傳輸差錯控制信息以及主機/路由器之間的控制電文等。網絡層掌管着網絡中主機間的信息傳輸。

傳輸層上的主要協議是TCP和UDP。正如網絡層控制着主機之間的數據傳遞,傳輸層控制着那些將要進入網絡層的數據。兩個協議就是它管理這些數據的兩種方式:TCP是一個基於連接的協議;UDP則是面向無連接服務的管理方式的協議。

TCP/IP模型的主要缺點有:

第一,它在服務、接口與協議的區別上就不是很清楚。一個好的軟件工程應該將功能與實現方法區分開來,TCP/IP恰恰沒有很好地做到這點,就使得TCP/IP參考模型對於使用新的技術的指導意義是不夠的。TCP/IP參考模型不適合於其他非TCP/IP協議簇。

第二,主機-網絡層本身並不是實際的一層,它定義了網絡層與數據鏈路層的接口。物理層與數據鏈路層的劃分是必要和合理的,一個好的參考模型應該將它們區分開,而TCP/IP參考模型卻沒有做到這點。

IP

IP層接收由更低層(網絡接口層例如以太網設備驅動程序)發來的數據包,並把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因爲IP並沒有做任何事情來確認數據包是按順序發送的或者沒有被破壞。IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。

高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好像是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是爲了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那麼,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。

TCP

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傳送有關單個主機的信息。

UDP

UDP是面向無連接的通訊協議,UDP數據包括目的端口號和源端口號信息,由於通訊不需要連接,所以可以實現廣播發送。

UDP通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出丟包現象,實際應用中要求在程序員編程驗證。

UDP與TCP位於同一層,但它不管數據包的順序、錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網絡時間協議)和DNS(DNS也使用TCP)。

欺騙UDP包比欺騙TCP包更容易,因爲UDP沒有建立初始化連接(也可以稱爲握手)(因爲在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨着更大的危險。

ICMP

ICMP與IP位於同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的‘Redirect’信息通知主機通向其他系統的更準確的路徑,而‘Unreachable’信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接‘體面地’終止。PING是最常用的基於ICMP的服務。

數據格式

數據幀:幀頭+IP數據包+幀尾 (幀頭包括源和目標主機MAC地址及類型,幀尾是校驗字)

IP數據包:IP頭部+TCP數據信息(IP頭包括源和目標主機IP地址、類型、生存期等)

TCP數據信息:TCP頭部+實際數據 (TCP頭包括源和目標主機端口號、順序號、確認號、校驗字等)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章