web service,soap ,http,tcp,udp

來源:互聯網
上載者:User

標籤:會議   視頻會議   實現   伺服器端   應用程式   一致性   運行機制   資料   通訊   

webservice and soap 

HTTP只負責把資料傳送過去,不會管這個資料是XML、HTML、圖片、文字檔或者別的什麼。而SOAP協議則定義了怎麼把一個對象變成XML文本,在遠程如何調用等,怎麼能夠混為一談。   
    
    
    
  這樣說兩種協議:   
  HTTP就是郵局的協議,他們規定了你的信封要怎麼寫,要貼多少郵票等。。。。   
    
  SOAP就是你們之間交流的協議,負責把你所需要表達的意思寫在信紙上,同時也負責讓對方能夠看得懂你的信。

 

 

Web service一般就是用SOAP協議通過HTTP來調用它,其實他就是一個WSDL文檔,客戶都可以閱讀WSDL文檔來用這個Web service。客戶根據WSDL描述文檔,會產生一個SOAP請求訊息。Web service都是放在Web伺服器 (如IIS) 後面的,客戶產生的SOAP請求會被嵌入在一個HTTP POST請求中,發送到Web伺服器來。Web伺服器再把這些請求轉寄給Web service要求處理常式。要求處理常式的作用在於,解析收到的SOAP請求,調用Web service,然後再產生相應的SOAP應答。Web伺服器得到SOAP應答後,會再通過HTTP應答的方式把它送回到用戶端。

 

 webService協議主要包括兩個方面:傳輸協議和資料表示,關於傳輸協議可以是http或其他,資料表示也可以是索引值對、xml或其他,只不過現在通用的是http+soap,當然其他的也可以,不知道這樣理解對不對?

 

SOAP簡單的理解,就是這樣的一個開放協議SOAP=RPC+HTTP+XML:採用HTTP作為底層通訊協議;RPC作為一致性的調用途徑,XML作為資料傳送的格式,允許服務提供者和服務客戶經過防火牆在INTERNET進行通訊互動。

tcp ,udp,ip

網路基礎知識1、OSI分層模型和TCP/IP分層模型的對應關係

這裡對於7層模型不展開來講,只選擇跟這次系列主題相關的知識點介紹。

2、七層模型與協議的對應關係

       網路層   ------------     IP(網路之間的互聯協議)

       傳輸層   ------------     TCP(傳輸控制通訊協定)、UDP(使用者資料包通訊協定)

       應用程式層   ------------     Telnet(Internet遠程登入服務的標準協議和主要方式)、FTP(文本傳輸協議)、HTTP(超文本傳送協議)

3、IP地址和連接埠號碼

1、ip地址用於唯一標示網路中的一個通訊實體,這個通訊實體可以是一台主機,可以是一台印表機,或者是路由器的某一個連接埠。而在基於IP協議網路中傳輸的資料包,必須使用IP      地址來進行標示。ip地址就像寫一封信,必須指定收件者的地址一樣。每個被傳輸的資料包中都包括了一個源IP和目標IP。

2、ip地址唯一標示了通訊實體,但是一個通訊實體可以有多個通訊程式同時提供網路服務。這個時候就要通過連接埠來區分開具體的通訊程式。一個通訊實體上不能有兩個通訊程式        使用同一個連接埠號碼。

    IP地址和連接埠號碼,就像一個出差去外地入住酒店一樣,IP地址表示了酒店在具體位置,而連接埠號碼則表示了這個人在酒店的房間號。

4、TCP和UDP

1、TCP是一種連線導向的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的資料流。它能夠提供兩台電腦之間的可靠的資料流,HTTP、FTP、Telnet等應      用都需要這種可靠的通訊通道。

2、UDP是一種不需連線的協議,每個資料報都是一個獨立的資訊,包括完整的源地址或目的地址,它在網路上以任何可能的路徑傳送目的地,至於能夠達到目的地,達到目的地的時     間以及內容的正確性都是不能保證的。

既然有了保證可靠傳輸的TCP協議,為什麼還要非可靠傳輸的UDP協議呢?原因有兩個:

1、可靠的傳輸是要付出代價的,對資料內容的正確性的檢驗必然會佔用電腦處理時間和網路頻寬。因此TCP的傳輸效率不如UDP高。

2、許多應用中並不需要保證嚴格的傳輸可靠性,比如視頻會議系統,並不要求視頻音頻資料絕對正確,只要能夠連貫就可以了。所以在這些情境下,使用UDP更合適些。

tcp,http,udp 詳解

 什麼是TCP和UDP,以及二者區別是什嗎? 
TCP的全稱為傳輸控制通訊協定。這種協議可以提供連線導向的、可靠的、點到點的通訊。 
UDP全稱為使用者資料包通訊協定,它可以提供非串連的不可靠的點到多點的通訊。 
使用TCP還是UDP,那要看你的程式注重哪一個方面,可靠(tcp)還是快速(udp)。 


TCP/IP 建立串連的過程 

  手機能夠使用連網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP串連。 
   TCP協議可以對上層網路提供介面,使上層網路資料的傳輸建立在“無差別”的網路之上。 

建立起一個TCP串連需要經過“三向交握”: 


第一次握手:用戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認; 
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態; 
第三向交握:用戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED狀態,完成三向交握。 


所謂的三向交握就是要有三次串連資訊的發送/接收過程。TCP串連的建立需要進行三次串連資訊的發送/接收。 

握手過程中傳送的包裡不包含資料,三向交握完畢後,用戶端與伺服器才正式開始傳送資料。理想狀態下,TCP串連一旦建立,在通訊雙方中的任何一方主動關閉串連之前,TCP 串連都將被一直保持下去。中斷連線時伺服器和用戶端均可以主動發起斷開TCP串連的請求,斷開過程需要經過“四次握手”(過程就不細寫了,就是伺服器和用戶端互動,最終確定斷開). 


HTTP串連 

HTTP協議即超文本傳送協議(Hypertext Transfer Protocol ),是Web連網的基礎,也是手機連網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。 

HTTP串連最顯著的特點是用戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放串連。從建立串連到關閉串連的過程稱為“一次串連”。 

1)在HTTP 1.0中,用戶端的每次請求都要求建立一次單獨的串連,在處理完本次請求後,就自動釋放串連。 

2)在HTTP 1.1中則可以在一次串連中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。 

由於HTTP在每次請求結束後都會主動釋放串連,因此HTTP串連是一種“短串連”,要保持用戶端程式的線上狀態,需要不斷地向伺服器發起串連請求。通常的做法是即時不需要獲得任何資料,用戶端也保持每隔一段固定的時間向伺服器發送一次“保持串連”的請求,伺服器在收到該請求後對用戶端進行回複,表明知道用戶端“線上”。若伺服器長時間無法收到用戶端的請求,則認為用戶端“下線”,若用戶端長時間無法收到伺服器的回複,則認為網路已經斷開。 


SOCKET原理 

在iphone的平台下,要進行socket開發有開源的庫Asyncsocket,官方的CFSocket,還有BSD的socket。 

通訊端(SOCKET)概念 

通訊端(socket)是通訊的基石,是支援TCP/IP協議的網路通訊的基本操作單元。它是網路通訊過程中端點的抽象表示,包含進行網路通訊必須的五種資訊:串連使用的協議,本地主機的IP地址,本地進程的協議連接埠,遠地主機的IP地址,遠地進程的協議連接埠。 

應用程式層通過傳輸層進行資料通訊時,TCP會遇到同時為多個應用程式進程提供並發服務的問題。多個TCP串連或多個應用程式進程可能需要通過同一個 TCP協議連接埠傳輸資料。為了區別不同的應用程式進程和串連,許多電腦作業系統為應用程式與TCP/IP協議互動提供了通訊端(Socket)介面。應用程式層可以和傳輸層通過Socket介面,區分來自不同應用程式進程或網路連接的通訊,實現資料轉送的並發服務。 


建立SOCKET串連 

建立Socket串連至少需要一對通訊端,其中一個運行於用戶端,稱為ClientSocket ,另一個運行於伺服器端,稱為ServerSocket 。 

通訊端之間的串連過程分為三個步驟:伺服器監聽,用戶端請求,串連確認。 

伺服器監聽:伺服器端通訊端並不定位具體的用戶端通訊端,而是處於等待串連的狀態,即時監控網路狀態,等待用戶端的串連請求。 

用戶端請求:指用戶端的通訊端提出串連請求,要串連的目標是伺服器端的通訊端。為此,用戶端的通訊端必須首先描述它要已連線的服務器的通訊端,指出伺服器端通訊端的地址和連接埠號碼,然後就向伺服器端通訊端提出串連請求。 

串連確認:當伺服器端通訊端監聽到或者說接收到用戶端通訊端的串連請求時,就響應用戶端通訊端的請求,建立一個新的線程,把伺服器端通訊端的描述發給用戶端,一旦用戶端確認了此描述,雙方就正式建立串連。而伺服器端通訊端繼續處於監聽狀態,繼續接收其他用戶端通訊端的串連請求。 

SOCKET串連與TCP/IP串連 

建立Socket串連時,可以指定使用的傳輸層協議,Socket可以支援不同的傳輸層協議(TCP或UDP),當使用TCP協議進行串連時,該Socket串連就是一個TCP串連。 


SOCKET串連與HTTP串連 

由於通常情況下Socket串連就是TCP串連,因此Socket串連一旦建立,通訊雙方即可開始相互發送資料內容,直到雙方串連斷開。但在實際網路應用中,用戶端到伺服器之間的通訊往往需要穿越多個中間節點,例如路由器、網關、防火牆等,大部分防火牆預設會關閉長時間處於非活躍狀態的串連而導致 Socket 串連斷連,因此需要通過輪詢告訴網路,該串連處於活躍狀態。 

而HTTP串連使用的是“請求—響應”的方式,不僅在請求時需要先建立串連,而且需要用戶端向伺服器發出請求後,伺服器端才能回複資料。 

很多情況下,需要伺服器端主動向用戶端推送資料,保持用戶端與伺服器資料的即時與同步。 

若雙方建立的是Socket串連,伺服器就可以直接將資料傳送給用戶端; 

若雙方建立的是HTTP串連,則伺服器需要等到用戶端發送一次請求後才能將資料傳回給用戶端。 

因此,用戶端定時向伺服器端發送串連請求,不僅可以保持線上,同時也是在“詢問”伺服器是否有新的資料,如果有就將資料傳給用戶端。 

HTTP協議是應用程式層的協義 

一個是發動機(Socket),提供了網路通訊的能力 
一個是轎車(Http),提供了具體的方式 

兩個電腦之間的交流無非是兩個連接埠之間的資料通訊,具體的資料會以什麼樣的形式展現,是以不同的應用程式層協議來定義的,如:HTTP,FTP,... 

SOCKET是對連接埠通訊開發的工具,它要更底層一些 。 

SOCKET與HTTP的區別與聯絡 

1.簡單的說HTTP一般為單向的,如你像伺服器發起一個請求,伺服器就會返給你需要的,而socket使雙向的,即一方(如用戶端)有改變就會通知另一方 (如伺服器)要求保持一致,當這一方(伺服器)發生改變會通知另一方(用戶端)要保持資料一致。   一般情況下程式要保持即時性(如及時通訊,股票軟體等)的話用socket比較好,   要是普通對即時行要求不高的,就用http就夠了,取之有點用於你的程式,根據你的情況而定。 

2.“我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用程式層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到 應用程式層協議,應用程式層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用程式層協議。WEB使用HTTP協議作應用程式層協議,以封裝HTTP  文本資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。” 

   而我們平時說的最多的socket是什麼呢,實際上socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用介面(API), 通過Socket,我們才能使用TCP/IP協議。實際上,Socket跟TCP/IP協議沒有必然的聯絡。Socket編程介面在設計的時候,就希望也 能適應其他的網路通訊協定。所以說,Socket的出現只是使得程式員更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道 的一些最基本的函數介面,比如create、  listen、connect、accept、send、read和write等等。網路有一段關於socket和TCP/IP協議關係的說法比較容易理 解: 

  “TCP/IP只是一個協議棧,就像作業系統的運行機制一樣,必須要具體實現,同時還要提供對外的操作介面。這個就像作業系統會提供標準的編程介面,比如win32編程介面一樣,TCP/IP也要提供可供程式員做網路開發所用的介面,這就是Socket編程介面。” 

  CSDN上有個比較形象的描述:HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力。 

  實際上,傳輸層的TCP是基於網路層的IP協議的,而應用程式層的HTTP協議又是基於傳輸層的TCP協議的,而Socket本身不算是協議,就像上面所說,它只是提供了一個針對TCP或者UDP編程的介面。 

web service,soap ,http,tcp,udp

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.